control panel; to get new formdefs

This commit is contained in:
Frédéric Péters 2006-08-16 10:16:45 +00:00
parent 067aee9b83
commit 9fc75f0d0a
1 changed files with 74 additions and 0 deletions

View File

@ -1,6 +1,16 @@
import os
import zipfile
import cPickle
from quixote import get_publisher
from quixote.directory import Directory
import wcs.admin.root
import wcs.backoffice.root
import wcs.root
from wcs.admin.menu import *
from wcs.formdef import FormDef
class AdminRootDirectory(wcs.admin.root.RootDirectory):
def __init__(self):
@ -13,3 +23,67 @@ class AdminRootDirectory(wcs.admin.root.RootDirectory):
'hello world'
wcs.root.RootDirectory.admin = AdminRootDirectory()
class PanelDirectory(Directory):
_q_exports = ['']
label = N_('Control Panel')
def _q_index [html] (self):
html_top('panel', _('Control Panel'))
get_response().breadcrumb.append(('panel', _('Control Panel')))
'<h2>%s</h2>' % _('Control Panel')
'<h3>%s</h3>' % _('Available Forms')
# get list of available objects from a central repository
# (actually it is wgetted daily on stored locally)
repository_zip = os.path.join(get_publisher().app_dir, 'repository.zip')
if os.path.exists(str(repository_zip)):
z = zipfile.ZipFile(file(str(repository_zip)), str('r'))
filenames = z.namelist()
filenames.sort()
filenames = [x for x in filenames if not x.endswith(str('/'))]
categories = {}
formdefs = {}
for filename in filenames:
part = filename.split(str('/'))[0]
if part == 'categories':
data = z.read(filename)
o = cPickle.loads(data)
categories[o.id] = o
elif part == 'formdefs':
data = z.read(filename)
o = cPickle.loads(data)
formdefs[o.id] = o
z.close()
'<ul class="biglist">'
for cat in categories.values():
for formdef in [x for x in formdefs.values() if x.category_id == cat.id]:
'<li>'
'<strong class="label">'
formdef.name
'</strong>'
'<p class="details">'
cat.name
'</p>'
'<p class="commands">'
status = 'uptodate'
if not FormDef.has_key(formdef.id):
status = 'new'
if status == 'uptodate':
'<img src="/images/checkmark.png" alt="%s" title="%s" />' % (
_('Up to date'), _('Up to date'))
elif status == 'new':
'<a href="update/%s" title="%s">' % (formdef.id, _('Download new form'))
'<img src="/images/download.png" alt="%s"/>' % _('New')
'</a>'
'</p>'
'</li>'
'</ul>'
wcs.admin.root.register_admin_page('panel', PanelDirectory())