From cdf4502054453b101c9bf00d5c33241d767fcd94 Mon Sep 17 00:00:00 2001 From: Bobby Date: Sun, 18 Sep 2022 23:32:07 -0400 Subject: Added function to create new categories and returning categories on new post page --- blog_admin/urls.py | 3 ++ blog_admin/views.py | 42 ++++++++++++++++- templates/blog_admin/categories.html | 53 ++++++++++++++++++++++ templates/blog_admin/new_category.html | 38 ++++++++++++++++ templates/blog_admin/partials/category_topbar.html | 22 +++++++++ 5 files changed, 157 insertions(+), 1 deletion(-) create mode 100644 templates/blog_admin/categories.html create mode 100644 templates/blog_admin/new_category.html create mode 100644 templates/blog_admin/partials/category_topbar.html diff --git a/blog_admin/urls.py b/blog_admin/urls.py index c47fb9cf..b0710851 100644 --- a/blog_admin/urls.py +++ b/blog_admin/urls.py @@ -12,6 +12,9 @@ urlpatterns = [ path('posts/search', views.posts_search, name='posts-search'), path('comments', views.comments, name='comments'), path('categories', views.categories, name='categories'), + path('categories/new', views.new_category, name='new-category'), + path('categories//edit', views.edit_category, name='edit-category'), + path('categories//delete', views.edit_category, name='delete-category'), path('tags', views.tags, name='tags'), path('new', views.new, name='new'), ] \ No newline at end of file diff --git a/blog_admin/views.py b/blog_admin/views.py index 8ea2f815..b139a351 100644 --- a/blog_admin/views.py +++ b/blog_admin/views.py @@ -63,7 +63,8 @@ def new_post(request): # messages.error(request, 'Error: All fields are required!', extra_tags='new_post_create_error', data = { 'title': title, 'body': body, 'category': category, 'tags': tags, 'slug': slug }) # return redirect('blog-admin:new-post') else: - return render(request, 'blog_admin/new_post.html', { 'title': 'New Post' }) + categories = Category.objects.all() + return render(request, 'blog_admin/new_post.html', { 'title': 'New Post', 'categories': categories }) else: return redirect('blog:home') @@ -71,6 +72,45 @@ def comments(request): pass def categories(request): + if request.user.is_authenticated and (request.user.is_superuser or request.user.is_staff): + page = request.GET.get('page') if request.GET.get('page') else 1 + try: + page = int(page) + except: + page = 1 + categories = Category.objects.all()[(page-1)*50:page*50] + num_pages = Category.objects.all().count() // 50 + 1 + url_to_render = 'blog_admin/categories.html?page={}'.format(page) if int(page) and int(page) > 1 else 'blog_admin/categories.html' + return render(request, url_to_render, { 'title': 'Manage Categories', 'categories': categories, 'num_pages': num_pages, 'page': page }) + else: + return redirect('blog:home') + +def new_category(request): + if request.user.is_authenticated and (request.user.is_superuser or request.user.is_staff): + if request.method == 'POST': + name = request.POST.get('name') + slug = request.POST.get('slug') + description = request.POST.get('description') if request.POST.get('description') else '' + if name and slug: + try: + category = Category.objects.create(name = name, slug = slug, description = description) + messages.success(request, 'Category created successfully!') + return redirect('blog-admin:categories') + except Exception as e: + messages.error(request, 'Error: {}'.format(e), extra_tags='new_category_create_error', data = { 'name': name, 'slug': slug, 'description': description }) + return redirect('blog-admin:new-category') + else: + messages.error(request, 'Error: All fields are required!', extra_tags='new_category_create_error', data = { 'name': name, 'slug': slug, 'description': description }) + return redirect('blog-admin:new-category') + else: + return render(request, 'blog_admin/new_category.html', { 'title': 'New Category' }) + else: + return redirect('blog:home') + +def edit_category(request, slug): + pass + +def delete_category(request, slug): pass def tags(request): diff --git a/templates/blog_admin/categories.html b/templates/blog_admin/categories.html new file mode 100644 index 00000000..9a3152bd --- /dev/null +++ b/templates/blog_admin/categories.html @@ -0,0 +1,53 @@ +{% extends 'blog/partials/base.html' %} {% block content %} +
+
+ {% include 'blog_admin/partials/category_topbar.html' %} + + + + + + + + + + + + {% for category in categories %} + + + + + + + + {% endfor %} + +
Category NameCategory DescriptionCategory SlugCreated AtActions
{{ category.name }}{{ category.description }}{{ category.slug }}{{ category.created_at }} + Edit + Delete +
+ {% if num_pages and page %} + + {% endif %} +
+
+{% endblock %} diff --git a/templates/blog_admin/new_category.html b/templates/blog_admin/new_category.html new file mode 100644 index 00000000..ed27767e --- /dev/null +++ b/templates/blog_admin/new_category.html @@ -0,0 +1,38 @@ +{% extends 'blog/partials/base.html' %} {% block content %} +
+
+ {% include 'blog_admin/partials/category_topbar.html' %} +
+ {% csrf_token %} +
+ + +
+
+ + +
+
+ + +
+ +
+
+
+ +{% endblock %} \ No newline at end of file diff --git a/templates/blog_admin/partials/category_topbar.html b/templates/blog_admin/partials/category_topbar.html new file mode 100644 index 00000000..d03f82db --- /dev/null +++ b/templates/blog_admin/partials/category_topbar.html @@ -0,0 +1,22 @@ +

{{ title }}

+
+ Create New Category +
+ + +
+
+
+{% for message in messages %} +

{{ message }}

+{% endfor %} -- cgit v1.2.3