feat: add community contribution ranks

This commit is contained in:
2026-09-29 22:18:57 +03:30
parent 0f6220f72c
commit 77567178ad
46 changed files with 2206 additions and 23 deletions

View File

@@ -126,11 +126,30 @@ class Registration(BaseModel):
CANCELLED = 'cancelled', 'Cancelled'
ATTENDED = 'attended', 'Attended'
class AttendanceVerificationSource(models.TextChoices):
STAFF_ADMIN = 'staff_admin', 'Staff admin'
STAFF_API = 'staff_api', 'Staff API'
SYSTEM = 'system', 'System'
HISTORICAL = 'historical', 'Historical backfill'
event = models.ForeignKey(Event, on_delete=models.CASCADE, related_name='registrations')
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='event_registrations')
registered_at = models.DateTimeField(auto_now_add=True)
status = models.CharField(max_length=10, choices=StatusChoices.choices,
default=StatusChoices.PENDING)
attendance_verified_at = models.DateTimeField(null=True, blank=True)
attendance_verified_by = models.ForeignKey(
settings.AUTH_USER_MODEL,
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name='verified_event_attendance',
)
attendance_verification_source = models.CharField(
max_length=20,
choices=AttendanceVerificationSource.choices,
blank=True,
)
ticket_id = models.UUIDField(default=uuid.uuid4, unique=True, editable=False)
confirmation_notification_sent_at = models.DateTimeField(null=True, blank=True)
@@ -193,3 +212,6 @@ class Registration(BaseModel):
send_registration_confirmation_notification.delay(str(self.pk))
self.confirmation_notification_sent_at = timezone.now()
super().save(update_fields=["confirmation_notification_sent_at"])
from apps.gamification.services import sync_registration_attendance
sync_registration_attendance(self)