mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-05-16 01:27:03 +02:00
Respond to review feedback
This commit is contained in:
parent
5c3460782e
commit
60f282752b
12 changed files with 69 additions and 119 deletions
|
@ -3,12 +3,17 @@ from django.contrib.auth.admin import UserAdmin
|
|||
from .models import User, UserProfile
|
||||
|
||||
|
||||
# edit a user's profile on the user page
|
||||
class UserProfileInline(admin.StackedInline):
|
||||
|
||||
"""Edit a user's profile on the user page."""
|
||||
|
||||
model = UserProfile
|
||||
|
||||
|
||||
class MyUserAdmin(UserAdmin):
|
||||
|
||||
"""Custom user admin class to use our inlines."""
|
||||
|
||||
inlines = [UserProfileInline]
|
||||
|
||||
|
||||
|
|
|
@ -54,9 +54,6 @@ BASE_DIR = path.resolve().parent.parent
|
|||
# SECURITY WARNING: don't run with debug turned on in production!
|
||||
DEBUG = env_debug
|
||||
|
||||
# Use our user model instead of the default
|
||||
AUTH_USER_MODEL = "registrar.User"
|
||||
|
||||
|
||||
# Applications are modular pieces of code.
|
||||
# They are provided by Django, by third-parties, or by yourself.
|
||||
|
@ -185,6 +182,9 @@ DATABASES = {
|
|||
# Specify default field type to use for primary keys
|
||||
DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
|
||||
|
||||
# Use our user model instead of the default
|
||||
AUTH_USER_MODEL = "registrar.User"
|
||||
|
||||
# endregion
|
||||
# region: Email-------------------------------------------------------------###
|
||||
|
||||
|
|
|
@ -4,7 +4,6 @@ For more information see:
|
|||
https://docs.djangoproject.com/en/4.0/topics/http/urls/
|
||||
"""
|
||||
|
||||
from django.conf import settings
|
||||
from django.contrib import admin
|
||||
from django.urls import include, path
|
||||
|
||||
|
|
|
@ -2,9 +2,20 @@ from django import forms
|
|||
|
||||
from .models import UserProfile
|
||||
|
||||
|
||||
class EditProfileForm(forms.ModelForm):
|
||||
display_name = forms.CharField(widget=forms.TextInput(attrs={'class': 'usa-input'}), label="Display Name")
|
||||
|
||||
"""Custom form class for editing a UserProfile.
|
||||
|
||||
We can add whatever fields we want to this form and customize how they
|
||||
are displayed. The form is rendered into a template `profile.html` by a
|
||||
view called `edit_profile` in `profile.py`.
|
||||
"""
|
||||
|
||||
display_name = forms.CharField(
|
||||
widget=forms.TextInput(attrs={"class": "usa-input"}), label="Display Name"
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = UserProfile
|
||||
fields = ['display_name']
|
||||
fields = ["display_name"]
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Generated by Django 4.1.1 on 2022-09-22 16:05
|
||||
# Generated by Django 4.1.1 on 2022-09-26 15:26
|
||||
|
||||
from django.conf import settings
|
||||
import django.contrib.auth.models
|
||||
|
@ -127,7 +127,9 @@ class Migration(migrations.Migration):
|
|||
"verbose_name_plural": "users",
|
||||
"abstract": False,
|
||||
},
|
||||
managers=[("objects", django.contrib.auth.models.UserManager())],
|
||||
managers=[
|
||||
("objects", django.contrib.auth.models.UserManager()),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="UserProfile",
|
||||
|
@ -143,16 +145,16 @@ class Migration(migrations.Migration):
|
|||
),
|
||||
("created_at", models.DateTimeField(auto_now_add=True)),
|
||||
("updated_at", models.DateTimeField(auto_now=True)),
|
||||
("street1", models.CharField(max_length=2)),
|
||||
("street2", models.CharField(max_length=2)),
|
||||
("street3", models.CharField(max_length=2)),
|
||||
("city", models.CharField(max_length=2)),
|
||||
("sp", models.CharField(max_length=2)),
|
||||
("pc", models.CharField(max_length=2)),
|
||||
("cc", models.CharField(max_length=2)),
|
||||
("voice", models.CharField(max_length=2)),
|
||||
("fax", models.CharField(max_length=2)),
|
||||
("email", models.CharField(max_length=2)),
|
||||
("street1", models.TextField(blank=True)),
|
||||
("street2", models.TextField(blank=True)),
|
||||
("street3", models.TextField(blank=True)),
|
||||
("city", models.TextField(blank=True)),
|
||||
("sp", models.TextField(blank=True)),
|
||||
("pc", models.TextField(blank=True)),
|
||||
("cc", models.TextField(blank=True)),
|
||||
("voice", models.TextField(blank=True)),
|
||||
("fax", models.TextField(blank=True)),
|
||||
("email", models.TextField(blank=True)),
|
||||
("display_name", models.TextField()),
|
||||
(
|
||||
"user",
|
||||
|
@ -163,6 +165,8 @@ class Migration(migrations.Migration):
|
|||
),
|
||||
),
|
||||
],
|
||||
options={"abstract": False},
|
||||
options={
|
||||
"abstract": False,
|
||||
},
|
||||
),
|
||||
]
|
||||
|
|
|
@ -1,63 +0,0 @@
|
|||
# Generated by Django 4.1.1 on 2022-09-22 16:51
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("registrar", "0001_initial"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="userprofile",
|
||||
name="cc",
|
||||
field=models.TextField(blank=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userprofile",
|
||||
name="city",
|
||||
field=models.TextField(blank=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userprofile",
|
||||
name="email",
|
||||
field=models.TextField(blank=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userprofile",
|
||||
name="fax",
|
||||
field=models.TextField(blank=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userprofile",
|
||||
name="pc",
|
||||
field=models.TextField(blank=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userprofile",
|
||||
name="sp",
|
||||
field=models.TextField(blank=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userprofile",
|
||||
name="street1",
|
||||
field=models.TextField(),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userprofile",
|
||||
name="street2",
|
||||
field=models.TextField(blank=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userprofile",
|
||||
name="street3",
|
||||
field=models.TextField(blank=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userprofile",
|
||||
name="voice",
|
||||
field=models.TextField(blank=True),
|
||||
),
|
||||
]
|
|
@ -1,18 +0,0 @@
|
|||
# Generated by Django 4.1.1 on 2022-09-22 16:53
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("registrar", "0002_alter_userprofile_cc_alter_userprofile_city_and_more"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="userprofile",
|
||||
name="street1",
|
||||
field=models.TextField(blank=True),
|
||||
),
|
||||
]
|
|
@ -1,3 +1,3 @@
|
|||
from .models import User, UserProfile
|
||||
|
||||
__all__ = [User, UserProfile]
|
||||
__all__ = ["User", "UserProfile"]
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
from django.core.exceptions import ObjectDoesNotExist
|
||||
from django.contrib.auth.models import AbstractUser
|
||||
from django.db import models
|
||||
|
||||
|
@ -9,9 +10,9 @@ class User(AbstractUser):
|
|||
"""
|
||||
|
||||
def __str__(self):
|
||||
if self.userprofile.display_name:
|
||||
try:
|
||||
return self.userprofile.display_name
|
||||
else:
|
||||
except ObjectDoesNotExist:
|
||||
return self.username
|
||||
|
||||
|
||||
|
@ -78,4 +79,7 @@ class UserProfile(TimeStampedModel, ContactModel, AddressModel):
|
|||
if self.display_name:
|
||||
return self.display_name
|
||||
else:
|
||||
try:
|
||||
return self.user.username
|
||||
except ObjectDoesNotExist:
|
||||
return "No username"
|
||||
|
|
|
@ -6,12 +6,19 @@ from .models import UserProfile
|
|||
|
||||
|
||||
@receiver(post_save, sender=User)
|
||||
def create_profile(sender, instance, created, **kwargs):
|
||||
if created:
|
||||
def handle_profile(sender, instance, **kwargs):
|
||||
|
||||
"""Method for when a User is saved.
|
||||
|
||||
If the user is being created, then create a matching UserProfile. Otherwise
|
||||
save an updated profile or create one if it doesn't exist.
|
||||
"""
|
||||
|
||||
if kwargs.get("created", False):
|
||||
UserProfile.objects.create(user=instance)
|
||||
|
||||
|
||||
@receiver(post_save, sender=User)
|
||||
def save_profile(sender, instance, **kwargs):
|
||||
# instance is a User, it has a profile from the one-to-one relation
|
||||
else:
|
||||
# the user is not being created.
|
||||
if hasattr(instance, "userprofile"):
|
||||
instance.userprofile.save()
|
||||
else:
|
||||
UserProfile.objects.create(user=instance)
|
||||
|
|
|
@ -15,7 +15,6 @@ class HealthTest(TestCase):
|
|||
|
||||
|
||||
class LoggedInTests(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
username = "test_user"
|
||||
first_name = "First"
|
||||
|
@ -24,7 +23,7 @@ class LoggedInTests(TestCase):
|
|||
self.user = get_user_model().objects.create(
|
||||
username=username, first_name=first_name, last_name=last_name, email=email
|
||||
)
|
||||
profile = UserProfile.objects.create(user=self.user)
|
||||
self.profile = UserProfile.objects.create(user=self.user)
|
||||
self.client.force_login(self.user)
|
||||
|
||||
def test_edit_profile(self):
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
from django.shortcuts import redirect, render
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.contrib import messages
|
||||
|
@ -8,13 +7,16 @@ from ..forms import EditProfileForm
|
|||
|
||||
@login_required
|
||||
def edit_profile(request):
|
||||
|
||||
"""View for a profile editing page."""
|
||||
|
||||
if request.method == "POST":
|
||||
# post to this view when changes are made
|
||||
profile_form = EditProfileForm(request.POST, instance=request.user.userprofile)
|
||||
if profile_form.is_valid():
|
||||
profile_form.save()
|
||||
messages.success(request, 'Your profile is updated successfully')
|
||||
return redirect(to='edit-profile')
|
||||
messages.success(request, "Your profile is updated successfully")
|
||||
return redirect(to="edit-profile")
|
||||
else:
|
||||
profile_form = EditProfileForm(instance=request.user.userprofile)
|
||||
return render(request, 'profile.html', {'profile_form': profile_form})
|
||||
return render(request, "profile.html", {"profile_form": profile_form})
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue