def page_change(change_type, request, page, subscribers, **kwargs): """Sends notification about page being changed in some way""" # send notifications to all subscribers if subscribers: recipients = set() for lang in subscribers: _ = lambda text: request.getText(text, lang=lang) jids = [u.jid for u in subscribers[lang] if u.jid] names = [u.name for u in subscribers[lang] if u.jid] msg = notification.page_change_message(change_type, request, page, lang, **kwargs) page_url = request.getQualifiedURL(page.url(request)) url = {'url': page_url, 'description': _("Changed page")} data = { 'action': change_type, 'subject': _('Page changed'), 'url_list': [url], 'text': msg['text'], 'diff': msg.get('diff', ''), 'comment': msg.get('comment', ''), 'editor': msg['editor'], 'old_name': msg.get('old_name', ''), 'page_name': msg.get('page_name', ''), 'revision': msg.get('revision', '') } result = send_notification(request, jids, data) if result: recipients.update(names) if recipients: return notification.Success(recipients)
def handle_file_attached(event): """Handles event sent when a file is attached to a page""" names = set() request = event.request page = Page(request, event.pagename) subscribers = page.getSubscribers(request, return_users=1) notification.filter_subscriber_list(event, subscribers, True) recipients = [] for lang in subscribers: recipients.extend(subscribers[lang]) attachlink = request.getQualifiedURL(getAttachUrl(event.pagename, event.filename, request)) pagelink = request.getQualifiedURL(page.url(request, {})) for lang in subscribers.keys(): _ = lambda text: request.getText(text, lang=lang) data = notification.attachment_added(request, _, event.pagename, event.filename, event.size) links = [{'url': attachlink, 'description': _("Attachment link")}, {'url': pagelink, 'description': _("Page link")}] jids = [usr.jid for usr in subscribers[lang]] data['url_list'] = links data['action'] = "file_attached" if send_notification(request, jids, data): names.update(recipients) return notification.Success(names)
def handle_page_changed(event): """ Send email to all subscribers of given page. @param event: event to notify about @rtype: string @return: message, indicating success or errors. """ comment = event.comment page = event.page request = event.request trivial = isinstance(event, ev.TrivialPageChangedEvent) old_page = None if isinstance(event, (ev.PageChangedEvent, ev.TrivialPageChangedEvent)): change_type = "page_changed" elif isinstance(event, ev.PageDeletedEvent): change_type = "page_deleted" elif isinstance(event, ev.PageRenamedEvent): change_type = "page_renamed" old_page = event.old_page subscribers = page.getSubscribers(request, return_users=1) mail_from = page.cfg.mail_from if subscribers: recipients = set() # get a list of old revisions, and append a diff revisions = page.getRevList() # send email to all subscribers for lang in subscribers: users = [ u for u in subscribers[lang] if event.name in u.email_subscribed_events ] emails = [u.email for u in users] names = [u.name for u in users] data = prep_page_changed_mail(request, page, comment, lang, revisions, trivial=trivial, change_type=change_type, old_page=old_page) if send_notification(request, mail_from, emails, data): recipients.update(names) if recipients: return notification.Success(recipients)
def handle_file_changed(event): """Sends an email to users that have subscribed to this event type""" names = set() from_address = event.request.cfg.mail_from request = event.request page = Page(request, event.pagename) if isinstance(event, ev.FileAttachedEvent): notification_fn = notification.attachment_added elif isinstance(event, ev.FileRemovedEvent): notification_fn = notification.attachment_removed subscribers = page.getSubscribers(request, return_users=1) notification.filter_subscriber_list(event, subscribers, False) recipients = [] for lang in subscribers: recipients.extend(subscribers[lang]) attachlink = request.getQualifiedURL( getAttachUrl(event.pagename, event.filename, request)) pagelink = request.getQualifiedURL(page.url(request, {})) for lang in subscribers: _ = lambda text: request.getText(text, lang=lang) links = _("Attachment link: %(attach)s\n" \ "Page link: %(page)s\n") % {'attach': attachlink, 'page': pagelink} data = notification_fn(request, _, event.pagename, event.filename, event.size) data['text'] = data['text'] + links emails = [usr.email for usr in subscribers[lang]] if send_notification(request, from_address, emails, data): names.update(recipients) return notification.Success(names)