signal backend, app cleanup
This commit is contained in:
parent
4b157ed1d1
commit
6f18890739
43 changed files with 695 additions and 124 deletions
|
|
@ -1,7 +1,16 @@
|
|||
from datetime import date, datetime, timedelta
|
||||
import json
|
||||
|
||||
from django.utils import timezone
|
||||
from django.shortcuts import render
|
||||
from django.db.models import Q
|
||||
from django.utils.html import mark_safe
|
||||
from django.conf import settings
|
||||
|
||||
from . import models
|
||||
from . import tasks
|
||||
from ..signalbot.rpc import send_reaction
|
||||
from .utils import render_to_json
|
||||
|
||||
|
||||
def index(request):
|
||||
|
|
@ -19,33 +28,74 @@ def archive(request):
|
|||
context['items'] = archive
|
||||
return render(request, 'archive.html', context)
|
||||
|
||||
|
||||
def item(request, id):
|
||||
context = {}
|
||||
item = models.Item.objects.get(id=id)
|
||||
context['item'] = item
|
||||
qs = item.comments.order_by('created')
|
||||
if not request.user.is_staff:
|
||||
q = ~Q(published=None)
|
||||
if request.user.is_authenticated:
|
||||
q |= Q(user=request.user)
|
||||
if request.session and request.session.session_key:
|
||||
q |= Q(session_key=request.session.session_key)
|
||||
qs = qs.filter(q)
|
||||
comments = []
|
||||
for comment in qs:
|
||||
comments.append({
|
||||
"id": comment.id,
|
||||
"name": comment.name,
|
||||
"date": comment.date,
|
||||
"text": comment.text,
|
||||
"published": comment.is_published,
|
||||
})
|
||||
context['comments'] = mark_safe(json.dumps(comments))
|
||||
user = {}
|
||||
if request.user.is_staff:
|
||||
user['is_moderator'] = True
|
||||
if request.user.is_authenticated:
|
||||
user['username'] = request.user.username
|
||||
|
||||
context['user'] = mark_safe(json.dumps(user))
|
||||
request.session['item'] = id
|
||||
return render(request, 'item.html', context)
|
||||
|
||||
import json
|
||||
from django.http import Http404, HttpResponse
|
||||
|
||||
def render_to_json(response):
|
||||
content = json.dumps(response)
|
||||
return HttpResponse(content, 'application/json; charset=utf-8')
|
||||
|
||||
|
||||
def comment(request):
|
||||
response = {}
|
||||
data = json.loads(request.body)
|
||||
print(data)
|
||||
comment = models.Comment()
|
||||
comment.item = models.Item.objects.get(id=data['item'])
|
||||
if request.user.is_authenticated:
|
||||
comment.user = request.user
|
||||
comment.published = datetime.now()
|
||||
if comment.user.has_perm('app.item.can_post_comment'):
|
||||
comment.published = timezone.now()
|
||||
else:
|
||||
comment.name = data['name']
|
||||
comment.email = data['email']
|
||||
comment.session_key = request.session.session_key
|
||||
comment.text = data['text']
|
||||
comment.save()
|
||||
if not comment.published:
|
||||
link = request.build_absolute_uri(comment.item.get_absolute_url())
|
||||
tasks.notify_moderators.delay(comment.id, link)
|
||||
response = comment.json()
|
||||
return render_to_json(response)
|
||||
|
||||
|
||||
def publish_comment(request):
|
||||
response = {}
|
||||
data = json.loads(request.body)
|
||||
if request.user.is_staff:
|
||||
comment = models.Comment.objects.get(id=data['comment'])
|
||||
comment.published = timezone.now()
|
||||
comment.save()
|
||||
if comment.data.get("moderator_ts"):
|
||||
account = settings.SIGNAL_ACCOUNT
|
||||
group = settings.SIGNAL_MODERATORS_GROUP
|
||||
send_reaction(account, comment.data["moderator_ts"], "🎉", group=group)
|
||||
response['status'] = 'ok'
|
||||
else:
|
||||
response['error'] = 'permission denied'
|
||||
return render_to_json(response)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue