diff --git a/RIGS/models.py b/RIGS/models.py index a6140c08..0b97ca61 100644 --- a/RIGS/models.py +++ b/RIGS/models.py @@ -55,8 +55,13 @@ class Profile(AbstractUser): def latest_events(self): return self.event_mic.order_by('-start_date').select_related('person', 'organisation', 'venue', 'mic') - def users_awaiting_approval_count(self): - return self.filter(models.Q(is_approved=False)).count() + @classmethod + def admins(cls): + return Profile.objects.filter(email__in=[y for x in settings.ADMINS for y in x]) + + @classmethod + def users_awaiting_approval_count(cls): + return Profile.objects.filter(models.Q(is_approved=False)).count() def __str__(self): return self.name diff --git a/RIGS/signals.py b/RIGS/signals.py index 71a30856..5c5e6c66 100644 --- a/RIGS/signals.py +++ b/RIGS/signals.py @@ -11,6 +11,7 @@ from django.conf import settings from django.contrib.staticfiles.storage import staticfiles_storage from django.core.mail import EmailMessage, EmailMultiAlternatives from django.template.loader import get_template +from django.urls import reverse from django.utils import timezone from registration.signals import user_activated from premailer import Premailer @@ -109,13 +110,13 @@ post_save.connect(on_revision_commit, sender=models.EventAuthorisation) def send_admin_awaiting_approval_email(user, request, **kwargs): # Bit more controlled than just emailing all superusers - for admin in models.Profile.objects.filter(email__in=[y for x in settings.ADMINS for y in x]): + for admin in models.Profile.admins(): # Check we've ever emailed them before and if so, if cooldown has passed. if admin.last_emailed is None or admin.last_emailed + settings.EMAIL_COOLDOWN <= timezone.now(): context = { 'request': request, - 'link_suffix': '/admin/RIGS/profile/?is_approved__exact=0', - 'number_of_users': models.Profile.users_awaiting_approval_count(models.Profile.objects), + 'link_suffix': reverse("admin:RIGS_profile_changelist") + '?is_approved__exact=0', + 'number_of_users': models.Profile.users_awaiting_approval_count(), 'to_name': admin.first_name }