Admins can edit bans now.

This commit is contained in:
some weird guy
2023-08-25 16:51:04 -07:00
parent 5b5bbc859e
commit 60ff989332
6 changed files with 47 additions and 9 deletions
+9 -1
View File
@@ -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']
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']
+1 -1
View File
@@ -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)
@@ -20,6 +20,20 @@
<p class="label">This user is banned already.</p>
<p>The ban will expire on: {{ active_ban.expiry_date }}</p>
<p>Time remaining: {{ active_ban.expiry_date|timeuntil }}</p>
<li class="setting">
<p class="settings-label">Edit Reasoning:</p>
{{ form.reason }}
<p class="settings-label">Change Expiry:</p>
{{ form.expiry_date }}
<p class="settings-label">Active:</p>
{{ form.active }}
<p class='note'>Uncheck this to unban {{ user.username }}.</p>
</li>
{% csrf_token %}
<div class="form-buttons">
<input type="submit" class="button apply-button" value="Edit ban for {{ user.username }}">
</div>
{% endif %}
</form></div></div>
{% endblock %}
+15 -6
View File
@@ -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(),