def update(self): self.key = 'pressapp.channelmanagement.channelList' context = aq_inner(self.context) unwanted = ('_authenticator', 'form.button.Submit') if 'form.button.Submit' in self.request: authenticator = getMultiAdapter((context, self.request), name=u"authenticator") if not authenticator.verify(): raise Unauthorized form = self.request.form data = {} for field in form: if field not in unwanted: data[field] = field cl = api.portal.get_registry_record(self.key) obsolete = list() cleaned = dict() for key in cl: if key in data: cleaned[key] = cl[key] else: obsolete.append(key) if len(cleaned) > 0: return self.process_channel_update(cleaned, obsolete) else: IStatusMessage(self.request).addStatusMessage( _(u"Removal of selected channels was not possible"), type='error') return self.request.response.redirect(context.absolute_url())
def handleCancel(self, action): context = aq_inner(self.context) parent = aq_parent(context) IStatusMessage(self.request).addStatusMessage( _(u"Updating susbcriber has been cancelled."), type='info') return self.request.response.redirect(parent.absolute_url())
def applyChanges(self, data): context = aq_inner(self.context) assert IChannel.providedBy(context) item = createContentInContainer( context, 'pressapp.channelmanagement.subscriber', checkConstraints=True, **data) setattr(context, 'channel', list(data['channel'])) modified(item) item.reindexObject(idxs='modified') IStatusMessage(self.request).addStatusMessage( _(u"A new address was successfully added"), type='info') return self.request.response.redirect(item.absolute_url())
def process_channel_update(self, cleaned, obsolete): context = aq_inner(self.context) catalog = api.portal.get_tool(name="portal_catalog") idx = 0 for cn in obsolete: brains = catalog(object_provides=ISubscriber.__identifier__, channel=[cn]) if len(brains) > 0: sidx = self.update_subscribers(brains, cn) idx += sidx api.portal.set_registry_record(self.key, cleaned) IStatusMessage(self.request).addStatusMessage( _(u"%s Subscriber objects have been updated" % idx), type='info') return self.request.response.redirect(context.absolute_url())
def applyChanges(self, data): context = aq_inner(self.context) assert ISubscriber.providedBy(context) fti = getUtility(IDexterityFTI, name='pressapp.channelmanagement.subscriber') schema = fti.lookupSchema() fields = getFieldsInOrder(schema) for key, value in fields: try: new_value = data[key] setattr(context, key, new_value) except KeyError: continue setattr(context, 'channel', list(data['channel'])) modified(context) context.reindexObject(idxs='modified') IStatusMessage(self.request).addStatusMessage( _(u"SUbscriber has successfully been updated"), type='info') return self.request.response.redirect(context.absolute_url())
def update(self): self.key = 'pressapp.channelmanagement.channelList' context = aq_inner(self.context) if 'form.button.Submit' in self.request: authenticator = getMultiAdapter((context, self.request), name=u"authenticator") if not authenticator.verify(): raise Unauthorized form = self.request.form cname = form['channelname'] newkey = queryUtility(IIDNormalizer).normalize(cname) if type(newkey) == str: clean_key = unicode(newkey, "utf-8", errors="ignore") else: clean_key = unicode(newkey) records = api.portal.get_registry_record(self.key) records[clean_key] = safe_unicode(cname) api.portal.set_registry_record(self.key, records) IStatusMessage(self.request).addStatusMessage( _(u"New channel has been added to the registry"), type='info') next_url = context.absolute_url() + '/@@channel-update' return self.request.response.redirect(next_url)
def handleCancel(self, action): context = aq_inner(self.context) IStatusMessage(self.request).addStatusMessage( _(u"The creation of a new subscriber has been cancelled."), type='info') return self.request.response.redirect(context.absolute_url())