class LoginAlerts(Viewlet): viewletmanager(Top) order(15) context(LoginRoot) layer(DefaultLayer) template = get_template('messages.pt', __file__)
class Quizz5PDF(Quizz5PDF): uvclight.layer(IVBGTheme) def frontpage(self, parts): crit_style = self.crit_style() parts.append(Paragraph(u'Auswertungsbericht', styles['Heading1'])) parts.append( Paragraph( u'„Gut gestaltete Arbeitsbedingungen“ – Psychische Belastung erfassen', styles['Heading2'])) fp = FRONTPAGE % (self.context.course.company.name, self.context.course.title, self.context.startdate.strftime('%d.%m.%Y'), self.context.enddate.strftime('%d.%m.%Y'), crit_style, self.request.form.get('total', ''), datetime.datetime.now().strftime('%d.%m.%Y')) parts.append(Paragraph(fp.strip(), styles['Normal'])) parts.append(PageBreak()) return None def headerfooter(self, canvas, doc): canvas.setFont("Helvetica", 9) canvas.drawString(1 * cm, 2 * cm, u"Gut gestaltete Arbeitsbedingungen") canvas.drawString(1 * cm, 1.6 * cm, u"Psychische Belastungen online erfassen") canvas.drawString(1 * cm, 1.2 * cm, u"Ein Programm der VBG") canvas.drawString(15 * cm, 2 * cm, u"Grundlage der Befragung:") canvas.drawString(15 * cm, 1.6 * cm, u"FBGU-Fragebogen") canvas.setFont("Helvetica", 12)
class Navigation(uvclight.ViewletManager): uvclight.name('navigation') uvclight.layer(IVBGTheme) uvclight.context(uvclight.Interface) def application_url(self): return self.view.application_url()
class Unauthorized(Page): layer(DefaultLayer) template = get_template('unauthorized.pt', __file__) message = None def set_message(self, message): self.message = message
class BF(uvclight.Page): uvclight.name('bf') uvclight.context(interface.Interface) uvclight.layer(IVBGTheme) uvclight.auth.require('zope.Public') template = get_template('bf.cpt')
class CreateCompany(CreateCompany): uvclight.layer(IVBGTheme) label = u'Unternehmen anlegen <a href="" data-toggle="modal" data-target="#myModal"> <span class="glyphicon glyphicon-question-sign" aria-hidden="true"></span></a>' fields = uvclight.Fields(ICompany).select('name', 'exp_db', 'type', 'employees') fields['exp_db'].mode = "blockradio"
class PDF_WAI(PDF_WAI): uvclight.layer(IVBGTheme) def headerfooter(self, canvas, doc): action = self.request.form.get('action') canvas.setFont("Helvetica", 9) canvas.drawString(1 * cm, 2 * cm, u"Gemeinsam zu gesunden Arbeitsbedingungen") canvas.drawString(1 * cm, 1.6 * cm, u"Psychische Belastungen online erfassen") canvas.drawString(1 * cm, 1.2 * cm, u"Ein Programm der VBG") if doc.page >= 3 or action == "wai": canvas.drawString(18 * cm, 2 * cm, u"Grundlage der Befragung") canvas.drawString(18 * cm, 1.6 * cm, u"Work Ability Index (WAI)") canvas.drawString(18 * cm, 1.2 * cm, u"Ilmarinen, Tuomi") else: canvas.drawString( 18 * cm, 2 * cm, u"Grundlage der Befragung: KFZA - Kurzfragebogen") canvas.drawString(18 * cm, 1.6 * cm, u"zur Arbeitsanalyse") canvas.drawString(18 * cm, 1.2 * cm, u"Prümper, J., Hartmannsgruber, K. & Frese, M") canvas.line(0.5 * cm, 2.5 * cm, 26 * cm, 2.5 * cm) canvas.setFont("Helvetica", 12)
class Alerts(Viewlet): viewletmanager(Top) order(15) context(GateKeeper) layer(DefaultLayer) template = get_template('messages.pt', __file__)
class FlashMessages(uvclight.Viewlet): uvclight.order(2) uvclight.layer(IVBGTheme) uvclight.viewletmanager(managers.IAboveContent) template = uvclight.get_template('flash.cpt', __file__) def update(self): self.messages = [msg.message for msg in receive()]
class GatekeeperIndex(Page): name('index') context(GateKeeper) layer(DefaultLayer) template = get_template('entrance.pt', __file__) def update(self): self.portals = list(self.context.get_portals(self.request))
class ContextualMenuDisplay(Viewlet): viewletmanager(Top) order(20) layer(DefaultLayer) def update(self): self.menu = ContextualActions(self.context, self.request, self.view) self.menu.update() def render(self): return self.menu.render()
class ExampleText(ExampleText): uvclight.layer(IVBGTheme) @property def template(self): template = "example_text.pt" if self.context.strategy == "fixed": template = "example_text_fixed.pt" if self.context.quizz_type == 'Zebra': template = "zebra_example_text.pt" return get_template(template)
class GateLayout(Layout): context(Interface) layer(DefaultLayer) title = u"Gatekeeper" template = get_template('layout.pt', __file__) def __call__(self, content, **namespace): styles.need() namespace['user'] = self.request.environment.get('REMOTE_USER') namespace['gatekeeper_messages'] = list(receive()) return Layout.__call__(self, content, **namespace)
class FooterViewlet(MenuViewlet): uvclight.viewletmanager(managers.IFooter) uvclight.layer(IVBGTheme) uvclight.order(20) menu = menus.PersonalMenu template = get_template('footer.cpt') def getFooter(self): menu = menus.FooterMenu(self.context, self.request, self.view) menu.update() return menu.entries
class Disable(PersonalMenuViewlet): uvclight.name('personalmenuviewlet') uvclight.layer(IVBGTheme) def available(self): return False def update(self): pass def render(self): return u''
class DocumentActionsViewlet(MenuViewlet): uvclight.viewletmanager(managers.IAboveContent) uvclight.layer(IVBGTheme) uvclight.order(20) template = get_template('documentactionstemplate.cpt') name = u'Aktion' id = u'documentactionsviewlet' def update(self): self.menu = menus.DocumentActionsMenu( self.context, self.request, self.view) self.menu.update()
class AdminIndex(Page): name('index') context(AdminRoot) layer(DefaultLayer) template = get_template('admin.pt', __file__) def update(self): self.links = ({ 'title': _(u"Messages management", default="Messages management"), 'url': get_absolute_url(self.context.messages, self.request), }, )
class Layout(uvclight.Layout): uvclight.context(Interface) uvclight.layer(IVBGTheme) base = "/" template = get_template('layout.cpt') def __call__(self, content, **ns): vbgcss.need() vbgjs.need() site = uvclight.getSite() self.title = getattr(site, 'title', 'UVCLight') if 'view' in ns: if hasattr(ns['view'], 'title'): self.title = getattr(ns['view'], 'title', u'UVCLight') return uvclight.Layout.__call__(self, content, **ns)
class PDFPL(PDFPL): uvclight.layer(IVBGTheme) def headerfooter(self, canvas, doc): canvas.setFont("Helvetica", 9) canvas.drawString(1 * cm, 2 * cm, u"Gemeinsam zu gesunden Arbeitsbedingungen") canvas.drawString(1 * cm, 1.6 * cm, u"Psychische Belastungen online erfassen") canvas.drawString(1 * cm, 1.2 * cm, u"Ein Programm der VBG") canvas.drawString(18 * cm, 2 * cm, u"Grundlage der Befragung: Prüfliste Psychische") canvas.drawString(18 * cm, 1.6 * cm, u"Belastung") canvas.drawString(18 * cm, 1.2 * cm, u"Unfallversicherung Bund und Bahn") canvas.line(0.5 * cm, 2.5 * cm, 26 * cm, 2.5 * cm)
class GeneratePDF(GeneratePDF): uvclight.layer(IVBGTheme) def headerfooter(self, canvas, doc): canvas.setFont("Helvetica", 9) canvas.drawString(1 * cm, 2 * cm, u"Gemeinsam zu gesunden Arbeitsbedingungen") canvas.drawString(1 * cm, 1.6 * cm, u"Psychische Belastungen online erfassen") canvas.drawString(1 * cm, 1.2 * cm, u"Ein Programm der VBG") canvas.drawString(18 * cm, 2 * cm, u"Grundlage der Befragung: KFZA - Kurzfragebogen") canvas.drawString(18 * cm, 1.6 * cm, u"zur Arbeitsanalyse") canvas.drawString(18 * cm, 1.2 * cm, u"Prümper, J., Hartmannsgruber, K. & Frese, M") canvas.line(0.5 * cm, 2.5 * cm, 26 * cm, 2.5 * cm) canvas.setFont("Helvetica", 12)
class LetterEmailer(DownloadLetter): uvclight.name('downloadletter') uvclight.layer(IVBGTheme) fields = DownloadLetter.fields + uvclight.Fields(IEmailer) fields['emails'].interface = IEmailer # TEMPORARY FIX actions = DownloadLetter.actions + Actions( EmailAction('Serienbrief per Mail versenden')) label = u"Serienbrief erstellen <a href='' data-toggle='modal' data-target='#myModal'> <span class='glyphicon glyphicon-question-sign' aria-hidden=' true'></span> </a>" def update(self): DE = DEFAULT % ( self.context.startdate.strftime('%d.%m.%Y'), self.context.enddate.strftime('%d.%m.%Y'), ) defaults = Letter(DE, emails=None) self.setContentData(ObjectDataManager(defaults))
class KontaktForm(uvclight.Form): uvclight.name('kontakt') uvclight.context(interface.Interface) uvclight.layer(IVBGTheme) uvclight.auth.require('zope.Public') fields = uvclight.Fields(IKontaktForm) label = u"Kontakt" description = u"Hier haben Sie die Möglichkeit uns themenspezifische Nachrichten zukommen zu lassen" @uvclight.action('Abbrechen') def handle_save(self): self.redirect(self.application_url()) @uvclight.action('Senden') def handle_save(self): data, errors = self.extractData() if errors: self.flash('Es sind Fehler aufgetreten') return from nva.psyquizz.emailer import ENCODING config = self.context.configuration subject_choices = self.fields['subject'].getChoices(self) item = subject_choices.getTerm(data['subject']) subject = item.title email, suf = item.token.split('_') tpl = config.resources.get_template('contact.tpl') emailer = self.context.configuration.emailer # {'message': u'fsadff', 'email': u'*****@*****.**', 'subject': '1'} title = "Anfrage!".encode(ENCODING) #email = data['email'] data['encoding'] = ENCODING data['subject'] = subject with config.emailer as sender: mail = config.emailer.prepare_from_template( tpl, email, title, data) sender(email, mail.as_string()) self.flash('Ihre Anfrage wurde versendet.') self.redirect(self.application_url())
class MessagesIndex(TableForm): name('index') context(MessagesRoot) layer(DefaultLayer) ignoreRequest = False ignoreContent = False postOnly = True mode = DISPLAY css_class = "table table-striped table-condensed" actions = Actions(DeleteEntry(_('Delete'))) @property def tableFields(self): fields = Fields(IMessage) fields['id'].mode = 'link' return fields def getItems(self): return list(self.context)
class EditForm(Form): """A very generic add form. """ name('index') title(_(u"edit_message", default=u"Edit message")) require('zope.Public') context(Message) layer(DefaultLayer) ignoreContent = False ignoreRequest = True fields = Fields(IMessage) dataValidators = [InvariantsValidation] @property def action_url(self): return self.request.url def updateForm(self): gkdate.need() self.fields['enable'].strict_format = '%d/%m/%Y %H:%M' self.fields['disable'].strict_format = '%d/%m/%Y %H:%M' Form.updateForm(self) @action(_(u"Update")) def Update(self): data, errors = self.extractData() if errors: self.submissionError = errors return FAILURE session = self.context.__parent__.session apply_data_event(self.fields, self.context, data) session.add(self.context) send(_(u"Your contents get updated.")) url = get_absolute_url(self.context, self.request) return SuccessMarker('Updated', True, url=url)
class NavigationMenuViewlet(MenuViewlet): uvclight.viewletmanager(Navigation) uvclight.layer(IVBGTheme) uvclight.order(30) menu = menus.NavigationMenu template = get_template('navigationtemplate.cpt') id = u'globalmenuviewlet' def getNavigation(self): menu = menus.NavigationMenu(self.context, self.request, self.view) menu.update() return menu.entries def getUser(self): menu = menus.UserMenu(self.context, self.request, self.view) menu.update() return menu.entries def getRenderableItems(self): return list() def getQuicklinks(self): menu = menus.Quicklinks(self.context, self.request, self.view) menu.update() return menu.entries def getPersonal(self): menu = menus.PersonalMenu(self.context, self.request, self.view) menu.update() return menu.entries def isAuth(self): if hasattr(self.request, 'principal'): if self.request.principal.id != 'user.unauthenticated': return True return False
class AddForm(Form): """A very generic add form. """ name('add') title(_(u"add_message", default=_(u"Add message"))) require('zope.Public') context(MessagesRoot) layer(DefaultLayer) fields = Fields(IMessage).omit('id') dataValidators = [InvariantsValidation] @property def action_url(self): return self.request.url def updateForm(self): gkdate.need() self.fields['enable'].strict_format = '%d/%m/%y %H:%M' self.fields['disable'].strict_format = '%d/%m/%y %H:%M' Form.updateForm(self) @action(_(u"Add")) def add(self): data, errors = self.extractData() if errors: return FAILURE if data['activation'] != ON_DATES: del data['enable'] del data['disable'] item = self.context.model(**data) self.context.add(item) send(_(u"Content created.")) url = get_absolute_url(self.context, self.request) return SuccessMarker('Created', True, url=url)
class AnonIndex(AnonIndex): uvclight.layer(IVBGTheme) template = get_template('anon_index_new.pt')
class AccountHomepage(AccountHomepage): uvclight.layer(IVBGTheme) template = get_template('frontpage.pt')
class Footer(uvclight.ViewletManager): uvclight.name('footer') uvclight.layer(IVBGTheme) uvclight.context(uvclight.Interface) uvclight.implements(managers.IFooter)
class BelowContent(uvclight.ViewletManager): uvclight.name('below-body') uvclight.layer(IVBGTheme) uvclight.context(uvclight.Interface) uvclight.implements(managers.IBelowContent)