control panel; to get new formdefs
This commit is contained in:
parent
067aee9b83
commit
9fc75f0d0a
|
@ -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())
|
||||
|
|
Reference in New Issue