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]), ))
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))
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)
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))
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
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