mirror of https://github.com/cocosolos/ixion.git
[api] Clean up view functions
This commit is contained in:
parent
d08094b411
commit
136616db80
|
|
@ -29,7 +29,6 @@ app.conf.beat_schedule = {
|
||||||
"schedule": timedelta(
|
"schedule": timedelta(
|
||||||
minutes=int(os.getenv("SERVER_UPDATE_INTERVAL", default="10"))
|
minutes=int(os.getenv("SERVER_UPDATE_INTERVAL", default="10"))
|
||||||
),
|
),
|
||||||
# "schedule": timedelta(minutes=1),
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
"LOGIN.CHAINS_OF_PROMATHIA": true,
|
"LOGIN.CHAINS_OF_PROMATHIA": true,
|
||||||
"LOGIN.CHARACTER_CREATION": true,
|
"LOGIN.CHARACTER_CREATION": true,
|
||||||
"LOGIN.CHARACTER_DELETION": true,
|
"LOGIN.CHARACTER_DELETION": true,
|
||||||
"LOGIN.CLIENT_VER": "30240327_0",
|
"LOGIN.CLIENT_VER": "30240604_1",
|
||||||
"LOGIN.DISABLE_MOB_NPC_CHAR_NAMES": false,
|
"LOGIN.DISABLE_MOB_NPC_CHAR_NAMES": false,
|
||||||
"LOGIN.HEROES_OF_ABYSSEA": true,
|
"LOGIN.HEROES_OF_ABYSSEA": true,
|
||||||
"LOGIN.LOGIN_LIMIT": 0,
|
"LOGIN.LOGIN_LIMIT": 0,
|
||||||
|
|
@ -221,6 +221,7 @@
|
||||||
"MAP.AUDIT_UNITY": false,
|
"MAP.AUDIT_UNITY": false,
|
||||||
"MAP.AUDIT_YELL": false,
|
"MAP.AUDIT_YELL": false,
|
||||||
"MAP.BATTLE_CAP_TWEAK": 0,
|
"MAP.BATTLE_CAP_TWEAK": 0,
|
||||||
|
"MAP.BCNM_ENABLE_EXPERIMENTAL": true,
|
||||||
"MAP.BLOCK_OLD_SKILLUP_STYLE": false,
|
"MAP.BLOCK_OLD_SKILLUP_STYLE": false,
|
||||||
"MAP.BLOCK_TELL_TO_HIDDEN_GM": false,
|
"MAP.BLOCK_TELL_TO_HIDDEN_GM": false,
|
||||||
"MAP.BLOOD_PACT_SHARED_TIMER": false,
|
"MAP.BLOOD_PACT_SHARED_TIMER": false,
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ class ServerViewSet(
|
||||||
**{annotate_name: KT(annotate_field)}
|
**{annotate_name: KT(annotate_field)}
|
||||||
).filter(**{f"{annotate_name}__{filter_type}": value})
|
).filter(**{f"{annotate_name}__{filter_type}": value})
|
||||||
|
|
||||||
# TODO: This probably isn't very efficient
|
# Clear the result cache to ensure fresh data
|
||||||
queryset._result_cache = None
|
queryset._result_cache = None
|
||||||
|
|
||||||
return queryset
|
return queryset
|
||||||
|
|
@ -56,6 +56,9 @@ class ServerDetailsViewSet(
|
||||||
serializer_class = ServerDetailsSerializer
|
serializer_class = ServerDetailsSerializer
|
||||||
|
|
||||||
def get_object(self):
|
def get_object(self):
|
||||||
|
"""
|
||||||
|
Override get_object to retrieve server by URL query parameter.
|
||||||
|
"""
|
||||||
queryset = self.filter_queryset(self.get_queryset())
|
queryset = self.filter_queryset(self.get_queryset())
|
||||||
url_param = self.request.query_params.get("url")
|
url_param = self.request.query_params.get("url")
|
||||||
if url_param:
|
if url_param:
|
||||||
|
|
@ -66,44 +69,44 @@ class ServerDetailsViewSet(
|
||||||
raise Http404("Server not found with the provided URL.")
|
raise Http404("Server not found with the provided URL.")
|
||||||
return super().get_object()
|
return super().get_object()
|
||||||
|
|
||||||
def create_server(self, url_param):
|
def handle_server_by_url(self, url_param):
|
||||||
serializer = self.get_serializer(data={"url": url_param})
|
"""
|
||||||
serializer.is_valid(raise_exception=True)
|
Check for existing server or create a new one if not found.
|
||||||
self.perform_create(serializer)
|
"""
|
||||||
return serializer.instance
|
url_param = url_param.lower()
|
||||||
|
try:
|
||||||
|
server = Server.objects.get(url=url_param)
|
||||||
|
serializer = self.get_serializer(server)
|
||||||
|
return Response(serializer.data, status=status.HTTP_200_OK)
|
||||||
|
except Server.DoesNotExist:
|
||||||
|
serializer = self.get_serializer(data={"url": url_param})
|
||||||
|
serializer.is_valid(raise_exception=True)
|
||||||
|
self.perform_create(serializer)
|
||||||
|
return Response(serializer.data, status=status.HTTP_201_CREATED)
|
||||||
|
except ValidationError as e:
|
||||||
|
return Response({"url": e.messages}, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
def create(self, request, *args, **kwargs):
|
def create(self, request, *args, **kwargs):
|
||||||
|
"""
|
||||||
|
Handle POST request to retrieve or create server.
|
||||||
|
"""
|
||||||
url_param = request.data.get("url")
|
url_param = request.data.get("url")
|
||||||
if url_param:
|
if url_param:
|
||||||
url_param = url_param.lower()
|
return self.handle_server_by_url(url_param)
|
||||||
try:
|
return Response(
|
||||||
server = Server.objects.get(url=url_param)
|
{"detail": "URL parameter is required."}, status=status.HTTP_400_BAD_REQUEST
|
||||||
serializer = self.get_serializer(server)
|
)
|
||||||
return Response(serializer.data, status=status.HTTP_200_OK)
|
|
||||||
except Server.DoesNotExist:
|
|
||||||
try:
|
|
||||||
instance = self.create_server(url_param)
|
|
||||||
serializer = self.get_serializer(instance)
|
|
||||||
return Response(serializer.data, status=status.HTTP_201_CREATED)
|
|
||||||
except ValidationError as e:
|
|
||||||
return Response(
|
|
||||||
{"url": e.messages}, status=status.HTTP_400_BAD_REQUEST
|
|
||||||
)
|
|
||||||
|
|
||||||
def list(self, request, *args, **kwargs):
|
def list(self, request, *args, **kwargs):
|
||||||
|
"""
|
||||||
|
Handle GET request to retrieve or create server.
|
||||||
|
"""
|
||||||
queryset = self.filter_queryset(self.get_queryset())
|
queryset = self.filter_queryset(self.get_queryset())
|
||||||
url_param = self.request.query_params.get("url")
|
url_param = self.request.query_params.get("url")
|
||||||
if url_param:
|
if url_param:
|
||||||
url_param = url_param.lower()
|
url_param = url_param.lower()
|
||||||
queryset = queryset.filter(url=url_param)
|
queryset = queryset.filter(url=url_param)
|
||||||
if not queryset.exists():
|
if not queryset.exists():
|
||||||
try:
|
return self.handle_server_by_url(url_param)
|
||||||
instance = self.create_server(url_param)
|
|
||||||
serializer = self.get_serializer(instance)
|
|
||||||
return Response(serializer.data, status=status.HTTP_201_CREATED)
|
|
||||||
except ValidationError as e:
|
|
||||||
return Response(
|
|
||||||
{"url": e.messages}, status=status.HTTP_400_BAD_REQUEST
|
|
||||||
)
|
|
||||||
return self.retrieve(request, *args, **kwargs)
|
return self.retrieve(request, *args, **kwargs)
|
||||||
raise Http404("No URL provided.")
|
raise Http404("No URL provided.")
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue