Skip to content

Commit

Permalink
added new unique profile.usercode for a not easily guessable referenc…
Browse files Browse the repository at this point in the history
…e option.
  • Loading branch information
jsayles committed Apr 22, 2020
1 parent 28665c1 commit 4089116
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 6 deletions.
18 changes: 18 additions & 0 deletions nadine/migrations/0038_userprofile_usercode.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 3.0.4 on 2020-04-22 20:46

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('nadine', '0037_userprofile_pronouns'),
]

operations = [
migrations.AddField(
model_name='userprofile',
name='usercode',
field=models.CharField(max_length=32, null=True, unique=True),
),
]
19 changes: 13 additions & 6 deletions nadine/models/profile.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
import os
import sys
import uuid
import pprint
import random
import traceback
import operator
import random, string
import logging
import hashlib
import pytz
Expand All @@ -15,8 +11,8 @@
from django.db.models import F, Q, Sum, Value
from django.db.models.functions import Coalesce
from django.contrib import admin
from django.core.files.base import ContentFile
from django.contrib.auth.models import User
from django.core.files.base import ContentFile
from django.conf import settings
from django.utils.encoding import smart_str
from django_localflavor_us.models import USStateField, PhoneNumberField
Expand Down Expand Up @@ -271,6 +267,7 @@ class UserProfile(models.Model):
MAX_PHOTO_SIZE = 1024

user = models.OneToOneField(settings.AUTH_USER_MODEL, blank=False, related_name="profile", on_delete=models.CASCADE)
usercode = models.CharField(max_length=32, unique=True, null=True)
phone = PhoneNumberField(blank=True, null=True)
phone2 = PhoneNumberField("Alternate Phone", blank=True, null=True)
address1 = models.CharField(max_length=128, blank=True)
Expand Down Expand Up @@ -873,6 +870,16 @@ def __str__(self):
###############################################################################


@receiver(pre_save, sender=UserProfile)
def profile_presave_callback(sender, **kwargs):
profile = kwargs['instance']
if not profile.usercode:
new_code = ''
while new_code == '' or UserProfile.objects.filter(usercode=new_code).count() > 0:
new_code = 'U' + ''.join(random.choices(string.ascii_uppercase + string.digits, k=7))
profile.usercode = new_code


@receiver(post_save, sender=User)
def user_save_callback(sender, **kwargs):
user = kwargs['instance']
Expand Down

0 comments on commit 4089116

Please sign in to comment.