- #! /usr/bin/python2.2
-
- # a simple page editor for the pysocks system
-
-
- #------------------------------------------------------------------------
- BASE_DIR = '/home/crypt/Work/pysocks/'
- TEMPLATE_DIR = BASE_DIR + 'Templates/'
-
-
- import cgi
- import access
- import os
- import constants
- from utils import *
-
- #------------------------------------------------------------------------
-
- class Edit:
-
- def __init__(self, db, page_info=None, extra_info=None):
- print extra_info
- self.__action = extra_info['action']
- self.__extra_info = extra_info
- if extra_info.has_key('page_id'):
- self.__page_id = extra_info['page_id']
-
- self.__jump_table = {'show':self.show, 'list':self.list,
- 'create_and_edit':self.create_and_edit,
- 'edit':self.edit, 'new':self.new, 'save':self.save}
-
-
- def do(self):
- ' perform the right action for this page '
- print self.__action
- print self.__jump_table.keys()
- if self.__action in self.__jump_table.keys():
- return self.__jump_table[self.__action]()
-
- def show(self):
- header = 'this is the header'
- page_template = get_file_as_string(TEMPLATE_DIR+'default_template')
- page_side_bar = get_file_as_string(TEMPLATE_DIR+'default_sidebar')
- page_content = get_file_as_string(TEMPLATE_DIR+'edit_screen')
- footer = 'end of page'
-
- return page_template%(header, page_side_bar, page_content, footer)
-
- def new(self):
- '''\
- create a new page entry in the db and then display a blank
- page for people to put stuff in'''
-
- # create a new entry in the db after checking that there isn't
- # already an item of that name existing.
- #
- # use some of the code from the table editor class
-
-
- # db stuff goes here.
- header = 'new page'
- page_template = get_file_as_string(TEMPLATE_DIR+'default_template')
- page_side_bar = get_file_as_string(TEMPLATE_DIR+'default_sidebar')
- page_content = get_file_as_string(TEMPLATE_DIR+'new_screen')
- footer = 'end of page'
-
- return page_template%(header, page_side_bar, page_content, footer)
-
- def create_and_edit(self):
- print 'create and edit method'
-
- def edit(self):
- print 'edit method'
-
-
- def save(self):
- print 'save method'
- # what tables do we need to update here.
- #self.__db.set('')
-
- def list(self):
- ' provide a list of pages that can be editied. '
-
- list_template_line = '<a href='+\
- '"./editor.cgi?page=edit&action=show&page_id=%(page_id)s">'+\
- '%(description)s</a><br>'
- header = 'new page'
- page_template = get_file_as_string(TEMPLATE_DIR+'default_template')
- page_side_bar = get_file_as_string(TEMPLATE_DIR+'default_sidebar')
-
- # query the db to locate all top level pages and then build a table
-
- page_content = []
-
- #pages = self.db.get_dict(....)
-
- # debug stuff
- pages = [ {'page_id':1, 'description':'first page'},
- {'page_id':2, 'description':'second page'}]
- for i in pages:
- page_content.append(list_template_line%i)
- footer = 'end of page'
-
- return page_template%(header, page_side_bar,
- '\n'.join(page_content), footer)
-
-
-
- #------------------------------------------------------------------------
-
-
- page_types = {'edit':Edit}
-
- def get_default_page():
- header = 'this is the header'
- page_template = get_file_as_string(TEMPLATE_DIR+'default_template')
- page_side_bar = get_file_as_string(TEMPLATE_DIR+'default_sidebar')
- page_content = get_file_as_string(TEMPLATE_DIR+'default_content')
- footer = 'end of page'
-
- return page_template%(header, page_side_bar, page_content, footer)
-
- def get_extra_info(form):
- data = {}
- for i in form.keys():
- data[i] = form[i].value
-
- return data
-
- def main():
- print 'Content-type: text/html'
- print
-
- form = cgi.FieldStorage()
-
- #db = access.Access(dbname='pysocks' user='crypt')
-
- db = page_info = extra_info = None
-
- extra_info = get_extra_info(form)
-
- print extra_info
-
- if form.has_key('page'):
- if form['page'].value in page_types.keys():
- page = page_types[form['page'].value](db, page_info, extra_info)
- ret = page.do()
- else:
- ret = get_default_page()
-
- print ret
- pass
-
-
- if __name__ == '__main__':
- main()