Skip to content

Commit 26b5d4e

Browse files
committed
fix:count query of sold tickets
1 parent 03fa0ea commit 26b5d4e

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

app/api/attendees.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
from datetime import datetime
1+
import datetime
22

33
from flask import Blueprint, request, jsonify, abort, make_response
44
from flask_jwt_extended import current_user
55
from flask_rest_jsonapi import ResourceDetail, ResourceList, ResourceRelationship
66
from flask_rest_jsonapi.exceptions import ObjectNotFound
77
from sqlalchemy.orm.exc import NoResultFound
8+
from sqlalchemy import or_
89

910
from app.api.bootstrap import api
1011
from app.api.helpers.db import safe_query, get_count
@@ -25,6 +26,9 @@
2526
from app.models.ticket_holder import TicketHolder
2627
from app.models.user import User
2728

29+
from app.settings import get_settings
30+
31+
2832
attendee_misc_routes = Blueprint('attendee_misc', __name__, url_prefix='/v1')
2933

3034

@@ -56,8 +60,10 @@ def before_post(self, args, kwargs, data):
5660
"Ticket belongs to a different Event"
5761
)
5862
# Check if the ticket is already sold out or not.
59-
if get_count(db.session.query(TicketHolder.id).
60-
filter_by(ticket_id=int(data['ticket']), deleted_at=None)) >= ticket.quantity:
63+
order_expiry_time = get_settings()['order_expiry_time']
64+
if get_count(db.session.query(TicketHolder.id).filter(TicketHolder.ticket_id==int(data['ticket']),
65+
TicketHolder.state=='placed',TicketHolder.deleted_at.is_(None), or_(TicketHolder.state=='initializing',
66+
TicketHolder.created_at<datetime.datetime.utcnow()+datetime.timedelta(minutes=order_expiry_time)))) >= ticket.quantity:
6167
raise ConflictException(
6268
{'pointer': '/data/attributes/ticket_id'},
6369
"Ticket already sold out"

0 commit comments

Comments
 (0)