def node_to_li(self, node): '''Convert a node into an HTML li ARGUMENTS node The node to convert. RETURNS A Unicode string that contains the li. SIDE EFFECTS None. ''' page = Page(node[0]) t = '%(name)s, last edited by %(fn)s on %(date)s' % \ {'name': page.name, 'date': munge_date(self.context, page.date), 'fn': page.editor.name} retval = u'<li id="%(nodeId)s">\n\t<a title="%(title)s" '\ u'href="%(url)s"><cite>%(name)s</cite> '\ u'<code>(%(id)s)</code></a>' % { 'title': t, 'url': page.url, 'name': page.name, 'id': page.id, 'nodeId': url_to_nodeId(self.treeIdPrefix, page.url) } if node[1]: cLi = u'\n'.join(self.node_to_li(c) for c in node[1]) retval = u'%s\n<ul>\n%s\n</ul>\n</li>' % (retval, cLi) else: retval = u'%s\n</li>' % retval assert retval assert type(retval) == unicode return retval
def xhtml(self): cssClass = u'audit-event gs-profile-password-%s' %\ self.code retval = u'<span class="%s">Reset a password.</span>' % cssClass retval = u'%s (%s)' % \ (retval, munge_date(self.context, self.date)) return retval
def xhtml(self): cssClass = 'audit-event gs-profile-email-verify-%s' % self.code retval = '<span class="%s">Verified the address '\ '<code class="email">%s</code>.</span>' % \ (cssClass, self.instanceDatum) retval = '%s (%s)' % (retval, munge_date(self.context, self.date)) return retval
def xhtml(self): cssClass = 'audit-event groupserver-group-member-join-%s' %\ self.code retval = '<span class="%s">Already a member of %s </span>' %\ (cssClass, self.groupInfo.name) retval = '%s (%s)' % (retval, munge_date(self.context, self.date)) return retval
def xhtml(self): cssClass = 'audit-event gs-profile-email-verify-%s' % self.code retval = '<span class="%s">Cleared email verification '\ 'IDs for <code class="email">%s</code>.</span>' % \ (cssClass, self.instanceDatum) retval = '%s (%s)' % (retval, munge_date(self.context, self.date)) return retval
def xhtml(self): cssClass = 'audit-event site-event-%s' % self.code retval = '<span class="%s">Change introduction</span>' % cssClass retval = '%s — %s' % (retval, userInfo_to_anchor(self.userInfo)) retval = '%s (%s)' % (retval, munge_date(self.context, self.date)) return retval
def get_history(self): """ Gets all history entries of the page """ objects = [] publishedItem = None items = self.pageHistory.get_versions() items.reverse() for item in items: authorInfo = createObject('groupserver.UserFromId', self.context, item.editor) editor = { 'name': authorInfo.name, 'id': authorInfo.id, 'url': authorInfo.url, 'anonymous': authorInfo.anonymous } d = munge_date(self.context, item.creationDate) entry = {'editor': editor, 'size': ISized(item).sizeForDisplay(), 'modified': '', 'id': item.id, 'date': d, 'published': item.published, 'changing': self.changedVersion == item.id, 'children': [], } if ((not item.published) and (publishedItem is not None)): publishedItem['children'].append(entry) else: objects.append(entry) publishedItem = entry return objects
def xhtml(self): cssClass = 'audit-event gs-site-member-%s' % self.code retval = '<span class="%s">Joined the site <cite>%s</cite>.' %\ (cssClass, self.siteInfo.name) retval = '%s (%s)' % \ (retval, munge_date(self.context, self.date)) return retval
def xhtml(self): cssClass = 'audit-event groupserver-group-member-leave-command-%s' % self.code r = '<span class="{0}">Email-command to leave {1}, recieved from '\ '<code class="email">{2}</code> but no profile could be found ({3})' retval = r.format(cssClass, groupInfo_to_anchor(self.groupInfo), self.instanceDatum, munge_date(self.context, self.date)) return retval
def xhtml(self): cssClass = 'audit-event groupserver-group-member-leave-command-%s' % self.code r = '<span class="{0}">Sent an email in to leave {1}, but you are not a member of the '\ 'group</span> ({2})' retval = r.format(cssClass, groupInfo_to_anchor(self.groupInfo), munge_date(self.context, self.date)) return retval
def xhtml(self): cssClass = u'audit-event groupserver-login-event-%s' % self.code retval = u'<span class="%s"><strong>Failed</strong> to log '\ u'in because of an incorrect password.' % (cssClass) retval = u'%s (%s)' % \ (retval, munge_date(self.context, self.date)) return retval
def xhtml(self): cssClass = 'audit-event groupserver-group-member-join-%s' %\ self.code retval = '<span class="%s">Confirmed the request to join '\ '%s</span>' % (cssClass, self.groupInfo.name) retval = '%s (%s)' % (retval, munge_date(self.context, self.date)) return retval
def xhtml(self): cssClass = 'audit-event groupserver-group-member-join-%s' %\ self.code retval = '<span class="%s">Being set to moderated %s</span>' %\ (cssClass, self.groupInfo.name) retval = '%s (%s)' % (retval, munge_date(self.context, self.date)) return retval
def xhtml(self): cssClass = 'audit-event groupserver-group-member-email-settings-%s'\ % self.code r = '<span class="{0}">Sent an email in to switch off digest mode '\ 'mode for {1}</span> ({2})' retval = r.format(cssClass, groupInfo_to_anchor(self.groupInfo), munge_date(self.context, self.date)) return retval
def xhtml(self): cssClass = 'audit-event gs-group-messages-add-base-%s' % self.code retval = '<span class="%s">Added an email (%s) to %s.</span>' % \ (cssClass, self.instanceDaturm, self.supplementaryDatum) retval = '%s (%s)' % \ (retval, munge_date(self.context, self.date)) return retval
def xhtml(self): cssClass = u'audit-event gs-profile-password-%s' %\ self.code retval = u'<span class="%s">Password reset ID %s not '\ u'found.</span>' % (cssClass, self.instanceDatum) retval = u'%s (%s)' % \ (retval, munge_date(self.context, self.date)) return retval
def xhtml(self): cssClass = 'audit-event groupserver-group-member-request-%s' % \ self.code retval = '<span class="%s">Requested membership of %s</span>' %\ (cssClass, self.groupInfo.name) retval = '%s (%s)' % (retval, munge_date(self.context, self.date)) return retval
def xhtml(self): cssClass = u'audit-event gs-profile-password-%s' %\ self.code retval = u'<span class="%s">Followed a used password-reset '\ u'link.</span>' % cssClass retval = u'%s (%s)' % \ (retval, munge_date(self.context, self.date)) return retval
def xhtml(self): cssClass = u'audit-event groupserver-login-event-%s' % self.code retval = u'<span class="%s">Logged in, and visited '\ u'<a href="%s"><code class="url">%s</code></a>' % \ (cssClass, self.supplementaryDatum, self.supplementaryDatum) retval = u'%s (%s)' % \ (retval, munge_date(self.context, self.date)) return retval
def xhtml(self): cssClass = u'audit-event groupserver-login-event-%s' % self.code retval = u'<span class="%s"><strong>Failed</strong> to log '\ u'in <code>%s</code> because no email or user-identifer '\ u'matched.' % (cssClass, self.instanceDatum) retval = u'%s (%s)' % \ (retval, munge_date(self.context, self.date)) return retval
def xhtml(self): cssClass = u'audit-event profile-event-%s' % self.code retval = u'<span class="%s">Set password</span>' % cssClass if self.instanceUserInfo.id != self.userInfo.id: retval = u'%s — %s' %\ (retval, userInfo_to_anchor(self.userInfo)) retval = u'%s (%s)' % \ (retval, munge_date(self.context, self.date)) return retval
def xhtml(self): cssClass = u'audit-event gs-profile-password-%s' %\ self.code retval = u'<span class="%s">Requested password reset '\ u'using <code class="email">%s</code>.</span>' % \ (cssClass, self.instanceDatum) retval = u'%s (%s)' % \ (retval, munge_date(self.context, self.date)) return retval
def xhtml(self): cssClass = 'audit-event groupserver-group-member-%s' % self.code retval = '<span class="%s">Given the status of %s in %s</span>' % \ (cssClass, self.instanceDatum, groupInfo_to_anchor(self.groupInfo)) if self.instanceUserInfo.id != self.userInfo.id: retval = '%s — %s' % (retval, userInfo_to_anchor(self.userInfo)) retval = '%s (%s)' % (retval, munge_date(self.context, self.date)) return retval
def get_version_description(self, ver): vUI = createObject('groupserver.UserFromId', self.folder, ver.editor) dt = munge_date(self.folder, ver.creationDate, '%Y %b %d %H:%M:%S') if vUI.anonymous: retval = 'an %s (%s)' % (vUI.name.lower(), dt) else: retval = '%s (%s)' % (userInfo_to_anchor(vUI), dt) assert retval return retval
def xhtml(self): cssClass = u'audit-event gs-profile-password-%s' %\ self.code retval = u'<span class="%s">Unrecognised address '\ u'<code class="email">%s</code> used to try and reset a'\ u'password .</span>' % \ (cssClass, self.instanceDatum) retval = u'%s (%s)' % \ (retval, munge_date(self.context, self.date)) return retval
def xhtml(self): cssClass = 'audit-event groupserver-group-home-%s' %\ self.code retval = '<span class="%s">%s changed the About tab on the'\ 'homepage of %s</span>' % \ (cssClass, userInfo_to_anchor(self.instanceUserInfo), groupInfo_to_anchor(self.groupInfo)) retval = '%s (%s)' % \ (retval, munge_date(self.context, self.date)) return retval
def xhtml(self): cssClass = 'audit-event groupserver-group-member-email-settings-%s'\ % self.code r = '<span class="{0}">Switched to web-only mode in {1}' retval = r.format(cssClass, groupInfo_to_anchor(self.groupInfo)) if self.adminChanged: uu = userInfo_to_anchor(self.userInfo) retval = '{0} by {1}'.format(retval, uu) d = munge_date(self.context, self.date) retval = '{0}</span> ({1})'.format(retval, d) return retval
def munge_event(self, e): e = marshal_data(self.context, e, siteInfo=self.siteInfo, groupInfo=self.groupInfo) event = createObject(SUBSYSTEM, self.context, **e) retval = '' if (event.code == DISABLE): retval = event.xhtml elif (event.code == BOUNCE): retval = _('bounce-delivery-failed', 'Email delivery failed (${date})', mapping={'date': munge_date(self.context, event.date)}) return retval
def xhtml(self): d = munge_date(self.groupInfo.groupObj, self.date) ui = userInfo_to_anchor(self.userInfo) if not(self.removingUserInfo.anonymous) and self.removingUserInfo.id != self.userInfo.id: retval = _('event-leave-other', '${userName} removed by ${adminName} (${date})', mapping={'userName': ui, 'adminName': userInfo_to_anchor(self.removingUserInfo), 'date': d, }) else: retval = _('event-leave-normal', '${userName} left (${date})', mapping={'userName': ui, 'date': d, }) return retval
def xhtml(self): """Display the event as string, with XHTML markup, in such a way that it will be useful for the Web view of audit trails. """ cssClass = u'audit-event groupserver-page-edit-event-%s' % self.code retval = u'<span class="%s">Edited attributes of '\ u'<a href="%s">%s</a> (%s)</span>' % \ (cssClass, self.instanceDatum, self.supplementaryDatum, munge_date(self.context, self.date)) return retval
def xhtml(self): cssClass = u'audit-event profile-event-%s' % self.code retval = u'<span class="%s">Created a user, with address '\ u'<code class="email">%s</code></span>' %\ (cssClass, self.instanceDatum) if ((self.instanceUserInfo.id != self.userInfo.id) and not(self.userInfo.anonymous)): retval = u'%s — %s' %\ (retval, userInfo_to_anchor(self.userInfo)) retval = u'%s (%s)' % \ (retval, munge_date(self.context, self.date)) return retval
def xhtml(self): cssClass = u'audit-event groupserver-profile-invite-%s' %\ self.code retval = u'<span class="%s">%s %s the invitation from %s to '\ u'join %s</span>' % \ (cssClass, userInfo_to_anchor(self.instanceUserInfo), self.instanceDatum.title(), userInfo_to_anchor(self.userInfo), groupInfo_to_anchor(self.groupInfo)) retval = u'%s (%s)' % \ (retval, munge_date(self.context, self.date)) return retval
def xhtml(self): """Display the event as string, with XHTML markup, in such a way that it will be useful for the Web view of audit trails. """ cssClass = u'audit-event groupserver-bounce-event-%s' % \ self.code retval = u'<span class="%s">Email delivery from %s to '\ u'<code class="email">%s</code> failed' %\ (cssClass, groupInfo_to_anchor(self.groupInfo), self.instanceDatum) retval = u'%s (%s)' % \ (retval, munge_date(self.context, self.date)) return retval
def xhtml(self): cssClass = 'audit-event gs-profile-email-verify-%s' % self.code if self.adminAdded: retval = '<span class="%s">%s added a verification request '\ 'for <code class="email">%s</code>.</span>' % \ (cssClass, userInfo_to_anchor(self.userInfo), self.instanceDatum) else: retval = '<span class="%s">Added a verification request '\ 'for <code class="email">%s</code>.</span>' % \ (cssClass, self.instanceDatum) retval = '%s (%s)' % (retval, munge_date(self.context, self.date)) return retval
def xhtml(self): """Display the event as string, with XHTML markup, in such a way that it will be useful for the Web view of audit trails. """ cssClass = 'audit-event groupserver-webpost-event-%s' % self.code retval = '<span class="%s">Made a post from the web to '\ 'topic %s in <a href="%s">%s</a>' %\ (cssClass, self.instanceDatum, self.groupInfo.url, self.groupInfo.name) retval = '%s (%s)' % \ (retval, munge_date(self.context, self.date)) return retval
def xhtml(self): d = munge_date(self.groupInfo.groupObj, self.date) ui = userInfo_to_anchor(self.userInfo) if not(self.addingUserInfo.anonymous) and (self.addingUserInfo.id != self.userInfo.id): retval = _('event-join-admin', '${userName} joined — invited by ${adminName} (${date})', mapping={'userName': ui, 'adminName': userInfo_to_anchor(self.addingUserInfo), 'date': d, }) else: retval = _('event-join-normal', '${userName} joined (${date})', mapping={'userName': ui, 'date': d, }) return retval
def xhtml(self): """ Display the event as string, with XHTML markup, in such a way that it will be useful for the Web view of audit trails. """ cssClass = u'audit-event groupserver-bounce-event-%s' % \ self.code retval = u'<span class="%s">Email address '\ u'<code class="email">%s</code> '\ u'disabled after deliveries failed on %d different days in the '\ 'last %d days.' % (cssClass, self.instanceDatum, self.numBounceDays, self.numDaysChecked) retval = u'%s (%s)' % \ (retval, munge_date(self.context, self.date)) return retval
def xhtml(self): cssClass = u'audit-event gs-profile-email-%s' %\ self.code if self.adminRemoved: retval = u'<span class="%s">%s removed the address '\ u'<code class="email">%s</code>.</span>' % \ (cssClass, userInfo_to_anchor(self.userInfo), self.instanceDatum) else: retval = u'<span class="%s">Removed the address '\ u'<code class="email">%s</code>.</span>' % \ (cssClass, self.instanceDatum) retval = u'%s (%s)' % \ (retval, munge_date(self.context, self.date))
def user_posting_limit_hit(self): '''The posting limits are based on the *rate* of posting to the group. The maximum allowed rate of posting is defined by the "senderlimit" and "senderinterval" properties of the mailing list for the group. If the user has exceeded his or her posting limits if more than "senderlimit" posts have been sent in "senderinterval" seconds to the group. ''' if user_participation_coach_of_group(self.userInfo, self.groupInfo): retval = False self.__status = u'participation coach' self.__statusNum = self.__statusNum + 0 elif user_admin_of_group(self.userInfo, self.groupInfo): retval = False self.__status = u'administrator of' self.__statusNum = self.__statusNum + 0 else: # The user is not the participation coach or the administrator # of the group sid = self.groupInfo.siteInfo.id gid = self.groupInfo.id uid = self.userInfo.id limit = self.mailingList.getValueFor('senderlimit') interval = self.mailingList.getValueFor('senderinterval') td = timedelta(seconds=interval) now = datetime.now(pytz.utc) earlyDate = now - td count = self.messageQuery.num_posts_after_date( sid, gid, uid, earlyDate) if count >= limit: # The user has made over the allowed number of posts in # the interval retval = True d = self.old_message_post_date() canPostDate = d + td prettyDate = munge_date(self.groupInfo.groupObj, canPostDate, user=self.userInfo.user) prettyDelta = timedelta_to_string(canPostDate - now) self.__status = u'post again at %s\n-- in %s' %\ (prettyDate, prettyDelta) self.__statusNum = 32 else: retval = False self.__status = u'under the posting limit' self.__statusNum = self.__statusNum + 0 assert type(self.__status) == unicode assert type(retval) == bool return retval
def xhtml(self): cssClass = 'audit-event groupserver-group-member-%s' % self.code retval = '' # --=mpj17=-- Sometimes this is false. I do not know why. if self.groupInfo.id: retval = '<span class="%s">Left %s</span>' % \ (cssClass, groupInfo_to_anchor(self.groupInfo)) if self.adminRemoved: retval = '%s — removed by %s' % \ (retval, userInfo_to_anchor(self.userInfo)) retval = '%s (%s)' % \ (retval, munge_date(self.context, self.date)) return retval
def xhtml(self): cssClass = u'audit-event profile-event-%s' % self.code old, new = self.get_old_new() retval = u'<span class="%s">Profile-field '\ u'<span class="field-%s">%s</span> '\ u'changed to '\ u'<code class="new">%s</code> (was '\ u'<code class="old">%s</code>)</span>' % \ (cssClass, self.instanceDatum, self.get_fieldname(), xml_escape(new), xml_escape(old)) if self.instanceUserInfo.id != self.userInfo.id: retval = u'%s — %s' %\ (retval, userInfo_to_anchor(self.userInfo)) retval = u'%s (%s)' % \ (retval, munge_date(self.context, self.date)) return retval