Skip to content

Commit

Permalink
Try and Improve Performance Improvemnets after Damage Out Table was A…
Browse files Browse the repository at this point in the history
…dded. (STOCD#67)

* Updated Ladder Entries to better indicate rank.

* Minor Backend Changes to support new OSCR + Ladder Rankings

* Updated Requirements

* Fixed NTTX Fixture

* Replaced Build Detection with Strongest Ability

* Updated Combat Log UI Page

* Add Link Preview

* And again

* Fixup Meta

* Try and optimize the combatlog metadata.
  • Loading branch information
Kraust authored Aug 12, 2024
1 parent ed68acd commit cf0ee86
Show file tree
Hide file tree
Showing 6 changed files with 64 additions and 8 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Generated by Django 4.2.9 on 2024-08-12 19:53

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('combatlog', '0002_combatlog_youtube'),
]

operations = [
migrations.AddField(
model_name='metadata',
name='damage_in',
field=models.JSONField(default=None, null=True),
),
migrations.AddField(
model_name='metadata',
name='damage_out',
field=models.JSONField(default=None, null=True),
),
migrations.AddField(
model_name='metadata',
name='heal_in',
field=models.JSONField(default=None, null=True),
),
migrations.AddField(
model_name='metadata',
name='heal_out',
field=models.JSONField(default=None, null=True),
),
]
10 changes: 6 additions & 4 deletions combatlog/models/combatlog.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,15 @@
from pathlib import Path

import OSCR
from core.models import BaseModel
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

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

from .metadata import Metadata

LOGGER = logging.getLogger("django")
Expand Down Expand Up @@ -132,10 +133,9 @@ def update_metadata_file(self, file, force=False):
handle = f"{player[1]['name']}{player[1]['handle']}"
for damage_out_player in damage_out["players"]:
if damage_out_player["name"] == handle:
players[idx][1]["damage_out"] = damage_out_player["breakdown"]
# Override Build with damage breakdown
players[idx][1]["build"] = self.get_build(
players[idx][1]["damage_out"]
damage_out_player["breakdown"]
)
break

Expand Down Expand Up @@ -277,10 +277,12 @@ def update_metadata_file(self, file, force=False):
difficulty=combat.difficulty,
date_time=timezone.make_aware(combat.date_time),
summary=players,
damage_out=damage_out,
)
self.metadata.save()
else:
self.metadata.summary = players
self.metadata.damage_out = damage_out
self.metadata.save()
# Need to backtrack and update the ladder entries.
for entry in self.ladderentry_set.all():
Expand Down
5 changes: 5 additions & 0 deletions combatlog/models/metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,10 @@ class Metadata(BaseModel):
summary = models.JSONField()
date_time = models.DateTimeField(null=True, default=None)

damage_out = models.JSONField(null=True, default=None)
damage_in = models.JSONField(null=True, default=None)
heal_out = models.JSONField(null=True, default=None)
heal_in = models.JSONField(null=True, default=None)

def __str__(self):
return f"{self.date_time} {self.map} ({self.difficulty})"
9 changes: 7 additions & 2 deletions combatlog/serializers/metadata.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
""" Metadata Serializers """
"""Metadata Serializers"""

from rest_framework import serializers

Expand All @@ -10,4 +10,9 @@ class MetadataSerializer(serializers.ModelSerializer):

class Meta:
model = Metadata
exclude = []
exclude = [
"damage_out",
"damage_in",
"heal_out",
"heal_in",
]
4 changes: 3 additions & 1 deletion combatlog/templates/combatlog.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
{% load l10n %}
{% load static %}
{% load core %}
{% load combatlog %}
<div data-bs-theme="dark">
<h2 style="display: inline-block;">{{object.metadata.map}} {% if object.metadata.difficulty is not None %}({{object.metadata.difficulty}}){% endif %}</h2>&nbsp;
<h5 style="display: inline-block;">{{object.metadata.date_time|date:"DATETIME_FORMAT"}}</h5>
Expand Down Expand Up @@ -55,7 +56,8 @@ <h5 style="display: inline-block;">{{object.metadata.date_time|date:"DATETIME_FO
<th scope="col">Attacks</th>
<th scope="col">Misses</th>
</tr>
{% for entry in player.damage_out %}
{% damage_out_breakdown object.metadata player.name player.handle as entries %}
{% for entry in entries %}
<tr scope="row">
<td scope="col">{{entry.name}}</td>
<td scope="col">{{entry.summary|get:"DPS"|floatformat:0}}</td>
Expand Down
11 changes: 10 additions & 1 deletion combatlog/templatetags/combatlog.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ def summary(instance):
res.append("DPS")
players = []
for _, player in instance.metadata.summary:
print(player)
players.append(
{
"name": player["handle"],
Expand All @@ -31,3 +30,13 @@ def summary(instance):
res.append(f"{player['name']} - {int(player['DPS']):,}")

return " | ".join(res)


@register.simple_tag
def damage_out_breakdown(instance, player, handle):
"""Get the player's Damage Out Table from the metadata by their name and handle"""
name = f"{player}{handle}"
for table in instance.damage_out["players"]:
if table["name"] == name:
return table["breakdown"]
return None

0 comments on commit cf0ee86

Please sign in to comment.