feat: Add image upload form in bulma
This commit is contained in:
		@@ -0,0 +1,29 @@
 | 
			
		||||
{% extends "fellchensammlung/base_bulma.html" %}
 | 
			
		||||
 | 
			
		||||
{% load i18n %}
 | 
			
		||||
{% load widget_tweaks %}
 | 
			
		||||
 | 
			
		||||
{% block content %}
 | 
			
		||||
    <div>
 | 
			
		||||
        {% blocktranslate %}
 | 
			
		||||
            Lade hier ein Foto hoch - wähle den Titel wie du willst und mach bitte eine Bildbeschreibung,
 | 
			
		||||
            damit die Fotos auch für blinde und sehbehinderte Personen zugänglich sind.
 | 
			
		||||
        {% endblocktranslate %}
 | 
			
		||||
        <p><a class="button"
 | 
			
		||||
              href="https://www.dbsv.org/bildbeschreibung-4-regeln.html">{% translate 'Anleitung für Bildbeschreibungen' %}</a>
 | 
			
		||||
        </p>
 | 
			
		||||
    </div>
 | 
			
		||||
    <form method="post" enctype="multipart/form-data">
 | 
			
		||||
        {% csrf_token %}
 | 
			
		||||
        <div class="field">
 | 
			
		||||
            <label class="label" for="image">{{ form.image.label }}</label>
 | 
			
		||||
            {{ form.image|add_class:"input"|attr:"id:image" }}
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="field">
 | 
			
		||||
            <label class="label" for="alt-text">{{ form.alt_text.label }}</label>
 | 
			
		||||
            {{ form.alt_text|add_class:"textarea"|attr:"id:alt-text"|attr:"rows:3" }}
 | 
			
		||||
            <div class="is-danger">{{ form.alt_text.errors }}</div>
 | 
			
		||||
        </div>
 | 
			
		||||
        <input class="button is-primary" type="submit" value="{% translate "Speichern" %}">
 | 
			
		||||
    </form>
 | 
			
		||||
{% endblock %}
 | 
			
		||||
@@ -31,7 +31,7 @@
 | 
			
		||||
            <div class="card-footer">
 | 
			
		||||
                <a class="card-footer-item button" href="{% url 'animal-edit' animal_id=animal.pk %}">{% translate 'Bearbeiten' %}</a>
 | 
			
		||||
                <a class="card-footer-item button"
 | 
			
		||||
                   href="{% url 'animal-add-photo' animal_id=animal.pk %}">{% translate 'Foto hinzufügen' %}</a>
 | 
			
		||||
                   href="{% url 'animal-add-photo-bulma' animal_id=animal.pk %}">{% translate 'Foto hinzufügen' %}</a>
 | 
			
		||||
            </div>
 | 
			
		||||
        {% endif %}
 | 
			
		||||
    </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -27,6 +27,7 @@ urlpatterns = [
 | 
			
		||||
    path("tier/<int:animal_id>/edit", views.animal_edit, name="animal-edit"),
 | 
			
		||||
    # ex: /animal/5/add-photo
 | 
			
		||||
    path("tier/<int:animal_id>/add-photo", views.add_photo_to_animal, name="animal-add-photo"),
 | 
			
		||||
    path("bulma/tier/<int:animal_id>/add-photo", views.add_photo_to_animal_bulma, name="animal-add-photo-bulma"),
 | 
			
		||||
    # ex: /adoption_notice/7/
 | 
			
		||||
    path("vermittlung/<int:adoption_notice_id>/", views.adoption_notice_detail, name="adoption-notice-detail"),
 | 
			
		||||
    path("bulma/vermittlung/<int:adoption_notice_id>/", views.adoption_notice_detail_bulma, name="adoption-notice-detail-bulma"),
 | 
			
		||||
@@ -35,6 +36,8 @@ urlpatterns = [
 | 
			
		||||
    # ex: /vermittlung/5/add-photo
 | 
			
		||||
    path("vermittlung/<int:adoption_notice_id>/add-photo", views.add_photo_to_adoption_notice,
 | 
			
		||||
         name="adoption-notice-add-photo"),
 | 
			
		||||
    path("bulma/vermittlung/<int:adoption_notice_id>/add-photo", views.add_photo_to_adoption_notice_bulma,
 | 
			
		||||
         name="adoption-notice-add-photo-bulma"),
 | 
			
		||||
    # ex: /adoption_notice/2/add-animal
 | 
			
		||||
    path("vermittlung/<int:adoption_notice_id>/add-animal", views.adoption_notice_add_animal,
 | 
			
		||||
         name="adoption-notice-add-animal"),
 | 
			
		||||
 
 | 
			
		||||
@@ -408,6 +408,38 @@ def add_photo_to_animal(request, animal_id):
 | 
			
		||||
        form = ImageForm(in_flow=True)
 | 
			
		||||
        return render(request, 'fellchensammlung/forms/form-image.html', {'form': form})
 | 
			
		||||
 | 
			
		||||
@login_required
 | 
			
		||||
def add_photo_to_animal_bulma(request, animal_id):
 | 
			
		||||
    animal = Animal.objects.get(id=animal_id)
 | 
			
		||||
    # Only users that are mods or owners of the animal are allowed to add to it
 | 
			
		||||
    fail_if_user_not_owner_or_trust_level(request.user, animal)
 | 
			
		||||
    if request.method == 'POST':
 | 
			
		||||
        form = ImageForm(request.POST, request.FILES)
 | 
			
		||||
 | 
			
		||||
        if form.is_valid():
 | 
			
		||||
            instance = form.save(commit=False)
 | 
			
		||||
            instance.owner = request.user
 | 
			
		||||
            instance.save()
 | 
			
		||||
 | 
			
		||||
            animal.photos.add(instance)
 | 
			
		||||
 | 
			
		||||
            """Log"""
 | 
			
		||||
            Log.objects.create(user=request.user, action="add_photo_to_animal",
 | 
			
		||||
                               text=f"{request.user} hat Foto {instance.pk} zum Tier {animal.pk} hinzugefügt")
 | 
			
		||||
 | 
			
		||||
            if "save-and-add-another" in request.POST:
 | 
			
		||||
                form = ImageForm(in_flow=True)
 | 
			
		||||
                return render(request, 'fellchensammlung/forms/bulma-form-image.html', {'form': form})
 | 
			
		||||
            else:
 | 
			
		||||
                return redirect(reverse("adoption-notice-detail-bulma", args=[animal.adoption_notice.pk], ))
 | 
			
		||||
        else:
 | 
			
		||||
            return render(request, 'fellchensammlung/forms/bulma-form-image.html', {'form': form})
 | 
			
		||||
 | 
			
		||||
    else:
 | 
			
		||||
        form = ImageForm(in_flow=True)
 | 
			
		||||
        return render(request, 'fellchensammlung/forms/bulma-form-image.html', {'form': form})
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@login_required
 | 
			
		||||
def add_photo_to_adoption_notice(request, adoption_notice_id):
 | 
			
		||||
@@ -436,6 +468,33 @@ def add_photo_to_adoption_notice(request, adoption_notice_id):
 | 
			
		||||
        form = ImageForm(in_flow=True)
 | 
			
		||||
        return render(request, 'fellchensammlung/forms/form-image.html', {'form': form})
 | 
			
		||||
 | 
			
		||||
@login_required
 | 
			
		||||
def add_photo_to_adoption_notice_bulma(request, adoption_notice_id):
 | 
			
		||||
    adoption_notice = AdoptionNotice.objects.get(id=adoption_notice_id)
 | 
			
		||||
    # Only users that are mods or owners of the adoption notice are allowed to add to it
 | 
			
		||||
    fail_if_user_not_owner_or_trust_level(request.user, adoption_notice)
 | 
			
		||||
    if request.method == 'POST':
 | 
			
		||||
        form = ImageForm(request.POST, request.FILES)
 | 
			
		||||
 | 
			
		||||
        if form.is_valid():
 | 
			
		||||
            instance = form.save(commit=False)
 | 
			
		||||
            instance.owner = request.user
 | 
			
		||||
            instance.save()
 | 
			
		||||
            adoption_notice.photos.add(instance)
 | 
			
		||||
            """Log"""
 | 
			
		||||
            Log.objects.create(user=request.user, action="add_photo_to_animal",
 | 
			
		||||
                               text=f"{request.user} hat Foto {instance.pk} zur Vermittlung {adoption_notice.pk} hinzugefügt")
 | 
			
		||||
            if "save-and-add-another" in request.POST:
 | 
			
		||||
                form = ImageForm(in_flow=True)
 | 
			
		||||
                return render(request, 'fellchensammlung/forms/bulma-form-image.html', {'form': form})
 | 
			
		||||
            else:
 | 
			
		||||
                return redirect(reverse("adoption-notice-detail", args=[adoption_notice_id]))
 | 
			
		||||
        else:
 | 
			
		||||
            return render(request, 'fellchensammlung/forms/bulma-form-image.html', {'form': form})
 | 
			
		||||
    else:
 | 
			
		||||
        form = ImageForm(in_flow=True)
 | 
			
		||||
        return render(request, 'fellchensammlung/forms/bulma-form-image.html', {'form': form})
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@login_required
 | 
			
		||||
def animal_edit(request, animal_id):
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user