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")
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)
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"}) )
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)
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
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)
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
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())
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)) )
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())
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)
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')
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"))
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)
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")
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)
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)
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
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 )
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)
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 )
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')
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')
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)
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)
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})
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
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.") ) )
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})
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'))
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') )
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)
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
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()
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)
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
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)) )
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)
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
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)
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)
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
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
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() )
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 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)
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)
def label(self): return _(u"Are you sure you want to delete this comment ?")
def summary(self): return _(u"Preference ${preference} is ${condition}.", mapping={'preference': self.preference, 'condition': self.condition})
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")),
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")), ])