113 lines
3.5 KiB
Python
113 lines
3.5 KiB
Python
from core.views.manage.permissions import SuperUserRequiredMixin
|
|
from django.views import View
|
|
from django.shortcuts import render
|
|
import base64
|
|
from core.models import Chat
|
|
|
|
from mixins.views import ObjectRead, ObjectList
|
|
import requests
|
|
import orjson
|
|
|
|
class CustomObjectRead(ObjectRead):
|
|
def post(self, request, *args, **kwargs):
|
|
self.request = request
|
|
return super().get(request, *args, **kwargs)
|
|
|
|
class Signal(SuperUserRequiredMixin, View):
|
|
template_name = "pages/signal.html"
|
|
|
|
def get(self, request):
|
|
return render(request, self.template_name)
|
|
|
|
class SignalAccounts(SuperUserRequiredMixin, ObjectList):
|
|
list_template = "partials/signal-accounts.html"
|
|
|
|
context_object_name_singular = "Signal Account"
|
|
context_object_name = "Signal Accounts"
|
|
|
|
list_url_name = "signal_accounts"
|
|
list_url_args = ["type"]
|
|
|
|
def get_queryset(self, **kwargs):
|
|
# url = signal:8080/v1/accounts
|
|
url = f"http://signal:8080/v1/accounts"
|
|
response = requests.get(url)
|
|
accounts = orjson.loads(response.text)
|
|
|
|
return accounts
|
|
|
|
class SignalContactsList(SuperUserRequiredMixin, ObjectList):
|
|
list_template = "partials/signal-contacts-list.html"
|
|
|
|
context_object_name_singular = "Signal Contact"
|
|
context_object_name = "Signal Contacts"
|
|
|
|
list_url_name = "signal_contacts"
|
|
list_url_args = ["type", "pk"]
|
|
|
|
|
|
def get_queryset(self, *args, **kwargs):
|
|
# url = signal:8080/v1/accounts
|
|
# /v1/configuration/{number}/settings
|
|
# /v1/identities/{number}
|
|
# /v1/contacts/{number}
|
|
# response = requests.get(f"http://signal:8080/v1/configuration/{self.kwargs['pk']}/settings")
|
|
# config = orjson.loads(response.text)
|
|
|
|
response = requests.get(f"http://signal:8080/v1/identities/{self.kwargs['pk']}")
|
|
identities = orjson.loads(response.text)
|
|
|
|
response = requests.get(f"http://signal:8080/v1/contacts/{self.kwargs['pk']}")
|
|
contacts = orjson.loads(response.text)
|
|
|
|
# add identities to contacts
|
|
for contact in contacts:
|
|
for identity in identities:
|
|
if contact["number"] == identity["number"]:
|
|
contact["identity"] = identity
|
|
|
|
obj = {
|
|
#"identity": identity,
|
|
"contacts": contacts,
|
|
}
|
|
self.extra_context = {"pretty": list(obj.keys())}
|
|
|
|
return obj
|
|
|
|
class SignalChatsList(SuperUserRequiredMixin, ObjectList):
|
|
list_template = "partials/signal-chats-list.html"
|
|
|
|
context_object_name_singular = "Signal Chat"
|
|
context_object_name = "Signal Chats"
|
|
|
|
list_url_name = "signal_chats"
|
|
list_url_args = ["type", "pk"]
|
|
|
|
def get_queryset(self, *args, **kwargs):
|
|
pk = self.kwargs.get("pk", "")
|
|
object_list = Chat.objects.filter(account=pk)
|
|
return object_list
|
|
|
|
class SignalMessagesList(SuperUserRequiredMixin, ObjectList):
|
|
...
|
|
|
|
class SignalAccountAdd(SuperUserRequiredMixin, CustomObjectRead):
|
|
detail_template = "partials/signal-account-add.html"
|
|
|
|
context_object_name_singular = "Add Account"
|
|
context_object_name = "Add Account"
|
|
|
|
detail_url_name = "signal_account_add"
|
|
detail_url_args = ["type", "device"]
|
|
|
|
page_title = None
|
|
|
|
def get_object(self, **kwargs):
|
|
form_args = self.request.POST.dict()
|
|
device_name = form_args["device"]
|
|
url = f"http://signal:8080/v1/qrcodelink?device_name={device_name}"
|
|
response = requests.get(url)
|
|
image_bytes = response.content
|
|
base64_image = base64.b64encode(image_bytes).decode("utf-8")
|
|
|
|
return base64_image |