From 60ff989332b03eb9e68d8063ee98bbd55cda9329 Mon Sep 17 00:00:00 2001 From: some weird guy <120821766+Mistake35@users.noreply.github.com> Date: Fri, 25 Aug 2023 16:51:04 -0700 Subject: [PATCH] Admins can edit bans now. --- closedverse_main/forms.py | 10 ++++++++- closedverse_main/models.py | 2 +- .../closedverse_main/man/manage_bans.html | 14 +++++++++++++ closedverse_main/views.py | 21 +++++++++++++------ static/blueness.css | 5 ++++- static/closedverse.css | 4 ++++ 6 files changed, 47 insertions(+), 9 deletions(-) diff --git a/closedverse_main/forms.py b/closedverse_main/forms.py index e5a4260..e4a5c6d 100644 --- a/closedverse_main/forms.py +++ b/closedverse_main/forms.py @@ -125,4 +125,12 @@ class Give_Ban_Form(forms.ModelForm): return timezone.now() + timedelta(days=365.25*100) # same exact thing done in indigo. class Meta: model = Ban - fields = ['reason', 'expiry_date'] \ No newline at end of file + fields = ['reason', 'expiry_date'] + +class Give_Ban_Form_Edit(forms.ModelForm): + reason = forms.CharField(required=True, widget=forms.Textarea(attrs={'class': 'textarea'})) + expiry_date = forms.DateTimeField(widget=forms.DateTimeInput(attrs={'type': 'datetime-local', 'class': 'DateTimeInput'}, format='%Y-%m-%dT%H:%M')) + active = forms.BooleanField(required=False) + class Meta: + model = Ban + fields = ['reason', 'expiry_date', 'active'] \ No newline at end of file diff --git a/closedverse_main/models.py b/closedverse_main/models.py index e9422d4..a57c9c9 100644 --- a/closedverse_main/models.py +++ b/closedverse_main/models.py @@ -1789,7 +1789,7 @@ class UserBlock(models.Model): class AuditLog(models.Model): id = models.AutoField(primary_key=True) created = models.DateTimeField(auto_now_add=True) - type = models.SmallIntegerField(choices=((0, "Post delete"), (1, "Comment delete"), (2, "User edit"), (3, "Disable comments"), (4, "Community edit"), )) + type = models.SmallIntegerField(choices=((0, "Post delete"), (1, "Comment delete"), (2, "User edit"), (3, "Disable comments"), (4, "Community edit"), (5, "Ban user"), (6, "Edit ban for user"), )) post = models.ForeignKey(Post, related_name='audit_post', null=True, on_delete=models.CASCADE) comment = models.ForeignKey(Comment, related_name='audit_comment', null=True, on_delete=models.CASCADE) user = models.ForeignKey(User, related_name='audit_user', null=True, on_delete=models.CASCADE) diff --git a/closedverse_main/templates/closedverse_main/man/manage_bans.html b/closedverse_main/templates/closedverse_main/man/manage_bans.html index 2902b1a..b61f1d5 100644 --- a/closedverse_main/templates/closedverse_main/man/manage_bans.html +++ b/closedverse_main/templates/closedverse_main/man/manage_bans.html @@ -20,6 +20,20 @@

This user is banned already.

The ban will expire on: {{ active_ban.expiry_date }}

Time remaining: {{ active_ban.expiry_date|timeuntil }}

+ +
  • +

    Edit Reasoning:

    + {{ form.reason }} +

    Change Expiry:

    + {{ form.expiry_date }} +

    Active:

    + {{ form.active }} +

    Uncheck this to unban {{ user.username }}.

    +
  • + {% csrf_token %} +
    + +
    {% endif %} {% endblock %} \ No newline at end of file diff --git a/closedverse_main/views.py b/closedverse_main/views.py index 559bd1d..e4d2ac4 100644 --- a/closedverse_main/views.py +++ b/closedverse_main/views.py @@ -1749,17 +1749,26 @@ def user_tools_bams(request, username): if user.has_authority(request.user): return HttpResponseForbidden() if request.method == 'POST': - form = Give_Ban_Form(request.POST) - if form.is_valid(): + if not user.banned(): + form = Give_Ban_Form(request.POST) + if form.is_valid(): + ban = form.save(commit=False) + ban.to = user + ban.by = request.user + ban.ip_address = user.addr + ban.save() + AuditLog.objects.create(type=5, user=user, by=request.user) + return redirect('main:user-view', user) + else: + form = Give_Ban_Form_Edit(request.POST, instance=user.active_ban()) ban = form.save(commit=False) - ban.to = user - ban.by = request.user - ban.ip_address = user.addr ban.save() + AuditLog.objects.create(type=6, user=user, by=request.user) return redirect('main:user-view', user) if not user.banned(): form = Give_Ban_Form() - else: form = None + else: + form = Give_Ban_Form_Edit(instance=user.active_ban()) return render(request, 'closedverse_main/man/manage_bans.html', { 'user': user, 'banned': user.banned(), diff --git a/static/blueness.css b/static/blueness.css index 64f83f6..084dc21 100644 --- a/static/blueness.css +++ b/static/blueness.css @@ -195,7 +195,10 @@ form.search input[type="submit"] { border-bottom-color: #000; box-shadow: inset 0 0.5px 0 rgba(0, 0, 0, 0.9); } - +.DateTimeInput { + background: var(--theme-darker, #161626); + color: #fff; +} .topic-categories-container { background: var(--theme-dark, #202030); -webkit-box-shadow: 0 1px 0 var(--theme-dark, #202030); diff --git a/static/closedverse.css b/static/closedverse.css index 16346ba..1b3d059 100644 --- a/static/closedverse.css +++ b/static/closedverse.css @@ -4657,6 +4657,10 @@ div#activity-feed-tutorial.no-content p.tleft { padding: 0 5px 10px 10px; line-height: 1.2; } +.DateTimeInput { + border-radius: 6px; + border: 1px solid #000; +} .platform-tag { position: static; float: left;