Skip to content

Commit

Permalink
chore(refactor): Simplify query and test deleted discount
Browse files Browse the repository at this point in the history
  • Loading branch information
iamareebjamal committed May 14, 2020
1 parent 99c2582 commit eeaa8b9
Show file tree
Hide file tree
Showing 48 changed files with 277 additions and 419 deletions.
7 changes: 3 additions & 4 deletions app/api/access_codes.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,14 +89,14 @@ def query(self, view_kwargs):
:return:
"""
query_ = self.session.query(AccessCode)
query_ = event_query(self, query_, view_kwargs, permission='is_coorganizer')
query_ = event_query(query_, view_kwargs, permission='is_coorganizer')
if view_kwargs.get('user_id'):
user = safe_query(self, User, 'id', view_kwargs['user_id'], 'user_id')
user = safe_query(User, 'id', view_kwargs['user_id'], 'user_id')
if not has_access('is_user_itself', user_id=user.id):
raise ForbiddenException({'source': ''}, 'Access Forbidden')
query_ = query_.join(User).filter(User.id == user.id)
if view_kwargs.get('ticket_id'):
ticket = safe_query(self, Ticket, 'id', view_kwargs['ticket_id'], 'ticket_id')
ticket = safe_query(Ticket, 'id', view_kwargs['ticket_id'], 'ticket_id')
if not has_access('is_coorganizer', event_id=ticket.event_id):
raise ForbiddenException({'source': ''}, 'Access Forbidden')
# access_code - ticket :: many-to-many relationship
Expand Down Expand Up @@ -133,7 +133,6 @@ def before_get(self, args, kwargs):

if kwargs.get('access_event_identifier'):
event = safe_query(
db,
Event,
'identifier',
kwargs['access_event_identifier'],
Expand Down
16 changes: 6 additions & 10 deletions app/api/attendees.py
Original file line number Diff line number Diff line change
Expand Up @@ -134,11 +134,7 @@ def query(self, view_kwargs):

if view_kwargs.get('order_identifier'):
order = safe_query(
self,
Order,
'identifier',
view_kwargs['order_identifier'],
'order_identifier',
Order, 'identifier', view_kwargs['order_identifier'], 'order_identifier',
)
if not has_access('is_registrar', event_id=order.event_id) and not has_access(
'is_user_itself', user_id=order.user_id
Expand All @@ -147,20 +143,20 @@ def query(self, view_kwargs):
query_ = query_.join(Order).filter(Order.id == order.id)

if view_kwargs.get('ticket_id'):
ticket = safe_query(self, Ticket, 'id', view_kwargs['ticket_id'], 'ticket_id')
ticket = safe_query(Ticket, 'id', view_kwargs['ticket_id'], 'ticket_id')
# if not has_access('is_registrar', event_id=ticket.event_id):
# raise ForbiddenException({'source': ''}, 'Access Forbidden')
query_ = query_.join(Ticket).filter(Ticket.id == ticket.id)

if view_kwargs.get('user_id'):
user = safe_query(self, User, 'id', view_kwargs['user_id'], 'user_id')
user = safe_query(User, 'id', view_kwargs['user_id'], 'user_id')
if not has_access('is_user_itself', user_id=user.id):
raise ForbiddenException({'source': ''}, 'Access Forbidden')
query_ = query_.join(User, User.email == TicketHolder.email).filter(
User.id == user.id
)

query_ = event_query(self, query_, view_kwargs, permission='is_registrar')
query_ = event_query(query_, view_kwargs, permission='is_registrar')
return query_

view_kwargs = True
Expand All @@ -186,7 +182,7 @@ def before_get_object(self, view_kwargs):
:param view_kwargs:
:return:
"""
attendee = safe_query(self, TicketHolder, 'id', view_kwargs['id'], 'attendee_id')
attendee = safe_query(TicketHolder, 'id', view_kwargs['id'], 'attendee_id')
if not has_access(
'is_registrar_or_user_itself',
user_id=current_user.id,
Expand Down Expand Up @@ -283,7 +279,7 @@ def before_update_object(self, obj, data, kwargs):
data['device_name_checkin'] = '-'

if 'is_checked_out' in data and data['is_checked_out']:
attendee = safe_query(db, TicketHolder, 'id', kwargs['id'], 'attendee_id')
attendee = safe_query(TicketHolder, 'id', kwargs['id'], 'attendee_id')
if not attendee.is_checked_out:
checkout_times = (
obj.checkout_times.split(',') if obj.checkout_times else []
Expand Down
33 changes: 11 additions & 22 deletions app/api/custom/orders.py
Original file line number Diff line number Diff line change
@@ -1,30 +1,29 @@
import pytz
from datetime import datetime

import pytz
from flask import Blueprint, jsonify, make_response, request
from flask_jwt_extended import current_user, jwt_required
from sqlalchemy.orm.exc import NoResultFound

from app.api.auth import return_file
from app.api.helpers.db import get_count, safe_query
from app.api.helpers.files import make_frontend_url
from app.api.helpers.errors import ForbiddenError, NotFoundError, UnprocessableEntityError
from app.api.helpers.files import make_frontend_url
from app.api.helpers.mail import send_email_to_attendees, send_order_cancel_email
from app.api.helpers.notification import (
send_notif_ticket_cancel,
send_notif_to_attendees,
send_notif_ticket_purchase_organizer,
)
from app.api.helpers.order import calculate_order_amount, create_pdf_tickets_for_holder
from app.api.helpers.permission_manager import has_access
from app.api.helpers.storage import UPLOAD_PATHS, generate_hash
from app.api.schema.attendees import AttendeeSchema
from app.api.schema.orders import OrderSchema
from app.extensions.limiter import limiter
from app.api.helpers.notification import (
send_notif_ticket_cancel,
send_notif_to_attendees,
send_notif_ticket_purchase_organizer,
)
from app.models import db
from app.models.order import Order, OrderTicket
from app.models.custom_form import CustomForms
from app.models.discount_code import DiscountCode
from app.models.order import Order, OrderTicket
from app.models.ticket import Ticket
from app.models.ticket_holder import TicketHolder

Expand Down Expand Up @@ -75,7 +74,7 @@ def resend_emails():
:return: JSON response if the email was successfully sent
"""
order_identifier = request.json['data']['order']
order = safe_query(db, Order, 'identifier', order_identifier, 'identifier')
order = safe_query(Order, 'identifier', order_identifier, 'identifier')
if has_access('is_coorganizer', event_id=order.event_id):
if order.status == 'completed' or order.status == 'placed':
# fetch tickets attachment
Expand Down Expand Up @@ -114,28 +113,18 @@ def resend_emails():
raise ForbiddenError({'source': ''}, "Co-Organizer Access Required")


def calculate_order_amount_wrapper(data):
tickets = data['tickets']
discount_code = None
if 'discount-code' in data:
discount_code_id = data['discount-code']
discount_code = safe_query(db, DiscountCode, 'id', discount_code_id, 'id')
return tickets, discount_code


@order_blueprint.route('/calculate-amount', methods=['POST'])
@jwt_required
def calculate_amount():
data = request.get_json()
tickets, discount_code = calculate_order_amount_wrapper(data)
return jsonify(calculate_order_amount(tickets, discount_code))
return jsonify(calculate_order_amount(data['tickets'], data['discount-code']))


@order_blueprint.route('/create-order', methods=['POST'])
@jwt_required
def create_order():
data = request.get_json()
tickets, discount_code = calculate_order_amount_wrapper(data)
tickets, discount_code = data['tickets'], data['discount-code']
attendee = data['attendee']
for attribute in attendee:
attendee[attribute.replace('-', '_')] = attendee.pop(attribute)
Expand Down
12 changes: 4 additions & 8 deletions app/api/custom_forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ def query(self, view_kwargs):
:return:
"""
query_ = self.session.query(CustomForms)
query_ = event_query(self, query_, view_kwargs)
query_ = event_query(query_, view_kwargs)
return query_

view_kwargs = True
Expand Down Expand Up @@ -80,18 +80,14 @@ def before_get_object(self, view_kwargs):
"""
event = None
if view_kwargs.get('event_id'):
event = safe_query(self, Event, 'id', view_kwargs['event_id'], 'event_id')
event = safe_query(Event, 'id', view_kwargs['event_id'], 'event_id')
elif view_kwargs.get('event_identifier'):
event = safe_query(
self,
Event,
'identifier',
view_kwargs['event_identifier'],
'event_identifier',
Event, 'identifier', view_kwargs['event_identifier'], 'event_identifier',
)

if event:
custom_form = safe_query(self, CustomForms, 'event_id', event.id, 'event_id')
custom_form = safe_query(CustomForms, 'event_id', event.id, 'event_id')
view_kwargs['id'] = custom_form.id

decorators = (
Expand Down
4 changes: 0 additions & 4 deletions app/api/custom_placeholders.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ def query(self, view_kwargs):
query_ = self.session.query(CustomPlaceholder)
if view_kwargs.get('event_sub_topic_id'):
event_sub_topic = safe_query(
self,
EventSubTopic,
'id',
view_kwargs['event_sub_topic_id'],
Expand All @@ -43,7 +42,6 @@ def before_create_object(self, data, view_kwargs):
"""
if view_kwargs.get('event_sub_topic_id'):
event_sub_topic = safe_query(
self,
EventSubTopic,
'id',
view_kwargs['event_sub_topic_id'],
Expand Down Expand Up @@ -95,7 +93,6 @@ def before_get_object(self, view_kwargs):
event_sub_topic = None
if view_kwargs.get('event_sub_topic_id'):
event_sub_topic = safe_query(
self,
EventSubTopic,
'id',
view_kwargs['event_sub_topic_id'],
Expand All @@ -104,7 +101,6 @@ def before_get_object(self, view_kwargs):

if event_sub_topic:
custom_placeholder = safe_query(
self,
CustomPlaceholder,
'event_sub_topic_id',
event_sub_topic.id,
Expand Down
6 changes: 2 additions & 4 deletions app/api/custom_system_roles.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,7 @@ def query(self, view_kwargs):
"""
query_ = self.session.query(CustomSysRole)
if view_kwargs.get('panel_id'):
panel = safe_query(
self, PanelPermission, 'id', view_kwargs['panel_id'], 'panel_id'
)
panel = safe_query(PanelPermission, 'id', view_kwargs['panel_id'], 'panel_id')
query_ = CustomSysRole.query.filter(
CustomSysRole.panel_permissions.any(id=panel.id)
)
Expand Down Expand Up @@ -52,7 +50,7 @@ def before_get_object(self, view_kwargs):
"""
if view_kwargs.get('role_id') is not None:
panel_perm = safe_query(
self, PanelPermission, 'id', view_kwargs['role_id'], 'role_id'
PanelPermission, 'id', view_kwargs['role_id'], 'role_id'
)
if panel_perm.role_id is not None:
view_kwargs['id'] = panel_perm.role_id
Expand Down
2 changes: 1 addition & 1 deletion app/api/data_layers/EventCopyLayer.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ def create_object(self, data, view_kwargs):
identifier = 'id'

event = safe_query(
db, Event, identifier, view_kwargs['identifier'], 'event_' + identifier
Event, identifier, view_kwargs['identifier'], 'event_' + identifier
)
tickets = Ticket.query.filter_by(event_id=event.id).all()
social_links = SocialLink.query.filter_by(event_id=event.id).all()
Expand Down
36 changes: 11 additions & 25 deletions app/api/discount_codes.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ def before_create_object(self, data, view_kwargs):
def after_create_object(self, discount, data, view_kwargs):
if data['used_for'] == 'event' and 'events' in data:
for event_id in data['events']:
event = safe_query(self, Event, 'id', event_id, 'event_id')
event = safe_query(Event, 'id', event_id, 'event_id')
event.discount_code_id = discount.id

def before_get(self, args, kwargs):
Expand Down Expand Up @@ -133,18 +133,14 @@ def query(self, view_kwargs):
# user can only access his/her discount codes.
if view_kwargs.get('user_id'):
if has_access('is_user_itself', user_id=view_kwargs['user_id']):
user = safe_query(self, User, 'id', view_kwargs['user_id'], 'user_id')
user = safe_query(User, 'id', view_kwargs['user_id'], 'user_id')
query_ = query_.join(User).filter(User.id == user.id)
else:
raise ForbiddenException({'source': ''}, 'You are not authorized')

if view_kwargs.get('event_identifier'):
event = safe_query(
self,
Event,
'identifier',
view_kwargs['event_identifier'],
'event_identifier',
Event, 'identifier', view_kwargs['event_identifier'], 'event_identifier',
)
view_kwargs['event_id'] = event.id

Expand All @@ -161,7 +157,7 @@ def query(self, view_kwargs):
# discount_code - ticket :: many-to-many relationship
if view_kwargs.get('ticket_id') and has_access('is_coorganizer'):
self.schema = DiscountCodeSchemaTicket
ticket = safe_query(self, Ticket, 'id', view_kwargs['ticket_id'], 'ticket_id')
ticket = safe_query(Ticket, 'id', view_kwargs['ticket_id'], 'ticket_id')
query_ = query_.filter(DiscountCode.tickets.any(id=ticket.id))

return query_
Expand Down Expand Up @@ -215,7 +211,7 @@ def decide_schema(self, json_data):
def before_get(self, args, kwargs):
if kwargs.get('ticket_id'):
if has_access('is_coorganizer'):
ticket = safe_query(db, Ticket, 'id', kwargs['ticket_id'], 'ticket_id')
ticket = safe_query(Ticket, 'id', kwargs['ticket_id'], 'ticket_id')
if ticket.discount_code_id:
kwargs['id'] = ticket.discount_code_id
else:
Expand All @@ -228,7 +224,7 @@ def before_get(self, args, kwargs):
)
if kwargs.get('event_id'):
if has_access('is_admin'):
event = safe_query(db, Event, 'id', kwargs['event_id'], 'event_id')
event = safe_query(Event, 'id', kwargs['event_id'], 'event_id')
if event.discount_code_id:
kwargs['id'] = event.discount_code_id
else:
Expand All @@ -241,13 +237,12 @@ def before_get(self, args, kwargs):

if kwargs.get('event_identifier'):
event = safe_query(
db, Event, 'identifier', kwargs['event_identifier'], 'event_identifier'
Event, 'identifier', kwargs['event_identifier'], 'event_identifier'
)
kwargs['event_id'] = event.id

if kwargs.get('discount_event_identifier'):
event = safe_query(
db,
Event,
'identifier',
kwargs['discount_event_identifier'],
Expand All @@ -256,7 +251,7 @@ def before_get(self, args, kwargs):
kwargs['discount_event_id'] = event.id

if kwargs.get('event_id') and has_access('is_admin'):
event = safe_query(db, Event, 'id', kwargs['event_id'], 'event_id')
event = safe_query(Event, 'id', kwargs['event_id'], 'event_id')
if event.discount_code_id:
kwargs['id'] = event.discount_code_id
else:
Expand Down Expand Up @@ -323,28 +318,20 @@ def before_get_object(self, view_kwargs):
"""
if view_kwargs.get('event_identifier'):
event = safe_query(
self,
Event,
'identifier',
view_kwargs['event_identifier'],
'event_identifier',
Event, 'identifier', view_kwargs['event_identifier'], 'event_identifier',
)
view_kwargs['event_id'] = event.id

if view_kwargs.get('event_id') and has_access('is_admin'):
event = safe_query(self, Event, 'id', view_kwargs['event_id'], 'event_id')
event = safe_query(Event, 'id', view_kwargs['event_id'], 'event_id')
if event.discount_code_id:
view_kwargs['id'] = event.discount_code_id
else:
view_kwargs['id'] = None

if view_kwargs.get('event_invoice_id') and has_access('is_admin'):
event_invoice = safe_query(
self,
EventInvoice,
'id',
view_kwargs['event_invoice_id'],
'event_invoice_id',
EventInvoice, 'id', view_kwargs['event_invoice_id'], 'event_invoice_id',
)
if event_invoice.discount_code_id:
view_kwargs['id'] = event_invoice.discount_code_id
Expand All @@ -353,7 +340,6 @@ def before_get_object(self, view_kwargs):

if view_kwargs.get('event_invoice_identifier') and has_access('is_admin'):
event_invoice = safe_query(
self,
EventInvoice,
'identifier',
view_kwargs['event_invoice_identifier'],
Expand Down
2 changes: 1 addition & 1 deletion app/api/email_notifications.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ def query(self, view_kwargs):
"""
query_ = self.session.query(EmailNotification)
if view_kwargs.get('user_id'):
user = safe_query(self, User, 'id', view_kwargs['user_id'], 'user_id')
user = safe_query(User, 'id', view_kwargs['user_id'], 'user_id')
query_ = query_.join(User).filter(User.id == user.id)
return query_

Expand Down
2 changes: 1 addition & 1 deletion app/api/event_copy.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ def create_event_copy(identifier):
if identifier.isdigit():
id = 'id'

event = safe_query(db, Event, id, identifier, 'event_' + id)
event = safe_query(Event, id, identifier, 'event_' + id)

if not has_access('is_coorganizer', event_id=event.id):
return abort(make_response(jsonify(error="Access Forbidden"), 403))
Expand Down
Loading

0 comments on commit eeaa8b9

Please sign in to comment.