diff --git a/charter_members/admin.py b/charter_members/admin.py index 1c458d4..317be09 100644 --- a/charter_members/admin.py +++ b/charter_members/admin.py @@ -12,5 +12,5 @@ class MemberAdmin(admin.ModelAdmin): list_display = ['last_name', 'first_name', 'position', 'region', 'phone_formatted', 'email', 'front_page', 'order', 'joined', 'thumbnail'] list_filter = ['region', 'position', 'front_page', 'joined'] search_fields = ['email', 'joined', 'last_name', 'first_name', 'region', 'position', 'website', 'phone', 'phone_formatted'] - fields = ['image_preview', 'image', 'last_name', 'first_name', 'position', 'region', 'biography', 'phone', 'email', 'website', 'front_page', 'order', 'joined'] + fields = ['image_preview', 'image', 'user', 'last_name', 'first_name', 'position', 'region', 'biography', 'phone', 'email', 'website', 'front_page', 'order', 'joined'] readonly_fields = ['image_preview'] diff --git a/charter_members/forms.py b/charter_members/forms.py index 0e91551..5146374 100644 --- a/charter_members/forms.py +++ b/charter_members/forms.py @@ -8,6 +8,12 @@ from OACPL import settings from OACPL.utils import render_to_string +class AttorneyForm(forms.ModelForm): + class Meta: + model = Attorney + fields = ['first_name', 'last_name', 'region', 'image', 'email', 'address', 'phone', 'website', 'call_to_bar', 'lso', 'biography'] + + class RegisterForm(forms.ModelForm): def email_validator(self): if User.objects.filter(email=self).exists(): @@ -70,6 +76,9 @@ class RegisterForm(forms.ModelForm): auth = User.objects.create_user(user.email, first_name=user.first_name, last_name=user.last_name, email=user.email, password=self.cleaned_data['password1']) auth.save() + user.user = auth + user.save() + # Add user to default Group default_group = Group.objects.filter(name='default').first() if default_group: diff --git a/charter_members/migrations/0009_attorney_user.py b/charter_members/migrations/0009_attorney_user.py new file mode 100644 index 0000000..eb45679 --- /dev/null +++ b/charter_members/migrations/0009_attorney_user.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.5 on 2018-02-27 03:16 +from __future__ import unicode_literals + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('charter_members', '0008_auto_20180124_0132'), + ] + + operations = [ + migrations.AddField( + model_name='attorney', + name='user', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/charter_members/models.py b/charter_members/models.py index 72ab97f..61497a5 100644 --- a/charter_members/models.py +++ b/charter_members/models.py @@ -1,4 +1,5 @@ from django.conf import settings +from django.contrib.auth.admin import User from django.db import models from django.utils import timezone @@ -35,6 +36,7 @@ class Attorney(models.Model): phone = models.CharField(max_length=10) position = models.ForeignKey(Position, blank=True, null=True) website = models.CharField(max_length=255, blank=True, null=True) + user = models.ForeignKey(User, null=True, blank=True) def phone_formatted(self): if self.phone is None or self.phone == '': return '' diff --git a/charter_members/templates/attorney.html b/charter_members/templates/attorney.html index f2aed9a..4d5cc0c 100644 --- a/charter_members/templates/attorney.html +++ b/charter_members/templates/attorney.html @@ -1,4 +1,5 @@ {% extends 'base.html' %} +{% load widget_tweaks %} {% block body %}
@@ -14,10 +15,75 @@
-

{{ attorney.first_name }} {{ attorney.last_name }}

+

+ {{ attorney.first_name }} {{ attorney.last_name }} +

+ {% if perms.charter_members.change_attorney or attorney.user == request.user %} + Edit + {% endif %}

{{ attorney.biography | safe }}

+ + {% if perms.charter_members.change_attorney or attorney.user == request.user %} + + {% endif %} {% endblock %} diff --git a/charter_members/views.py b/charter_members/views.py index 891d90a..5f3e259 100644 --- a/charter_members/views.py +++ b/charter_members/views.py @@ -2,11 +2,15 @@ from django.db.models import Count from django.shortcuts import render from .models import Region, Attorney +from .forms import AttorneyForm def index(request, id): attorney = Attorney.objects.get(id=id) - return render(request, 'attorney.html', {'attorney': attorney}) + edit_form = AttorneyForm(request.POST or None, request.FILES or None, instance=attorney) + if request.method == 'POST' and edit_form.is_valid(): + edit_form.save() + return render(request, 'attorney.html', {'attorney': attorney, 'editForm': edit_form}) def all(request):