def update(self): super(RecentPortlet, self).update() self.site = getSite() catalog = queryUtility(ICatalog) ids = queryUtility(IIntIds) if catalog is not None: query = dict(searchContext=(self.site,), isDraft={'any_of': (False,)}, sort_order='reverse', sort_on=self.index, ) if '__all__' in self.types: query['typeType']={'any_of': ('Portal type',)} else: query['type']={'any_of': self.types} try: context = self.manager.view.maincontext except AttributeError: context = self.context if self.spaceMode == 2: query['contentSpace'] = {'any_of': [ids.queryId(getSpace(context))]} elif self.spaceMode == 3: query['traversablePath'] = {'any_of':(getSpace(context),)} results = catalog.searchResults(**query) if results: self.items = results
def listContents(self): context = self.context request = self.request catalog = getUtility(ICatalog) ids = getUtility(IIntIds) formatter = getFormatter(request, 'humanDatetime', 'medium') query = {'traversablePath': {'any_of':(context,)}, 'sort_order': 'reverse', 'sort_on': 'modified', 'isDraft': {'any_of': (False,)}} if '__all__' in self.types: query['typeType']={'any_of': ('Portal type',)} else: query['type']={'any_of': self.types} try: local_context = self.manager.view.maincontext except AttributeError: local_context = context if self.spaceMode == 2: query['contentSpace'] = {'any_of': [ids.queryId(removeSecurityProxy(getSpace(local_context)))] } del query['traversablePath'] elif self.spaceMode == 3: query['traversablePath'] = {'any_of':(getSpace(local_context),)} query.update(self.extraParameters()) docs = [] for document in catalog.searchResults(**query)[:self.number]: view = queryMultiAdapter((document, request), IContentViewView) if view is not None: url = '%s/%s'%(absoluteURL(document, request), view.name) else: url = '%s/'%absoluteURL(document, request) space = getSpace(document, context) item = IItem(document, None) docs.append({'url': url, 'title': getattr(item, 'title', document.__name__), 'description': getattr(item, 'description', u''), 'date': formatter.format(IDCTimes(document).modified), 'icon': queryMultiAdapter( (document, request), name='zmi_icon'), 'space': space.title, 'spacedescription': space.description, 'spaceurl': '%s/'%absoluteURL(space, request), 'content': document, }) return docs
def items(self): request = self.request catalog = getUtility(ICatalog) results = getUtility(ICatalog).searchResults( traversablePath={'any_of':(self.context,)}, type={'any_of': ('project.task',)}, sort_order='reverse', sort_on='effective', isDraft={'any_of': (False,)}) for item in results: url = absoluteURL(item, request) info = { 'title': u'%s in %s'%(item.title, getSpace(item).title), 'description': item.text.cooked, 'guid': '%s/'%url, 'pubDate': rfc822.formatdate(time.mktime(item.date.timetuple())), 'isPermaLink': True} principal = IOwnership(item).owner if principal is not None: profile = IPersonalProfile(principal) info['author'] = u'%s (%s)'%(profile.email, profile.title) yield info
def update(self): includeInplaceSource(jssource) request = self.request context = self.context context = IMembersAware(getSpace(context), None) if context is None: return notifications = [] for name, notification in getAdapters((self.context,), IContentNotification): notifications.append((notification.title, name, notification)) notifications.sort() self.notifications = [notification for title, name, notification in notifications] members = [] spaces = list(getUtility(ICatalog).searchResults( type={'any_of': ('content.space',)}, traversablePath={'any_of': [context]})) spaces.append(context) for space in spaces: for member in space.members.values(): principal = member.principal if principal is None or principal.id=='unknown': continue title = member.title position = -1 for pos, memb in enumerate(members): if member.title in memb: position = pos if position != -1: members[position][1]['spaces'].append(space.title) else: members.append((title, {'id': principal.id, 'title': title, 'spaces': [space.title] })) self.renderDict = self.createRenderDict(sorted(spaces, key=lambda sp: sp.title), members) self.members = [val[1] for val in members] if 'notifications.save' in request: checked = {} for id in request.get('notifications', ()): pid, nid = id.split(':', 1) data = checked.setdefault(nid, []) data.append(pid) for notification in self.notifications: data = checked.get(notification.type, []) for member in self.members: if member['id'] in data: notification.subscribe(member['id']) else: notification.unsubscribe(member['id']) IStatusMessage(request).add( _('Email notification subscriptions have been updated.'))
def query(self, default=None): space = getSpace(self.content) if space is None: return return {'url': '%s/'%absoluteURL(space, self.request), 'title': cgi.escape(space.title), 'description': cgi.escape(space.description), 'space': space}
def update(self): space = getSpace(self.context) if IPersonalSpace.providedBy(space): principal = space.principal else: principal = self.request.principal try: self.engine = IPersonalFriendConnect(principal).engine except (TypeError, AttributeError): return self.siteUrl = absoluteURL(getSite(), self.request) super(PersonalFriendConnectPortlet, self).update()
def update(self): queryObject = getUtility(IIntIds).queryObject self.categories = categories = [] for uid in self.context.category: category = queryObject(uid) if category is not None: categories.append(category) categories.sort(key=attrgetter('title')) self.date = IZopeDublinCore(self.context).created self.autoplay = str(self.context.autoplay).lower() if self.context.mediaSource: self.mediaURL = None else: self.mediaURL = (self.context.mediaData is not None \ and self.context.mediaData.data) \ and '%s/view.html' % absoluteURL(self.context, self.request) \ or (self.context.mediaURL or '') if self.context.mediaURLList: self.mediaURL = self.context.mediaURLList[0] mediaURLList = self.context.mediaURLList else: mediaURLList = [self.mediaURL] urls = map(lambda x: r"""{\'url\':\'%s\', \'autoPlay\': %s}""" % (urllib.quote(x[1]), \ x[0]==0 and self.autoplay or 'true'), \ enumerate(mediaURLList)) self.mediaURLListEncoded = r"\'playlist\': [%s]" % ','.join(urls) discussion = IContentDiscussion(self.context, None) self.comments = discussion is not None and len(discussion) self.discussible = discussion is not None and discussion.status != 3 self.addcomment = self.discussible and discussion.status != 2 self.tags = IContentTags(self.context, None) self.tags = self.tags is not None and self.tags.tags or [] self.url = absoluteURL(self.context, self.request) self.space = getSpace(self.context) self.container_url = absoluteURL(self.space, self.request) self.site_url = absoluteURL(getSite(), self.request) owner = IOwnership(self.context).owner space = IPersonalSpace(owner, None) profile = IPersonalProfile(owner, None) # author try: self.author = '%s %s'%(profile.firstname, profile.lastname) self.avatar_url = profile.avatarUrl(self.request) except AttributeError: self.author = getattr(owner,'title','') self.avatar_url = '#' if space is not None: self.profile_url = '%s/profile/'%absoluteURL(space, self.request) self.container_title = self.space.title include('jquery-plugins')
def update(self): super(EventsPortlet, self).update() context, request = self.context, self.request ids = queryUtility(IIntIds) principal = request.principal now = datetime.now(utc) endDay = now+timedelta(3650) # set timezone from user profile user_tz = getPrincipalTimezone(principal) if user_tz: now = now.astimezone(user_tz) endDay = endDay.astimezone(user_tz) query = dict(searchContext=(getSite(),), sort_on='calendarEventStart', typeType = {'any_of': ('Event type',)}, ) if self.spaceMode == 2: query['contentSpace'] = {'any_of': [ids.queryId(getSpace(context))]} elif self.spaceMode == 3: query['traversablePath'] = {'any_of':(getSpace(context),)} if self.onlyToday: tz = user_tz and user_tz or utc endDay = datetime(now.year, now.month, now.day, 23, 59, 59, 0) endDay = tz.localize(endDay) query['calendarEventDuration']={'between': (now, endDay, True, True)} results = getUtility(ICatalog).searchResults(**query) if results: self.events = results[:self.count]
def getProjectInfo(self, project): """ returns project info """ context = project info = { 'title': context.title, 'description': context.description, 'icon': queryMultiAdapter((context, self.request), name='zmi_icon'), 'url': '%s/'%absoluteURL(context, self.request), 'space': getSpace(context.__parent__), 'tasks': self.getTasks(context) } return info
def update(self): self.date = IZopeDublinCore(self.context).created self.site_url = absoluteURL(getSite(), self.request) self.space = getSpace(self.context) owner = IOwnership(self.context).owner space = IPersonalSpace(owner, None) profile = IPersonalProfile(owner, None) self.container_url = absoluteURL(self.space, self.request) # author try: self.author = '%s %s'%(profile.firstname, profile.lastname) self.avatar_url = profile.avatarUrl(self.request) except AttributeError: self.author = getattr(owner,'title','') self.avatar_url = '#' if space is not None: self.profile_url = '%s/profile/'%absoluteURL(space, self.request) self.container_title = self.space.title
def __init__(self, context, request, view, manager): context = getSpace(context, getSite()) super(RecentContentPortlet, self).__init__(context,request,view,manager)
def isAvailable(self): cur_space = getSpace(self.parentForm) if cur_space.get('blog'): return True else: return False