95 lines
2.3 KiB
Python
95 lines
2.3 KiB
Python
from rest_framework.views import APIView
|
|
from django.contrib.auth.mixins import LoginRequiredMixin
|
|
|
|
from rest_framework import status
|
|
|
|
from django.http import HttpResponse
|
|
from core.models import QueuedMessage, Message
|
|
from core.forms import QueueForm
|
|
|
|
import requests
|
|
import orjson
|
|
from django.conf import settings
|
|
import redis
|
|
import msgpack
|
|
|
|
from mixins.views import (
|
|
ObjectCreate,
|
|
ObjectDelete,
|
|
ObjectList,
|
|
ObjectUpdate,
|
|
)
|
|
|
|
# def start_typing(uuid):
|
|
# url = f"http://signal:8080/v1/typing_indicator/{settings.SIGNAL_NUMBER}"
|
|
# data = {
|
|
# "recipient": uuid,
|
|
# }
|
|
|
|
# response = requests.put(url, json=data)
|
|
|
|
# def stop_typing(uuid):
|
|
# url = f"http://signal:8080/v1/typing_indicator/{settings.SIGNAL_NUMBER}"
|
|
# data = {
|
|
# "recipient": uuid,
|
|
# }
|
|
|
|
# response = requests.delete(url, json=data)
|
|
|
|
r = redis.from_url("unix://var/run/gia-redis.sock", db=10)
|
|
|
|
|
|
class AcceptMessageAPI(LoginRequiredMixin, APIView):
|
|
def get(self, request, message_id):
|
|
to_submit = {
|
|
"type": "def",
|
|
"method": "accept_message",
|
|
"user_id": request.user.id,
|
|
"message_id": message_id,
|
|
}
|
|
packed = msgpack.packb(to_submit, use_bin_type=True)
|
|
r.publish("processing", packed)
|
|
return HttpResponse(status=status.HTTP_200_OK)
|
|
|
|
class RejectMessageAPI(LoginRequiredMixin, APIView):
|
|
def get(self, request, message_id):
|
|
try:
|
|
message = QueuedMessage.objects.get(
|
|
user=self.request.user,
|
|
id=message_id,
|
|
)
|
|
except QueuedMessage.DoesNotExist:
|
|
return HttpResponse(status=status.HTTP_404_NOT_FOUND)
|
|
|
|
message.delete()
|
|
|
|
return HttpResponse(status=status.HTTP_200_OK)
|
|
|
|
class QueueList(LoginRequiredMixin, ObjectList):
|
|
list_template = "partials/queue-list.html"
|
|
model = QueuedMessage
|
|
page_title = "Queues"
|
|
|
|
list_url_name = "queues"
|
|
list_url_args = ["type"]
|
|
|
|
submit_url_name = "queue_create"
|
|
|
|
|
|
class QueueCreate(LoginRequiredMixin, ObjectCreate):
|
|
model = QueuedMessage
|
|
form_class = QueueForm
|
|
|
|
submit_url_name = "queue_create"
|
|
|
|
|
|
class QueueUpdate(LoginRequiredMixin, ObjectUpdate):
|
|
model = QueuedMessage
|
|
form_class = QueueForm
|
|
|
|
submit_url_name = "queue_update"
|
|
|
|
|
|
class QueueDelete(LoginRequiredMixin, ObjectDelete):
|
|
model = QueuedMessage
|