Add delete photo view

This commit is contained in:
Alexandre Iooss 2022-03-02 13:13:59 +01:00
parent f17adbb2ed
commit f9c33e2cad
3 changed files with 39 additions and 2 deletions

View file

@ -0,0 +1,24 @@
{% extends "base.html" %}
{% comment %}
SPDX-License-Identifier: GPL-3.0-or-later
{% endcomment %}
{% load i18n %}
{% block title %}{% trans "Delete confirmation" %}{% endblock %}
{% block content %}
<div class="row">
<div class="col-lg-12">
<h1>{% trans "Delete confirmation" %}</h1>
<form method="post">{% csrf_token %}
<p>
{% blocktranslate trimmed %}
Are you sure you want to delete <code>{{ object }}</code>?
{% endblocktranslate %}
</p>
{{ form }}
<input type="submit" class="btn btn-danger" value="{% trans "Confirm" %}">
</form>
</div>
</div>
{% endblock %}

View file

@ -2,7 +2,7 @@ from django.urls import path, re_path
from .views import (GalleryDetailView, GalleryArchiveIndexView,
GalleryDownload, GalleryUpload, GalleryYearArchiveView,
PhotoDetailView, TagDetail)
PhotoDetailView, PhotoDeleteView, TagDetail)
app_name = 'photologue'
urlpatterns = [
@ -13,5 +13,6 @@ urlpatterns = [
path('gallery/<slug:slug>/<int:owner>/', GalleryDetailView.as_view(), name='pl-gallery-owner'),
path('gallery/<slug:slug>/download/', GalleryDownload.as_view(), name='pl-gallery-download'),
path('photo/<int:pk>/', PhotoDetailView.as_view(), name='pl-photo'),
path('photo/<int:pk>/delete/', PhotoDeleteView.as_view(), name='pl-photo-delete'),
path('upload/', GalleryUpload.as_view(), name='pl-gallery-upload'),
]

View file

@ -16,7 +16,7 @@ from django.urls import reverse_lazy
from django.utils.text import slugify
from django.views.generic.dates import ArchiveIndexView, YearArchiveView
from django.views.generic.detail import DetailView
from django.views.generic.edit import FormView
from django.views.generic.edit import FormView, DeleteView
from PIL import Image
from .forms import UploadForm
@ -56,6 +56,18 @@ class PhotoDetailView(LoginRequiredMixin, DetailView):
return qs.filter(is_public=True)
class PhotoDeleteView(PermissionRequiredMixin, DeleteView):
model = Photo
permission_required = 'photologue.delete_photo'
def get_success_url(self):
galleries = self.object.galleries.all()
if not galleries:
return reverse_lazy('photologue:pl-gallery-archive')
slug = galleries[0].slug
return reverse_lazy('photologue:pl-gallery', args=[slug])
class TagDetail(LoginRequiredMixin, DetailView):
model = Tag