def reset_email_group(suffix=SUFFIX): """Clear an regenerate the group members for this suffix.""" group = _get_or_create_email_group(suffix) logger.info(f'Clearing group: {group}.') GroupMembership.objects.filter(group=group).delete() users = User.objects.filter(email__iendswith=suffix) for user in users: GroupMembership.add_to_group(member=user, group=group) logger.info(f'Added {user} to group {group}.')
def user_saved(sender, **kwargs): """Update email group membership on User save.""" user = kwargs['instance'] logger.info(f'User saved: {user}') group = _get_or_create_email_group(SUFFIX) if user.email.endswith(SUFFIX): try: GroupMembership.add_to_group(member=user, group=group) except IntegrityError: pass else: logger.info(f'Added {user} to group {group}.') else: GroupMembership.objects.filter(member=user, group=group).delete() logger.info(f'Removed {user} from group {group}.')
def save(self, *args, **kwargs): if self.pk: old_officer = Officer.objects.get(pk=self.pk) if old_officer.position and old_officer.position.group and old_officer.user: gm = GroupMembership.objects.filter(member=old_officer.user, group=old_officer.position.group)[:1] if gm: gm[0].delete() super(Officer, self).save(*args, **kwargs) officer = self if officer.position: if officer.position.group and officer.user: try: GroupMembership.objects.get(member=officer.user, group=officer.position.group) except: GroupMembership.add_to_group(member=officer.user, group=officer.position.group) return officer
def subscribe_to_newsletter_interactive(request, group_slug): group = get_object_or_404(Group, slug=group_slug, allow_self_add=True, status_detail='active') [groupmembership] = GroupMembership.objects.filter( group=group, member=request.user, status=True, status_detail='active')[:1] or [None] if not groupmembership: groupmembership = GroupMembership.add_to_group(group=group, member=request.user) if groupmembership.subscribe_to_newsletter(): messages.success(request, _('Successfully subscribed to Newsletters.')) return redirect(reverse('group.detail', kwargs={'group_slug': group_slug}))