Skip to content

Commit

Permalink
Merge pull request #96 from swecc-uw/add-last-updated-attendance
Browse files Browse the repository at this point in the history
Add `last_updated` field to `AttendanceStats`
  • Loading branch information
Advayp authored Jan 3, 2025
2 parents 3741b4e + 2855d36 commit af8099c
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 4 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Generated by Django 4.2.17 on 2025-01-03 06:02

from django.db import migrations, models
import django.utils.timezone


class Migration(migrations.Migration):

dependencies = [
('engagement', '0004_attendancesessionstats'),
]

operations = [
migrations.AddField(
model_name='attendancesessionstats',
name='last_updated',
field=models.DateTimeField(default=django.utils.timezone.now),
),
]
1 change: 1 addition & 0 deletions server/engagement/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ def __str__(self):
class AttendanceSessionStats(models.Model):
member = models.ForeignKey(User, on_delete=models.CASCADE)
sessions_attended = models.PositiveIntegerField(default=0)
last_updated = models.DateTimeField(default=timezone.now)

def __str__(self):
return f"{self.member.username}: {self.sessions_attended}"
8 changes: 6 additions & 2 deletions server/engagement/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
from .buffer import MessageBuffer, Message
from .models import AttendanceSession, DiscordMessageStats, AttendanceSessionStats
from .serializers import AttendanceSessionSerializer, MemberSerializer
from django.db import transaction

logger = logging.getLogger(__name__)

Expand Down Expand Up @@ -145,8 +146,11 @@ def post(self, request):
stats, created = AttendanceSessionStats.objects.get_or_create(
member=user
)
stats.sessions_attended += 1
stats.save()
with transaction.atomic():
stats.sessions_attended += 1
stats.last_updated = timezone.now()

stats.save()

return Response(status=status.HTTP_201_CREATED)
else:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
from members.models import User
from collections import defaultdict
from engagement.models import AttendanceSessionStats
from django.db import transaction
from django.utils import timezone


class Command(BaseCommand):
Expand All @@ -18,8 +20,11 @@ def handle(self, *args, **options):
user_stats, _ = AttendanceSessionStats.objects.get_or_create(
member_id=user_id
)
user_stats.sessions_attended = attended_sessions

user_stats.save()
with transaction.atomic():
user_stats.sessions_attended = attended_sessions
user_stats.last_updated = timezone.now()

user_stats.save()

self.stdout.write(self.style.SUCCESS(str(user_stats)))

0 comments on commit af8099c

Please sign in to comment.