Exemplo n.º 1
0
class EditForm(z3cformhelper.EditForm):
    """Portlet edit form.
    """
    fields = field.Fields(IPortlet)
    label = _(u"title_edit_portlet", default=u"Edit x items portlet")
    description = _(u"description_portlet",
                    default=u"A portlet which renders x last items")
Exemplo n.º 2
0
    def action(self):
        #precondition
        if not self.kind.providedBy(self.context):
            raise ValueError("can t join something that is not a group")
        group = self.get_group()
        portal_state = component.getMultiAdapter((self.context, self.request),
                                                 name=u'plone_portal_state')
        member = portal_state.member()
        if member is None:
            raise ValueError("you must be authenticated")

        group_state = component.getMultiAdapter((group, self.request),
                                                name=u'plone_context_state')
        state = group_state.workflow_state()
        role = "Contributor"
        if state == "open":
            #just add the localrole
            group.manage_setLocalRoles(member.getId(), [role])
            group.reindexObject()
            event.notify(
                UserRolesModifiedOnObjectEvent(member.getUserName(), group))
            msg = _(u"You have joined this group")
        elif state == "moderated" or state == "private":
            #You are supposed to already have view context to be here
            manager = group.restrictedTraverse("@@request_manager")
            request = manager.create()
            request.role = role
            manager.add(request)
            msg = _(u"You have request access to this group. "
                    u"Please wait for an administrator to validate it")

        self.request.response.redirect(self.context.absolute_url())
        status = IStatusMessage(self.request)
        status.add(msg)
Exemplo n.º 3
0
    def validate_urls(obj):
        viadeo = "http://www.viadeo.com/profile/"
        linkedin = "http://www.linkedin.com/profile/"
        google = "https://plus.google.com/"
        twitter = "https://twitter.com/"

        if obj.viadeo and not obj.viadeo.startswith(viadeo):
            raise interface.Invalid(
                _(u"${url} is not a valid ${service} url",
                  mapping={"url": obj.viadeo, "service": "viadeo"})
            )

        if obj.linkedin and not obj.linkedin.startswith(linkedin):
            raise interface.Invalid(
                _(u"${url} is not a valid ${service} url",
                  mapping={"url": obj.linkedin, "service": "linkedin"})
            )

        if obj.google and not obj.google.startswith(google):
            raise interface.Invalid(
                _(u"${url} is not a valid ${service} url",
                  mapping={"url": obj.google, "service": "google"})
            )

        if obj.twitter and not obj.twitter.startswith(twitter):
            raise interface.Invalid(
                _(u"${url} is not a valid ${service} url",
                  mapping={"url": obj.twitter, "service": "twitter"})
            )
Exemplo n.º 4
0
 def _handleUser(self, action):
     if self.request.response.status in (301, 302):
         return
     data, errors = self.extractData()
     message = IStatusMessage(self.request)
     if errors:
         message.add("%s" % errors, type="error")
         logger.info(errors)
         return
     user = self._getUserItem(data['user_id'])
     if user is None:
         logger.info("user data not found")
         message.add(_(u"user not found in directory"), type="error")
         return
     wtool = getToolByName(self.context, 'portal_workflow')
     try:
         wtool.doActionFor(user, action)
     except WorkflowException as e:
         message.add(_(u"Can't enable the member ${user}",
                       mapping={'user': user}),
                     type="error")
         logger.error("Can't enable the member %s: %s" %
                      (user.username, e.message))
         return
     referer = self.request.get("HTTP_REFERER")
     if not referer:
         referer = self.context.absolute_url()
     self.request.response.redirect(referer)
Exemplo n.º 5
0
def _createCompaniesGroups(home, company, username,
                           mtool, auth_user, request):
    private_group = createContentInContainer(
        home,
        'collective.rcse.group',
        title=translate(_(u"${company}'s private group",
                          mapping={'company': company.title}),
                        context=request
                        )
    )
    private_group.manage_delLocalRoles([auth_user])
    private_group.changeOwnership(mtool.getMemberById(username))
    private_group.manage_setLocalRoles(username, ['Owner'])
    private_group.setCreators([username])
    private_group.reindexObjectSecurity()
    company.private_group = private_group.id
    public_group = createContentInContainer(
        home,
        'collective.rcse.group',
        title=translate(_(u"${company}'s public group",
                          mapping={'company': company.title}),
                        context=request
                        )
    )
    public_group.manage_delLocalRoles([auth_user])
    public_group.changeOwnership(mtool.getMemberById(username))
    public_group.manage_setLocalRoles(username, ['Owner'])
    public_group.setCreators([username])
    public_group.reindexObjectSecurity()
    wtool = getToolByName(company, 'portal_workflow')
    wtool.doActionFor(public_group, 'show_internally')
    company.public_group = public_group.id
Exemplo n.º 6
0
 def _handleUser(self, action):
     if self.request.response.status in (301, 302):
         return
     data, errors = self.extractData()
     message = IStatusMessage(self.request)
     if errors:
         message.add("%s" % errors, type="error")
         logger.info(errors)
         return
     user = self._getUserItem(data['user_id'])
     if user is None:
         logger.info("user data not found")
         message.add(_(u"user not found in directory"), type="error")
         return
     wtool = getToolByName(self.context, 'portal_workflow')
     try:
         wtool.doActionFor(user, action)
     except WorkflowException as e:
         message.add(_(u"Can't enable the member ${user}",
                       mapping={'user': user}),
                     type="error")
         logger.error("Can't enable the member %s: %s" %
                      (user.username, e.message))
         return
     referer = self.request.get("HTTP_REFERER")
     if not referer:
         referer = self.context.absolute_url()
     self.request.response.redirect(referer)
Exemplo n.º 7
0
def _createCompaniesGroups(home, company, username, mtool, auth_user, request):
    private_group = createContentInContainer(
        home,
        'collective.rcse.group',
        title=translate(_(u"${company}'s private group",
                          mapping={'company': company.title}),
                        context=request))
    private_group.manage_delLocalRoles([auth_user])
    private_group.changeOwnership(mtool.getMemberById(username))
    private_group.manage_setLocalRoles(username, ['Owner'])
    private_group.setCreators([username])
    private_group.reindexObjectSecurity()
    company.private_group = private_group.id
    public_group = createContentInContainer(
        home,
        'collective.rcse.group',
        title=translate(_(u"${company}'s public group",
                          mapping={'company': company.title}),
                        context=request))
    public_group.manage_delLocalRoles([auth_user])
    public_group.changeOwnership(mtool.getMemberById(username))
    public_group.manage_setLocalRoles(username, ['Owner'])
    public_group.setCreators([username])
    public_group.reindexObjectSecurity()
    wtool = getToolByName(company, 'portal_workflow')
    wtool.doActionFor(public_group, 'show_internally')
    company.public_group = public_group.id
Exemplo n.º 8
0
class ModifyCompanyForm(AutoExtensibleForm, form.Form):
    schema = ModifyCompanyFormSchema
    enableCSRFProtection = True
    label = _(u"Modify your company")

    @button.buttonAndHandler(_(u"Submit"), name="submit")
    def handleApply(self, action):
        sm = getSecurityManager()
        if not sm.checkPermission(ModifyPortalContent, self.context):
            raise Unauthorized
        data, errors = self.extractData()
        if data['company'] is None and data['new_company'] is None:
            raise interfaces.WidgetActionExecutionError(
                'new_company',
                interface.Invalid(
                    _(u"You need to specify your company name.")))
        if errors:
            self.status = _(u"There were errors.")
            return
        if data['new_company'] is not None:
            self.context.company = data['new_company']
            self.context.company_id = createCompany(self.context, self.request,
                                                    self.context.username,
                                                    self.context.company)
        else:
            self.context.company_id = data['company']
            companies = vocabularies.companies(self.context)
            self.context.company = companies.getTerm(data['company']).title
        self.request.response.redirect(self.context.absolute_url())

    @button.buttonAndHandler(_(u"Cancel"), name="cancel")
    def handleCancel(self, action):
        self.request.response.redirect(self.context.absolute_url())
Exemplo n.º 9
0
class RegisterForm(register_information.RegisterInformationForm):
    schema = RegisterFormSchema
    enableCSRFProtection = True
    label = _('Register')

    @button.buttonAndHandler(_(u"Register"), name="register")
    def handleRegister(self, action):
        data, errors = self.extractData()
        self._checkForm(data)
        if errors:
            return
        if data['password'] != data['password_confirm']:
            raise interfaces.WidgetActionExecutionError(
                'password', interface.Invalid(_(u'Passwords do not match.'))
            )
        self._registerUser(data)
        self._updateDataCompany(data, data['login'])
        self._updateUser(data['login'], data)
        self._renameUserContent()
        self._sendMailToUser()
        self._sendNotificationToAdmin()
        portal_url = getToolByName(self.context, "portal_url")
        self.request.response.redirect('%s/login' % portal_url())

    def _registerUser(self, data):
        regtool = getToolByName(self.context, 'portal_registration')
        try:
            regtool.addMember(data['login'], data['password'])
            self.portal_url = getToolByName(self.context, "portal_url")
            self.status = _(u"Your can now log in.")
            self.request.response.redirect('%s/login' % self.portal_url())
        except ValueError, e:
            raise interfaces.ActionExecutionError(
                interface.Invalid(unicode(e))
            )
Exemplo n.º 10
0
 def handleApply(self, action):
     sm = getSecurityManager()
     if not sm.checkPermission(ModifyPortalContent, self.context):
         raise Unauthorized
     data, errors = self.extractData()
     if data['company'] is None and data['new_company'] is None:
         raise interfaces.WidgetActionExecutionError(
             'new_company',
             interface.Invalid(
                 _(u"You need to specify your company name.")
             )
         )
     if errors:
         self.status = _(u"There were errors.")
         return
     if data['new_company'] is not None:
         self.context.company = data['new_company']
         self.context.company_id = createCompany(self.context,
                                                 self.request,
                                                 self.context.username,
                                                 self.context.company)
     else:
         self.context.company_id = data['company']
         companies = vocabularies.companies(self.context)
         self.context.company = companies.getTerm(data['company']).title
     self.request.response.redirect(self.context.absolute_url())
Exemplo n.º 11
0
class AddFormSchema(group_base.BaseAddFormSchema):
    """Add form"""
    title = schema.TextLine(title=_(u"Title"))
    description = schema.Text(title=_(u"Description"), required=False)
    image = NamedBlobImage(title=_(u"Image"),
                           description=_(u"Please put an image file here"),
                           required=False)
Exemplo n.º 12
0
class AddFormSchema(group_base.BaseAddFormSchema, VideoSchema):
    """Add form"""

    title = schema.TextLine(title=_(u"Title"))

    description = schema.Text(title=_(u"Description"), required=False)
    form.order_before(title='description')
    form.order_before(description='file')
Exemplo n.º 13
0
class AddFormSchema(group_base.BaseAddFormSchema):
    """Add form"""
    title = schema.TextLine(title=_(u"Title"))
    description = schema.Text(
        title=_(u"Description"),
        required=False,
    )
    remoteUrl = schema.TextLine(title=_(u"URL"))
Exemplo n.º 14
0
class AddForm(z3cformhelper.AddForm):
    """add form"""
    fields = field.Fields(IPortlet)
    label = _(u"title_add_portlet", default=u"Add x items portlet")
    description = _(u"description_portlet",
                    default=u"A portlet which renders x last items")

    def create(self, data):
        return Assignment(**data)
Exemplo n.º 15
0
class AddFormSchema(model.Schema):
    directives.order_before(where='what')
    where = schema.Choice(
        title=_(u"Where"),
        description=_(u"Warning, only groups can be added into Home"),
        vocabulary="collective.rcse.vocabulary.groups_with_home")
    what = schema.Choice(title=_(u"What"),
                         vocabulary="collective.rcse.vocabulary.addableTypes",
                         default="collective.rcse.group")
Exemplo n.º 16
0
class AddForm(group_base.BaseAddForm):
    schema = AddFormSchema
    msg_added = _(u"Etherpad added")
    label = _(u"Add Etherpad")
    CONTENT_TYPE = CONTENT_TYPE

    @button.buttonAndHandler(_(u"Add etherpad"))
    def handleAdd(self, action):
        group_base.BaseAddForm.handleAdd(self, action)
Exemplo n.º 17
0
class AddForm(group_base.BaseAddForm):
    schema = AddFormSchema
    CONTENT_TYPE = CONTENT_TYPE
    msg_added = _(u"Article added")
    label = _(u"Add article")

    @button.buttonAndHandler(_(u"Add Article"))
    def handleAdd(self, action):
        group_base.BaseAddForm.handleAdd(self, action)
Exemplo n.º 18
0
class PreferenceConditionAddForm(AddForm):
    form_fields = form.FormFields(IPreferenceCondition)
    label = _(u"Add Preference Condition")
    description = _(u"Apply only if the user's preference match.")
    form_name = _(u"Configure element")

    def create(self, data):
        c = PreferenceCondition()
        form.applyChanges(c, self.form_fields, data)
        return c
Exemplo n.º 19
0
class RegisterInformationFormSchema(IMember):
    company = schema.Choice(
        title=_(u"Select your company"),
        vocabulary='collective.rcse.vocabulary.companies',
        required=False
    )
    new_company = schema.TextLine(
        title=_(u"Or create it"),
        required=False
    )
Exemplo n.º 20
0
class AddForm(group_base.BaseAddForm):
    schema = AddFormSchema
    CONTENT_TYPE = CONTENT_TYPE
    msg_added = _(u"Event added")
    label = _(u"Add event")

    #    ignoreContext = True

    @button.buttonAndHandler(_(u"Add event"))
    def handleAdd(self, action):
        group_base.BaseAddForm.handleAdd(self, action)
Exemplo n.º 21
0
class AddFormSchema(group_base.BaseAddFormSchema):
    """Add form"""
    file = NamedBlobFile(title=_(u"File"))
    title = schema.TextLine(
        title=_(u"Title"),
        required=False,
    )
    description = schema.Text(
        title=_(u"Description"),
        required=False
    )
Exemplo n.º 22
0
 def update(self):
     super(ResourcesViewlet, self).update()
     self.locales = {
         "readmore_more": self._translate(_(u"Read more")),
         "readmore_close": self._translate(_(u"Close")),
     }
     self.json_locales = json.dumps(self.locales)
     user = self.context.restrictedTraverse('auth_memberinfo')
     user.update()
     if user.memberid:
         preferences = user.get_settings()
         self.theme = preferences.get('theme')
Exemplo n.º 23
0
class ManagePendingUserForm(ManageUserForm):
    def updateActions(self):
        super(ManageUserForm, self).updateActions()
        self.actions['approve'].addClass('btn-primary')

    @button.buttonAndHandler(_(u"Approve"), name="approve")
    def handleApprove(self, action):
        self._handleUser('approve')

    @button.buttonAndHandler(_(u"Decline"), name="decline")
    def handleDisapprove(self, action):
        self._handleUser('decline')
Exemplo n.º 24
0
class FiltersForm(AutoExtensibleForm, form.Form):
    schema = FiltersFormSchema
    form_name = 'filter_content'

    enableUnloadProtection = False

    def updateWidgets(self):
        super(FiltersForm, self).updateWidgets()
        if self.request.get('SearchableText'):
            self.widgets['SearchableText'].value =\
                self.request.get('SearchableText')
        if self.request.get('portal_type'):
            self.widgets['portal_type'].value = self.request.get('portal_type')
        if self.request.get('sort_on'):
            self.widgets['sort_on'].value = self.request.get('sort_on')
        if self.request.get('sort_order') == 'reverse':
            self.widgets['sort_order'].items[0]['checked'] = True

    @button.buttonAndHandler(_(u'Filter'))
    def filter(self, action):
        data, errors = self.extractData()
        if data['sort_order']:
            data['sort_order'] = 'reverse'
        else:
            data['sort_order'] = 'ascending'
        if data['portal_type'] is None:
            del data['portal_type']
        if data['SearchableText'] is None:
            del data['SearchableText']
        params = urllib.urlencode(data)
        self.request.response.redirect('?%s' % params)
Exemplo n.º 25
0
class ICompany(interface.Interface):
    """Schema for the dexterity company content type."""
    private_group = schema.ASCIILine(required=False, readonly=True)
    public_group = schema.ASCIILine(required=False, readonly=True)
    logo = field.NamedBlobImage(title=_(u"Logo"), required=False)
    corporate_name = schema.TextLine(title=_(u"Corporate name"))
    sector = schema.TextLine(title=_(u"Sector"), )
    turnover = schema.TextLine(title=_(u"Turnover"), required=False)
    address = schema.TextLine(title=_(u"Address"), required=False)
    postal_code = schema.TextLine(title=_(u"Postal code"))
    sites = schema.List(title=_(u"Sites"),
                        value_type=schema.TextLine(),
                        required=False)
    city = schema.TextLine(title=_(u"City"))
    website = schema.TextLine(title=_(u"Website"), required=False)
    blog = schema.TextLine(title=_(u"Blog"), required=False)
Exemplo n.º 26
0
 def label(self):
     title = self.context.Title()
     if type(title) == str:
         title = title.decode('utf-8')
     return _(u"Are you sure you want to delete "
              u"${title} and all it's content ?",
              mapping={"title": title})
Exemplo n.º 27
0
class ManagerRole(object):
    """
    Taken from plone.app.workflow.localroles to allow Manager in sharing
    """
    interface.implements(ISharingPageRole)

    title = _(u"title_can_manage", default=u"Can Manage")
    required_permission = core_permissions.ModifyPortalContent
Exemplo n.º 28
0
 def _checkForm(self, data):
     if data['company'] is None and data['new_company'] is None:
         raise interfaces.WidgetActionExecutionError(
             'new_company',
             interface.Invalid(
                 _(u"You need to specify your company name.")
             )
         )
Exemplo n.º 29
0
 def label(self):
     title = self.context.Title()
     if type(title) == str:
         title = title.decode('utf-8')
     return _(
         u"Are you sure you want to delete "
         u"${title} and all it's content ?",
         mapping={"title": title})
Exemplo n.º 30
0
class FiltersFormSchema(model.Schema):
    """A set of filters option to select which
    object should be displayed in a group."""

    SearchableText = schema.TextLine(title=_(u'Search'), required=False)

    directives.widget('portal_type', SelectFieldWidget)
    portal_type = schema.Choice(
        title=_(u'Type'),
        required=False,
        vocabulary='collective.rcse.vocabulary.addableTypes')

    sort_on = schema.Choice(title=_(u'Sort on'),
                            vocabulary=sortBy,
                            default="relevance")

    sort_order = schema.Bool(title=_(u'Reversed'))
Exemplo n.º 31
0
class RegisterFormSchema(register_information.RegisterInformationFormSchema):
    """Form used by user to register."""
    directives.order_after(
        login='******',
        password='******',
        password_confirm='password',
    )
    login = schema.ASCIILine(
        title=_(u'Login')
    )
    directives.widget('password', PasswordFieldWidget)
    password = schema.TextLine(
        title=_(u'Password')
    )
    directives.widget('password_confirm', PasswordFieldWidget)
    password_confirm = schema.TextLine(
        title=_(u'Confirm the password')
    )
Exemplo n.º 32
0
class IPortlet(IPortletDataProvider):
    """A portlet which renders external content using oembed service"""

    header = schema.TextLine(title=_p(u"Portlet header"),
                             description=_p(u"Title of the rendered portlet"),
                             required=True)

    count = schema.Int(title=_(u"Limit"), required=True, default=10)

    ptype = schema.Choice(title=_(u"Portal Type"),
                          description=_(u"Choose type to filter."),
                          vocabulary="collective.rcse.vocabulary.addableTypes",
                          required=False)

    group = schema.Bool(
        title=_(u"Filter on group"),
        description=_(u"Display only content from the current group"),
        default=True)
Exemplo n.º 33
0
 def __call__(self, iface):
     #attrs = iface.__dict__['_InterfaceClass__attrs'].items()
     attrs = getFieldsInOrder(iface)
     fields = OrderedDict()
     for name, attr in attrs:
         if name in self.privacy_blacklist:
             continue
         if isinstance(attr, schema.Field):
             field = schema.Bool(title=_(u'Hide: ${attr}',
                                         mapping={'attr': attr.title}),
                                 required=False)
             fields['%s%s' % (NAMESPACE, name)] = field
     fieldset = model.Fieldset('privacy',
                               label=_(u'Privacy'),
                               fields=[f for f in fields.keys()])
     new_iface = model.SchemaClass(iface.__name__, (iface, ), fields)
     new_iface.setTaggedValue(FIELDSETS_KEY, [fieldset])
     return new_iface
Exemplo n.º 34
0
def createDirectories(parent):
    existing = parent.objectIds()
    if "users_directory" not in existing:
        _createObjectByType(
            "collective.rcse.directory",
            parent,
            id="users_directory",
            title=_(u"Users directory")
        )
    _updateFolder(
        parent.users_directory,
        ['collective.rcse.member'],
        "users_directory_view"
    )
    _publishContent(parent.users_directory)
    if "companies_directory" not in existing:
        _createObjectByType(
            "collective.rcse.directory",
            parent,
            id="companies_directory",
            title=_(u"Companies directory")
        )
    _updateFolder(
        parent.companies_directory,
        ['collective.rcse.company'],
        "companies_directory_view",
    )
    _publishContent(parent.companies_directory)
    if "home" not in existing:
        _createObjectByType(
            "Folder",
            parent,
            id="home",
            title=_(u"Home")
        )
    _updateFolder(
        parent.home,
        ['collective.rcse.group'],
        "timeline_view",
    )
    alsoProvides(parent.home, INavigationRoot)
    _publishContent(parent.home)
    parent.home.reindexObject()
Exemplo n.º 35
0
 def __call__(self):
     status = IStatusMessage(self.request)
     memberview = AuthenticatedMemberInfoView(self.context, self.request)
     try:
         memberview.update()
     except ValueError:
         raise Unauthorized
     self.memberinfo = memberview.get_membrane()
     if self.memberinfo.email_validation == 'ok':
         status.add(_(u'Your email has already been validated.'),
                    type=u"error")
     else:
         self.generateNewKey()
         try:
             self.sendValidationEmail()
             status.add(_(u'Email has been sent.'))
         except SMTPException:
             status.add(_(u'Error while sending the email.'), type=u"error")
     return self.request.response.redirect(memberview.url)
Exemplo n.º 36
0
 def testCompany(self):
     if ICompany.providedBy(self.context) and \
             self.context.id == self.member_data.company_id:
         return True
     elif not self.has_company_info() and self.is_company_owner():
         msg = _(u"Please complete your company information")
         self.status.add(msg)
         url = '%s/edit' % self.company.absolute_url()
         self.lock_rendering_and_redirect(url=url)
         return True
     return False
Exemplo n.º 37
0
 def _registerUser(self, data):
     regtool = getToolByName(self.context, 'portal_registration')
     try:
         regtool.addMember(data['login'], data['password'])
         self.portal_url = getToolByName(self.context, "portal_url")
         self.status = _(u"Your can now log in.")
         self.request.response.redirect('%s/login' % self.portal_url())
     except ValueError, e:
         raise interfaces.ActionExecutionError(
             interface.Invalid(unicode(e))
         )
Exemplo n.º 38
0
def groupTypes(context):
    """Get content types addable in a specific context"""
    portal_types = getToolByName(context, 'portal_types')
    types = portal_types.listContentTypes()
    types = [t for t in types if context.getTypeInfo().allowType(t)]
    terms = [
        SimpleTerm(
            baseNormalize(t),
            baseNormalize(t),
            _(portal_types[t].title)
        ) for t in sorted(types)
    ]
    return SimpleVocabulary(terms)
Exemplo n.º 39
0
 def __call__(self, iface):
     #attrs = iface.__dict__['_InterfaceClass__attrs'].items()
     attrs = getFieldsInOrder(iface)
     fields = OrderedDict()
     for name, attr in attrs:
         if name in self.privacy_blacklist:
             continue
         if isinstance(attr, schema.Field):
             field = schema.Bool(
                 title=_(u'Hide: ${attr}',
                         mapping={'attr': attr.title}),
                 required=False
             )
             fields['%s%s' % (NAMESPACE, name)] = field
     fieldset = model.Fieldset(
         'privacy',
         label=_(u'Privacy'),
         fields=[f for f in fields.keys()]
     )
     new_iface = model.SchemaClass(iface.__name__, (iface,), fields)
     new_iface.setTaggedValue(FIELDSETS_KEY, [fieldset])
     return new_iface
Exemplo n.º 40
0
 def handleDelete(self, action):
     data, errors = self.extractData()
     userid = data['user_id']
     if not userid in self.context:
         return  # User has already been deleted
     self.context.manage_delObjects([userid])
     msg = _(u"User ${user} has been deleted",
             mapping={'user': userid})
     IStatusMessage(self.request).add(msg)
     referer = self.request.get("HTTP_REFERER")
     if not referer:
         referer = self.context.absolute_url()
     self.request.response.redirect(referer)
Exemplo n.º 41
0
    def action(self):
        #precondition
        if not self.kind.providedBy(self.context):
            raise ValueError("can t join something that is not a group")
        group = self.get_group()
        portal_state = component.getMultiAdapter(
            (self.context, self.request),
            name=u'plone_portal_state'
        )
        member = portal_state.member()
        if member is None:
            raise ValueError("you must be authenticated")

        group_state = component.getMultiAdapter(
            (group, self.request),
            name=u'plone_context_state'
        )
        state = group_state.workflow_state()
        role = "Contributor"
        if state == "open":
            #just add the localrole
            group.manage_setLocalRoles(member.getId(), [role])
            group.reindexObject()
            event.notify(UserRolesModifiedOnObjectEvent(member.getUserName(),
                                                        group))
            msg = _(u"You have joined this group")
        elif state == "moderated" or state == "private":
            #You are supposed to already have view context to be here
            manager = group.restrictedTraverse("@@request_manager")
            request = manager.create()
            request.role = role
            manager.add(request)
            msg = _(u"You have request access to this group. "
                    u"Please wait for an administrator to validate it")

        self.request.response.redirect(self.context.absolute_url())
        status = IStatusMessage(self.request)
        status.add(msg)
Exemplo n.º 42
0
 def testMember(self):
     if IMembraneUser.providedBy(self.context) and \
             self.context.username == self.member.getUserName():
         return True
     elif not self.has_required_info():
         msg = _(u"Your profile is missing some required information")
         self.status.add(msg)
         url = '%s/edit' % (self.member_data.absolute_url())
         self.lock_rendering_and_redirect(url=url)
         return True
     elif self.is_disabled_user():
         msg = _(u"Your profile has been disabled.")
         self.status.add(msg)
         url = self.member_data.absolute_url()
         self.lock_rendering_and_redirect(url=url)
         return True
     elif not self.is_validated_user():
         msg = _(u"Your profile is waiting for approval")
         self.status.add(msg)
         url = self.member_data.absolute_url()
         self.lock_rendering_and_redirect(url=url)
         return True
     return False
Exemplo n.º 43
0
 def testUser(self):
     if self.portal_state.anonymous():
         return True
     elif self.username == 'admin':
         return True
     elif self.view_in_blacklist():
         return True
     elif not self.is_registred():
         msg = _(u"You are not registred, please proceed")
         self.status.add(msg)
         url = '%s/@@register_information' % \
             (self.portal_state.portal_url())
         self.lock_rendering_and_redirect(url=url)
         return True
     return False
Exemplo n.º 44
0
def groups_with_home(context):
    """Group where the user can add contents + home."""
    portal_membership = getToolByName(context, 'portal_membership')
    username = portal_membership.getAuthenticatedMember().getUserName()
    site = getToolByName(context, 'portal_url').getPortalObject()
    home = site['home']
    terms = [SimpleTerm(value=IUUID(home), title=_(u"Home"))]
    uids = _getGroupsWithAddPermission(username)
    for uid in uids:
        terms.append(SimpleVocabulary.createTerm(
            unicode(uid),
            str(uid),
            _getGroupTitleFromUUID(uid)
            ))
    return SimpleVocabulary(terms)
 def handleApply(self, action):
     self.mtool = getToolByName(self.context, 'portal_membership')
     data, errors = self.extractData()
     self._checkForm(data)
     if errors:
         self.status = _(u"There were errors.")
         return
     self.member = self.mtool.getAuthenticatedMember()
     self._updateDataCompany(data, self.member.getId())
     self._updateUser(self.member.getId(), data)
     self._renameUserContent()
     self._sendMailToUser()
     self._sendNotificationToAdmin()
     portal_url = getToolByName(self.context, "portal_url")
     self.request.response.redirect(
         '%s/@@personal-information' % portal_url()
     )
Exemplo n.º 46
0
 def handleRegister(self, action):
     data, errors = self.extractData()
     self._checkForm(data)
     if errors:
         return
     if data['password'] != data['password_confirm']:
         raise interfaces.WidgetActionExecutionError(
             'password', interface.Invalid(_(u'Passwords do not match.'))
         )
     self._registerUser(data)
     self._updateDataCompany(data, data['login'])
     self._updateUser(data['login'], data)
     self._renameUserContent()
     self._sendMailToUser()
     self._sendNotificationToAdmin()
     portal_url = getToolByName(self.context, "portal_url")
     self.request.response.redirect('%s/login' % portal_url())
Exemplo n.º 47
0
 def action(self):
     if not self.kind.providedBy(self.context):
         raise ValueError("can t join something that is not a group")
     group = self.get_group()
     portal_state = component.getMultiAdapter(
         (self.context, self.request),
         name=u'plone_portal_state'
     )
     member = portal_state.member()
     if member is None:
         raise ValueError("you must be authenticated")
     group.manage_delLocalRoles([member.getId()])
     group.reindexObject()
     event.notify(UserRolesModifiedOnObjectEvent(member.getUserName(),
                                                 group))
     msg = _(u"You have quit this group")
     url = group.aq_parent.absolute_url()
     self.request.response.redirect(url)
     status = IStatusMessage(self.request)
     status.add(msg)
Exemplo n.º 48
0
 def _doDelete(self):
     wf = self.context.restrictedTraverse('folder_publish')
     ##parameters=workflow_action=None, paths=[], comment='No comment',
     ##expiration_date=None, effective_date=None, include_children=False
     wf(workflow_action="delete",
        comment="RCSE Delete action",
        include_children=True,
        paths=['/'.join(self.context.getPhysicalPath())])
     status = IStatusMessage(self.request)
     # lets replace the message from folder_publish by ours.
     status.show()
     self.request.cookies[STATUSMESSAGEKEY] = None
     self.request.response.expireCookie(STATUSMESSAGEKEY, path='/')
     annotations = IAnnotations(self.request)
     annotations[STATUSMESSAGEKEY] = None
     status.add(_(u"Item and it's content has been deleted"))
     # avoid getting the context itself if it's a group
     group = get_group(aq_inner(self.context).__parent__)
     if group is None:
         url = getToolByName(self.context, 'portal_url')()
     else:
         url = group.absolute_url()
     self.request.response.redirect(url)
Exemplo n.º 49
0
 def label(self):
     return _(u"Are you sure you want to delete this comment ?")
Exemplo n.º 50
0
 def summary(self):
     return _(u"Preference ${preference} is ${condition}.",
              mapping={'preference': self.preference,
                       'condition': self.condition})
Exemplo n.º 51
0
from plone.uuid.interfaces import IUUID
from Products.CMFCore.utils import getToolByName
from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm
from zope.schema.interfaces import IVocabularyFactory
from zope.component import getUtility
from zope.component.hooks import getSite

from collective.rcse.i18n import _, _t
from collective.rcse import cache
from collective.rcse.settings import IPersonalPreferences, themes as s_themes
from collective.rcse.utils import sudo

themes = s_themes

gender = SimpleVocabulary([
    SimpleTerm(value=u"female", title=_(u"Female")),
    SimpleTerm(value=u"male", title=_(u"Male")),
])

image_position = SimpleVocabulary([
    SimpleTerm(value=u"top-left", title=_(u"Top left")),
    SimpleTerm(value=u"top-right", title=_(u"Top right")),
    SimpleTerm(value=u"bottom-left", title=_(u"Bottom left")),
    SimpleTerm(value=u"bottom-right", title=_(u"Bottom right")),
])

languages = SimpleVocabulary([
    SimpleTerm(value=u"English", title=_(u"English")),
    SimpleTerm(value=u"French", title=_(u"French")),
    SimpleTerm(value=u"Italian", title=_(u"Italian")),
    SimpleTerm(value=u"Spanish", title=_(u"Spanish")),
Exemplo n.º 52
0
from zope import schema
from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm

from collective.rcse.i18n import _


class ISettings(interface.Interface):
    """Marker interface to get utilities giving
    interfaces with default settings."""

    def getInterface():
        """Return an interface with default settings."""


themes = SimpleVocabulary([
    SimpleTerm(value="", title=_(u"Default")),
    SimpleTerm(value="amelia", title=_(u"Amelia")),
    SimpleTerm(value="cerulean", title=_(u"Cerulean")),
    SimpleTerm(value="cosmo", title=_(u"Cosmo")),
    SimpleTerm(value="cyborg", title=_(u"Cyborg")),
    SimpleTerm(value="flatly", title=_(u"Flatly")),
    SimpleTerm(value="journal", title=_(u"Journal")),
    SimpleTerm(value="lumen", title=_(u"Lumen")),
#    SimpleTerm(value="readable", title=_(u"Readable")),
    SimpleTerm(value="simplex", title=_(u"Simplex")),
    SimpleTerm(value="slate", title=_(u"Slate")),
    SimpleTerm(value="spacelab", title=_(u"Spacelab")),
#    SimpleTerm(value="superhero", title=_(u"Superhero")),
    SimpleTerm(value="united", title=_(u"United")),
    SimpleTerm(value="yeti", title=_(u"Yeti")),
    ])