Implement more UI elements
This commit is contained in:
0
core/api/views/__init__.py
Normal file
0
core/api/views/__init__.py
Normal file
106
core/api/views/threshold.py
Normal file
106
core/api/views/threshold.py
Normal file
@@ -0,0 +1,106 @@
|
||||
import logging
|
||||
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
from django.http import HttpResponse, JsonResponse
|
||||
from django.shortcuts import render
|
||||
from rest_framework.parsers import FormParser
|
||||
from rest_framework.views import APIView
|
||||
|
||||
from core.lib.threshold import annotate_online, get_chans, get_users
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class ThresholdChans(LoginRequiredMixin, APIView):
|
||||
parser_classes = [FormParser]
|
||||
plan_name = "drilldown"
|
||||
|
||||
def post(self, request):
|
||||
if not request.user.has_plan(self.plan_name):
|
||||
return JsonResponse({"success": False})
|
||||
if "net" not in request.data:
|
||||
return JsonResponse({"success": False})
|
||||
if "query" not in request.data:
|
||||
return JsonResponse({"success": False})
|
||||
net = request.data["net"]
|
||||
query = request.data["query"]
|
||||
channels = get_chans(net, [query])
|
||||
if not channels:
|
||||
return HttpResponse("")
|
||||
channels_human = ", ".join(channels)
|
||||
return HttpResponse(channels_human)
|
||||
|
||||
|
||||
class ThresholdUsers(LoginRequiredMixin, APIView):
|
||||
parser_classes = [FormParser]
|
||||
plan_name = "drilldown"
|
||||
|
||||
def post(self, request):
|
||||
if not request.user.has_plan(self.plan_name):
|
||||
return JsonResponse({"success": False})
|
||||
if "net" not in request.data:
|
||||
return JsonResponse({"success": False})
|
||||
if "query" not in request.data:
|
||||
return JsonResponse({"success": False})
|
||||
net = request.data["net"]
|
||||
query = request.data["query"]
|
||||
users = get_users(net, [query])
|
||||
if not users:
|
||||
return HttpResponse("")
|
||||
users_human = ", ".join(users)
|
||||
return HttpResponse(users_human)
|
||||
|
||||
|
||||
class ThresholdOnline(LoginRequiredMixin, APIView):
|
||||
parser_classes = [FormParser]
|
||||
plan_name = "drilldown"
|
||||
|
||||
def post(self, request):
|
||||
if not request.user.has_plan(self.plan_name):
|
||||
return JsonResponse({"success": False})
|
||||
if "net" not in request.data:
|
||||
return JsonResponse({"success": False})
|
||||
if "query" not in request.data:
|
||||
return JsonResponse({"success": False})
|
||||
net = request.data["net"]
|
||||
query = request.data["query"]
|
||||
online_info = annotate_online(net, query)
|
||||
return JsonResponse(online_info)
|
||||
|
||||
|
||||
class ThresholdInfoModal(LoginRequiredMixin, APIView):
|
||||
parser_classes = [FormParser]
|
||||
plan_name = "drilldown"
|
||||
template_name = "modals/info.html"
|
||||
|
||||
def post(self, request):
|
||||
if not request.user.has_plan(self.plan_name):
|
||||
return JsonResponse({"success": False})
|
||||
if "net" not in request.data:
|
||||
return JsonResponse({"success": False})
|
||||
if "nick" not in request.data:
|
||||
return JsonResponse({"success": False})
|
||||
if "channel" not in request.data:
|
||||
return JsonResponse({"success": False})
|
||||
net = request.data["net"]
|
||||
nick = request.data["nick"]
|
||||
channel = request.data["channel"]
|
||||
channels = get_chans(net, [nick])
|
||||
users = get_users(net, [channel])
|
||||
if channels:
|
||||
inter_users = get_users(net, channels)
|
||||
else:
|
||||
inter_users = []
|
||||
if users:
|
||||
inter_chans = get_chans(net, users)
|
||||
else:
|
||||
inter_chans = []
|
||||
context = {
|
||||
"nick": nick,
|
||||
"channel": channel,
|
||||
"chans": channels,
|
||||
"users": users,
|
||||
"inter_chans": inter_chans,
|
||||
"inter_users": inter_users,
|
||||
}
|
||||
return render(request, self.template_name, context)
|
||||
Reference in New Issue
Block a user