From f7f323657ac2b52ce5a6b3d49ca6a0cdb3320938 Mon Sep 17 00:00:00 2001 From: Bobby Date: Sat, 31 Dec 2022 11:17:59 -0500 Subject: Some fixes and removed over engineered things, KISS baby --- blog_admin/urls.py | 11 -- blog_admin/views.py | 189 +-------------------------------- static/css/main.css | 53 +++++++++ templates/blog/partials/sidebar.html | 38 ++++--- templates/blog/post.html | 2 + templates/blog_admin/categories.html | 53 --------- templates/blog_admin/edit_user.html | 66 ------------ templates/blog_admin/new_category.html | 38 ------- templates/blog_admin/new_user.html | 74 ------------- templates/blog_admin/posts.html | 49 +++++---- templates/blog_admin/tags.html | 49 --------- templates/blog_admin/users.html | 63 ----------- templates/dev_status/home.html | 22 ++-- 13 files changed, 117 insertions(+), 590 deletions(-) delete mode 100644 templates/blog_admin/categories.html delete mode 100644 templates/blog_admin/edit_user.html delete mode 100644 templates/blog_admin/new_category.html delete mode 100644 templates/blog_admin/new_user.html delete mode 100644 templates/blog_admin/tags.html delete mode 100644 templates/blog_admin/users.html diff --git a/blog_admin/urls.py b/blog_admin/urls.py index 6d3d96b8..8d89e376 100644 --- a/blog_admin/urls.py +++ b/blog_admin/urls.py @@ -3,21 +3,10 @@ from . import views app_name = 'blog-admin' urlpatterns = [ - path('/users', views.users, name='users'), - path('/users/new', views.new_user, name='new-user'), - path('/users/search', views.users_search, name='users-search'), - path('/users//edit', views.edit_user, name='edit-user'), path('/posts', views.posts, name='posts'), path('/posts/new', views.new_post, name='new-post'), path('/posts/search', views.posts_search, name='posts-search'), path('/posts//edit', views.edit_post, name='edit-post'), path('/posts//publish', views.publish_post, name='publish-post'), path('/posts//unpublish', views.unpublish_post, name='unpublish-post'), - 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 35ab6489..53d24107 100644 --- a/blog_admin/views.py +++ b/blog_admin/views.py @@ -29,13 +29,7 @@ def posts_search(request): q = request.GET.get('q') if request.user.is_authenticated and (request.user.is_superuser or request.user.is_staff): if q: - try: - # Get the posts where title or body or author or category or tags or slug contains q or the post id is int(q) - posts = Post.objects.filter(title__icontains=q) | Post.objects.filter(body__icontains=q) | Post.objects.filter(author__username__icontains=q) | Post.objects.filter(category__name__icontains=q) | Post.objects.filter(tags__name__icontains=q) | Post.objects.filter(slug__icontains=q) | Post.objects.filter(id = int(q)) - except: - # Get the posts where title or body or author or category or tags or slug contains q - posts = Post.objects.filter(title__icontains=q) | Post.objects.filter(body__icontains=q) | Post.objects.filter(author__username__icontains=q) | Post.objects.filter(category__name__icontains=q) | Post.objects.filter(tags__name__icontains=q) | Post.objects.filter(slug__icontains=q) - + posts = Post.objects.filter(title__icontains=q) return render(request, 'blog_admin/posts.html', { 'title': 'Search Results for "{}"'.format(q), 'posts': posts }) else: return redirect('blog-admin:posts') @@ -156,184 +150,3 @@ def unpublish_post(request, slug): else: return redirect('blog:home') -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): - 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 - tags = Tag.objects.all()[(page-1)*50:page*50] - num_pages = Tag.objects.all().count() // 50 + 1 - # add post count to each tag - for tag in tags: - # post_count which contain this tag slug - post_count = Post.objects.filter(tags__slug = tag.slug).count() - tag.post_count = post_count - url_to_render = 'blog_admin/tags.html?page={}'.format(page) if int(page) and int(page) > 1 else 'blog_admin/tags.html' - return render(request, url_to_render, { 'title': 'Manage Tags', 'tags': tags, 'num_pages': num_pages, 'page': page }) - else: - return redirect('blog:home') - -def new(request): - pass - -def users(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 - users = User.objects.filter(is_superuser=False)[(page-1)*50:page*50] - num_pages = User.objects.filter(is_superuser=False).count() // 50 + 1 - url_to_render = 'blog_admin/users.html?page={}'.format(page) if int(page) and int(page) > 1 else 'blog_admin/users.html' - return render(request, url_to_render, { 'title': 'Manage Users', 'normal_users': users, 'num_pages': num_pages, 'page': page }) - else: - return redirect('blog:home') - -def users_search(request): - q = request.GET.get('q') - if request.user.is_authenticated and (request.user.is_superuser or request.user.is_staff): - if q: - try: - # Get the normal users where username or email or first_name or last_name contains q or the user id is int(q) - users = User.objects.filter(is_superuser=False).filter(username__icontains=q) | User.objects.filter(is_superuser=False).filter(email__icontains=q) | User.objects.filter(is_superuser=False).filter(first_name__icontains=q) | User.objects.filter(is_superuser=False).filter(last_name__icontains=q) | User.objects.filter(is_superuser=False).filter(id = int(q)) - except: - # Get the normal users where username or email or first_name or last_name contains q - users = User.objects.filter(is_superuser=False).filter(username__icontains=q) | User.objects.filter(is_superuser=False).filter(email__icontains=q) | User.objects.filter(is_superuser=False).filter(first_name__icontains=q) | User.objects.filter(is_superuser=False).filter(last_name__icontains=q) - - return render(request, 'blog_admin/users.html', { 'title': 'Search Results for "{}"'.format(q), 'normal_users': users }) - else: - return redirect('blog-admin:users') - else: - return redirect('blog:home') - -def new_user(request): - if request.user.is_authenticated and (request.user.is_superuser or request.user.is_staff): - if request.method == 'POST': - username = request.POST.get('username') - email = request.POST.get('email') - first_name = request.POST.get('first_name') - last_name = request.POST.get('last_name') - password = request.POST.get('password') - is_superuser = True if request.POST.get('is_superuser') == 'on' else False - is_staff = True if request.POST.get('is_staff') == 'on' else False - is_active = True if request.POST.get('is_active') == 'on' else False - - # User Profile Data - bio = request.POST.get('bio') - location = request.POST.get('location') - gravatar_email = request.POST.get('gravatar_email') - is_public = False if request.POST.get('is_public') == 'on' else False - email_public = False if request.POST.get('email_public') == 'on' else False - email_verified = True if request.POST.get('email_verified') == 'on' else False - - # Create the user - try: - user = User.objects.create_user(username=username, email=email, first_name=first_name, last_name=last_name, password=password, is_superuser=is_superuser, is_staff=is_staff, is_active=is_active) - - # Create the user profile - user_profile = UserProfile(user=user, bio=bio, location=location, gravatar_email=gravatar_email, is_public=is_public, email_public=email_public, email_verified=email_verified) - user_profile.save() - - messages.success(request, 'User created successfully!') - return redirect('blog-admin:users') - # maybe user name is taken - except Exception as e: - messages.error(request, 'Error: {}'.format(e), extra_tags='new_user_create_error') - return redirect('blog-admin:new-user') - - else: - return render(request, 'blog_admin/new_user.html', { 'title': 'Create New User' }) - else: - return redirect('blog:home') - -def edit_user(request, user_id): - if request.user.is_authenticated and (request.user.is_superuser or request.user.is_staff): - if request.method == 'POST': - request_user = request.user - user = User.objects.get(id=user_id) - user.username = request.POST.get('username') - user.email = request.POST.get('email') - user.first_name = request.POST.get('first_name') - user.last_name = request.POST.get('last_name') - user.is_superuser = request.POST.get('is_superuser') == 'on' if request_user.is_superuser else user.is_superuser - user.is_staff = request.POST.get('is_staff') == 'on' if request_user.is_superuser else user.is_staff - user.is_active = True if request.POST.get('is_active') == 'on' else False - - # User Profile Data - try: - user_profile = UserProfile.objects.get(user=user) - except: - user_profile = UserProfile(user=user) - user_profile.bio = request.POST.get('bio') - user_profile.location = request.POST.get('location') - user_profile.gravatar_email = request.POST.get('gravatar_email') - user_profile.email_verified = True if request.POST.get('email_verified') == 'on' else False - - # Save the user - try: - user.save() - user_profile.save() - messages.success(request, 'User updated successfully!') - return redirect('blog-admin:users') - # maybe user name is taken - except Exception as e: - messages.error(request, 'Error: {}'.format(e), extra_tags='edit_user_update_error') - return redirect('blog-admin:edit-user', user_id=user_id) - - else: - user = User.objects.get(id=user_id) - try: - user_profile = UserProfile.objects.get(user=user) - except: - user_profile = None - return render(request, 'blog_admin/edit_user.html', { 'title': 'Edit User', 'edit_user': user, 'edit_user_profile': user_profile }) - else: - return redirect('blog:home') \ No newline at end of file diff --git a/static/css/main.css b/static/css/main.css index 5c87e59a..a3d7c516 100644 --- a/static/css/main.css +++ b/static/css/main.css @@ -46,6 +46,59 @@ input, textarea { font-family: Verdana,Helvetica,Arial,Sans-Serif; } +/* Full width auto spacing table... ellipsis if text overflows */ +#posts { + width: 100%; + border-collapse: collapse; + border-spacing: 0; + table-layout: fixed; +} + +#posts td { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + padding: 5px 0px; +} + +#posts th { + text-align: left; + padding: 5px 0px; + border-bottom: solid 1px #dddddd; + font-weight: bold; + text-transform: uppercase; + font-size: 11px; +} + +#posts tr { + border-bottom: solid 1px #dddddd; +} + + +/* Pagination Table */ +#pagination { + margin: 20px auto; + border-collapse: collapse; + font-weight: bold; +} + +#pagination a { + display: inline-block; + padding: 5px 10px; +} + + +.active { + color: #fff; +} + +.disabled { + color: #dddddd; + /* show invalid cursor */ + cursor: not-allowed; +} + + .button { background-color: #3E4245; border-radius: 5px; diff --git a/templates/blog/partials/sidebar.html b/templates/blog/partials/sidebar.html index b7903bff..0bcdf445 100644 --- a/templates/blog/partials/sidebar.html +++ b/templates/blog/partials/sidebar.html @@ -188,29 +188,27 @@ -{% if user.is_staff %} +{% if user.is_superuser %}

Admin

    - {% if user.is_superuser %}
  • Archive - - Admin Area + + Create New Post
  • - {% endif %}
  • Archive - - Manage Users + + Manage Posts
  • @@ -219,8 +217,18 @@ Archive - - Manage Posts + + Manage Comments + + + +
  • + + Archive + + + + Manage Users
  • @@ -229,7 +237,7 @@ Archive - + Manage Categories @@ -239,7 +247,7 @@ Archive - + Manage Tags @@ -249,8 +257,8 @@ Archive - - Manage Comments + + Manage Announcements @@ -259,8 +267,8 @@ Archive - - Create New Post + + Admin Area diff --git a/templates/blog/post.html b/templates/blog/post.html index 9a20f506..8bce0765 100644 --- a/templates/blog/post.html +++ b/templates/blog/post.html @@ -39,6 +39,7 @@

    {{ comment.body }} + {% if comment.user == user %}

    + {% endif %}

    diff --git a/templates/blog_admin/categories.html b/templates/blog_admin/categories.html deleted file mode 100644 index 9a3152bd..00000000 --- a/templates/blog_admin/categories.html +++ /dev/null @@ -1,53 +0,0 @@ -{% 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/edit_user.html b/templates/blog_admin/edit_user.html deleted file mode 100644 index 9b508e11..00000000 --- a/templates/blog_admin/edit_user.html +++ /dev/null @@ -1,66 +0,0 @@ -{% extends 'blog/partials/base.html' %} {% block content %} -
    -
    - {% include 'blog_admin/partials/users_topbar.html' %} -
    - {% csrf_token %} -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    - {% if user.is_superuser %} -
    - - -
    -
    - - -
    - {% endif %} -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - -
    -
    -
    -{% endblock %} diff --git a/templates/blog_admin/new_category.html b/templates/blog_admin/new_category.html deleted file mode 100644 index ed27767e..00000000 --- a/templates/blog_admin/new_category.html +++ /dev/null @@ -1,38 +0,0 @@ -{% 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/new_user.html b/templates/blog_admin/new_user.html deleted file mode 100644 index 217018d2..00000000 --- a/templates/blog_admin/new_user.html +++ /dev/null @@ -1,74 +0,0 @@ -{% extends 'blog/partials/base.html' %} {% block content %} -
    -
    - {% include 'blog_admin/partials/users_topbar.html' %} -
    - {% csrf_token %} -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    - {% if user.is_superuser %} -
    - - -
    -
    - - -
    - {% endif %} -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - -
    -
    -
    -{% endblock %} diff --git a/templates/blog_admin/posts.html b/templates/blog_admin/posts.html index a996986c..aabfbba9 100644 --- a/templates/blog_admin/posts.html +++ b/templates/blog_admin/posts.html @@ -1,8 +1,8 @@ {% extends 'blog/partials/base.html' %} {% block content %}
    -
    +
    {% include 'blog_admin/partials/posts_topbar.html' %} - +
    @@ -23,7 +23,7 @@
    Title {% if post.is_public %} Published {% else %} Draft {% endif %} Edit - Delete + Delete {% if post.is_public %} Unpublish {% else %} @@ -36,25 +36,32 @@
    {% if num_pages and page %} {% endif %} -
    +
{% endblock %} diff --git a/templates/blog_admin/tags.html b/templates/blog_admin/tags.html deleted file mode 100644 index 3d3d10d2..00000000 --- a/templates/blog_admin/tags.html +++ /dev/null @@ -1,49 +0,0 @@ -{% extends 'blog/partials/base.html' %} {% block content %} -
-
- {% include 'blog_admin/partials/tags_topbar.html' %} - - - - - - - - - - {% for tag in tags %} - - - - - - {% endfor %} - -
SlugtagsActions
{{ tag.slug }}{{ tag.post_count }} - Edit - Delete -
- {% if num_pages and page %} - - {% endif %} -
-
-{% endblock %} diff --git a/templates/blog_admin/users.html b/templates/blog_admin/users.html deleted file mode 100644 index 8b69cd69..00000000 --- a/templates/blog_admin/users.html +++ /dev/null @@ -1,63 +0,0 @@ -{% extends 'blog/partials/base.html' %} {% block content %} -
-
- {% include 'blog_admin/partials/users_topbar.html' %} - - - - - - - - - - - - - - {% for current_user in normal_users %} - {% if current_user.id != user.id %} - - - - - - - - - - {% endif %} - {% endfor %} - -
User IDUsernameFirst NameLast NameEmailRole(s)Actions
{{ current_user.id }}{{ current_user.username }}{{ current_user.first_name }}{{ current_user.last_name }}{{ current_user.email }} - {% if current_user.is_superuser %}Super user, {% endif %} - {% if current_user.is_staff %}Staff, {% endif %} - {% if current_user.is_active %}Active{% endif %} - - Edit - Delete -
- {% if num_pages and page %} - - {% endif %} -
-
-{% endblock %} diff --git a/templates/dev_status/home.html b/templates/dev_status/home.html index 2b3e34d0..6c494fe5 100644 --- a/templates/dev_status/home.html +++ b/templates/dev_status/home.html @@ -65,26 +65,24 @@