Allow changing the asset filter list
This commit is contained in:
@@ -3,7 +3,16 @@ import json
|
||||
from cachalot.api import invalidate
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
from django.http import HttpResponse
|
||||
from mixins.views import AbortSave, ObjectCreate, ObjectDelete, ObjectList, ObjectUpdate
|
||||
from django.shortcuts import render
|
||||
from django.views import View
|
||||
from mixins.views import (
|
||||
AbortSave,
|
||||
ObjectCreate,
|
||||
ObjectDelete,
|
||||
ObjectList,
|
||||
ObjectNameMixin,
|
||||
ObjectUpdate,
|
||||
)
|
||||
from rest_framework import status
|
||||
from rest_framework.parsers import JSONParser
|
||||
from rest_framework.views import APIView
|
||||
@@ -154,3 +163,68 @@ class AssetRestrictionAPI(APIView):
|
||||
|
||||
return HttpResponse(status=status.HTTP_200_OK)
|
||||
return HttpResponse(status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
|
||||
# Asset group allowed field
|
||||
class AssetFilterList(LoginRequiredMixin, ObjectList):
|
||||
list_template = "partials/asset-filter-list.html"
|
||||
page_title = "List of asset filters."
|
||||
page_subtitle = None
|
||||
|
||||
context_object_name_singular = "asset filter"
|
||||
context_object_name = "asset filters"
|
||||
|
||||
list_url_name = "assetfilters"
|
||||
list_url_args = ["type", "group_id"]
|
||||
|
||||
def get_queryset(self, **kwargs):
|
||||
group_id = kwargs.get("group_id", None)
|
||||
self.extra_context = {"group_id": group_id}
|
||||
try:
|
||||
group = AssetGroup.objects.get(id=group_id, user=self.request.user)
|
||||
except AssetGroup.DoesNotExist:
|
||||
context = {"message": "Asset group does not exist", "class": "danger"}
|
||||
return self.render_to_response(context)
|
||||
return group.allowed
|
||||
|
||||
|
||||
class AssetFilterFlip(LoginRequiredMixin, ObjectNameMixin, View):
|
||||
template_name = "mixins/partials/notify.html"
|
||||
model = AssetGroup
|
||||
|
||||
def get(self, request, group_id, symbol):
|
||||
try:
|
||||
group = AssetGroup.objects.get(id=group_id, user=request.user)
|
||||
except AssetGroup.DoesNotExist:
|
||||
context = {"message": "Asset group does not exist", "class": "danger"}
|
||||
return render(request, self.template_name, context)
|
||||
if symbol not in group.allowed:
|
||||
context = {"message": "Asset filter does not exist", "class": "danger"}
|
||||
return render(request, self.template_name, context)
|
||||
group.allowed[symbol] = not group.allowed[symbol]
|
||||
group.save()
|
||||
context = {"message": "Asset filter updated", "class": "success"}
|
||||
response = render(request, self.template_name, context)
|
||||
response["HX-Trigger"] = "assetgroupEvent"
|
||||
return response
|
||||
|
||||
|
||||
class AssetFilterDelete(LoginRequiredMixin, ObjectNameMixin, View):
|
||||
template_name = "mixins/partials/notify.html"
|
||||
model = AssetGroup
|
||||
|
||||
def delete(self, request, group_id, symbol):
|
||||
try:
|
||||
group = AssetGroup.objects.get(id=group_id, user=request.user)
|
||||
except AssetGroup.DoesNotExist:
|
||||
context = {"message": "Asset group does not exist", "class": "danger"}
|
||||
return render(request, self.template_name, context)
|
||||
if symbol not in group.allowed:
|
||||
context = {"message": "Asset filter does not exist", "class": "danger"}
|
||||
return render(request, self.template_name, context)
|
||||
del group.allowed[symbol]
|
||||
group.save()
|
||||
context = {"message": "Asset filter deleted", "class": "success"}
|
||||
response = render(request, self.template_name, context)
|
||||
response["HX-Trigger"] = "assetgroupEvent"
|
||||
return response
|
||||
|
||||
Reference in New Issue
Block a user