Skip to content

Commit

Permalink
Added Ladder Entries view and Django Admin Customizations. (#33)
Browse files Browse the repository at this point in the history
* Added Ladder Entries Page.

* isort

* Added some admin panel customization.
  • Loading branch information
Kraust authored May 11, 2024
1 parent c46b161 commit bae6d15
Show file tree
Hide file tree
Showing 38 changed files with 431 additions and 55 deletions.
10 changes: 10 additions & 0 deletions OSCR_django/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
"rest_framework",
"drf_yasg",
"django_filters",
"django_json_widget",
# Our apps below here
"user.apps.UserConfig",
"combatlog.apps.CombatLogConfig",
Expand Down Expand Up @@ -209,3 +210,12 @@
# For proxy forwarding.
USE_X_FORWARDED_HOST = True
SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")


# For Template Formatting
USE_L10N = True
USE_THOUSAND_SEPARATOR = True

# Custom Paths
ADMIN_PATH = os.environ.get("ADMIN_PATH", False)
SWAGGER_PATH = os.environ.get("SWAGGER_PATH", False)
8 changes: 5 additions & 3 deletions OSCR_django/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@
path("", include("ui.urls.ui")),
]

if settings.ENABLE_DEBUG:
urlpatterns.append(path("admin/", admin.site.urls))
urlpatterns.append(path("swagger/", schema_view.with_ui("swagger")))
if settings.ADMIN_PATH:
urlpatterns.append(path(settings.ADMIN_PATH, admin.site.urls))

if settings.SWAGGER_PATH:
urlpatterns.append(path(settings.SWAGGER_PATH, schema_view.with_ui("swagger")))
10 changes: 9 additions & 1 deletion combatlog/admin.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,16 @@
""" CombatLog admin """

from django.contrib import admin
from django.db.models import JSONField
from django_json_widget.widgets import JSONEditorWidget

from .models import CombatLog, Metadata

admin.site.register(CombatLog)
admin.site.register(Metadata)


@admin.register(Metadata)
class MetadataAdmin(admin.ModelAdmin):
formfield_overrides = {
JSONField: {"widget": JSONEditorWidget},
}
3 changes: 2 additions & 1 deletion combatlog/management/commands/import.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,11 @@
import os
from pathlib import Path

from combatlog.models import CombatLog
from django.core.management.base import BaseCommand
from django.db import transaction

from combatlog.models import CombatLog

LOGGER = logging.getLogger("django")


Expand Down
3 changes: 2 additions & 1 deletion combatlog/management/commands/recalc.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@

import logging

from combatlog.models import CombatLog
from django.core.management.base import BaseCommand

from combatlog.models import CombatLog

LOGGER = logging.getLogger("django")


Expand Down
2 changes: 1 addition & 1 deletion combatlog/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Generated by Django 4.2.9 on 2024-04-13 10:16

from django.db import migrations, models
import django.db.models.deletion
from django.db import migrations, models


class Migration(migrations.Migration):
Expand Down
6 changes: 3 additions & 3 deletions combatlog/models/combatlog.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@
import tempfile
from pathlib import Path

from core.models import BaseModel
import OSCR
from django.conf import settings
from django.db import models, transaction
from django.dispatch import receiver
from django.utils import timezone
from ladder.models import Ladder, LadderEntry
from rest_framework.exceptions import APIException

import OSCR
from core.models import BaseModel
from ladder.models import Ladder, LadderEntry

from .metadata import Metadata

Expand Down
3 changes: 2 additions & 1 deletion combatlog/models/metadata.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
""" Metadata Models """

from core.models import BaseModel
from django.db import models

from core.models import BaseModel


class Metadata(BaseModel):
"""Combat Log Model"""
Expand Down
3 changes: 2 additions & 1 deletion combatlog/serializers/combatlog.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
""" CombatLog Serializers """

from combatlog.models import CombatLog
from rest_framework import serializers

from combatlog.models import CombatLog

from .metadata import MetadataSerializer


Expand Down
3 changes: 2 additions & 1 deletion combatlog/serializers/metadata.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
""" Metadata Serializers """

from combatlog.models import Metadata
from rest_framework import serializers

from combatlog.models import Metadata


class MetadataSerializer(serializers.ModelSerializer):
"""Metadata Serializer"""
Expand Down
3 changes: 2 additions & 1 deletion combatlog/urls/combatlog.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
""" CombatLog URLs """

from combatlog import views
from django.urls import include, path
from rest_framework import routers

from combatlog import views

router = routers.DefaultRouter()
router.register("combatlog", views.CombatLogViewSet)

Expand Down
13 changes: 8 additions & 5 deletions combatlog/views/combatlog.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,6 @@

import logging

from combatlog.models import CombatLog
from combatlog.serializers import (CombatLogSerializer,
CombatLogUploadResponseSerializer,
CombatLogUploadSerializer)
from core.pagination import PageNumberPagination
from django.db import transaction
from django.http import HttpResponse
from drf_yasg import openapi
Expand All @@ -17,6 +12,14 @@
from rest_framework.response import Response
from rest_framework.viewsets import GenericViewSet

from combatlog.models import CombatLog
from combatlog.serializers import (
CombatLogSerializer,
CombatLogUploadResponseSerializer,
CombatLogUploadSerializer,
)
from core.pagination import PageNumberPagination

LOGGER = logging.getLogger("django")


Expand Down
48 changes: 47 additions & 1 deletion ladder/admin.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,55 @@
""" CombatLog admin """

from django.contrib import admin
from django.db.models import JSONField
from django_json_widget.widgets import JSONEditorWidget

from .models import Ladder, LadderEntry, Variant

admin.site.register(Ladder)
admin.site.register(LadderEntry)
admin.site.register(Variant)


@admin.register(LadderEntry)
class LadderEntryAdmin(admin.ModelAdmin):
list_display = [
"player",
"ladder__name",
"ladder__difficulty",
"ladder__variant__name",
"dps",
"damage",
"combat_time",
"build",
]
formfield_overrides = {
JSONField: {"widget": JSONEditorWidget},
}

@admin.display(ordering="ladder__name")
def ladder__name(self, obj):
return obj.ladder.name

@admin.display(ordering="ladder__difficulty")
def ladder__difficulty(self, obj):
return obj.ladder.difficulty

@admin.display(ordering="ladder__variant__name")
def ladder__variant__name(self, obj):
return obj.ladder.variant.name

@admin.display(ordering="data__DPS")
def dps(self, obj):
return int(obj.data.get("DPS"))

@admin.display(ordering="data__total_damage")
def damage(self, obj):
return int(obj.data.get("total_damage"))

@admin.display(ordering="data__combat_time")
def combat_time(self, obj):
return int(obj.data.get("combat_time"))

@admin.display(ordering="data__build")
def build(self, obj):
return obj.data.get("build")
4 changes: 3 additions & 1 deletion ladder/filters/ladder_entry.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@
import logging

import django_filters.rest_framework as filters
from core.filters import BaseFilterSet
from django.db.models import JSONField

from core.filters import BaseFilterSet
from ladder.models import LadderEntry

LOGGER = logging.getLogger("django")
Expand Down Expand Up @@ -36,6 +37,7 @@ class Meta:
"ladder": ["exact"],
"ladder__name": CHAR_FILTERS,
"ladder__difficulty": CHAR_FILTERS,
"ladder__variant__name": CHAR_FILTERS,
"ladder__is_solo": ["exact"],
}
filter_overrides = {
Expand Down
2 changes: 1 addition & 1 deletion ladder/fixtures/ladders_solo.json
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@
"model": "ladder.Ladder",
"pk": 1007,
"fields": {
"name": "Jupiter Station Shoadown",
"name": "Jupiter Station Showdown",
"difficulty": "Elite",
"metric": "DPS",
"variant": "Default",
Expand Down
2 changes: 1 addition & 1 deletion ladder/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Generated by Django 4.2.9 on 2024-04-13 10:16

from django.db import migrations, models
import django.db.models.deletion
from django.db import migrations, models


class Migration(migrations.Migration):
Expand Down
3 changes: 2 additions & 1 deletion ladder/serializers/ladder_entry.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
""" LadderEntry Serializers """

from ladder.models import LadderEntry
from rest_framework import serializers

from ladder.models import LadderEntry


class LadderEntrySerializer(serializers.ModelSerializer):
"""LadderEntry Serializer"""
Expand Down
Loading

0 comments on commit bae6d15

Please sign in to comment.