From fe4faee7aa57d6632d3945c674d09e61aebea44d Mon Sep 17 00:00:00 2001 From: Colin Powell Date: Sun, 2 Apr 2023 23:57:55 -0400 Subject: [PATCH] Add an end timestamp --- .../migrations/0036_scrobble_stop_timestamp.py | 18 ++++++++++++++++++ vrobbler/apps/scrobbles/models.py | 10 +++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 vrobbler/apps/scrobbles/migrations/0036_scrobble_stop_timestamp.py diff --git a/vrobbler/apps/scrobbles/migrations/0036_scrobble_stop_timestamp.py b/vrobbler/apps/scrobbles/migrations/0036_scrobble_stop_timestamp.py new file mode 100644 index 0000000..60c306c --- /dev/null +++ b/vrobbler/apps/scrobbles/migrations/0036_scrobble_stop_timestamp.py @@ -0,0 +1,18 @@ +# Generated by Django 4.1.7 on 2023-04-03 03:52 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("scrobbles", "0035_scrobble_videogame_save_data"), + ] + + operations = [ + migrations.AddField( + model_name="scrobble", + name="stop_timestamp", + field=models.DateTimeField(blank=True, null=True), + ), + ] diff --git a/vrobbler/apps/scrobbles/models.py b/vrobbler/apps/scrobbles/models.py index 28b465e..1ce4168 100644 --- a/vrobbler/apps/scrobbles/models.py +++ b/vrobbler/apps/scrobbles/models.py @@ -430,6 +430,7 @@ class Scrobble(TimeStampedModel): # Time keeping timestamp = models.DateTimeField(**BNULL) + stop_timestamp = models.DateTimeField(**BNULL) playback_position_ticks = models.PositiveBigIntegerField(**BNULL) playback_position_seconds = models.IntegerField(**BNULL) @@ -650,9 +651,16 @@ class Scrobble(TimeStampedModel): check_scrobble_for_finish(self) + if scrobble_status != "resumed": + scrobble_data["stop_timestamp"] = ( + scrobble_data.pop("timestamp", None) or timezone.now() + ) + + update_fields = [] for key, value in scrobble_data.items(): setattr(self, key, value) - self.save() + update_fields.append(key) + self.save(update_fields=update_fields) return self