From bc41ba62b074f620d991a0ec333edc20786d8109 Mon Sep 17 00:00:00 2001 From: Trent Palmer Date: Sat, 13 Mar 2021 07:49:20 -0800 Subject: [PATCH] add delete to edit_feed --- audio/feed_views.py | 68 +++++++++++++++++++ .../audio/delete_feed_confirmation.html | 20 ++++++ audio/urls.py | 8 ++- audio/views.py | 51 +------------- tp/templates/base_form.html | 5 +- 5 files changed, 100 insertions(+), 52 deletions(-) create mode 100644 audio/feed_views.py create mode 100644 audio/templates/audio/delete_feed_confirmation.html diff --git a/audio/feed_views.py b/audio/feed_views.py new file mode 100644 index 0000000..4f18386 --- /dev/null +++ b/audio/feed_views.py @@ -0,0 +1,68 @@ +from django.shortcuts import render, redirect +from .forms import FeedForm +from .models import Feed, rand_slug +from django.contrib import messages +from django.utils.text import slugify + + +def new_feed(request): + if not request.user.is_authenticated: + return redirect('audio:home') + if request.method == "POST": + form = FeedForm(request.POST, request.FILES) + if form.is_valid(): + feed = form.save(commit=False) + feed.user = request.user + feed.save() + return redirect('audio:home') + else: + form = FeedForm() + return render(request, 'base_form.html', {'form': form}) + + +def confirm_delete_feed(request, pk): + if not request.user.is_authenticated: + return redirect('audio:home') + feed = Feed.objects.get(id=pk) + if not feed.user == request.user: + return redirect('audio:home') + if request.method == 'POST': + feed.delete() + messages.success(request, f'Feed {feed.title} deleted!', extra_tags='mb-0') + return redirect('audio:feeds') + return render(request, 'audio/delete_feed_confirmation.html', { + 'title': 'Delete Feed?', + 'heading': 'Delete Feed?', + 'feed': feed}) + + +def edit_feed(request, pk, title_slug): + if not request.user.is_authenticated: + return redirect('audio:home') + slug = title_slug + feed = Feed.objects.get(id=pk) + otitle = feed.title + if not feed.user == request.user: + return redirect('audio:home') + if request.method == "POST": + form = FeedForm(request.POST, request.FILES, instance=feed) + if form.is_valid(): + nfeed = form.save(commit=False) + if nfeed.title != otitle: + nfeed.slug = slugify(rand_slug() + "-" + nfeed.title) + slug = nfeed.slug + nfeed.save() + return redirect('audio:feed', pk=pk, slug=slug) + else: + form = FeedForm(instance=feed) + return render( + request, 'base_form.html', + { + 'form': form, + 'heading': 'Edit Feed?', + 'title': 'Edit Feed?', + 'submit': 'save', + 'form_data': 'TRUE', + 'edit_feed': True, + 'feed_pk': pk, + }) diff --git a/audio/templates/audio/delete_feed_confirmation.html b/audio/templates/audio/delete_feed_confirmation.html new file mode 100644 index 0000000..19518fb --- /dev/null +++ b/audio/templates/audio/delete_feed_confirmation.html @@ -0,0 +1,20 @@ +{% extends "base.html" %} + +{% load crispy_forms_tags %} + +{% block content %} + + {% include "base_navbar.html" %} +
+ {% include "base_heading.html" %} +
+

Delete {{ feed.title }}?

+
+
+ {% csrf_token %} +
+ Cancel +
+
+
+{% endblock %} diff --git a/audio/urls.py b/audio/urls.py index 374b3bf..6c65d3f 100644 --- a/audio/urls.py +++ b/audio/urls.py @@ -1,15 +1,19 @@ from django.urls import path from . import views from .episode_views import new_episode, edit_episode +from .feed_views import new_feed, edit_feed, confirm_delete_feed from .audiorssfeed import AudioRssFeed app_name = "audio" urlpatterns = [ path('', views.home, name='home'), - path('new-feed/', views.new_feed, name='new_feed'), + path('new-feed/', new_feed, name='new_feed'), path('feeds/', views.feeds, name='feeds'), - path('edit-feed//', views.edit_feed, name='edit_feed'), + path('edit-feed//', edit_feed, name='edit_feed'), + + path('confirm-delete-feed/', confirm_delete_feed, name='confirm_delete_feed'), + path('new-episode//', new_episode, name='new_episode'), path('edit-episode//', edit_episode, name='edit_episode'), path('rss/.xml', AudioRssFeed(), name='rss'), diff --git a/audio/views.py b/audio/views.py index 412a001..f609d8c 100644 --- a/audio/views.py +++ b/audio/views.py @@ -1,8 +1,6 @@ -from django.shortcuts import render, redirect, reverse +from django.shortcuts import render, reverse from django.contrib.sites.shortcuts import get_current_site -from .forms import FeedForm -from django.utils.text import slugify -from .models import Feed, Episode, rand_slug +from .models import Feed, Episode from tp.settings import IMAGES_URL, MP3_URL @@ -47,48 +45,3 @@ def feeds(request): request, 'audio/feeds.html', {'feeds': feeds, 'IMAGES_URL': IMAGES_URL}) - - -def new_feed(request): - if not request.user.is_authenticated: - return redirect('audio:home') - if request.method == "POST": - form = FeedForm(request.POST, request.FILES) - if form.is_valid(): - feed = form.save(commit=False) - feed.user = request.user - feed.save() - return redirect('audio:home') - else: - form = FeedForm() - return render(request, 'base_form.html', {'form': form}) - - -def edit_feed(request, pk, title_slug): - if not request.user.is_authenticated: - return redirect('audio:home') - slug = title_slug - feed = Feed.objects.get(id=pk) - otitle = feed.title - if not feed.user == request.user: - return redirect('audio:home') - if request.method == "POST": - form = FeedForm(request.POST, request.FILES, instance=feed) - if form.is_valid(): - nfeed = form.save(commit=False) - if nfeed.title != otitle: - nfeed.slug = slugify(rand_slug() + "-" + nfeed.title) - slug = nfeed.slug - nfeed.save() - return redirect('audio:feed', pk=pk, slug=slug) - else: - form = FeedForm(instance=feed) - return render( - request, 'base_form.html', - { - 'form': form, - 'heading': 'Edit Feed?', - 'title': 'Edit Feed?', - 'submit': 'save', - 'form_data': 'TRUE', - }) diff --git a/tp/templates/base_form.html b/tp/templates/base_form.html index d330292..f0370fa 100644 --- a/tp/templates/base_form.html +++ b/tp/templates/base_form.html @@ -36,8 +36,11 @@ {% endif %} {% csrf_token %} {{ form | crispy }} -
+
+ {% if edit_feed %} + Delete Feed? + {% endif %}

{% if request.path == edit_profile_url %}