-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ticket drop time UI support, unapproved club event visibility changes #750
base: master
Are you sure you want to change the base?
Conversation
…ing details for non-dropped events, add ticket_drop_time serializer validation, make events belonging to unapproved clubs visible to club leaders specifically, standardize spelling of "publicly"
…ged following a ticket being added to a user's cart
…clubs which require reapproval
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #750 +/- ##
==========================================
+ Coverage 71.95% 72.01% +0.05%
==========================================
Files 32 32
Lines 6953 6967 +14
==========================================
+ Hits 5003 5017 +14
Misses 1950 1950 ☔ View full report in Codecov by Sentry. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for picking this up (and sorry for getting to this so late). Left some comments on the backend changes. Frontend changes LGTM!
if start_time is not None and end_time is not None and start_time > end_time: | ||
raise serializers.ValidationError( | ||
"Your event start time must be less than the end time!" | ||
) | ||
if ticket_drop_time is not None and ticket_drop_time > end_time: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: can we make this >=
?
{"detail": "Related club does not exist", "success": False}, | ||
status=status.HTTP_404_NOT_FOUND, | ||
) | ||
elif not club.approved and not club.ghost: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think not None
evaluates to true in Python. Is it possible for club.approved = None
and club.ghost = None
(and if so, do we want this condition evaluating to true)?
if ( | ||
"ticket_drop_time" in request.data | ||
and Ticket.objects.filter(event=event, owner__isnull=False).exists() | ||
): | ||
raise DRFValidationError( | ||
detail="""Ticket drop times cannot be edited | ||
after tickets have been sold.""" | ||
) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Will there ever be a case where tickets have been issued to people, and then the drop time is changed? I think yes (imagine a club leader who's issued tickets to their members, before they're generally available to the public).
tickets_to_replace = cart.tickets.filter( | ||
Q(owner__isnull=False) | ||
| Q(event__club__archived=True) | ||
| Q(holder__isnull=False) | ||
| Q(event__end_time__lt=now) | ||
| ( | ||
Q(event__ticket_drop_time__gt=timezone.now()) | ||
& Q(event__ticket_drop_time__isnull=False) | ||
) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure this is needed. Users shouldn't be able to add tickets to their cart if the ticket drop time hasn't elapsed yet. (The logic's in ClubEventViewSet.add_to_cart()
.)
Q(event__ticket_drop_time__lt=timezone.now()) | ||
| Q(event__ticket_drop_time__isnull=True), | ||
event__club__archived=False, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same note as above here. Will there ever be a case where a ticket is in a user's cart, but the drop time hasn't elapsed?
ticket_drop_time
validation in event serializer based on event end time/directory
which have been approved at some point