class UrlSubstitution(BaseSubstitution): category = _(u'All Content') description = _(u'URL') def safe_call(self): return self.context.absolute_url()
class ManagerEmailSubstitution(MailAddressSubstitution): category = _(u'E-Mail Addresses') description = _(u'Managers') def safe_call(self): return self.getEmailsForRole('Manager')
class LastChangeActorIdSubstitution(ChangeSubstitution): category = _(u'History') description = _(u'Change author') def safe_call(self): return self.lastChangeMetadata('actorid')
class SubscriberCategoryEmailSubstitution(BaseSubstitution): category = _(u'Category Subscribers') description = _( u'Subscriber E-Mail addresses for category "x", managed under ' u'Site Setup -> Announcements -> Manage Categories (ex: ' u'"category_emails_for_news"). NOTE: "x" is case-insensitive and ' u'spaces should be replaced with underscores, ex: "Meeting Minutes" ' u'would be "${category_emails_for_meeting_minutes}"') def __init__(self, context, category=None): super(SubscriberCategoryEmailSubstitution, self).__init__(context) self.category = category.lower().replace(" ", "_") def safe_call(self): emails = [] for subscriber in subscribe.all(): if 'categories' not in subscriber: continue categories = subscriber['categories'] for c in categories: if c.lower().replace(" ", "_") == self.category: email = subscriber.get("email", None) if email is not None: emails.append(email) break return u', '.join(emails)
class ParentTitleSubstitution(BaseSubstitution): category = _(u'All Content') description = _(u'Parent title') def safe_call(self): return aq_get(aq_parent(self.context), 'Title')()
class EffectiveSubstitution(DateSubstitution): category = _(u'Dublin Core') description = _(u'Date Effective') def safe_call(self): return self.formatDate(self.context.effective())
class TypeSubstitution(BaseSubstitution): category = _(u'Dublin Core') description = _(u'Content Type') def safe_call(self): return translate(self.context.Type(), context=self.context.REQUEST)
class ContributorsSubstitution(BaseSubstitution): category = _(u'Dublin Core') description = _(u'Contributors Ids') def safe_call(self): return ', '.join(self.context.listContributors())
class IdentifierSubstitution(BaseSubstitution): category = _(u'Dublin Core') description = _(u'Identifier, actually URL of the content') def safe_call(self): return self.context.Identifier()
class FormatSubstitution(BaseSubstitution): category = _(u'Dublin Core') description = _(u'Format') def safe_call(self): return self.context.Format()
class LanguageSubstitution(BaseSubstitution): category = _(u'Dublin Core') description = _(u'Language') def safe_call(self): return self.context.Language()
class ContributorEmailSubstitution(MailAddressSubstitution): category = _(u'Local Roles') description = _(u'Contributors E-Mails') def safe_call(self): return self.getEmailsForRole('Contributor')
class SubjectSubstitution(BaseSubstitution): category = _(u'Dublin Core') description = _(u'Subject') def safe_call(self): return ', '.join(self.context.Subject())
class ModifiedSubstitution(DateSubstitution): category = _(u'Dublin Core') description = _(u'Date Modified') def safe_call(self): return self.formatDate(self.context.modified())
class LastChangeTypeSubstitution(ChangeSubstitution): category = _(u'History') description = _(u'Change type') def safe_call(self): return self.lastChangeMetadata('type')
class ExpiresSubstitution(DateSubstitution): category = _(u'Dublin Core') description = _(u'Date Expires') def safe_call(self): return self.formatDate(self.context.expires())
class DescriptionSubstitution(BaseSubstitution): category = _(u'Dublin Core') description = _(u'Description') def safe_call(self): return self.context.Description()
class ParentUrlSubstitution(BaseSubstitution): category = _(u'All Content') description = _(u"Folder URL") def safe_call(self): return aq_get(aq_parent(self.context), 'absolute_url')()
class TitleSubstitution(BaseSubstitution): category = _(u'Dublin Core') description = _(u'Title') def safe_call(self): return self.context.Title()
class IdSubstitution(BaseSubstitution): category = _(u'All Content') description = _(u"Identifier of the content or login of managed user") def safe_call(self): return self.context.getId()
class LastChangeCommentSubstitution(ChangeSubstitution): category = _(u'History') description = _(u'Comment') def safe_call(self): return self.lastChangeMetadata('comments')
class LastChangeTitleSubstitution(ChangeSubstitution): category = _(u'History') description = _(u'Transition title') def safe_call(self): return self.lastChangeMetadata('transition_title')
class RightsSubstitution(BaseSubstitution): category = _(u'Dublin Core') description = _(u'Rights') def safe_call(self): return self.context.Rights()
class MemberEmailSubstitution(MailAddressSubstitution): category = _(u'Local Roles') description = _(u'Members E-Mails') def safe_call(self): return self.getEmailsForRole('Member')
class ReviewStateSubstitution(BaseSubstitution): category = _(u'Workflow') description = _(u'Review State') def safe_call(self): wft = getToolByName(self.context, 'portal_workflow') return wft.getInfoFor(self.context, 'review_state')
class CreatedSubstitution(DateSubstitution): adapts(ICatalogableDublinCore) category = _(u'Dublin Core') description = _(u'Date Created') def safe_call(self): return self.formatDate(self.context.created())
class CreatorsSubstitution(BaseSubstitution): adapts(IDublinCore) category = _(u'Dublin Core') description = _(u'Creators Ids') def safe_call(self): return ', '.join(self.context.listCreators())
class ParentIdSubstitution(BaseSubstitution): adapts(Interface) category = _(u'All Content') description = _( u"Identifier of the parent content or login of managed user") def safe_call(self): return aq_parent(self.context).getId()
class CreatorSubstitution(BaseSubstitution): category = _(u'Dublin Core') description = _(u'Creator Id') def safe_call(self): for creator in self.context.listCreators(): return creator return ''
class ReviewStateTitleSubstitution(BaseSubstitution): category = _(u'Workflow') description = _(u'Review State Title') def safe_call(self): wft = getToolByName(self.context, 'portal_workflow') review_state = wft.getInfoFor(self.context, 'review_state') return _( wft.getTitleForStateOnType(review_state, self.context.portal_type))
def substitutionList(self): """ returns sequence: [ {'category':categoryTitle, 'items':[{'id':subId, 'description':subDescription}, ...]), ... ] """ adapters = [a for a in getGlobalSiteManager().registeredAdapters() if len(a.required)==1 and IStringSubstitution.implementedBy(a.factory)] # rearrange into categories categories = {} for a in adapters: id = a.name cat = getattr(a.factory, 'category', _(u'Miscellaneous')) desc = getattr(a.factory, 'description', u'') categories.setdefault(cat, []).append( {'id': id, 'description': desc}) # rearrange again into a sorted list res = [] keys = categories.keys() # sort, ignoring case keys.sort(lambda a, b: cmp(a.lower(), b.lower())) for key in keys: acat = categories[key] # sort by id, ignoring case acat.sort(lambda a, b: cmp(a['id'].lower(), b['id'].lower())) res.append({'category': key, 'items': acat}) return res
def _lastRevision(context): context = aq_inner(context) rt = getToolByName(context, "portal_repository") if rt.isVersionable(context): history = rt.getHistoryMetadata(context) if history: # history = ImplicitAcquisitionWrapper(history, pa) meta = history.retrieve( history.getLength(countPurged=False)-1, countPurged=False, )['metadata']['sys_metadata'] return dict(type='versioning', action=_(u"edit"), transition_title=_(u"Edit"), actorid=meta["principal"], time=meta["timestamp"], comments=meta['comment'], review_state=meta["review_state"], ) return {}
def safe_call(self): try: value = self.context.providers2string() except AttributeError: value = _(u'not specified') return value
def safe_call(self): wft = getToolByName(self.context, 'portal_workflow') review_state = wft.getInfoFor(self.context, 'review_state') return _(wft.getTitleForStateOnType(review_state, self.context.portal_type))
def __call__(self): try: return safe_unicode(self.safe_call()) except Unauthorized: return _(u'Unauthorized')
def safe_call(self): try: value = self.context.request_details() except AttributeError: value = _(u'No request specification found.') return value
def safe_call(self): try: value = self.context.getStartDate() return value.Date() except AttributeError: return _(u'not specified')