def addLabelField(self, messageId, page): '''Adds a Computed field that will display, in the source language, the content of the text to translate.''' field = gen.Computed(method=self.modelClass.label, plainText=False, page=page, show=self.modelClass.show, layouts='f') self.addField('%s_label' % messageId, field)
class Tool(ModelClass): # In a ModelClass we need to declare attributes in the following list. _appy_attributes = list(defaultToolFields) folder = True # Tool attributes def isManager(self): pass def isManagerEdit(self): pass lf = {'layouts': 'f'} title = gen.String(show=False, page=gen.Page('main', show=False), default='Configuration', **lf) mailHost = gen.String(default='localhost:25', **lf) mailEnabled = gen.Boolean(default=False, **lf) mailFrom = gen.String(default='*****@*****.**', **lf) appyVersion = gen.String(**lf) dateFormat = gen.String(default='%d/%m/%Y', **lf) hourFormat = gen.String(default='%H:%M', **lf) # Ref(User) will maybe be transformed into Ref(CustomUserClass). userPage = gen.Page('users', show=isManager) users = gen.Ref(User, multiplicity=(0, None), add=True, link=False, back=gen.Ref(attribute='toTool', show=False), page=userPage, queryable=True, queryFields=('title', 'login'), show=isManager, showHeaders=True, shownInfo=('title', 'login', 'roles')) def computeConnectedUsers(self): pass connectedUsers = gen.Computed(method=computeConnectedUsers, page=userPage, plainText=False, show=isManager) groups = gen.Ref(Group, multiplicity=(0, None), add=True, link=False, back=gen.Ref(attribute='toTool2', show=False), page=gen.Page('groups', show=isManager), show=isManager, queryable=True, queryFields=('title', 'login'), showHeaders=True, shownInfo=('title', 'login', 'roles')) pt = gen.Page('translations', show=isManager) translations = gen.Ref(Translation, multiplicity=(0, None), add=False, link=False, show='view', page=pt, back=gen.Ref(attribute='trToTool', show=False)) loadTranslationsAtStartup = gen.Boolean(default=True, show=False, page=pt, layouts='f') pages = gen.Ref(Page, multiplicity=(0, None), add=True, link=False, show='view', back=gen.Ref(attribute='toTool3', show=False), page=gen.Page('pages', show=isManager)) # Document generation page dgp = {'page': gen.Page('documents', show=isManagerEdit)} def validPythonWithUno(self, value): pass # Real method in the wrapper unoEnabledPython = gen.String(default='/usr/bin/python', show=False, validator=validPythonWithUno, **dgp) openOfficePort = gen.Integer(default=2002, show=False, **dgp) # User interface page numberOfResultsPerPage = gen.Integer(default=30, page=gen.Page('userInterface', show=False)) @classmethod def _appy_clean(klass): toClean = [] for k, v in klass.__dict__.iteritems(): if not k.startswith('__') and (not k.startswith('_appy_')): if k not in defaultToolFields: toClean.append(k) for k in toClean: exec 'del klass.%s' % k klass._appy_attributes = list(defaultToolFields) klass.folder = True