From 72cf7b0c3e244d0a61a1aeab25596b34ab15255b Mon Sep 17 00:00:00 2001 From: Ross Date: Wed, 18 May 2022 17:55:48 +0100 Subject: [PATCH] . --- rapids/forms.py | 15 ++++++++++++++- rapids/migrations/0052_rapidimage_filename.py | 18 ++++++++++++++++++ rapids/models.py | 2 ++ rapids/templates/rapids/rapid_form.html | 4 ++-- rapids/urls.py | 1 + rapids/views.py | 5 +++++ 6 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 rapids/migrations/0052_rapidimage_filename.py diff --git a/rapids/forms.py b/rapids/forms.py index 08e8e372..43fa4161 100755 --- a/rapids/forms.py +++ b/rapids/forms.py @@ -23,6 +23,7 @@ from rapids.models import ( from django.contrib.admin.widgets import FilteredSelectMultiple from django.forms.widgets import RadioSelect, TextInput, Textarea +from django.contrib.auth.models import User class RapidAnswerForm(ModelForm): @@ -189,7 +190,7 @@ class RapidForm(ModelForm): ImageFormSet = inlineformset_factory( Rapid, RapidImage, - fields=["image", "feedback_image", "description"], + fields=["image", "feedback_image", "filename", "description"], exclude=[], can_delete=True, extra=1, @@ -244,3 +245,15 @@ class ExamForm(ExamFormMixin, ModelForm): "cid_user_groups", #"author", ] + +class ExamAuthorForm(ModelForm): + class Meta: + model = Exam + fields = ["author"] + + def __init__(self, *args, **kwargs): + ModelForm.__init__(self, *args, **kwargs) + self.fields["author"] = ModelMultipleChoiceField( + queryset=User.objects.all(), + widget=FilteredSelectMultiple(verbose_name="Authors", is_stacked=False), + ) \ No newline at end of file diff --git a/rapids/migrations/0052_rapidimage_filename.py b/rapids/migrations/0052_rapidimage_filename.py new file mode 100644 index 00000000..931be7b7 --- /dev/null +++ b/rapids/migrations/0052_rapidimage_filename.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.13 on 2022-05-18 16:55 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rapids', '0051_exam_authors_only'), + ] + + operations = [ + migrations.AddField( + model_name='rapidimage', + name='filename', + field=models.CharField(blank=True, help_text='Name of the original file when uploaded', max_length=255, null=True), + ), + ] diff --git a/rapids/models.py b/rapids/models.py index 6f3c0f1b..04e35d82 100644 --- a/rapids/models.py +++ b/rapids/models.py @@ -501,6 +501,8 @@ class RapidImage(models.Model): feedback_image = models.BooleanField(default=False) + filename = models.CharField(max_length=255, null=True, blank=True, help_text="Name of the original file when uploaded") + description = models.CharField(max_length=255, null=True, blank=True) image_md5_hash = models.CharField(max_length=32, null=True, blank=True) diff --git a/rapids/templates/rapids/rapid_form.html b/rapids/templates/rapids/rapid_form.html index 2faf4756..e33a6b89 100755 --- a/rapids/templates/rapids/rapid_form.html +++ b/rapids/templates/rapids/rapid_form.html @@ -212,7 +212,6 @@ }; dropContainer.ondrop = function (evt) { - console.log("SHIT", evt); $(evt.target).removeClass("drop-target-active"); file_drop_number = evt.dataTransfer.files.length; @@ -621,7 +620,8 @@ // If a (new) file is being uploaded we save it's name prior to it being hashed if (file_element.files.length > 0) { file_name = file_element.files[0].name - $(ul).find("input[type=text]").val(file_name); + //$(ul).find("input[type=text]").val(file_name); + $(ul).find("input[name~='filename']").val(file_name); } if (file_element.files.length > 0 || $(ul).find(":contains('Currently:')")) { diff --git a/rapids/urls.py b/rapids/urls.py index fbcef62a..acca7001 100755 --- a/rapids/urls.py +++ b/rapids/urls.py @@ -70,6 +70,7 @@ urlpatterns = [ name="exam_question_detail", ), path("exam//", views.GenericExamViews.exam_overview, name="exam_overview"), + path("exam//authors", views.ExamAuthorUpdate.as_view(), name="exam_authors"), path( "exam//json_edit", views.GenericExamViews.exam_json_edit, diff --git a/rapids/views.py b/rapids/views.py index f5e5aa16..ec1403d6 100755 --- a/rapids/views.py +++ b/rapids/views.py @@ -20,6 +20,7 @@ from django.http import Http404, JsonResponse from django.http import HttpResponseRedirect, HttpResponse from .forms import ( + ExamAuthorForm, RapidForm, MarkRapidQuestionForm, ImageFormSet, @@ -858,6 +859,10 @@ class ExamUpdate( return super().form_valid(form) +#TODO: AUTHOR REQURIED (NOT AUTHORORCHECKER) +class ExamAuthorUpdate(RevisionMixin, LoginRequiredMixin, AuthorOrCheckerRequiredMixin, UpdateView): + model = Exam + form_class = ExamAuthorForm class ExamDelete(RevisionMixin, AuthorOrCheckerRequiredMixin, DeleteView): model = Exam