def getTimelineEvents(self): """Returns the data needed to build the timeline. """ events = [] previousSortDate = None previousSortDate_m = None for entry in self.brains: deadline = getattr(entry, 'deadline', None) sortDate = entry.created if deadline is not None: try: sortDate = dt2DT(deadline) except: sortDate = entry.created sortDate_m = int(sortDate.millis()) if previousSortDate is None: previousSortDate = sortDate - 1 previousSortDate_m = int(previousSortDate.millis()) event = { 'end': sortDate_m, 'id': entry.id, 'prettyDate': pretty_date(sortDate), 'start': previousSortDate_m, 'timeSpan': sortDate_m - previousSortDate_m, 'title': entry.Title, } events.append(event) previousSortDate = sortDate return events
def update(self): """Called before rendering the template for this view """ sortDate = IDateSort(self.context) self.prettyCreationDate = utilities.pretty_date(sortDate).capitalize() self.canAdd = self.checkPermission('Add portal content') self.canReply = self.checkPermission('Add portal content') \ and self.getThreadRoot().portal_type in ['ixds.Post', 'ixds.Task'] self.canSolve = False self.isExpired = False if self.context.portal_type == 'ixds.Task': self.canSolve = self.checkPermission('Add portal content') taskDeadline = getattr(self.context, 'deadline', None) if taskDeadline is not None: self.isExpired = taskDeadline < datetime.datetime.now() self.canEdit = self.checkPermission('Modify portal content') self.canDelete = self.checkPermission('Delete objects') pw = getToolByName(self.context, 'portal_workflow') self.reviewState = pw.getInfoFor(self.context, 'review_state') self.isLast = getattr(self, "isLast", False) if self.isThreadRoot() and len(self.replies) == 0: self.isLast = True self.request.inThread = True
def prettyDate(self, datetimestring): return pretty_date(DateTime.DateTime(datetimestring))