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) print("ACCOUNTS", accounts) 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 print("GET", self.request.GET) print("KWARGS", self.kwargs) # /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) print("identities", identities) print("contacts", contacts) # 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