コード例 #1
0
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))
コード例 #2
0
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,
    )
コード例 #3
0
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)
コード例 #4
0
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
コード例 #5
0
class MetaTypeColumn(GetAttrColumn):
    grok.name('meta_type')
    grok.context(IFolderColumnTable)
    header = _(u'Objekt')
    attrName = 'meta_type'
    weight = 2
    table(IFolderListingTable)
コード例 #6
0
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__))
コード例 #7
0
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++'))
コード例 #8
0
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))
コード例 #9
0
 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__))
コード例 #10
0
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)
コード例 #11
0
ファイル: enms.py プロジェクト: novareto/uvcsite
 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__))
コード例 #12
0
 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))
コード例 #13
0
ファイル: enms.py プロジェクト: novareto/uvcsite
 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))
コード例 #14
0
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)
コード例 #15
0
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
コード例 #16
0
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
コード例 #17
0
    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
コード例 #18
0
ファイル: enms.py プロジェクト: novareto/uvcsite
 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++'))
コード例 #19
0
 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++'))
コード例 #20
0
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
コード例 #21
0
 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__))
コード例 #22
0
ファイル: enms.py プロジェクト: novareto/uvcsite
 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__))
コード例 #23
0
 def nextURL(self):
     self.flash(_('Added Content'), type="success")
     return self.url(self.context)
コード例 #24
0
 def executeDelete(self, item):
     self.flash(_(u'Ihre Dokumente wurden entfernt'))
     del item.__parent__[item.__name__]
コード例 #25
0
ファイル: views.py プロジェクト: novareto/uvcsite
 def nextURL(self):
     self.flash(_('Added Content'))
     return self.url(self.context)
コード例 #26
0
ファイル: views.py プロジェクト: novareto/uvcsite
 def executeDelete(self, item):
     self.flash(_(u'Ihre Dokumente wurden entfernt'))
     del item.__parent__[item.__name__]
コード例 #27
0
 def nextURL(self):
     self.flash(_('Added Content'))
     return self.url(self.context)