Skip to content

Commit

Permalink
black
Browse files Browse the repository at this point in the history
  • Loading branch information
tswfi committed Dec 22, 2023
1 parent 6accc9e commit f6b7afb
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 24 deletions.
2 changes: 1 addition & 1 deletion drfx/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@

# After user has been marked for deletion, how many days to wait until
# really deleting the user and their associated data
USER_DELETION_DAYS=90
USER_DELETION_DAYS = 90

# https://docs.djangoproject.com/en/4.1/ref/settings/
SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")
Expand Down
12 changes: 8 additions & 4 deletions users/management/commands/delete_marked_users.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,24 @@

logger = logging.getLogger(__name__)


class Command(BaseCommand):
help = "Delete all users that have been marked for deletion for more than the cutoff setting"

def handle(self, *args, **options):
# some safety margin
dt = timezone.now() - timezone.timedelta(days=config.USER_DELETION_DAYS)

logger.info(f" Search for users that have been marked for deletion for over {config.USER_DELETION_DAYS} days")
logger.info(
f" Search for users that have been marked for deletion for over {config.USER_DELETION_DAYS} days"
)

users = CustomUser.objects.filter(
marked_for_deletion_on__isnull=False,
marked_for_deletion_on__lt=dt
marked_for_deletion_on__isnull=False, marked_for_deletion_on__lt=dt
)

for user in users:
logger.info(f" Deleting User {user} as it has been marked for deletion over {config.USER_DELETION_DAYS} days")
logger.info(
f" Deleting User {user} as it has been marked for deletion over {config.USER_DELETION_DAYS} days"
)
user.delete()
12 changes: 9 additions & 3 deletions users/signals.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,6 @@ def send_reset_password_email(sender, instance: models.CustomUser, **kwargs):
form.save(from_email=from_email, email_template_name=template)



@receiver(post_save, sender=models.MembershipApplication)
def application_creation(
sender, instance: models.MembershipApplication, created, raw, **kwargs
Expand Down Expand Up @@ -277,7 +276,11 @@ def handle_marked_for_deletion(sender, instance: models.CustomUser, raw, **kwarg

if instance.marked_for_deletion_on:
# so the field was changed, mark the user is_active=False and send and email too
logger.info("User marked for deletion, also changing active to false and informing the user {}".format(instance))
logger.info(
"User marked for deletion, also changing active to false and informing the user {}".format(
instance
)
)
instance.is_active = False

# and send the email
Expand All @@ -288,10 +291,13 @@ def handle_marked_for_deletion(sender, instance: models.CustomUser, raw, **kwarg
subject = _("Your account has been deactivated and marked for deletion")
from_email = config.NOREPLY_FROM_ADDRESS
to = [instance.email, config.MEMBERSHIP_APPLICATION_NOTIFY_ADDRESS]
plaintext_content = render_to_string("mail/account_deactivated_and_marked_for_deletion.txt", context)
plaintext_content = render_to_string(
"mail/account_deactivated_and_marked_for_deletion.txt", context
)

send_mail(subject, plaintext_content, from_email, to)


#
# Signal door access denied
#
Expand Down
23 changes: 7 additions & 16 deletions users/tests/test_user_deletion.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ def test_mark_user_for_deletion(self):
self.assertEqual(self.user.is_active, True)
self.assertIsNone(self.user.marked_for_deletion_on)

self.user.marked_for_deletion_on=timezone.now()
self.user.marked_for_deletion_on = timezone.now()
self.user.save()

# user was marked is inactive
Expand All @@ -50,7 +50,7 @@ def test_mark_user_for_deletion(self):
mail.outbox = []

# mark again
self.user.marked_for_deletion_on=timezone.now()
self.user.marked_for_deletion_on = timezone.now()
self.user.save()

# no emails sent
Expand All @@ -60,7 +60,7 @@ def test_mark_user_for_deletion(self):
mail.outbox = []

# remove mark
self.user.marked_for_deletion_on=None
self.user.marked_for_deletion_on = None
self.user.save()

# user still marked as inactive
Expand All @@ -82,16 +82,10 @@ def test_user_deletion(self):
)

# log entry for the user
models.UsersLog.objects.create(
user=self.user,
message="test"
)
models.UsersLog.objects.create(user=self.user, message="test")

# nfc card
models.NFCCard.objects.create(
user=self.user,
cardid="123"
)
models.NFCCard.objects.create(user=self.user, cardid="123")

# custom invoice
models.CustomInvoice.objects.create(
Expand All @@ -103,9 +97,7 @@ def test_user_deletion(self):

# bank transaction that points to the user
self.transaction = models.BankTransaction.objects.create(
user=self.user,
date=timezone.now().date(),
amount=10
user=self.user, date=timezone.now().date(), amount=10
)

# delete the user
Expand All @@ -132,8 +124,7 @@ def test_user_deletion(self):
self.transaction.refresh_from_db()
self.assertEqual(self.transaction.user, None)


def tearDown(self):
mail.outbox = []
get_user_model().objects.all().delete()
models.MemberService.objects.all().delete()
models.MemberService.objects.all().delete()

0 comments on commit f6b7afb

Please sign in to comment.