Exemplo n.º 1
0
def send_frequency_reminder(self):
    # We exclude irrelevant frequencies.
    frequencies = [f for f in UPDATE_FREQUENCIES.keys()
                   if f not in ('unknown', 'realtime', 'punctual')]
    now = datetime.now()
    reminded_orgs = {}
    reminded_people = []
    allowed_delay = current_app.config['DELAY_BEFORE_REMINDER_NOTIFICATION']
    for org in Organization.objects.visible():
        outdated_datasets = []
        for dataset in Dataset.objects.filter(
                frequency__in=frequencies, organization=org).visible():
            if dataset.next_update + timedelta(days=allowed_delay) < now:
                dataset.outdated = now - dataset.next_update
                dataset.frequency_str = UPDATE_FREQUENCIES[dataset.frequency]
                outdated_datasets.append(dataset)
        if outdated_datasets:
            reminded_orgs[org] = outdated_datasets
    for reminded_org, datasets in reminded_orgs.iteritems():
        print(u'{org.name} will be emailed for {datasets_nb} datasets'.format(
              org=reminded_org, datasets_nb=len(datasets)))
        recipients = [m.user for m in reminded_org.members]
        reminded_people.append(recipients)
        subject = _('You need to update some frequency-based datasets')
        mail.send(subject, recipients, 'frequency_reminder',
                  org=reminded_org, datasets=datasets)

    print('{nb_orgs} orgs concerned'.format(nb_orgs=len(reminded_orgs)))
    reminded_people = flatten(reminded_people)
    print('{nb_emails} people contacted ({nb_emails_twice} twice)'.format(
        nb_emails=len(reminded_people),
        nb_emails_twice=len(reminded_people) - len(Set(reminded_people))))
    print('Done')
Exemplo n.º 2
0
def contact():
    form = ContactForm()
    if request.method == 'POST':
        if form.validate_on_submit() == False:
            for field, errors in form.errors.items():
                for error in errors:
                    do_flash(i18n.gettext(error), 'danger')
        else:
            msg = Message(
                form.subject.data,
                sender=current_app.config.get('MAIL_DEFAULT_SENDER'),
                recipients=[current_app.config.get('MAIL_DEFAULT_RECEIVER')])
            msg.body = """
            From: %s <%s>
            %s
            """ % (form.name.data, form.email.data, form.message.data)
            try:
                mail = current_app.extensions.get('mail')
                mail.send(msg)
            except Exception, e:
                do_flash("Server Error : " + str(e), 'danger')
            else:
                do_flash(
                    i18n.gettext(
                        u"Thank you for your message. We'll get back to you shortly."
                    ), 'success')
Exemplo n.º 3
0
 def mark_as_deleted(self):
     copied_user = copy(self)
     self.email = '{}@deleted'.format(self.id)
     self.password = None
     self.active = False
     self.first_name = 'DELETED'
     self.last_name = 'DELETED'
     self.avatar = None
     self.avatar_url = None
     self.website = None
     self.about = None
     self.deleted = datetime.now()
     self.save()
     for organization in self.organizations:
         organization.members = [
             member for member in organization.members
             if member.user != self
         ]
         organization.save()
     for discussion in Discussion.objects(discussion__posted_by=self):
         for message in discussion.discussion:
             if message.posted_by == self:
                 message.content = 'DELETED'
         discussion.save()
     Follow.objects(follower=self).delete()
     Follow.objects(following=self).delete()
     mail.send(_('Account deletion'), copied_user, 'account_deleted')
Exemplo n.º 4
0
 def mark_as_deleted(self):
     copied_user = copy(self)
     self.email = '{}@deleted'.format(self.id)
     self.password = None
     self.active = False
     self.first_name = 'DELETED'
     self.last_name = 'DELETED'
     self.avatar = None
     self.avatar_url = None
     self.website = None
     self.about = None
     self.extras = None
     self.deleted = datetime.now()
     self.save()
     for organization in self.organizations:
         organization.members = [member
                                 for member in organization.members
                                 if member.user != self]
         organization.save()
     for discussion in Discussion.objects(discussion__posted_by=self):
         for message in discussion.discussion:
             if message.posted_by == self:
                 message.content = 'DELETED'
         discussion.save()
     Follow.objects(follower=self).delete()
     Follow.objects(following=self).delete()
     mail.send(_('Account deletion'), copied_user, 'account_deleted')
Exemplo n.º 5
0
def notify_membership_request(org, request):
    recipients = [m.user for m in org.by_role('admin')]
    mail.send(_('New membership request'),
              recipients,
              'membership_request',
              org=org,
              request=request)
Exemplo n.º 6
0
def notify_new_issue(issue):
    if isinstance(issue.subject, (Dataset, Reuse)):
        recipients = owner_recipients(issue)
        subject = _('Your %(type)s have a new issue', type=issue.subject.verbose_name)
        mail.send(subject, recipients, 'new_issue', issue=issue)
    else:
        log.warning('Unrecognized issue subject type %s', type(issue.subject))
Exemplo n.º 7
0
def send_frequency_reminder(self):
    # We exclude irrelevant frequencies.
    frequencies = [f for f in UPDATE_FREQUENCIES.keys()
                   if f not in ('unknown', 'realtime', 'punctual')]
    now = datetime.now()
    reminded_orgs = {}
    reminded_people = []
    allowed_delay = current_app.config['DELAY_BEFORE_REMINDER_NOTIFICATION']
    for org in Organization.objects.visible():
        outdated_datasets = []
        for dataset in Dataset.objects.filter(
                frequency__in=frequencies, organization=org).visible():
            if dataset.next_update + timedelta(days=allowed_delay) < now:
                dataset.outdated = now - dataset.next_update
                dataset.frequency_str = UPDATE_FREQUENCIES[dataset.frequency]
                outdated_datasets.append(dataset)
        if outdated_datasets:
            reminded_orgs[org] = outdated_datasets
    for reminded_org, datasets in reminded_orgs.iteritems():
        print('{org.name} will be emailed for {datasets_nb} datasets'.format(
              org=reminded_org, datasets_nb=len(datasets)))
        recipients = [m.user for m in reminded_org.members]
        reminded_people.append(recipients)
        subject = _('You need to update some frequency-based datasets')
        mail.send(subject, recipients, 'frequency_reminder',
                  org=reminded_org, datasets=datasets)

    print('{nb_orgs} orgs concerned'.format(nb_orgs=len(reminded_orgs)))
    reminded_people = flatten(reminded_people)
    print('{nb_emails} people contacted ({nb_emails_twice} twice)'.format(
        nb_emails=len(reminded_people),
        nb_emails_twice=len(reminded_people) - len(Set(reminded_people))))
    print('Done')
Exemplo n.º 8
0
def notify_membership_response(org, request):
    if request.status == "accepted":
        subject = _('You are now a member of the organization "%(org)s"', org=org)
        template = "new_member"
    else:
        subject, template = _("Membership refused"), "membership_refused"
    mail.send(subject, request.user, template, org=org, request=request)
Exemplo n.º 9
0
def notify_membership_request(org_id, request_id):
    if isinstance(org_id,
                  Organization):  # TODO: Remove this branch in udata 2.0
        warnings.warn(
            'Using documents as task parameter is deprecated and '
            'will be removed in udata 2.0', DeprecationWarning)
        org = org_id
    else:
        org = Organization.objects.get(pk=org_id)

    if isinstance(request_id,
                  MembershipRequest):  # TODO: Remove this branch in udata 2.0
        warnings.warn(
            'Using documents as task parameter is deprecated and '
            'will be removed in udata 2.0', DeprecationWarning)
        request = request_id
    else:
        request = next((r for r in org.requests if str(r.id) == request_id),
                       None)

    recipients = [m.user for m in org.by_role('admin')]
    mail.send(_('New membership request'),
              recipients,
              'membership_request',
              org=org,
              request=request)
Exemplo n.º 10
0
def notify_membership_response(org_id, request_id):
    if isinstance(org_id,
                  Organization):  # TODO: Remove this branch in udata 2.0
        warnings.warn(
            'Using documents as task parameter is deprecated and '
            'will be removed in udata 2.0', DeprecationWarning)
        org = org_id
    else:
        org = Organization.objects.get(pk=org_id)

    if isinstance(request_id,
                  MembershipRequest):  # TODO: Remove this branch in udata 2.0
        warnings.warn(
            'Using documents as task parameter is deprecated and '
            'will be removed in udata 2.0', DeprecationWarning)
        request = request_id
    else:
        request = next((r for r in org.requests if str(r.id) == request_id),
                       None)

    if request.status == 'accepted':
        subject = _('You are now a member of the organization "%(org)s"',
                    org=org)
        template = 'new_member'
    else:
        subject, template = _('Membership refused'), 'membership_refused'
    mail.send(subject, request.user, template, org=org, request=request)
Exemplo n.º 11
0
def notify_membership_response(org, request):
    if request.status == 'accepted':
        subject, template = _(
            'You are now a member of the organization "%(org)s"', org=org),
        'new_member'
    else:
        subject, template = _('Membership refused'), 'membership_refused'
    mail.send(subject, request.user, template, org=org, request=request)
Exemplo n.º 12
0
def notify_new_issue(issue):
    if isinstance(issue.subject, (Dataset, Reuse)):
        recipients = owner_recipients(issue)
        subject = _('Your %(type)s have a new issue',
                    type=issue.subject.verbose_name)
        mail.send(subject, recipients, 'new_issue', issue=issue)
    else:
        log.warning('Unrecognized issue subject type %s', type(issue.subject))
Exemplo n.º 13
0
def notify_membership_response(org, request):
    if request.status == 'accepted':
        subject, template = _(
            'You are now a member of the organization "%(org)s"', org=org),
        'new_member'
    else:
        subject, template = _('Membership refused'), 'membership_refused'
    mail.send(subject, request.user, template, org=org, request=request)
Exemplo n.º 14
0
def notify_membership_request(org_id, request_id):
    org = Organization.objects.get(pk=org_id)
    request = next((r for r in org.requests if str(r.id) == request_id), None)

    recipients = [m.user for m in org.by_role('admin')]
    mail.send(
        _('New membership request'), recipients, 'membership_request',
        org=org, request=request)
Exemplo n.º 15
0
def notify_badge_added(badge):
    if isinstance(badge.subject, Organization):
        recipients = owner_recipients(badge)
        subject = _('Your %(type)s gain a new badge',
                    type=badge.subject.verbose_name)
        mail.send(subject, recipients, 'badge_added', badge=badge)
    else:
        log.warning('Unrecognized badge subject type %s', type(badge.subject))
Exemplo n.º 16
0
def notify_issue_closed(issue, **kwargs):
    if isinstance(issue.subject, (Dataset, Reuse)):
        comment = kwargs['message']
        recipients = owner_recipients(issue) + [m.posted_by for m in issue.discussion]
        recipients = filter(lambda u: u != comment.posted_by, set(recipients))
        subject = _('An issue has been closed')
        mail.send(subject, recipients, 'issue_closed', issue=issue, comment=comment)
    else:
        log.warning('Unrecognized issue subject type %s', type(issue.subject))
Exemplo n.º 17
0
def notify_new_discussion(discussion):
    if isinstance(discussion.subject, (Dataset, Reuse, Post)):
        recipients = owner_recipients(discussion)
        subject = _('Your %(type)s have a new discussion',
                    type=discussion.subject.verbose_name)
        mail.send(subject, recipients, 'new_discussion', discussion=discussion)
    else:
        log.warning('Unrecognized discussion subject type %s',
                    type(discussion.subject))
Exemplo n.º 18
0
def notify_new_discussion(discussion):
    if isinstance(discussion.subject, (Dataset, Reuse)):
        recipients = owner_recipients(discussion)
        subject = _('Your %(type)s have a new discussion',
                    type=discussion.subject.verbose_name)
        mail.send(subject, recipients, 'new_discussion', discussion=discussion)
    else:
        log.warning('Unrecognized discussion subject type %s',
                    type(discussion.subject))
Exemplo n.º 19
0
def notify_new_issue_comment(issue, **kwargs):
    if isinstance(issue.subject, (Dataset, Reuse)):
        comment = kwargs['message']
        recipients = owner_recipients(issue) + [m.posted_by for m in issue.discussion]
        recipients = filter(lambda u: u != comment.posted_by, set(recipients))
        subject = _('%(user)s commented your issue', user=comment.posted_by.fullname)
        mail.send(subject, recipients, 'new_issue_comment', issue=issue, comment=comment)
    else:
        log.warning('Unrecognized issue subject type %s', type(issue.subject))
Exemplo n.º 20
0
def notify_new_issue(issue_id):
    issue = Issue.objects.get(pk=issue_id)
    if isinstance(issue.subject, (Dataset, Reuse)):
        recipients = owner_recipients(issue)
        subject = _('Your %(type)s have a new issue',
                    type=issue.subject.verbose_name)
        mail.send(subject, recipients, 'new_issue', issue=issue,
                  message=issue.discussion[0])
    else:
        log.warning('Unrecognized issue subject type %s', type(issue.subject))
Exemplo n.º 21
0
def notify_membership_response(org_id, request_id):
    org = Organization.objects.get(pk=org_id)
    request = next((r for r in org.requests if str(r.id) == request_id), None)

    if request.status == 'accepted':
        subject = _('You are now a member of the organization "%(org)s"',
                    org=org)
        template = 'new_member'
    else:
        subject, template = _('Membership refused'), 'membership_refused'
    mail.send(subject, request.user, template, org=org, request=request)
Exemplo n.º 22
0
def notify_issue_closed(issue, **kwargs):
    if isinstance(issue.subject, (Dataset, Reuse)):
        message = kwargs['message']
        recipients = owner_recipients(issue) + [
            m.posted_by for m in issue.discussion]
        recipients = [u for u in set(recipients) if u != message.posted_by]
        subject = _('An issue has been closed')
        mail.send(subject, recipients, 'issue_closed',
                  issue=issue, message=message)
    else:
        log.warning('Unrecognized issue subject type %s', type(issue.subject))
Exemplo n.º 23
0
def notify_new_reuse(reuse):
    for dataset in reuse.datasets:
        if dataset.organization:
            recipients = [m.user for m in dataset.organization.members]
        elif dataset.owner:
            recipients = dataset.owner
        else:
            recipients = None
        if recipients:
            mail.send(_('New reuse'), recipients, 'new_reuse', reuse=reuse,
                      dataset=dataset)
Exemplo n.º 24
0
def notify_issue_closed(issue_id, message=None):
    issue = Issue.objects.get(pk=issue_id)
    message = issue.discussion[message]
    if isinstance(issue.subject, (Dataset, Reuse)):
        recipients = owner_recipients(issue) + [
            m.posted_by for m in issue.discussion]
        recipients = [u for u in set(recipients) if u != message.posted_by]
        subject = _('An issue has been closed')
        mail.send(subject, recipients, 'issue_closed',
                  issue=issue, message=message)
    else:
        log.warning('Unrecognized issue subject type %s', type(issue.subject))
Exemplo n.º 25
0
def notify_discussion_closed(discussion, **kwargs):
    if isinstance(discussion.subject, (Dataset, Reuse)):
        comment = kwargs['message']
        recipients = owner_recipients(discussion) + [
            m.posted_by for m in discussion.discussion]
        recipients = filter(lambda u: u != comment.posted_by, set(recipients))
        subject = _('A discussion has been closed')
        mail.send(subject, recipients, 'discussion_closed',
                  discussion=discussion, comment=comment)
    else:
        log.warning('Unrecognized discussion subject type %s',
                    type(discussion.subject))
Exemplo n.º 26
0
def notify_new_follower(follow):
    if isinstance(follow.following, User):
        subject =_('%(user)s followed you', user=follow.follower)
        mail.send(subject, follow.following, 'new_follower', follow=follow)
    elif isinstance(follow.following, Organization):
        subject = _('%(user)s followed your organization', user=follow.follower)
        recipients = [m.user for m in follow.following.members]
        mail.send(subject, recipients, 'new_follower_org', follow=follow)
    elif isinstance(follow.following, Dataset):
        pass
    elif isinstance(follow.following, Reuse):
        pass
Exemplo n.º 27
0
def notify_new_issue_comment(issue, **kwargs):
    if isinstance(issue.subject, (Dataset, Reuse)):
        message = kwargs['message']
        recipients = owner_recipients(issue) + [
            m.posted_by for m in issue.discussion]
        recipients = [u for u in set(recipients) if u != message.posted_by]
        subject = _('%(user)s commented your issue',
                    user=message.posted_by.fullname)
        mail.send(subject, recipients, 'new_issue_comment',
                  issue=issue, message=message)
    else:
        log.warning('Unrecognized issue subject type %s', type(issue.subject))
Exemplo n.º 28
0
def notify_discussion_closed(discussion, **kwargs):
    if isinstance(discussion.subject, (Dataset, Reuse, Post)):
        message = kwargs['message']
        recipients = owner_recipients(discussion) + [
            m.posted_by for m in discussion.discussion]
        recipients = [u for u in set(recipients) if u != message.posted_by]
        subject = _('A discussion has been closed')
        mail.send(subject, recipients, 'discussion_closed',
                  discussion=discussion, message=message)
    else:
        log.warning('Unrecognized discussion subject type %s',
                    type(discussion.subject))
Exemplo n.º 29
0
def notify_new_issue_comment(issue_id, message=None):
    issue = Issue.objects.get(pk=issue_id)
    message = issue.discussion[message]
    if isinstance(issue.subject, (Dataset, Reuse)):
        recipients = owner_recipients(issue) + [
            m.posted_by for m in issue.discussion]
        recipients = [u for u in set(recipients) if u != message.posted_by]
        subject = _('%(user)s commented your issue',
                    user=message.posted_by.fullname)
        mail.send(subject, recipients, 'new_issue_comment',
                  issue=issue, message=message)
    else:
        log.warning('Unrecognized issue subject type %s', type(issue.subject))
Exemplo n.º 30
0
def notify_new_discussion_comment(discussion, **kwargs):
    if isinstance(discussion.subject, (Dataset, Reuse)):
        comment = kwargs['message']
        recipients = owner_recipients(discussion) + [
            m.posted_by for m in discussion.discussion]
        recipients = filter(lambda u: u != comment.posted_by, set(recipients))
        subject = _('%(user)s commented your discussion',
                    user=comment.posted_by.fullname)
        mail.send(subject, recipients, 'new_discussion_comment',
                  discussion=discussion, comment=comment)
    else:
        log.warning('Unrecognized discussion subject type %s',
                    type(discussion.subject))
Exemplo n.º 31
0
def notify_new_discussion_comment(discussion, **kwargs):
    if isinstance(discussion.subject, (Dataset, Reuse, Post)):
        message = kwargs['message']
        recipients = owner_recipients(discussion) + [
            m.posted_by for m in discussion.discussion]
        recipients = [u for u in set(recipients) if u != message.posted_by]
        subject = _('%(user)s commented your discussion',
                    user=message.posted_by.fullname)
        mail.send(subject, recipients, 'new_discussion_comment',
                  discussion=discussion, message=message)
    else:
        log.warning('Unrecognized discussion subject type %s',
                    type(discussion.subject))
Exemplo n.º 32
0
def notify_badge_certified(org_id):
    '''
    Send an email when a `CERTIFIED` badge is added to an `Organization`
    '''
    org = Organization.objects.get(pk=org_id)
    recipients = [member.user for member in org.members]
    subject = _('Your organization "%(name)s" has been certified',
                name=org.name)
    mail.send(subject,
              recipients,
              'badge_added_certified',
              organization=org,
              badge=org.get_badge(CERTIFIED))
Exemplo n.º 33
0
def notify_new_follower(follow):
    if isinstance(follow.following, User):
        subject = _('%(user)s followed you', user=follow.follower)
        mail.send(subject, follow.following, 'new_follower', follow=follow)
    elif isinstance(follow.following, Organization):
        subject = _('%(user)s followed your organization',
                    user=follow.follower)
        recipients = [m.user for m in follow.following.members]
        mail.send(subject, recipients, 'new_follower_org', follow=follow)
    elif isinstance(follow.following, Dataset):
        pass
    elif isinstance(follow.following, Reuse):
        pass
Exemplo n.º 34
0
def notify_badge_public_service(org_id):
    '''
    Send an email when a `PUBLIC_SERVICE` badge is added to an `Organization`
    '''
    org = Organization.objects.get(pk=org_id)
    recipients = [member.user for member in org.members]
    subject = _(
        'Your organization "%(name)s" has been identified as public service',
        name=org.name)
    mail.send(subject,
              recipients,
              'badge_added_public_service',
              organization=org,
              badge=org.get_badge(PUBLIC_SERVICE))
Exemplo n.º 35
0
def notify_new_reuse(reuse):
    for dataset in reuse.datasets:
        if dataset.organization:
            recipients = [m.user for m in dataset.organization.members]
        elif dataset.owner:
            recipients = dataset.owner
        else:
            recipients = None
        if recipients:
            mail.send(_('New reuse'),
                      recipients,
                      'new_reuse',
                      reuse=reuse,
                      dataset=dataset)
Exemplo n.º 36
0
def notify_issue_closed(issue, **kwargs):
    if isinstance(issue.subject, (Dataset, Reuse)):
        comment = kwargs['message']
        recipients = owner_recipients(issue) + [
            m.posted_by for m in issue.discussion
        ]
        recipients = filter(lambda u: u != comment.posted_by, set(recipients))
        subject = _('An issue has been closed')
        mail.send(subject,
                  recipients,
                  'issue_closed',
                  issue=issue,
                  comment=comment)
    else:
        log.warning('Unrecognized issue subject type %s', type(issue.subject))
Exemplo n.º 37
0
def notify_discussion_closed(discussion, **kwargs):
    if isinstance(discussion.subject, (Dataset, Reuse, Post)):
        message = kwargs['message']
        recipients = owner_recipients(discussion) + [
            m.posted_by for m in discussion.discussion
        ]
        recipients = [u for u in set(recipients) if u != message.posted_by]
        subject = _('A discussion has been closed')
        mail.send(subject,
                  recipients,
                  'discussion_closed',
                  discussion=discussion,
                  message=message)
    else:
        log.warning('Unrecognized discussion subject type %s',
                    type(discussion.subject))
Exemplo n.º 38
0
def notify_new_discussion_comment(discussion, **kwargs):
    if isinstance(discussion.subject, (Dataset, Reuse, Post)):
        message = kwargs['message']
        recipients = owner_recipients(discussion) + [
            m.posted_by for m in discussion.discussion
        ]
        recipients = [u for u in set(recipients) if u != message.posted_by]
        subject = _('%(user)s commented your discussion',
                    user=message.posted_by.fullname)
        mail.send(subject,
                  recipients,
                  'new_discussion_comment',
                  discussion=discussion,
                  message=message)
    else:
        log.warning('Unrecognized discussion subject type %s',
                    type(discussion.subject))
Exemplo n.º 39
0
def notify_discussion_closed(discussion_id, message=None):
    discussion = Discussion.objects.get(pk=discussion_id)
    message = discussion.discussion[message]
    if isinstance(discussion.subject, (Dataset, Reuse, Post)):
        recipients = owner_recipients(discussion) + [
            m.posted_by for m in discussion.discussion
        ]
        recipients = [u for u in set(recipients) if u != message.posted_by]
        subject = _('A discussion has been closed')
        mail.send(subject,
                  recipients,
                  'discussion_closed',
                  discussion=discussion,
                  message=message)
    else:
        log.warning('Unrecognized discussion subject type %s',
                    type(discussion.subject))
Exemplo n.º 40
0
def notify_badge_added_certified(sender, kind=''):
    '''
    Send an email when a `CERTIFIED` badge is added to an `Organization`

    Parameters
    ----------
    sender
        The object that emitted the event.
    kind: str
        The kind of `Badge` object awarded.
    '''
    if kind == CERTIFIED and isinstance(sender, Organization):
        recipients = [member.user for member in sender.members]
        subject = _('Your organization "%(name)s" has been certified',
                    name=sender.name)
        mail.send(subject,
                  recipients,
                  'badge_added_certified',
                  organization=sender,
                  badge=sender.get_badge(kind))
Exemplo n.º 41
0
def notify_new_member(org_id, email):
    if isinstance(org_id,
                  Organization):  # TODO: Remove this branch in udata 2.0
        warnings.warn(
            'Using documents as task parameter is deprecated and '
            'will be removed in udata 2.0', DeprecationWarning)
        org = org_id
    else:
        org = Organization.objects.get(pk=org_id)

    if isinstance(email, Member):  # TODO: Remove this branch in udata 2.0
        warnings.warn(
            'Using documents as task parameter is deprecated and '
            'will be removed in udata 2.0', DeprecationWarning)
        member = email
    else:
        member = next((m for m in org.members if m.user.email == email), None)

    subject = _('You are now a member of the organization "%(org)s"', org=org)
    mail.send(subject, member.user, 'new_member', org=org)
Exemplo n.º 42
0
def notify_badge_added_public_service(sender, kind=''):
    '''
    Send an email when a `PUBLIC_SERVICE` badge is added to an `Organization`

    Parameters
    ----------
    sender
        The object that emitted the event.
    kind: str
        The kind of `Badge` object awarded.
    '''
    if kind == PUBLIC_SERVICE and isinstance(sender, Organization):
        recipients = [member.user for member in sender.members]
        subject = _(
            'Your organization "%(name)s" has been identified as public service',
            name=sender.name)
        mail.send(subject,
                  recipients,
                  'badge_added_public_service',
                  organization=sender,
                  badge=sender.get_badge(kind))
Exemplo n.º 43
0
def notify_new_follower(follow_id):
    if isinstance(follow_id, Follow):  # TODO: Remove this branch in udata 2.0
        warnings.warn(
            'Using documents as task parameter is deprecated and '
            'will be removed in udata 2.0', DeprecationWarning)
        follow = follow_id
    else:
        follow = Follow.objects.get(pk=follow_id)

    if isinstance(follow.following, User):
        subject = _('%(user)s followed you', user=follow.follower)
        mail.send(subject, follow.following, 'new_follower', follow=follow)
    elif isinstance(follow.following, Organization):
        subject = _('%(user)s followed your organization',
                    user=follow.follower)
        recipients = [m.user for m in follow.following.members]
        mail.send(subject, recipients, 'new_follower_org', follow=follow)
    elif isinstance(follow.following, Dataset):
        pass
    elif isinstance(follow.following, Reuse):
        pass
Exemplo n.º 44
0
def notify_new_reuse(reuse_id):
    if isinstance(reuse_id, Reuse):
        # TODO: Remove this branch in udata 2.0
        warnings.warn(
            'Reuse as task parameter is deprecated and '
            'will be removed in udata 2.0',
            DeprecationWarning
        )
        reuse = reuse_id
    else:
        reuse = Reuse.objects.get(pk=reuse_id)
    for dataset in reuse.datasets:
        if dataset.organization:
            recipients = [m.user for m in dataset.organization.members]
        elif dataset.owner:
            recipients = dataset.owner
        else:
            recipients = None
        if recipients:
            mail.send(_('New reuse'), recipients, 'new_reuse', reuse=reuse,
                      dataset=dataset)
Exemplo n.º 45
0
def notify_badge_added_certified(sender, kind=''):
    '''
    Send an email when a `CERTIFIED` badge is added to an `Organization`

    Parameters
    ----------
    sender
        The object that emitted the event.
    kind: str
        The kind of `Badge` object awarded.
    '''
    if kind == CERTIFIED and isinstance(sender, Organization):
        recipients = [member.user for member in sender.members]
        subject = _(
            'Your organization "%(name)s" has been certified',
            name=sender.name
        )
        mail.send(
            subject,
            recipients,
            'badge_added_certified',
            organization=sender,
            badge=sender.get_badge(kind)
        )
Exemplo n.º 46
0
def notify_badge_added_public_service(sender, kind=''):
    '''
    Send an email when a `PUBLIC_SERVICE` badge is added to an `Organization`

    Parameters
    ----------
    sender
        The object that emitted the event.
    kind: str
        The kind of `Badge` object awarded.
    '''
    if kind == PUBLIC_SERVICE and isinstance(sender, Organization):
        recipients = [member.user for member in sender.members]
        subject = _(
            'Your organization "%(name)s" has been identified as public service',
            name=sender.name
        )
        mail.send(
            subject,
            recipients,
            'badge_added_public_service',
            organization=sender,
            badge=sender.get_badge(kind)
        )
Exemplo n.º 47
0
def notify_membership_request(org, request):
    recipients = [m.user for m in org.by_role("admin")]
    mail.send(_("New membership request"), recipients, "membership_request", org=org, request=request)
Exemplo n.º 48
0
def notify_new_member(org, member):
    subject = _('You are now a member of the organization "%(org)s"', org=org)
    mail.send(subject, member.user, 'new_member', org=org)
Exemplo n.º 49
0
def send_test_mail(user):
    mail.send(_('Test mail'), user, 'test')
Exemplo n.º 50
0
def notify_membership_request(org, request):
    recipients = [m.user for m in org.by_role('admin')]
    mail.send(
        _('New membership request'), recipients, 'membership_request',
        org=org, request=request)