示例#1
0
def my_m2m_changed_handler(sender, **kwargs):
    instance = kwargs['instance']
    if getattr(instance, 'send_m2m_notification',
               False) and get_current_user():
        (cl, f) = sender.__name__.split('_')
        if not hasattr(instance, '_stored_m2m'):
            instance._stored_m2m = {}
        if kwargs['action'] == 'pre_clear':
            instance._stored_m2m[f] = set(
                [unicode(t) for t in getattr(instance, f).all()])
        elif kwargs['action'] == 'post_add':
            newset = set([unicode(t) for t in getattr(instance, f).all()])
            added = newset.difference(instance._stored_m2m.get(f, set()))
            removed = instance._stored_m2m.get(f, set()).difference(newset)
            subj = '{0} id {1} has been modified'.format(
                instance._meta.verbose_name, instance.id)
            if added or removed:
                send_simple_mail(
                    settings.NOTIFICATION_FROM, settings.NOTIFICATION_EMAIL,
                    "%s by %s" % (subj, get_current_user()),
                    "The following values for {0} were changed:\n\n{1}\n{2}\n\n"
                    .format(
                        instance._meta.get_field(f).verbose_name,
                        "\n".join([u"Added: %s" % a for a in added]),
                        "\n".join([u"Removed: %s" % r for r in removed]),
                    ))
示例#2
0
def my_pre_delete_handler(sender, **kwargs):
    instance = kwargs['instance']
    if getattr(instance, 'send_notification', False) and get_current_user():
        send_simple_mail(
            settings.NOTIFICATION_FROM, settings.NOTIFICATION_EMAIL,
            "%s id %s has been deleted by %s" %
            (instance._meta.verbose_name, instance.id, get_current_user()),
            _get_full_text_representation(instance))
示例#3
0
def my_pre_save_handler(sender, **kwargs):
    instance = kwargs['instance']
    if getattr(instance, 'send_notification', False) and get_current_user():
        (subj, cont) = _get_notification_text(instance)
        if cont:
            cont = _build_url(instance) + "\n\n" + cont
            send_simple_mail(settings.NOTIFICATION_FROM,
                             settings.NOTIFICATION_EMAIL,
                             "%s by %s" % (subj, get_current_user()), cont)
示例#4
0
文件: signals.py 项目: jkatz/pgweb
def my_pre_delete_handler(sender, **kwargs):
    instance = kwargs['instance']
    if getattr(instance, 'send_notification', False) and get_current_user():
        send_simple_mail(settings.NOTIFICATION_FROM,
                         settings.NOTIFICATION_EMAIL,
                         "%s id %s has been deleted by %s" % (
                             instance._meta.verbose_name,
                             instance.id,
                             get_current_user()),
                         _get_full_text_representation(instance))
示例#5
0
文件: signals.py 项目: jkatz/pgweb
def my_pre_save_handler(sender, **kwargs):
    instance = kwargs['instance']
    if getattr(instance, 'send_notification', False) and get_current_user():
        (subj, cont) = _get_notification_text(instance)
        if cont:
            cont = _build_url(instance) + "\n\n" + cont
            send_simple_mail(settings.NOTIFICATION_FROM,
                             settings.NOTIFICATION_EMAIL,
                             "%s by %s" % (subj, get_current_user()),
                             cont)
示例#6
0
    def save(self, commit=True):
        model = super(OrganisationForm, self).save(commit=False)

        ops = []
        if self.cleaned_data.get('add_email', None):
            # Create the email record
            e = OrganisationEmail(
                org=model,
                address=self.cleaned_data['add_email'].lower(),
                token=generate_random_token())
            e.save()

            # Send email for confirmation
            send_template_mail(
                settings.NOTIFICATION_FROM,
                e.address,
                "Email address added to postgresql.org organisation",
                'core/org_add_email.txt',
                {
                    'org': model,
                    'email': e,
                },
            )
            ops.append('Added email {}, confirmation request sent'.format(
                e.address))
        if self.cleaned_data.get('remove_email', None):
            for e in self.cleaned_data['remove_email']:
                ops.append('Removed email {}'.format(e.address))
                e.delete()

        if 'add_manager' in self.cleaned_data and self.cleaned_data[
                'add_manager']:
            u = User.objects.get(
                email=self.cleaned_data['add_manager'].lower())
            model.managers.add(u)
            ops.append('Added manager {}'.format(u.username))
        if 'remove_manager' in self.cleaned_data and self.cleaned_data[
                'remove_manager']:
            for toremove in self.cleaned_data['remove_manager']:
                model.managers.remove(toremove)
                ops.append('Removed manager {}'.format(toremove.username))

        if ops:
            send_simple_mail(
                settings.NOTIFICATION_FROM, settings.NOTIFICATION_EMAIL,
                "{0} modified {1}".format(get_current_user().username, model),
                "The following changes were made to {}:\n\n{}".format(
                    model, "\n".join(ops)))
        return model
示例#7
0
文件: forms.py 项目: y-sira/pgweb
    def save(self, commit=True):
        model = super(OrganisationForm, self).save(commit=False)
        ops = []
        if 'add_manager' in self.cleaned_data and self.cleaned_data['add_manager']:
            u = User.objects.get(email=self.cleaned_data['add_manager'].lower())
            model.managers.add(u)
            ops.append('Added manager {}'.format(u.username))
        if 'remove_manager' in self.cleaned_data and self.cleaned_data['remove_manager']:
            for toremove in self.cleaned_data['remove_manager']:
                model.managers.remove(toremove)
                ops.append('Removed manager {}'.format(toremove.username))

        if ops:
            send_simple_mail(
                settings.NOTIFICATION_FROM,
                settings.NOTIFICATION_EMAIL,
                "{0} modified managers of {1}".format(get_current_user().username, model),
                "The following changes were made to managers:\n\n{0}".format("\n".join(ops))
            )
        return model