Edit attorney information
This commit is contained in:
		| @@ -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_display = ['last_name', 'first_name', 'position', 'region', 'phone_formatted', 'email', 'front_page', 'order', 'joined', 'thumbnail'] | ||||||
|     list_filter = ['region', 'position', 'front_page', 'joined'] |     list_filter = ['region', 'position', 'front_page', 'joined'] | ||||||
|     search_fields = ['email', 'joined', 'last_name', 'first_name', 'region', 'position', 'website', 'phone', 'phone_formatted'] |     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'] |     readonly_fields = ['image_preview'] | ||||||
|   | |||||||
| @@ -8,6 +8,12 @@ from OACPL import settings | |||||||
| from OACPL.utils import render_to_string | 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): | class RegisterForm(forms.ModelForm): | ||||||
|     def email_validator(self): |     def email_validator(self): | ||||||
|         if User.objects.filter(email=self).exists(): |         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 = 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() |         auth.save() | ||||||
|  |  | ||||||
|  |         user.user = auth | ||||||
|  |         user.save() | ||||||
|  |  | ||||||
|         # Add user to default Group |         # Add user to default Group | ||||||
|         default_group = Group.objects.filter(name='default').first() |         default_group = Group.objects.filter(name='default').first() | ||||||
|         if default_group: |         if default_group: | ||||||
|   | |||||||
							
								
								
									
										23
									
								
								charter_members/migrations/0009_attorney_user.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								charter_members/migrations/0009_attorney_user.py
									
									
									
									
									
										Normal file
									
								
							| @@ -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), | ||||||
|  |         ), | ||||||
|  |     ] | ||||||
| @@ -1,4 +1,5 @@ | |||||||
| from django.conf import settings | from django.conf import settings | ||||||
|  | from django.contrib.auth.admin import User | ||||||
| from django.db import models | from django.db import models | ||||||
| from django.utils import timezone | from django.utils import timezone | ||||||
|  |  | ||||||
| @@ -35,6 +36,7 @@ class Attorney(models.Model): | |||||||
|     phone = models.CharField(max_length=10) |     phone = models.CharField(max_length=10) | ||||||
|     position = models.ForeignKey(Position, blank=True, null=True) |     position = models.ForeignKey(Position, blank=True, null=True) | ||||||
|     website = models.CharField(max_length=255, 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): |     def phone_formatted(self): | ||||||
|         if self.phone is None or self.phone == '': return '' |         if self.phone is None or self.phone == '': return '' | ||||||
|   | |||||||
| @@ -1,4 +1,5 @@ | |||||||
| {% extends 'base.html' %} | {% extends 'base.html' %} | ||||||
|  | {% load widget_tweaks %} | ||||||
|  |  | ||||||
| {% block body %} | {% block body %} | ||||||
|     <div class="container-fluid"> |     <div class="container-fluid"> | ||||||
| @@ -14,10 +15,75 @@ | |||||||
|             </div> |             </div> | ||||||
|             <div class="col-lg-6 pt-3 bg-light-blue"> |             <div class="col-lg-6 pt-3 bg-light-blue"> | ||||||
|                 <div class="col-lg-6"> |                 <div class="col-lg-6"> | ||||||
|                     <h2 class="d-none d-lg-inline text-dark-primary">{{ attorney.first_name }} {{ attorney.last_name }}</h2> |                     <h2 class="d-none d-lg-inline text-dark-primary"> | ||||||
|  |                         {{ attorney.first_name }} {{ attorney.last_name }} | ||||||
|  |                     </h2> | ||||||
|  |                     {% if perms.charter_members.change_attorney or attorney.user == request.user %} | ||||||
|  |                         <a href="#" data-toggle="modal" data-target="#editModal">Edit</a> | ||||||
|  |                     {% endif %} | ||||||
|                     <p>{{ attorney.biography | safe }}</p> |                     <p>{{ attorney.biography | safe }}</p> | ||||||
|                 </div> |                 </div> | ||||||
|             </div> |             </div> | ||||||
|         </div> |         </div> | ||||||
|     </div> |     </div> | ||||||
|  |  | ||||||
|  |     {% if perms.charter_members.change_attorney or attorney.user == request.user %} | ||||||
|  |         <div class="modal fade" id="editModal" tabindex="-1" role="dialog" aria-hidden="true"> | ||||||
|  |             <div class="modal-dialog" role="document"> | ||||||
|  |                 <div class="modal-content"> | ||||||
|  |                     <div class="modal-header"> | ||||||
|  |                         <h5 class="modal-title" id="exampleModalLabel">Edit Attorney Information</h5> | ||||||
|  |                         <button type="button" class="close" data-dismiss="modal" aria-label="Close"> | ||||||
|  |                             <span aria-hidden="true">×</span> | ||||||
|  |                         </button> | ||||||
|  |                     </div> | ||||||
|  |                     <div class="modal-body"> | ||||||
|  |                         <form id="edit" method="post" enctype="multipart/form-data"> | ||||||
|  |                             {% csrf_token %} | ||||||
|  |                             <div class="row"> | ||||||
|  |                                 <div class="form-group col-12"> | ||||||
|  |                                     Portrait | ||||||
|  |                                     {{ editForm.image|add_class:"form-control" }} | ||||||
|  |                                 </div> | ||||||
|  |                                 <div class="form-group col-6"> | ||||||
|  |                                     {{ editForm.first_name|add_class:"form-control"|attr:"placeholder:First Name" }} | ||||||
|  |                                 </div> | ||||||
|  |                                 <div class="form-group col-6"> | ||||||
|  |                                     {{ editForm.last_name|add_class:"form-control"|attr:"placeholder:Last Name" }} | ||||||
|  |                                 </div> | ||||||
|  |                                 <div class="form-group col-6"> | ||||||
|  |                                     {{ editForm.password1|add_class:"form-control"|attr:"placeholder:Password" }} | ||||||
|  |                                 </div> | ||||||
|  |                                 <div class="form-group col-6"> | ||||||
|  |                                     {{ editForm.password2|add_class:"form-control"|attr:"placeholder:Confirm Password" }} | ||||||
|  |                                 </div> | ||||||
|  |                                 <div class="form-group col-6"> | ||||||
|  |                                     {{ editForm.phone|add_class:"form-control"|attr:"placeholder:Phone Number (No Formatting)" }} | ||||||
|  |                                 </div> | ||||||
|  |                                 <div class="form-group col-6"> | ||||||
|  |                                     {{ editForm.email|add_class:"form-control"|attr:"placeholder:Email" }} | ||||||
|  |                                 </div> | ||||||
|  |                                 <div class="form-group col-8"> | ||||||
|  |                                     {{ editForm.address|add_class:"form-control"|attr:"placeholder:Address" }} | ||||||
|  |                                 </div> | ||||||
|  |                                 <div class="form-group col-4"> | ||||||
|  |                                     {{ editForm.region|add_class:"form-control" }} | ||||||
|  |                                 </div> | ||||||
|  |                                 <div class="form-group col-12"> | ||||||
|  |                                     {{ editForm.website|add_class:"form-control"|attr:"placeholder:Website" }} | ||||||
|  |                                 </div> | ||||||
|  |                                 <div class="form-group col-12"> | ||||||
|  |                                     {{ editForm.biography|add_class:"form-control"|attr:"placeholder:Biography" }} | ||||||
|  |                                 </div> | ||||||
|  |                             </div> | ||||||
|  |                         </form> | ||||||
|  |                     </div> | ||||||
|  |                     <div class="modal-footer"> | ||||||
|  |                         <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button> | ||||||
|  |                         <button type="submit" class="btn btn-primary" form="edit">Save changes</button> | ||||||
|  |                     </div> | ||||||
|  |                 </div> | ||||||
|  |             </div> | ||||||
|  |         </div> | ||||||
|  |     {% endif %} | ||||||
| {% endblock %} | {% endblock %} | ||||||
|   | |||||||
| @@ -2,11 +2,15 @@ from django.db.models import Count | |||||||
| from django.shortcuts import render | from django.shortcuts import render | ||||||
|  |  | ||||||
| from .models import Region, Attorney | from .models import Region, Attorney | ||||||
|  | from .forms import AttorneyForm | ||||||
|  |  | ||||||
|  |  | ||||||
| def index(request, id): | def index(request, id): | ||||||
|     attorney = Attorney.objects.get(id=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): | def all(request): | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user