add delete blog

This commit is contained in:
DELL 2022-10-07 10:11:46 +07:00
parent aeab9e8d0e
commit 87e8f3d966
12 changed files with 252 additions and 68 deletions

View file

@ -1,8 +1,10 @@
from ast import Delete, arg
from itertools import chain
from django import forms
from django.conf import settings
from django.contrib import messages
from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.auth.models import User
from django.core.cache import cache
from django.core.cache.utils import make_template_fragment_key
from django.core.exceptions import PermissionDenied
@ -17,7 +19,7 @@ from django.http import (
HttpResponseBadRequest,
)
from django.shortcuts import get_object_or_404
from django.urls import reverse
from django.urls import reverse , reverse_lazy
from django.utils import timezone
from django.utils.html import format_html
from django.utils.functional import cached_property
@ -30,6 +32,7 @@ from django.views.generic import (
UpdateView,
View,
CreateView,
DeleteView,
)
from django.views.generic.detail import (
SingleObjectMixin,
@ -126,12 +129,11 @@ class OrganizationMixin(OrganizationBase):
context["logo_override_image"] = self.organization.logo_override_image
if "organizations" in context:
context.pop("organizations")
print(context)
return context
def dispatch(self, request, *args, **kwargs):
try:
self.organization_id = int(kwargs["pk"])
self.organization_id = int(kwargs["pk"] )
self.organization = get_object_or_404(Organization, id=self.organization_id)
except Http404:
key = kwargs.get(self.slug_url_kwarg, None)
@ -432,7 +434,6 @@ class OrganizationContests(
self.set_editable_contest(contest)
for contest in context["future_contests"]:
self.set_editable_contest(contest)
print(context)
return context
@ -1026,7 +1027,7 @@ class EditOrganizationBlog(
MemberOrganizationMixin,
UpdateView,
):
template_name = "organization/blog/add.html"
template_name = "organization/blog/edit.html"
model = BlogPost
def get_form_class(self):
@ -1052,6 +1053,10 @@ class EditOrganizationBlog(
_("Not allowed to edit this blog"),
)
def delete_blog(self , request , *args , **kwargs):
self.blog_id = kwargs["blog_pk"]
BlogPost.objects.get(pk = self.blog_id).delete()
def get(self, request, *args, **kwargs):
res = self.setup_blog(request, *args, **kwargs)
if res:
@ -1062,7 +1067,13 @@ class EditOrganizationBlog(
res = self.setup_blog(request, *args, **kwargs)
if res:
return res
return super().post(request, *args, **kwargs)
if request.POST['action'] == 'Delete':
self.create_notification("Delete blog")
self.delete_blog(request , *args , **kwargs)
cur_url = reverse("organization_pending_blogs", args=(self.organization_id,self.organization.slug) )
return HttpResponseRedirect(cur_url)
else:
return super().post(request, *args, **kwargs)
def get_object(self):
return self.blog
@ -1070,32 +1081,36 @@ class EditOrganizationBlog(
def get_title(self):
return _("Edit blog %s") % self.object.title
def create_notification(self,action):
blog = BlogPost.objects.get(pk=self.blog_id)
link = reverse(
"edit_organization_blog",
args=[self.organization.id, self.organization.slug, self.blog_id],
)
html = (
f'<a href="{link}">{blog.title} - {self.organization.name}</a>'
)
post_authors = blog.authors.all()
posible_user = self.organization.admins.all() | post_authors
for user in posible_user:
if user.id == self.request.profile.id:
continue
notification = Notification(
owner=user,
author=self.request.profile,
category= action,
html_link=html,
)
notification.save()
def form_valid(self, form):
with transaction.atomic(), revisions.create_revision():
res = super(EditOrganizationBlog, self).form_valid(form)
revisions.set_comment(_("Edited from site"))
revisions.set_user(self.request.user)
link = reverse(
"edit_organization_blog",
args=[self.organization.id, self.organization.slug, self.object.id],
)
html = (
f'<a href="{link}">{self.object.title} - {self.organization.name}</a>'
)
for user in self.organization.admins.all():
if user.id == self.request.profile.id:
continue
notification = Notification(
owner=user,
author=self.request.profile,
category="Edit blog",
html_link=html,
)
notification.save()
self.create_notification("Edit blog")
return res
class PendingBlogs(
LoginRequiredMixin,
TitleMixin,