from zsite import ZSite from serials import Serials from tools import convert import Globals, OFS import os, string, re class ZSerials(ZSite): id = 'serials' name = 'ZSerials' icon = 'misc_/ZSerials/Icon' meta_type = 'ZSerials' color = '#003366' _properties = ZSite._properties manage_options = ( ZSite.manage_options[0], ZSite.manage_options[1], { 'label' : 'Serials', 'icon' : '', 'action' : 'manage_serials', 'target' : '_self', }, ZSite.manage_options[2], ZSite.manage_options[3], ZSite.manage_options[4], ZSite.manage_options[5], ZSite.manage_options[6], ZSite.manage_options[7], ZSite.manage_options[8], ZSite.manage_options[9], ZSite.manage_options[10], ) manage_serials = Globals.DTMLFile('manage/serials', globals()) manage_serials_dtml = Globals.DTMLFile('manage/code/serials', globals()) def __init__(self, name, database, location): self._v_system = Serials(name, database, location) return def init(self): self._v_system = Serials(self.name, self.database, self.location) return def edbminit(self, path, force=0): return self._v_system.edbminit(path, force) def edbmopen(self, name, format=''): return self._v_system.edbmopen(name, format) def edbmquery(self, request, db): if request.form: return self._v_system.edbmquery(request.form, db) return None def edbmfind(self, db, query, first, last): if not query: return self.EdbmResult(error='no query') resultset = self._v_system.edbmfind(db, query, first, last) if resultset == None: return self.EdbmResult(error='invalid query') list = [] count = 0 for result in resultset: item = self.EdbmItem(first + count) for name in db._factory.schema['attrinfo'].keys(): try: setattr(item, name, getattr(result, name)) except: setattr(item, name, 'special attribute error') list.append(item) count += 1 return self.EdbmResult(resultset.total, list) def edbmeval(self, request, db=None): if db == None: db = self.edbmopen('serials') query = self.edbmquery(request, db) if query == None: return None first, last = 1, 10 if request.form.has_key('first') and request.form['first']: first = int(request.form['first']) if request.form.has_key('last') and request.form['last']: last = int(request.form['last']) result = self.edbmfind(db, query, first, last) if result: result.query = query result.first = first result.last = last return result class EdbmResult(OFS.SimpleItem.SimpleItem): def __init__(self, total=0, list=[], error=None): self.total = total self.list = list self.error = error class EdbmItem(OFS.SimpleItem.SimpleItem): def __init__(self, index): self.index = index manage_addZSerials = Globals.DTMLFile('manage/add', globals()) def manage_add(self, id, title, REQUEST=None): """Add a new ZSerials instance""" handle = ZSerials(REQUEST.name, REQUEST.database) handle.id = id handle.title = title handle.name = REQUEST.name handle.database = REQUEST.database handle.location = REQUEST.location self = self.this() self._setObject(id, handle) if REQUEST is not None: REQUEST['RESPONSE'].redirect(self.absolute_url()+'/manage_main') return