From 44c565135cb466a9f98170113687eef6ac45f44a Mon Sep 17 00:00:00 2001 From: Sandrava Date: Wed, 17 Jul 2024 10:55:52 +0100 Subject: [PATCH] save document to collection --- peachjam/admin.py | 4 ++ peachjam/forms.py | 57 ++++++++++++++--- peachjam/models/collection.py | 4 +- .../peachjam/_document_detail_toolbar.html | 33 +++++++--- .../templates/peachjam/collections_list.html | 16 ++--- .../templates/peachjam/save_document.html | 35 +++++++++++ peachjam/urls.py | 4 +- peachjam/views/collection.py | 62 ++++++++++++++----- peachjam/views/generic_views.py | 14 ++++- 9 files changed, 181 insertions(+), 48 deletions(-) create mode 100644 peachjam/templates/peachjam/save_document.html diff --git a/peachjam/admin.py b/peachjam/admin.py index b6f51cdc4..30adc4569 100644 --- a/peachjam/admin.py +++ b/peachjam/admin.py @@ -42,6 +42,7 @@ CaseNumber, CitationLink, CitationProcessing, + Collection, CoreDocument, Court, CourtClass, @@ -69,6 +70,7 @@ PeachJamSettings, Predicate, Relationship, + SavedDocument, SourceFile, Taxonomy, UserProfile, @@ -1177,6 +1179,8 @@ class AttorneyAdmin(ImportExportMixin, admin.ModelAdmin): CourtClass, AttachedFileNature, CitationProcessing, + Collection, + SavedDocument, ] ) admin.site.register(PeachJamSettings, PeachJamSettingsAdmin) diff --git a/peachjam/forms.py b/peachjam/forms.py index 94c8404bd..be8be5dea 100644 --- a/peachjam/forms.py +++ b/peachjam/forms.py @@ -2,15 +2,21 @@ from django import forms from django.conf import settings -from django.contrib.auth.forms import UserCreationForm -from django.contrib.auth.models import User from django.core.files import File from django.core.mail import send_mail from django.http import QueryDict from django.template.loader import render_to_string from django.utils.translation import gettext as _ -from peachjam.models import AttachedFiles, CoreDocument, SourceFile, pj_settings +from peachjam.models import ( + AttachedFiles, + Collection, + CoreDocument, + SavedDocument, + SourceFile, + UserProfile, + pj_settings, +) from peachjam.plugins import plugins from peachjam.storage import clean_filename @@ -235,9 +241,46 @@ def send_email(self): ) -class SignUpForm(UserCreationForm): - email = forms.EmailField() +class SaveDocumentForm(forms.ModelForm): + collection = forms.ModelChoiceField(queryset=Collection.objects, required=False) + user_profile = forms.ModelChoiceField( + queryset=UserProfile.objects, widget=forms.HiddenInput() + ) + document = forms.ModelChoiceField( + queryset=CoreDocument.objects, widget=forms.HiddenInput() + ) class Meta: - model = User - fields = ["username", "email", "password1", "password2"] + model = SavedDocument + fields = "__all__" + + def __init__(self, *args, document=None, user_profile=None, **kwargs): + super().__init__(*args, **kwargs) + if document is not None and user_profile is not None: + self.document = document + self.user_profile = user_profile + self.fields["document"].initial = self.document + self.fields["user_profile"].initial = self.user_profile + + def save(self, commit=True): + return super().save() + + +class CollectionForm(forms.ModelForm): + name = forms.CharField(max_length=255, required=True) + user_profile = forms.ModelChoiceField( + queryset=UserProfile.objects, widget=forms.HiddenInput() + ) + + class Meta: + model = Collection + fields = "__all__" + + def __init__(self, *args, user_profile=None, **kwargs): + super().__init__(*args, **kwargs) + if user_profile is not None: + self.user_profile = user_profile + self.fields["user_profile"].initial = self.user_profile + + def save(self, commit=True): + return super().save() diff --git a/peachjam/models/collection.py b/peachjam/models/collection.py index 1d59e1c62..72ea6534d 100644 --- a/peachjam/models/collection.py +++ b/peachjam/models/collection.py @@ -41,9 +41,7 @@ class SavedDocument(models.Model): related_name="saved_documents", ) collection = models.ForeignKey( - Collection, - on_delete=models.CASCADE, - verbose_name=_("collection"), + Collection, on_delete=models.CASCADE, verbose_name=_("collection"), null=True ) class Meta: diff --git a/peachjam/templates/peachjam/_document_detail_toolbar.html b/peachjam/templates/peachjam/_document_detail_toolbar.html index eab9a4066..a785af486 100644 --- a/peachjam/templates/peachjam/_document_detail_toolbar.html +++ b/peachjam/templates/peachjam/_document_detail_toolbar.html @@ -9,14 +9,31 @@ {% endif %} {% endblock %} {% block download-btn %} - + {% if document.source_file %} -