class ChangePassword(uvcsite.browser.Form): """A Form for updating a User in ENMS. """ grok.context(IHomeFolder) label = _('Passwort ändern') description = _('Hier können Sie Ihr Passwort ändern') # uvcsite.menu(uvcsite.PersonalMenu) grok.require('zope.View') ignoreContext = True fields = base.Fields(IExtranetMember).select('passwort', 'confirm') @base.action(_("Bearbeiten")) def changePasswort(self): data, errors = self.extractData() if errors: self.flash('Es sind Fehler aufgetreten', type='error') return um = getUtility(IUserManagement) principal = self.request.principal.id data['mnr'] = principal um.updatePasswort(**data) self.flash(_('Ihr Passwort wurde gespeichert!')) self.redirect(self.url(self.context))
class ICookieCredentials(Interface): """A Credentials Plugin based on cookies. """ cookie_name = ASCIILine( title=_("Cookie name"), description=_("Name of the cookie for storing credentials."), required=True, )
class ILoginForm(zope.interface.Interface): """A simple login form interface. """ login = zope.schema.TextLine(title=_("Username"), required=True) password = zope.schema.Password(title=_("Password"), required=True) camefrom = zope.schema.TextLine(title=_("Origin of the request"), required=False)
class IExtranetMember(Interface): mnr = TextLine( title=_(u"Mitgliedsnummer"), description=_( u"Benutzername für den Mitbenutzer (Mitgliedsnummer-lfd.Nr.)"), required=True) rollen = Set(title=_(u"Berechtigung"), description=_(u"Berechtigung"), value_type=Choice(source=vocab_berechtigungen), required=False) passwort = Password( title=_(u"Passwort"), description=_(u"Bitte tragen Sie hier das Passwort ein."), min_length=5, max_length=8, required=True) confirm = Password( title=_(u"Bestätigung"), description=_(u"Bitte bestätigen Sie das eingegebene Passwort."), min_length=5, max_length=8, required=True) @invariant def arePasswordsEqual(user): if user.passwort != user.confirm: raise Invalid( u"Das Passwort und die Wiederholung sind nicht gleich.") def getBaseUser(): """Return the User Representation
class MetaTypeColumn(GetAttrColumn): grok.name('meta_type') grok.context(IFolderColumnTable) header = _(u'Objekt') attrName = 'meta_type' weight = 2 table(IFolderListingTable)
class ENMSUpdateUser(uvcsite.browser.Form): """ A Form for updating a User in ENMS""" grok.name('index') grok.context(IOnTheFlyUser) grok.require('uvc.ManageCoUsers') ignoreContent = False label = "Mitbenutzer verwalten" description = ("Nutzen Sie diese Form um die Daten eines " + "Mitbenutzers zu pflegen.") @property def fields(self): return base.Fields(self.context.__parent__.user_schema) def update(self): context = self.context context['confirm'] = context['passwort'] self.setContentData(base.DictDataManager(context)) def updateForm(self): super(ENMSUpdateUser, self).updateForm() mnr = self.fieldWidgets.get('form.field.mnr') pw = self.fieldWidgets.get('form.field.passwort') confirm = self.fieldWidgets.get('form.field.confirm') mnr.template = ChameleonPageTemplateFile('templates/mnr.cpt') pw.template = ChameleonPageTemplateFile('templates/password.cpt') confirm.template = ChameleonPageTemplateFile('templates/password.cpt') @base.action(_("Bearbeiten")) def anlegen(self): data, errors = self.extractData() if errors: self.flash('Es sind Fehler aufgetreten', type='error') return data['az'] = self.context['az'] self.context.__parent__.update(**data) self.flash(_('Der Mitbenutzer wurde gespeichert')) self.redirect(self.url(self.context.__parent__)) @base.action(_("Entfernen")) def entfernen(self): data, errors = self.extractData() self.context.__parent__.delete(self.context['az']) self.flash(_('Der Mitbenutzer wurde entfernt.')) self.redirect(self.url(self.context.__parent__))
class ENMSCreateUser(uvcsite.browser.Form): """ Simple Form which displays values from a Dict""" grok.context(ENMSLister) grok.require('uvc.ManageCoUsers') label = "Mitbenutzer anlegen" description = "Nutzen Sie diese Form um einen neuen Mitbenutzer anzulegen" ignoreContent = False mnr_template = ChameleonPageTemplateFile('templates/mnr.cpt') @property def fields(self): return base.Fields(self.context.user_schema) def updateForm(self): super(ENMSCreateUser, self).updateForm() self.fieldWidgets.get('form.field.mnr').template = self.mnr_template def getNextNumber(self, groups): all_azs = [] for group in groups: all_azs.append(group['az']) if not all_azs: return 1 return int(max(all_azs)) + 1 def getDefaultData(self): principal = self.request.principal.id um = getUtility(IUserManagement) all_users = self.getNextNumber(um.getUserGroups(principal)) user = principal + '-' + str(all_users).zfill(2) rollen = [x for x in self.context.__parent__.keys()] return {'mnr': user, 'rollen': rollen} def update(self): data = self.getDefaultData() self.setContentData(base.DictDataManager(data)) @base.action(_("Anlegen")) def anlegen(self): data, errors = self.extractData() if errors: self.flash('Es sind Fehler aufgetreten', type='error') return um = getUtility(IUserManagement) um.addUser(**data) # Setting Home Folder Rights for role in data.get('rollen'): principal_roles = IPrincipalRoleManager( self.context.__parent__[role]) principal_roles.assignRoleToPrincipal('uvc.Editor', data.get('mnr')) self.flash(_('Der Mitbenutzer wurde gespeichert')) principal = self.request.principal homeFolder = IHomeFolder(principal) self.redirect(self.url(homeFolder, '++enms++'))
class Index(TablePage): grok.title(u'Mein Ordner') grok.context(IMyHomeFolder) grok.require('uvc.AccessHomeFolder') # uvcsite.sectionmenu(uvcsite.IExtraViews) cssClasses = { 'table': ('tablesorter table table-striped ' + 'table-bordered table-condensed') } cssClassEven = u'even' cssClassOdd = u'odd' startBachtAt = 15 bachtSize = 15 sortOn = "table-modified-5" @property def title(self): name = self.request.principal.title return u"Ordner von %s" % name description = _(u"Hier werden Ihre Dokumente abgelegt") def getContentTypes(self): interaction = self.request.interaction for key, value in self.context.items(): if (interaction.checkPermission('uvc.ViewContent', value) and not getattr(value, 'excludeFromNav', False)): yield dict(href=absoluteURL(value, self.request), name=key) def executeDelete(self, item): self.flash(_(u'Ihre Dokumente wurden entfernt')) del item.__parent__[item.__name__] def update(self): items = self.request.form.get('table-checkBox-0-selectedItems') if items and 'form.button.delete' in self.request: if isinstance(items, (str, unicode)): items = [items] for key in items: for pf in self.context.values(): if key in pf: self.executeDelete(pf[key]) super(Index, self).update() def renderCell(self, item, column, colspan=0): from z3c.table import interfaces if interfaces.INoneCell.providedBy(column): return u'' cssClass = column.cssClasses.get('td') cssClass = self.getCSSHighlightClass(column, item, cssClass) cssClass = self.getCSSSortClass(column, cssClass) cssClass = self.getCSSClass('td', cssClass) colspanStr = colspan and ' colspan="%s"' % colspan or '' dt = ' data-title="%s" ' % column.header return u'\n <td%s%s%s>%s</td>' % (cssClass, colspanStr, dt, column.renderCell(item))
def anlegen(self): data, errors = self.extractData() if errors: self.flash('Es sind Fehler aufgetreten', type='error') return data['az'] = self.context['az'] self.context.__parent__.update(**data) self.flash(_('Der Mitbenutzer wurde gespeichert')) self.redirect(self.url(self.context.__parent__))
class CreatorColumn(Column): grok.name('creator') grok.context(IFolderColumnTable) header = _(u"Autor") weight = 99 table(IFolderListingTable) def renderCell(self, item): return ', '.join(IZopeDublinCore(item).creators)
def anlegen(self): data, errors = self.extractData() if errors: self.flash('Es sind Fehler aufgetreten', type='error') return data['az'] = self.context['az'] self.context.__parent__.update(**data) self.flash(_(u'Der Mitbenutzer wurde gespeichert')) self.redirect(self.url(self.context.__parent__))
def changePasswort(self): data, errors = self.extractData() if errors: self.flash('Es sind Fehler aufgetreten', type='error') return um = getUtility(IUserManagement) principal = self.request.principal.id data['mnr'] = principal um.updatePasswort(**data) self.flash(_('Ihr Passwort wurde gespeichert!')) self.redirect(self.url(self.context))
def changePasswort(self): data, errors = self.extractData() if errors: self.flash('Es sind Fehler aufgetreten', type='error') return um = getUtility(IUserManagement) principal = self.request.principal.id data['mnr'] = principal um.updatePasswort(**data) self.flash(_(u'Ihr Passwort wurde gespeichert!')) self.redirect(self.url(self.context))
class ModifiedColumn(Column): grok.name('modified') grok.context(IFolderColumnTable) header = _(u"Datum") weight = 100 table(IFolderListingTable) def getSortKey(self, item): return item.modtime def renderCell(self, item): return uvcsite.fmtDateTime(item.modtime)
class Login(Form): """A very basic implementation of a login form. """ grok.title(_("Log in")) grok.require("zope.Public") grok.context(zope.interface.Interface) prefix = "" label = _("Identify yourself") form_name = _("Login form") fields = Fields(ILoginForm) fields['camefrom'].mode = 'hidden' for field in fields: field.prefix = "" @action(_("Log in")) def login(self): data, errors = self.extractData() if errors: return FAILURE principal = self.request.principal if IUnauthenticatedPrincipal.providedBy(principal): self.status = _("Login failed") return FAILURE self.flash( _("You are now logged in as ${name}", mapping={"name": principal.id})) grok.notify(UserLoggedInEvent(principal)) camefrom = self.request.get("camefrom", None) if not camefrom: if ILocation.providedBy(principal): camefrom = absoluteURL(principal, self.request) else: camefrom = absoluteURL(self.context, self.request) self.redirect(camefrom) return SUCCESS
class StateColumn(GetAttrColumn): grok.name('state') grok.context(IFolderColumnTable) header = _(u'Status') attrName = 'status' weight = 3 table(IFolderListingTable) def getValue(self, obj): state = IWorkflowState(obj).getState() if state is not None: return titleForState(state) return self.defaultValue
def login(self): data, errors = self.extractData() if errors: return FAILURE principal = self.request.principal if IUnauthenticatedPrincipal.providedBy(principal): self.status = _("Login failed") return FAILURE self.flash( _("You are now logged in as ${name}", mapping={"name": principal.id})) grok.notify(UserLoggedInEvent(principal)) camefrom = self.request.get("camefrom", None) if not camefrom: if ILocation.providedBy(principal): camefrom = absoluteURL(principal, self.request) else: camefrom = absoluteURL(self.context, self.request) self.redirect(camefrom) return SUCCESS
def anlegen(self): data, errors = self.extractData() if errors: self.flash('Es sind Fehler aufgetreten', type='error') return um = getUtility(IUserManagement) um.addUser(**data) # Setting Home Folder Rights for role in data.get('rollen'): principal_roles = IPrincipalRoleManager(self.context.__parent__[role]) principal_roles.assignRoleToPrincipal('uvc.Editor', data.get('mnr')) self.flash(_(u'Der Mitbenutzer wurde gespeichert')) principal = self.request.principal homeFolder = IHomeFolder(principal).homeFolder self.redirect(self.url(homeFolder, '++enms++'))
def anlegen(self): data, errors = self.extractData() if errors: self.flash('Es sind Fehler aufgetreten', type='error') return um = getUtility(IUserManagement) um.addUser(**data) # Setting Home Folder Rights for role in data.get('rollen'): principal_roles = IPrincipalRoleManager( self.context.__parent__[role]) principal_roles.assignRoleToPrincipal('uvc.Editor', data.get('mnr')) self.flash(_('Der Mitbenutzer wurde gespeichert')) principal = self.request.principal homeFolder = IHomeFolder(principal) self.redirect(self.url(homeFolder, '++enms++'))
class Link(LinkColumn): grok.name('link') grok.context(IFolderColumnTable) weight = 1 table(IFolderListingTable) header = _(u"Titel") linkName = u"edit" def getLinkURL(self, item): """Setup link url.""" state = IWorkflowState(item).getState() if state is not None: state = titleForState(state) if self.linkName is not None and state == "Entwurf": return '%s/%s' % (absoluteURL(item, self.request), self.linkName) return absoluteURL(item, self.request) def getLinkContent(self, item): return item.title def getSortKey(self, item): return item.title
def entfernen(self): data, errors = self.extractData() self.context.__parent__.delete(self.context['az']) self.flash(_('Der Mitbenutzer wurde entfernt.')) self.redirect(self.url(self.context.__parent__))
def entfernen(self): data, errors = self.extractData() self.context.__parent__.delete(self.context['az']) self.flash(_(u'Der Mitbenutzer wurde entfernt.')) self.redirect(self.url(self.context.__parent__))
def nextURL(self): self.flash(_('Added Content'), type="success") return self.url(self.context)
def executeDelete(self, item): self.flash(_(u'Ihre Dokumente wurden entfernt')) del item.__parent__[item.__name__]
def nextURL(self): self.flash(_('Added Content')) return self.url(self.context)