add delete blog
This commit is contained in:
parent
aeab9e8d0e
commit
87e8f3d966
12 changed files with 252 additions and 68 deletions
18
judge/migrations/0132_auto_20220915_1837.py
Normal file
18
judge/migrations/0132_auto_20220915_1837.py
Normal file
File diff suppressed because one or more lines are too long
14
judge/migrations/0133_merge_20220916_0636.py
Normal file
14
judge/migrations/0133_merge_20220916_0636.py
Normal file
|
@ -0,0 +1,14 @@
|
|||
# Generated by Django 2.2.28 on 2022-09-15 23:36
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('judge', '0132_auto_20220915_1837'),
|
||||
('judge', '0132_auto_20220915_1349'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
]
|
18
judge/migrations/0134_blogpost_is_delete.py
Normal file
18
judge/migrations/0134_blogpost_is_delete.py
Normal file
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 2.2.28 on 2022-10-06 16:08
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('judge', '0133_merge_20220916_0636'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='blogpost',
|
||||
name='is_delete',
|
||||
field=models.BooleanField(default=False, verbose_name='is delete'),
|
||||
),
|
||||
]
|
17
judge/migrations/0135_remove_blogpost_is_delete.py
Normal file
17
judge/migrations/0135_remove_blogpost_is_delete.py
Normal file
|
@ -0,0 +1,17 @@
|
|||
# Generated by Django 2.2.28 on 2022-10-06 17:03
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('judge', '0134_blogpost_is_delete'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='blogpost',
|
||||
name='is_delete',
|
||||
),
|
||||
]
|
|
@ -1,4 +1,6 @@
|
|||
from email.policy import default
|
||||
import re
|
||||
from tabnanny import verbose
|
||||
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.db import models
|
||||
|
@ -96,7 +98,12 @@ class BlogPost(models.Model):
|
|||
return self.title
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse("blog_post", args=(self.id, self.slug))
|
||||
try:
|
||||
BlogPost.objects.get(id=self.id)
|
||||
return reverse("blog_post", args=(self.id , self.slug))
|
||||
except BlogPost.DoesNotExist:
|
||||
return reverse("organization_pending_blogs",
|
||||
args=(self.organizations.first().pk, self.organizations.first().slug))
|
||||
|
||||
def can_see(self, user):
|
||||
if self.visible and self.publish_on <= timezone.now():
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue