From 018d600f53e880ac3e5b5021881a74934f89d048 Mon Sep 17 00:00:00 2001 From: Zak Timson Date: Sun, 14 Jan 2018 18:34:28 -0500 Subject: [PATCH] Added CVs to experts --- OACPL/urls.py | 12 ++++++++++-- case_law/models.py | 2 +- expert_witnesses/admin.py | 2 +- expert_witnesses/models.py | 12 ++++++++++++ expert_witnesses/templates/expertViewer.html | 17 ++++++++++++----- media/secure/.gitkeep | 0 6 files changed, 36 insertions(+), 9 deletions(-) delete mode 100644 media/secure/.gitkeep diff --git a/OACPL/urls.py b/OACPL/urls.py index 0ea8221..b5102a0 100644 --- a/OACPL/urls.py +++ b/OACPL/urls.py @@ -16,12 +16,19 @@ import newsletters.views @login_required -def protected_serve(request, path, document_root=None, show_indexes=False): +def serve_case(request, path, document_root=None, show_indexes=False): if not request.user.has_perm('view_pdf'): return Http404() return serve(request, path, document_root, show_indexes) +@login_required +def serve_cv(request, path, document_root=None, show_indexes=False): + if not request.user.has_perm('view_cv'): + return Http404() + return serve(request, path, document_root, show_indexes) + + urlpatterns = [ url(r'^$', main.views.index, name='home'), url(r'^admin/logout', main.views.logout, name='logout'), @@ -35,7 +42,8 @@ urlpatterns = [ url(r'^forum/(?P\d*)?', forum.views.view, name='forum'), url(r'^login/', main.views.login, name='login'), url(r'^logout/', main.views.logout, name='logout'), - url(r'^media/secure/(?P.*)$', protected_serve, {'document_root': os.path.join(settings.MEDIA_ROOT, 'secure')}, name='secure media'), + url(r'^media/case_law/(?P.*)$', serve_case, {'document_root': os.path.join(settings.MEDIA_ROOT, 'case_law')}, name='media caselaw'), + url(r'^media/cv/(?P.*)$', serve_cv, {'document_root': os.path.join(settings.MEDIA_ROOT, 'cv')}, name='media cv'), url(r'^media/(?P.*)$', serve, {'document_root': settings.MEDIA_ROOT}, name='media'), url(r'^members', charter_members.views.all, name='members'), url(r'^newsletter/unsubscribe', newsletters.views.unsubscribe, name='unsubscribe'), diff --git a/case_law/models.py b/case_law/models.py index eecb9fc..caa9bbc 100644 --- a/case_law/models.py +++ b/case_law/models.py @@ -22,7 +22,7 @@ class Case(models.Model): published = models.DateField() headings = models.ManyToManyField(Heading) - pdf = models.FileField('PDF', upload_to='secure', validators=[validate_file_extension]) + pdf = models.FileField('PDF', upload_to='case_law', validators=[validate_file_extension]) synopsis = models.TextField() def __str__(self): diff --git a/expert_witnesses/admin.py b/expert_witnesses/admin.py index 3eb3fed..33416be 100644 --- a/expert_witnesses/admin.py +++ b/expert_witnesses/admin.py @@ -8,5 +8,5 @@ admin.site.register(AreaOfExpertise) @admin.register(Expert) class ExpertiseAdmin(admin.ModelAdmin): - fields = ['name', 'institute', 'expertise', 'cases'] + fields = ['name', 'institute', 'CV', 'expertise', 'cases'] filter_horizontal = ('expertise', 'cases') diff --git a/expert_witnesses/models.py b/expert_witnesses/models.py index 098979e..2ce237a 100644 --- a/expert_witnesses/models.py +++ b/expert_witnesses/models.py @@ -1,3 +1,4 @@ +from django.core.exceptions import ValidationError from django.db import models from case_law.models import Case @@ -15,7 +16,18 @@ class AreaOfExpertise(models.Model): class Expert(models.Model): + + class Meta(object): + permissions = ( + ('view_cv', 'Can view CV'), + ) + + def validate_file_extension(value): + if not value.name.endswith('.pdf'): + raise ValidationError(u'File is not a PDF') + cases = models.ManyToManyField(Case, blank=True) + CV = models.FileField('CV', upload_to='cv', validators=[validate_file_extension], blank=True, null=True) expertise = models.ManyToManyField(AreaOfExpertise) institute = models.CharField(max_length=255, null=True, blank=True) name = models.CharField(max_length=255) diff --git a/expert_witnesses/templates/expertViewer.html b/expert_witnesses/templates/expertViewer.html index 3c59570..0bc9448 100644 --- a/expert_witnesses/templates/expertViewer.html +++ b/expert_witnesses/templates/expertViewer.html @@ -17,12 +17,19 @@
-

{{ expert.name }}

- {% if expert.institute %} - {{ expert.institute }} - {% else %} - No Institute +

{{ expert.name }}

+ {% if expert.CV and perms.expert_witnesses.view_cv %} + + Download CV + {% endif %} +
+ {% if expert.institute %} + {{ expert.institute }} + {% else %} + No Institute + {% endif %} +
Expertise
diff --git a/media/secure/.gitkeep b/media/secure/.gitkeep deleted file mode 100644 index e69de29..0000000