feat: add user search/filter, banned metric, mobile review API, event detail improvements
- admin_api/views.py: Add banned count to UserMetrics, fix server-side search/filter in UserListView - admin_api/models.py: Add ReviewInteraction model, display_name/is_verified/helpful_count/flag_count to Review - mobile_api/views/reviews.py: Customer-facing review submit/list/helpful/flag endpoints - mobile_api/urls.py: Wire review API routes - mobile_api/views/events.py: Event detail and listing improvements - Security hardening across API modules
This commit is contained in:
@@ -34,6 +34,10 @@ class Review(models.Model):
|
||||
reject_reason = models.CharField(
|
||||
max_length=15, choices=REJECT_CHOICES, null=True, blank=True
|
||||
)
|
||||
display_name = models.CharField(max_length=100, blank=True, default='')
|
||||
is_verified = models.BooleanField(default=False)
|
||||
helpful_count = models.IntegerField(default=0)
|
||||
flag_count = models.IntegerField(default=0)
|
||||
|
||||
class Meta:
|
||||
ordering = ['-submission_date']
|
||||
@@ -44,3 +48,18 @@ class Review(models.Model):
|
||||
|
||||
def __str__(self):
|
||||
return f'Review #{self.pk} by {self.reviewer_id} — {self.status}'
|
||||
|
||||
|
||||
class ReviewInteraction(models.Model):
|
||||
INTERACTION_CHOICES = [('HELPFUL', 'Helpful'), ('FLAG', 'Flag')]
|
||||
|
||||
review = models.ForeignKey(Review, on_delete=models.CASCADE, related_name='interactions')
|
||||
username = models.CharField(max_length=255)
|
||||
interaction_type = models.CharField(max_length=20, choices=INTERACTION_CHOICES)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
|
||||
class Meta:
|
||||
unique_together = ('review', 'username', 'interaction_type')
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.username} {self.interaction_type} on Review #{self.review_id}'
|
||||
|
||||
Reference in New Issue
Block a user