diff --git a/Gulpfile.js b/Gulpfile.js index 4531d699f4..92d1c651df 100644 --- a/Gulpfile.js +++ b/Gulpfile.js @@ -117,7 +117,9 @@ async function jsLint() { console.log(resultText) } -// Get JS minified files from packages +/* Get JS minified files from packages + * Get also sourcemaps for all JS files, required by Django's ManifestStaticFilesStorage since 4.1 (see + * https://docs.djangoproject.com/fr/4.2/ref/contrib/staticfiles/#manifeststaticfilesstorage) */ function jsPackages() { return gulp.src([ require.resolve('jquery/dist/jquery.min.js'), @@ -126,8 +128,8 @@ function jsPackages() { require.resolve('chartjs-adapter-moment/dist/chartjs-adapter-moment.min.js'), require.resolve('chart.js/dist/chart.min.js'), require.resolve('easymde/dist/easymde.min.js') - ]) - .pipe(gulp.dest('dist/js/')) + ], { sourcemaps: true }) + .pipe(gulp.dest('dist/js/', { sourcemaps: '.' })) } // Generates JS for the website diff --git a/requirements.txt b/requirements.txt index 38a729af9a..0cc009dbd2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,7 +9,7 @@ beautifulsoup4==4.12.2 django-crispy-forms==2.0 django-model-utils==4.3.1 django-recaptcha==4.0.0 -Django==3.2.23 +Django==4.2.6 easy-thumbnails[svg]==2.8.5 factory-boy==3.3.0 geoip2==4.8.0 diff --git a/zds/featured/views.py b/zds/featured/views.py index cf0fddc88b..69bbda8e42 100644 --- a/zds/featured/views.py +++ b/zds/featured/views.py @@ -336,20 +336,16 @@ def form_valid(self, form): class FeaturedMessageDelete(FeaturedViewMixin, DeleteView): - """ - Delete the featured message. - """ - - http_method_names = ["post", "delete"] - last_message = None + """Delete the featured message.""" - def dispatch(self, request, *args, **kwargs): - self.last_message = FeaturedMessage.objects.get_last_message() - return super().dispatch(request, *args, **kwargs) + http_method_names = ["post"] + model = FeaturedMessage - def delete(self, request, *args, **kwargs): - if self.last_message: - self.last_message.delete() + def get_object(self, queryset=None): + return FeaturedMessage.objects.get_last_message() + def form_valid(self, form): + if self.object is not None: + self.object.delete() messages.success(self.request, _("Le message a été supprimé.")) return redirect(reverse("featured:resource-list")) diff --git a/zds/tutorialv2/views/containers_extracts.py b/zds/tutorialv2/views/containers_extracts.py index 7d2493f873..c5661e68cc 100644 --- a/zds/tutorialv2/views/containers_extracts.py +++ b/zds/tutorialv2/views/containers_extracts.py @@ -228,11 +228,11 @@ def form_valid(self, form): class DeleteContainerOrExtract(LoggedWithReadWriteHability, SingleContentViewMixin, DeleteView): model = PublishableContent template_name = None - http_method_names = ["delete", "post"] + http_method_names = ["post"] object = None versioned_object = None - def delete(self, request, *args, **kwargs): + def form_valid(self, form): """delete any object, either Extract or Container""" self.object = self.get_object() self.versioned_object = self.get_versioned_object() diff --git a/zds/tutorialv2/views/contents.py b/zds/tutorialv2/views/contents.py index 018b146899..33da3f42dc 100644 --- a/zds/tutorialv2/views/contents.py +++ b/zds/tutorialv2/views/contents.py @@ -29,8 +29,6 @@ from zds.tutorialv2.models.database import PublishableContent, Validation from zds.tutorialv2.utils import init_new_repo from zds.tutorialv2.views.authors import RemoveAuthorFromContent -from zds.tutorialv2.views.goals import EditGoalsForm -from zds.tutorialv2.views.labels import EditLabelsForm from zds.utils.models import get_hat_from_settings from zds.mp.utils import send_mp, send_message_mp from zds.utils.uuslug_wrapper import slugify @@ -279,18 +277,14 @@ def form_valid(self, form): class DeleteContent(LoginRequiredMixin, SingleContentViewMixin, DeleteView): model = PublishableContent - template_name = None - http_method_names = ["delete", "post"] - object = None + http_method_names = ["post"] authorized_for_staff = False # deletion is creator's privilege @method_decorator(transaction.atomic) def dispatch(self, *args, **kwargs): return super().dispatch(*args, **kwargs) - def delete(self, request, *args, **kwargs): - """rewrite delete() function to ensure repository deletion""" - + def form_valid(self, form): self.object = self.get_object() object_type = self.object.type.lower() @@ -362,4 +356,4 @@ def delete(self, request, *args, **kwargs): messages.success(self.request, _("Vous avez bien supprimé {}.").format(_type)) - return redirect(reverse(object_type + ":find-" + object_type, args=[request.user.username])) + return redirect(reverse(object_type + ":find-" + object_type, args=[self.request.user.username]))