Skip to content

Commit

Permalink
BB2-2576 Django 4.2 upgrade prototype (#1131)
Browse files Browse the repository at this point in the history
* Add django-upgrade to 4.2 changes files

* Update requirements files w/ minimal

* Update vendor/ package files

* Update base.py w new STORAGES setting

* Fix signals rename app.py to apps.py

* Update for Signal() change

* Fix CodeQL high vuln warning

* Fix flake8 remove comments

* Add dot_ext migration file

* Add merged migrations file

* Update Django version to 4.2.7
  • Loading branch information
dtisza1 committed Nov 29, 2023
1 parent 16ba198 commit 6f223fa
Show file tree
Hide file tree
Showing 57 changed files with 2,299 additions and 1,461 deletions.
1 change: 0 additions & 1 deletion apps/accounts/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +0,0 @@
default_app_config = 'apps.accounts.apps.OAuth2AccountsConfig'
83 changes: 49 additions & 34 deletions apps/accounts/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@


class UserTypeFilter(admin.SimpleListFilter):
title = 'User type'
parameter_name = 'userprofile__type'
title = "User type"
parameter_name = "userprofile__type"

def lookups(self, request, model_admin):
return [
('BEN', 'Beneficiary'),
('DEV', 'Developer'),
("BEN", "Beneficiary"),
("DEV", "Developer"),
]

def queryset(self, request, queryset):
Expand All @@ -32,56 +32,71 @@ def queryset(self, request, queryset):

class UserAdmin(DjangoUserAdmin):

list_display = ('username',
'get_type',
'email',
'first_name',
'last_name',
'is_staff',
'is_active',
'date_joined')

list_filter = (UserTypeFilter, )

list_display = (
"username",
"get_type",
"email",
"first_name",
"last_name",
"is_staff",
"is_active",
"date_joined",
)

list_filter = (UserTypeFilter,)

@admin.display(
description="Type",
ordering="userprofile__user_type",
)
def get_type(self, obj):
return obj.userprofile.user_type

get_type.short_description = 'Type'
get_type.admin_order_field = 'userprofile__user_type'


admin.site.unregister(User)
admin.site.register(User, UserAdmin)


@admin.register(UserProfile)
class UserProfileAdmin(admin.ModelAdmin):

@admin.display(
description="Email Address",
ordering="user__email",
)
def get_user_email(self, obj):
return obj.user.email

get_user_email.admin_order_field = "user__email"
get_user_email.short_description = "Email Address"

@admin.display(
description="Date Joined",
ordering="user__date_joined",
)
def get_user_joined(self, obj):
return obj.user.date_joined

get_user_joined.admin_order_field = "user__date_joined"
get_user_joined.short_description = "Date Joined"

list_display = ('user', 'name', 'user_type',
'organization_name', 'get_user_email',
'get_user_joined')
search_fields = ('user__username', 'user__email', 'user__first_name',
'user__last_name', 'user_type', 'organization_name',
'user__date_joined')
raw_id_fields = ("user", )
list_display = (
"user",
"name",
"user_type",
"organization_name",
"get_user_email",
"get_user_joined",
)
search_fields = (
"user__username",
"user__email",
"user__first_name",
"user__last_name",
"user_type",
"organization_name",
"user__date_joined",
)
raw_id_fields = ("user",)


@admin.register(UserIdentificationLabel)
class UserIdentificationLabelAdmin(admin.ModelAdmin):
model = UserIdentificationLabel
filter_horizontal = ('users',)
filter_horizontal = ("users",)
list_display = ("name", "slug", "weight")
list_filter = ("name", "slug")
ordering = ("weight", )
ordering = ("weight",)
106 changes: 59 additions & 47 deletions apps/accounts/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User, Group
from django.db.models import Q
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from .models import UserProfile, create_activation_key, UserIdentificationLabel
from django.contrib.auth.forms import AuthenticationForm, UsernameField

Expand All @@ -13,37 +13,45 @@ def label_from_instance(self, obj):


class SignupForm(UserCreationForm):
email = forms.EmailField(max_length=255,
label=_("Email"))
first_name = forms.CharField(max_length=100,
label=_("First Name"))
last_name = forms.CharField(max_length=100,
label=_("Last Name"))
organization_name = forms.CharField(max_length=100,
label=_("Organization Name"),
required=True
)
password1 = forms.CharField(widget=forms.PasswordInput,
max_length=120,
label=_("Password"))
password2 = forms.CharField(widget=forms.PasswordInput,
max_length=120,
label=_("Password (again)"))
identification_choice = IdentificationModelChoiceField(label="Your Role", empty_label=None,
queryset=UserIdentificationLabel.objects.order_by('weight').all())

required_css_class = 'required'
email = forms.EmailField(max_length=255, label=_("Email"))
first_name = forms.CharField(max_length=100, label=_("First Name"))
last_name = forms.CharField(max_length=100, label=_("Last Name"))
organization_name = forms.CharField(
max_length=100, label=_("Organization Name"), required=True
)
password1 = forms.CharField(
widget=forms.PasswordInput, max_length=120, label=_("Password")
)
password2 = forms.CharField(
widget=forms.PasswordInput, max_length=120, label=_("Password (again)")
)
identification_choice = IdentificationModelChoiceField(
label="Your Role",
empty_label=None,
queryset=UserIdentificationLabel.objects.order_by("weight").all(),
)

required_css_class = "required"

class Meta:
model = User
fields = ('first_name', 'last_name', 'email', 'organization_name', 'password1', 'password2', 'identification_choice')
fields = (
"first_name",
"last_name",
"email",
"organization_name",
"password1",
"password2",
"identification_choice",
)

def clean_email(self):
email = self.cleaned_data.get('email', "")
email = self.cleaned_data.get("email", "")
if email:
if User.objects.filter(Q(email=email) | Q(username=email)).exists():
raise forms.ValidationError(
_('This email address is already registered.'))
_("This email address is already registered.")
)
return email.rstrip().lstrip().lower()
else:
return email.rstrip().lstrip().lower()
Expand All @@ -53,17 +61,18 @@ def save(self):
self.instance.is_active = False
user = super().save()

UserProfile.objects.create(user=user,
organization_name=self.cleaned_data[
'organization_name'],
user_type="DEV",
create_applications=True)
UserProfile.objects.create(
user=user,
organization_name=self.cleaned_data["organization_name"],
user_type="DEV",
create_applications=True,
)

group = Group.objects.get(name='BlueButton')
group = Group.objects.get(name="BlueButton")
user.groups.add(group)

# Assign user to identification label
ident = self.cleaned_data['identification_choice']
ident = self.cleaned_data["identification_choice"]
ident.users.add(user)
ident.save()

Expand All @@ -74,33 +83,36 @@ def save(self):


class AccountSettingsForm(forms.Form):

def __init__(self, *args, **kwargs):
self.request = kwargs.pop("request")
super(AccountSettingsForm, self).__init__(*args, **kwargs)

email = forms.EmailField(max_length=255, label=_('Email'), disabled=True, required=False)
first_name = forms.CharField(max_length=100, label=_('First Name'))
last_name = forms.CharField(max_length=100, label=_('Last Name'))
organization_name = forms.CharField(max_length=100,
label=_('Organization Name'),
required=True)
required_css_class = 'required'
email = forms.EmailField(
max_length=255, label=_("Email"), disabled=True, required=False
)
first_name = forms.CharField(max_length=100, label=_("First Name"))
last_name = forms.CharField(max_length=100, label=_("Last Name"))
organization_name = forms.CharField(
max_length=100, label=_("Organization Name"), required=True
)
required_css_class = "required"


class AuthenticationForm(AuthenticationForm):
username = UsernameField(widget=forms.TextInput(attrs={'autofocus': True}),
max_length=150, label=_('Email'))
username = UsernameField(
widget=forms.TextInput(attrs={"autofocus": True}),
max_length=150,
label=_("Email"),
)
error_messages = {
'invalid_login': _(
"Please enter a correct email and password."
"invalid_login": _("Please enter a correct email and password."),
"inactive": _(
"Please click the verification link in your email before logging in."
),
'inactive': _("Please click the verification link in your email before logging in."
),
}

required_css_class = 'required'
required_css_class = "required"

def clean_username(self):
username = self.cleaned_data.get('username', '')
username = self.cleaned_data.get("username", "")
return username.rstrip().lstrip().lower()
18 changes: 11 additions & 7 deletions apps/accounts/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@
from django.dispatch import receiver
from django.utils import timezone
from django.utils.crypto import get_random_string
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import ugettext
from django.utils.translation import gettext_lazy as _
from django.utils.translation import gettext

from .emails import send_activation_key_via_email

Expand Down Expand Up @@ -227,8 +227,12 @@ def __str__(self):
def save(self, **kwargs):
now = pytz.utc.localize(datetime.utcnow())
# need to pop the custom arg out since it is not accepted by super
expires_override = kwargs.pop('expires', None)
self.expires = expires_override if expires_override else (now + timedelta(days=settings.SIGNUP_TIMEOUT_DAYS))
expires_override = kwargs.pop("expires", None)
self.expires = (
expires_override
if expires_override
else (now + timedelta(days=settings.SIGNUP_TIMEOUT_DAYS))
)
super(ActivationKey, self).save(**kwargs)


Expand Down Expand Up @@ -304,7 +308,7 @@ def export_admin_log(sender, instance, **kwargs):
msg = ""
if isinstance(instance, LogEntry):
if instance.action_flag == ADDITION:
msg = ugettext(
msg = gettext(
'User "%(user)s" added %(content_type)s object. "%(object)s" added at %(action_time)s'
) % {
"user": instance.user,
Expand All @@ -314,7 +318,7 @@ def export_admin_log(sender, instance, **kwargs):
}

elif instance.action_flag == CHANGE:
msg = ugettext(
msg = gettext(
'User "%(user)s" changed %(content_type)s object. "%(object)s" - %(changes)s at %(action_time)s'
) % {
"user": instance.user,
Expand All @@ -325,7 +329,7 @@ def export_admin_log(sender, instance, **kwargs):
}

elif instance.action_flag == DELETION:
msg = ugettext(
msg = gettext(
'User "%(user)s" deleted %(content_type)s object. "%(object)s" deleted at %(action_time)s'
) % {
"user": instance.user,
Expand Down
Loading

0 comments on commit 6f223fa

Please sign in to comment.