diff --git a/app/api/access_codes.py b/app/api/access_codes.py index 68007e5b61..b2f2398aae 100644 --- a/app/api/access_codes.py +++ b/app/api/access_codes.py @@ -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 @@ -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'], diff --git a/app/api/attendees.py b/app/api/attendees.py index 035aea59e3..3de87563ea 100644 --- a/app/api/attendees.py +++ b/app/api/attendees.py @@ -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 @@ -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 @@ -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, @@ -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 [] diff --git a/app/api/custom/orders.py b/app/api/custom/orders.py index 04bb2a2d31..74575dd186 100644 --- a/app/api/custom/orders.py +++ b/app/api/custom/orders.py @@ -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 @@ -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 @@ -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) diff --git a/app/api/custom_forms.py b/app/api/custom_forms.py index e43695d33b..f67293d65e 100644 --- a/app/api/custom_forms.py +++ b/app/api/custom_forms.py @@ -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 @@ -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 = ( diff --git a/app/api/custom_placeholders.py b/app/api/custom_placeholders.py index 7ea2a07493..7e215af227 100644 --- a/app/api/custom_placeholders.py +++ b/app/api/custom_placeholders.py @@ -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'], @@ -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'], @@ -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'], @@ -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, diff --git a/app/api/custom_system_roles.py b/app/api/custom_system_roles.py index 4add6cb9f9..04be661090 100644 --- a/app/api/custom_system_roles.py +++ b/app/api/custom_system_roles.py @@ -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) ) @@ -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 diff --git a/app/api/data_layers/EventCopyLayer.py b/app/api/data_layers/EventCopyLayer.py index 1b9e1301b7..8ecf027f3d 100644 --- a/app/api/data_layers/EventCopyLayer.py +++ b/app/api/data_layers/EventCopyLayer.py @@ -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() diff --git a/app/api/discount_codes.py b/app/api/discount_codes.py index d614e6be86..6fae132114 100644 --- a/app/api/discount_codes.py +++ b/app/api/discount_codes.py @@ -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): @@ -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 @@ -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_ @@ -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: @@ -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: @@ -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'], @@ -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: @@ -323,16 +318,12 @@ 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: @@ -340,11 +331,7 @@ def before_get_object(self, view_kwargs): 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 @@ -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'], diff --git a/app/api/email_notifications.py b/app/api/email_notifications.py index 58168d5ebb..822d3db49a 100644 --- a/app/api/email_notifications.py +++ b/app/api/email_notifications.py @@ -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_ diff --git a/app/api/event_copy.py b/app/api/event_copy.py index b3057ced60..a36c92725d 100644 --- a/app/api/event_copy.py +++ b/app/api/event_copy.py @@ -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)) diff --git a/app/api/event_copyright.py b/app/api/event_copyright.py index e8643ce428..bc8571e766 100644 --- a/app/api/event_copyright.py +++ b/app/api/event_copyright.py @@ -74,20 +74,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: - event_copyright = safe_query( - self, EventCopyright, 'event_id', event.id, 'event_id' - ) + event_copyright = safe_query(EventCopyright, 'event_id', event.id, 'event_id') view_kwargs['id'] = event_copyright.id decorators = ( diff --git a/app/api/event_invoices.py b/app/api/event_invoices.py index 0665e93285..e95afeab54 100644 --- a/app/api/event_invoices.py +++ b/app/api/event_invoices.py @@ -40,17 +40,13 @@ def query(self, view_kwargs): :return: """ query_ = self.session.query(EventInvoice) - query_ = event_query(self, query_, view_kwargs) + query_ = event_query(query_, view_kwargs) 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) if view_kwargs.get('discount_code_id'): discount_code = safe_query( - self, - DiscountCode, - 'id', - view_kwargs['discount_code_id'], - 'discount_code_id', + DiscountCode, 'id', view_kwargs['discount_code_id'], 'discount_code_id', ) query_ = query_.join(DiscountCode).filter(DiscountCode.id == discount_code.id) return query_ @@ -81,7 +77,6 @@ def before_get_object(self, view_kwargs): """ if view_kwargs.get('event_invoice_identifier'): event_invoice = safe_query( - self, EventInvoice, 'identifier', view_kwargs['event_invoice_identifier'], @@ -111,7 +106,6 @@ def before_get_object(self, view_kwargs): """ if view_kwargs.get('event_invoice_identifier'): event_invoice = safe_query( - self, EventInvoice, 'identifier', view_kwargs['event_invoice_identifier'], @@ -142,7 +136,6 @@ def before_get_object(self, view_kwargs): """ if view_kwargs.get('event_invoice_identifier'): event_invoice = safe_query( - self, EventInvoice, 'identifier', view_kwargs['event_invoice_identifier'], @@ -176,7 +169,7 @@ def create_paypal_payment_invoice(invoice_identifier): raise BadRequestError({'source': ''}, 'Bad Request Error') event_invoice = safe_query( - db, EventInvoice, 'identifier', invoice_identifier, 'identifier' + EventInvoice, 'identifier', invoice_identifier, 'identifier' ) status, response = PayPalPaymentsManager.create_payment( event_invoice, return_url, cancel_url @@ -203,7 +196,7 @@ def charge_paypal_payment_invoice(invoice_identifier): except Exception as e: raise BadRequestError({'source': e}, 'Bad Request Error') event_invoice = safe_query( - db, EventInvoice, 'identifier', invoice_identifier, 'identifier' + EventInvoice, 'identifier', invoice_identifier, 'identifier' ) # save the paypal payment_id with the order event_invoice.paypal_token = paypal_payment_id diff --git a/app/api/event_statistics.py b/app/api/event_statistics.py index ff5e0cf9c1..35fcabe3b6 100644 --- a/app/api/event_statistics.py +++ b/app/api/event_statistics.py @@ -20,7 +20,7 @@ def before_get_object(self, view_kwargs): """ if view_kwargs.get('identifier'): event = safe_query( - self, Event, 'identifier', view_kwargs['identifier'], 'identifier' + Event, 'identifier', view_kwargs['identifier'], 'identifier' ) view_kwargs['id'] = event.id diff --git a/app/api/event_sub_topics.py b/app/api/event_sub_topics.py index d24bd4a6b3..28f330afc5 100644 --- a/app/api/event_sub_topics.py +++ b/app/api/event_sub_topics.py @@ -53,7 +53,7 @@ def query(self, view_kwargs): query_ = self.session.query(EventSubTopic) if view_kwargs.get('event_topic_id'): event_topic = safe_query( - self, EventTopic, 'id', view_kwargs['event_topic_id'], 'event_topic_id' + EventTopic, 'id', view_kwargs['event_topic_id'], 'event_topic_id' ) query_ = query_.join(EventTopic).filter(EventTopic.id == event_topic.id) return query_ @@ -83,16 +83,12 @@ 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'): - 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.event_sub_topic_id: view_kwargs['id'] = event.event_sub_topic_id else: @@ -100,7 +96,6 @@ def before_get_object(self, view_kwargs): if view_kwargs.get('custom_placeholder_id'): custom_placeholder = safe_query( - self, CustomPlaceholder, 'id', view_kwargs['custom_placeholder_id'], diff --git a/app/api/event_topics.py b/app/api/event_topics.py index 089d834d81..1730689274 100644 --- a/app/api/event_topics.py +++ b/app/api/event_topics.py @@ -73,16 +73,12 @@ 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'): - 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.event_topic_id: view_kwargs['id'] = event.event_topic_id else: @@ -90,7 +86,6 @@ def before_get_object(self, view_kwargs): if view_kwargs.get('event_sub_topic_id'): event_sub_topic = safe_query( - self, EventSubTopic, 'id', view_kwargs['event_sub_topic_id'], diff --git a/app/api/event_types.py b/app/api/event_types.py index 1e6e72b7ea..ddfb6c4037 100644 --- a/app/api/event_types.py +++ b/app/api/event_types.py @@ -32,16 +32,12 @@ 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'): - 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.event_type_id: view_kwargs['id'] = event.event_type_id else: diff --git a/app/api/events.py b/app/api/events.py index dfd04a16e0..50a44652ff 100644 --- a/app/api/events.py +++ b/app/api/events.py @@ -196,7 +196,7 @@ def query(self, view_kwargs): if view_kwargs.get('user_id') and 'GET' in request.method: if not has_access('is_user_itself', user_id=int(view_kwargs['user_id'])): raise ForbiddenException({'source': ''}, 'Access Forbidden') - user = safe_query(db, User, 'id', view_kwargs['user_id'], 'user_id') + user = safe_query(User, 'id', view_kwargs['user_id'], 'user_id') query_ = ( query_.join(Event.roles) .filter_by(user_id=user.id) @@ -209,9 +209,7 @@ def query(self, view_kwargs): 'is_user_itself', user_id=int(view_kwargs['user_owner_id']) ): raise ForbiddenException({'source': ''}, 'Access Forbidden') - user = safe_query( - db, User, 'id', view_kwargs['user_owner_id'], 'user_owner_id' - ) + user = safe_query(User, 'id', view_kwargs['user_owner_id'], 'user_owner_id') query_ = ( query_.join(Event.roles) .filter_by(user_id=user.id) @@ -225,7 +223,7 @@ def query(self, view_kwargs): ): raise ForbiddenException({'source': ''}, 'Access Forbidden') user = safe_query( - db, User, 'id', view_kwargs['user_organizer_id'], 'user_organizer_id' + User, 'id', view_kwargs['user_organizer_id'], 'user_organizer_id' ) query_ = ( query_.join(Event.roles) @@ -240,7 +238,7 @@ def query(self, view_kwargs): ): raise ForbiddenException({'source': ''}, 'Access Forbidden') user = safe_query( - db, User, 'id', view_kwargs['user_coorganizer_id'], 'user_coorganizer_id' + User, 'id', view_kwargs['user_coorganizer_id'], 'user_coorganizer_id' ) query_ = ( query_.join(Event.roles) @@ -255,11 +253,7 @@ def query(self, view_kwargs): ): raise ForbiddenException({'source': ''}, 'Access Forbidden') user = safe_query( - db, - User, - 'id', - view_kwargs['user_track_organizer_id'], - 'user_organizer_id', + User, 'id', view_kwargs['user_track_organizer_id'], 'user_organizer_id', ) query_ = ( query_.join(Event.roles) @@ -274,7 +268,7 @@ def query(self, view_kwargs): ): raise ForbiddenException({'source': ''}, 'Access Forbidden') user = safe_query( - db, User, 'id', view_kwargs['user_registrar_id'], 'user_registrar_id' + User, 'id', view_kwargs['user_registrar_id'], 'user_registrar_id' ) query_ = ( query_.join(Event.roles) @@ -289,7 +283,7 @@ def query(self, view_kwargs): ): raise ForbiddenException({'source': ''}, 'Access Forbidden') user = safe_query( - db, User, 'id', view_kwargs['user_moderator_id'], 'user_moderator_id' + User, 'id', view_kwargs['user_moderator_id'], 'user_moderator_id' ) query_ = ( query_.join(Event.roles) @@ -304,7 +298,7 @@ def query(self, view_kwargs): ): raise ForbiddenException({'source': ''}, 'Access Forbidden') user = safe_query( - db, User, 'id', view_kwargs['user_marketer_id'], 'user_marketer_id' + User, 'id', view_kwargs['user_marketer_id'], 'user_marketer_id' ) query_ = ( query_.join(Event.roles) @@ -319,7 +313,7 @@ def query(self, view_kwargs): ): raise ForbiddenException({'source': ''}, 'Access Forbidden') user = safe_query( - db, User, 'id', view_kwargs['user_sales_admin_id'], 'user_sales_admin_id' + User, 'id', view_kwargs['user_sales_admin_id'], 'user_sales_admin_id' ) query_ = ( query_.join(Event.roles) @@ -416,13 +410,11 @@ def get_id(view_kwargs): :return: """ if view_kwargs.get('identifier'): - event = safe_query( - db, Event, 'identifier', view_kwargs['identifier'], 'identifier' - ) + event = safe_query(Event, 'identifier', view_kwargs['identifier'], 'identifier') view_kwargs['id'] = event.id if view_kwargs.get('sponsor_id') is not None: - sponsor = safe_query(db, Sponsor, 'id', view_kwargs['sponsor_id'], 'sponsor_id') + sponsor = safe_query(Sponsor, 'id', view_kwargs['sponsor_id'], 'sponsor_id') if sponsor.event_id is not None: view_kwargs['id'] = sponsor.event_id else: @@ -430,7 +422,6 @@ def get_id(view_kwargs): if view_kwargs.get('user_favourite_event_id') is not None: user_favourite_event = safe_query( - db, UserFavouriteEvent, 'id', view_kwargs['user_favourite_event_id'], @@ -443,7 +434,7 @@ def get_id(view_kwargs): if view_kwargs.get('copyright_id') is not None: copyright = safe_query( - db, EventCopyright, 'id', view_kwargs['copyright_id'], 'copyright_id' + EventCopyright, 'id', view_kwargs['copyright_id'], 'copyright_id' ) if copyright.event_id is not None: view_kwargs['id'] = copyright.event_id @@ -451,7 +442,7 @@ def get_id(view_kwargs): view_kwargs['id'] = None if view_kwargs.get('track_id') is not None: - track = safe_query(db, Track, 'id', view_kwargs['track_id'], 'track_id') + track = safe_query(Track, 'id', view_kwargs['track_id'], 'track_id') if track.event_id is not None: view_kwargs['id'] = track.event_id else: @@ -459,7 +450,7 @@ def get_id(view_kwargs): if view_kwargs.get('session_type_id') is not None: session_type = safe_query( - db, SessionType, 'id', view_kwargs['session_type_id'], 'session_type_id' + SessionType, 'id', view_kwargs['session_type_id'], 'session_type_id' ) if session_type.event_id is not None: view_kwargs['id'] = session_type.event_id @@ -467,9 +458,7 @@ def get_id(view_kwargs): view_kwargs['id'] = None if view_kwargs.get('faq_type_id') is not None: - faq_type = safe_query( - db, FaqType, 'id', view_kwargs['faq_type_id'], 'faq_type_id' - ) + faq_type = safe_query(FaqType, 'id', view_kwargs['faq_type_id'], 'faq_type_id') if faq_type.event_id is not None: view_kwargs['id'] = faq_type.event_id else: @@ -477,7 +466,7 @@ def get_id(view_kwargs): if view_kwargs.get('event_invoice_id') is not None: event_invoice = safe_query( - db, EventInvoice, 'id', view_kwargs['event_invoice_id'], 'event_invoice_id' + EventInvoice, 'id', view_kwargs['event_invoice_id'], 'event_invoice_id' ) if event_invoice.event_id is not None: view_kwargs['id'] = event_invoice.event_id @@ -486,7 +475,6 @@ def get_id(view_kwargs): if view_kwargs.get('event_invoice_identifier') is not None: event_invoice = safe_query( - db, EventInvoice, 'identifier', view_kwargs['event_invoice_identifier'], @@ -499,7 +487,7 @@ def get_id(view_kwargs): if view_kwargs.get('discount_code_id') is not None: discount_code = safe_query( - db, DiscountCode, 'id', view_kwargs['discount_code_id'], 'discount_code_id' + DiscountCode, 'id', view_kwargs['discount_code_id'], 'discount_code_id' ) if discount_code.event_id is not None: view_kwargs['id'] = discount_code.event_id @@ -507,7 +495,7 @@ def get_id(view_kwargs): view_kwargs['id'] = None if view_kwargs.get('session_id') is not None: - sessions = safe_query(db, Session, 'id', view_kwargs['session_id'], 'session_id') + sessions = safe_query(Session, 'id', view_kwargs['session_id'], 'session_id') if sessions.event_id is not None: view_kwargs['id'] = sessions.event_id else: @@ -515,7 +503,7 @@ def get_id(view_kwargs): if view_kwargs.get('social_link_id') is not None: social_link = safe_query( - db, SocialLink, 'id', view_kwargs['social_link_id'], 'social_link_id' + SocialLink, 'id', view_kwargs['social_link_id'], 'social_link_id' ) if social_link.event_id is not None: view_kwargs['id'] = social_link.event_id @@ -523,7 +511,7 @@ def get_id(view_kwargs): view_kwargs['id'] = None if view_kwargs.get('tax_id') is not None: - tax = safe_query(db, Tax, 'id', view_kwargs['tax_id'], 'tax_id') + tax = safe_query(Tax, 'id', view_kwargs['tax_id'], 'tax_id') if tax.event_id is not None: view_kwargs['id'] = tax.event_id else: @@ -531,7 +519,6 @@ def get_id(view_kwargs): if view_kwargs.get('stripe_authorization_id') is not None: stripe_authorization = safe_query( - db, StripeAuthorization, 'id', view_kwargs['stripe_authorization_id'], @@ -562,7 +549,7 @@ def get_id(view_kwargs): if view_kwargs.get('speakers_call_id') is not None: speakers_call = safe_query( - db, SpeakersCall, 'id', view_kwargs['speakers_call_id'], 'speakers_call_id' + SpeakersCall, 'id', view_kwargs['speakers_call_id'], 'speakers_call_id' ) if speakers_call.event_id is not None: view_kwargs['id'] = speakers_call.event_id @@ -570,7 +557,7 @@ def get_id(view_kwargs): view_kwargs['id'] = None if view_kwargs.get('ticket_id') is not None: - ticket = safe_query(db, Ticket, 'id', view_kwargs['ticket_id'], 'ticket_id') + ticket = safe_query(Ticket, 'id', view_kwargs['ticket_id'], 'ticket_id') if ticket.event_id is not None: view_kwargs['id'] = ticket.event_id else: @@ -578,7 +565,7 @@ def get_id(view_kwargs): if view_kwargs.get('ticket_tag_id') is not None: ticket_tag = safe_query( - db, TicketTag, 'id', view_kwargs['ticket_tag_id'], 'ticket_tag_id' + TicketTag, 'id', view_kwargs['ticket_tag_id'], 'ticket_tag_id' ) if ticket_tag.event_id is not None: view_kwargs['id'] = ticket_tag.event_id @@ -587,7 +574,7 @@ def get_id(view_kwargs): if view_kwargs.get('role_invite_id') is not None: role_invite = safe_query( - db, RoleInvite, 'id', view_kwargs['role_invite_id'], 'role_invite_id' + RoleInvite, 'id', view_kwargs['role_invite_id'], 'role_invite_id' ) if role_invite.event_id is not None: view_kwargs['id'] = role_invite.event_id @@ -596,7 +583,6 @@ def get_id(view_kwargs): if view_kwargs.get('users_events_role_id') is not None: users_events_role = safe_query( - db, UsersEventsRoles, 'id', view_kwargs['users_events_role_id'], @@ -607,7 +593,7 @@ def get_id(view_kwargs): if view_kwargs.get('access_code_id') is not None: access_code = safe_query( - db, AccessCode, 'id', view_kwargs['access_code_id'], 'access_code_id' + AccessCode, 'id', view_kwargs['access_code_id'], 'access_code_id' ) if access_code.event_id is not None: view_kwargs['id'] = access_code.event_id @@ -670,7 +656,7 @@ def get_id(view_kwargs): if view_kwargs.get('attendee_id'): attendee = safe_query( - db, TicketHolder, 'id', view_kwargs['attendee_id'], 'attendee_id' + TicketHolder, 'id', view_kwargs['attendee_id'], 'attendee_id' ) if attendee.event_id is not None: view_kwargs['id'] = attendee.event_id @@ -679,7 +665,7 @@ def get_id(view_kwargs): if view_kwargs.get('custom_form_id') is not None: custom_form = safe_query( - db, CustomForms, 'id', view_kwargs['custom_form_id'], 'custom_form_id' + CustomForms, 'id', view_kwargs['custom_form_id'], 'custom_form_id' ) if custom_form.event_id is not None: view_kwargs['id'] = custom_form.event_id @@ -687,7 +673,7 @@ def get_id(view_kwargs): view_kwargs['id'] = None if view_kwargs.get('faq_id') is not None: - faq = safe_query(db, Faq, 'id', view_kwargs['faq_id'], 'faq_id') + faq = safe_query(Faq, 'id', view_kwargs['faq_id'], 'faq_id') if faq.event_id is not None: view_kwargs['id'] = faq.event_id else: @@ -695,7 +681,7 @@ def get_id(view_kwargs): if view_kwargs.get('order_identifier') is not None: order = safe_query( - db, Order, 'identifier', view_kwargs['order_identifier'], 'order_identifier' + Order, 'identifier', view_kwargs['order_identifier'], 'order_identifier' ) if order.event_id is not None: view_kwargs['id'] = order.event_id @@ -703,9 +689,7 @@ def get_id(view_kwargs): view_kwargs['id'] = None if view_kwargs.get('feedback_id') is not None: - feedback = safe_query( - db, Feedback, 'id', view_kwargs['feedback_id'], 'feedback_id' - ) + feedback = safe_query(Feedback, 'id', view_kwargs['feedback_id'], 'feedback_id') if feedback.event_id is not None: view_kwargs['id'] = feedback.event_id else: @@ -744,11 +728,7 @@ def before_get_object(self, view_kwargs): if view_kwargs.get('order_identifier') is not None: order = safe_query( - self, - Order, - 'identifier', - view_kwargs['order_identifier'], - 'order_identifier', + Order, 'identifier', view_kwargs['order_identifier'], 'order_identifier', ) if order.event_id is not None: view_kwargs['id'] = order.event_id @@ -849,7 +829,7 @@ class EventRelationship(ResourceRelationship): def before_get_object(self, view_kwargs): if view_kwargs.get('identifier'): event = safe_query( - db, Event, 'identifier', view_kwargs['identifier'], 'identifier' + Event, 'identifier', view_kwargs['identifier'], 'identifier' ) view_kwargs['id'] = event.id diff --git a/app/api/faq_types.py b/app/api/faq_types.py index 24b4ea66c4..ec28db4d4f 100644 --- a/app/api/faq_types.py +++ b/app/api/faq_types.py @@ -42,7 +42,7 @@ def query(self, view_kwargs): :return: """ query_ = self.session.query(FaqType) - query_ = event_query(self, query_, view_kwargs) + query_ = event_query(query_, view_kwargs) return query_ view_kwargs = True @@ -66,7 +66,7 @@ def before_get_object(self, view_kwargs): :return: """ if view_kwargs.get('faq_id'): - faq = safe_query(self, Faq, 'id', view_kwargs['faq_id'], 'faq_id') + faq = safe_query(Faq, 'id', view_kwargs['faq_id'], 'faq_id') if faq.faq_type_id: view_kwargs['id'] = faq.faq_type_id else: diff --git a/app/api/faqs.py b/app/api/faqs.py index f28c6abbe9..f38c6dab37 100644 --- a/app/api/faqs.py +++ b/app/api/faqs.py @@ -50,10 +50,10 @@ def query(self, view_kwargs): :return: """ query_ = self.session.query(Faq) - query_ = event_query(self, query_, view_kwargs) + query_ = event_query(query_, view_kwargs) if view_kwargs.get('faq_type_id') is not None: faq_type = safe_query( - self, FaqType, 'id', view_kwargs['faq_type_id'], 'faq_type_id' + FaqType, 'id', view_kwargs['faq_type_id'], 'faq_type_id' ) query_ = query_.join(FaqType).filter(FaqType.id == faq_type.id) return query_ diff --git a/app/api/feedbacks.py b/app/api/feedbacks.py index 92b0eaaeeb..ef4922df0d 100644 --- a/app/api/feedbacks.py +++ b/app/api/feedbacks.py @@ -85,21 +85,19 @@ def query(self, view_kwargs): query_ = self.session.query(Feedback) if view_kwargs.get('user_id'): # feedbacks under an user - 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, User.id == Feedback.user_id).filter( User.id == user.id ) elif view_kwargs.get('session_id'): # feedbacks under a session - session = safe_query( - self, Session, 'id', view_kwargs['session_id'], 'session_id' - ) + session = safe_query(Session, 'id', view_kwargs['session_id'], 'session_id') query_ = query_.join(Session, Session.id == Feedback.session_id).filter( Session.id == session.id ) else: # feedbacks under an event - query_ = event_query(self, query_, view_kwargs) + query_ = event_query(query_, view_kwargs) return query_ view_kwargs = True @@ -123,18 +121,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: - feedback = safe_query(self, Feedback, 'event_id', event.id, 'event_id') + feedback = safe_query(Feedback, 'event_id', event.id, 'event_id') view_kwargs['id'] = feedback.id def before_update_object(self, feedback, data, view_kwargs): diff --git a/app/api/helpers/db.py b/app/api/helpers/db.py index 00ae1a40d7..eef6d11801 100644 --- a/app/api/helpers/db.py +++ b/app/api/helpers/db.py @@ -28,32 +28,27 @@ def save_to_db(item, msg="Saved to db", print_error=True): return False +def safe_query_by_id(model, id): + return safe_query_without_soft_deleted_entries(model, 'id', id, 'id') + + def safe_query_without_soft_deleted_entries( - self, model, column_name, value, parameter_name + model, column_name, value, parameter_name, filter_deleted=True ): """ Wrapper query to properly raise exception after filtering the soft deleted entries - :param self: :param model: db Model to be queried :param column_name: name of the column to be queried for the given value :param value: value to be queried against the given column name, e.g view_kwargs['event_id'] :param parameter_name: Name of parameter to be printed in json-api error message eg 'event_id' + :param filter_deleted: Deleted records are filtered if set to true :return: """ try: - if hasattr(model, 'deleted_at'): - record = ( - self.session.query(model) - .filter(getattr(model, column_name) == value) - .filter_by(deleted_at=None) - .one() - ) - else: - record = ( - self.session.query(model) - .filter(getattr(model, column_name) == value) - .one() - ) + record = model.query.filter(getattr(model, column_name) == value) + if filter_deleted and hasattr(model, 'deleted_at'): + record = record.filter_by(deleted_at=None) + record = record.one() except NoResultFound: raise ObjectNotFound( {'parameter': '{}'.format(parameter_name)}, @@ -63,29 +58,23 @@ def safe_query_without_soft_deleted_entries( return record -def safe_query(self, model, column_name, value, parameter_name): +def safe_query(model, column_name, value, parameter_name): """ Wrapper query to properly raise exception - :param self: :param model: db Model to be queried :param column_name: name of the column to be queried for the given value :param value: value to be queried against the given column name, e.g view_kwargs['event_id'] :param parameter_name: Name of parameter to be printed in json-api error message eg 'event_id' :return: """ - try: - record = self.session.query(model).filter(getattr(model, column_name) == value) - if request.args.get('get_trashed') != 'true': - if hasattr(model, 'deleted_at'): - record = record.filter(model.deleted_at == None) - record = record.one() - except NoResultFound: - raise ObjectNotFound( - {'parameter': '{}'.format(parameter_name)}, - "{}: {} not found".format(model.__name__, value), - ) - else: - return record + return safe_query_without_soft_deleted_entries( + model, + column_name, + value, + parameter_name, + # TODO(Areeb): Check that only admin can pass this parameter + request.args.get('get_trashed') != 'true', + ) def get_or_create(model, **kwargs): diff --git a/app/api/helpers/order.py b/app/api/helpers/order.py index 4d2ab38b62..1ea3a28b7d 100644 --- a/app/api/helpers/order.py +++ b/app/api/helpers/order.py @@ -8,12 +8,14 @@ get_count, safe_query_without_soft_deleted_entries, save_to_db, + safe_query_by_id, ) from app.api.helpers.errors import UnprocessableEntityError from app.api.helpers.exceptions import ConflictException, UnprocessableEntity from app.api.helpers.files import create_save_pdf from app.api.helpers.storage import UPLOAD_PATHS from app.models import db +from app.models.discount_code import DiscountCode from app.models.order import OrderTicket from app.models.ticket import Ticket from app.models.ticket_fee import TicketFees @@ -138,7 +140,7 @@ def create_onsite_attendees_for_order(data): quantity = int(on_site_ticket['quantity']) ticket = safe_query_without_soft_deleted_entries( - db, Ticket, 'id', ticket_id, 'ticket_id' + Ticket, 'id', ticket_id, 'ticket_id' ) ticket_sold_count = get_count( @@ -187,6 +189,7 @@ def calculate_order_amount(tickets, discount_code=None): from app.api.helpers.ticketing import TicketingManager if discount_code: + discount_code = safe_query_by_id(DiscountCode, discount_code) if not TicketingManager.match_discount_quantity(discount_code, tickets, None): raise UnprocessableEntityError( {'source': 'discount-code'}, 'Discount Usage Exceeded' @@ -202,9 +205,7 @@ def calculate_order_amount(tickets, discount_code=None): ticket_identifier = ticket_info['id'] quantity = ticket_info.get('quantity', 1) # Default to single ticket - ticket = safe_query_without_soft_deleted_entries( - db, Ticket, 'id', ticket_identifier, 'id' - ) + ticket = safe_query_by_id(Ticket, ticket_identifier) if not event: event = ticket.event diff --git a/app/api/helpers/payment.py b/app/api/helpers/payment.py index 69efa8ea09..a75ec0545b 100644 --- a/app/api/helpers/payment.py +++ b/app/api/helpers/payment.py @@ -11,7 +11,6 @@ from app.api.helpers.db import safe_query, save_to_db from app.api.helpers.exceptions import ConflictException, ForbiddenException from app.api.helpers.utilities import represents_int -from app.models import db from app.models.order import Order from app.models.stripe_authorization import StripeAuthorization from app.settings import Environment, get_settings @@ -310,7 +309,7 @@ def create_source(amount, currency, redirect_return_uri): @staticmethod def charge_source(order_identifier): - order = safe_query(db, Order, 'identifier', order_identifier, 'identifier') + order = safe_query(Order, 'identifier', order_identifier, 'identifier') stripe.api_key = get_settings()['alipay_secret_key'] charge = stripe.Charge.create( amount=int(order.amount), @@ -333,7 +332,7 @@ def charge_payment(order_identifier, token): else: omise.api_secret = get_settings()['omise_test_secret'] omise.api_public = get_settings()['omise_test_public'] - order = safe_query(db, Order, 'identifier', order_identifier, 'identifier') + order = safe_query(Order, 'identifier', order_identifier, 'identifier') charge = omise.Charge.create( amount=int(round(order.amount)), currency=order.event.payment_currency, diff --git a/app/api/helpers/query.py b/app/api/helpers/query.py index 16de936294..449d67dae9 100644 --- a/app/api/helpers/query.py +++ b/app/api/helpers/query.py @@ -11,7 +11,6 @@ def event_query( - self, query_, view_kwargs, event_id='event_id', @@ -21,7 +20,6 @@ def event_query( """ Queries the event according to 'event_id' and 'event_identifier' and joins for the query For draft events, if the user is not logged in or does not have required permissions, a 404 is raised - :param self: :param event_id: String representing event_id in the view_kwargs :param event_identifier: String representing event_identifier in the view_kwargs :param query_: Query object @@ -30,7 +28,7 @@ def event_query( :return: """ 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) if event.state != 'published' and ( 'Authorization' not in request.headers or not has_access(permission, event_id=event.id) @@ -42,7 +40,7 @@ def event_query( query_ = query_.join(Event).filter(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.state != 'published' and ( 'Authorization' not in request.headers @@ -56,15 +54,6 @@ def event_query( return query_ -# TODO: Unused function. Remove -def get_upcoming_events(): - return ( - Event.query.filter(Event.starts_at >= datetime.datetime.now()) - .filter(Event.ends_at >= datetime.datetime.now()) - .filter_by(deleted_at=None) - ) - - def get_user_event_roles_by_role_name(event_id, role_name): role = Role.query.filter_by(name=role_name).first() return UsersEventsRoles.query.filter_by(event_id=event_id).filter( diff --git a/app/api/helpers/tasks.py b/app/api/helpers/tasks.py index 028f2a862a..54338b066d 100644 --- a/app/api/helpers/tasks.py +++ b/app/api/helpers/tasks.py @@ -177,7 +177,7 @@ def resize_event_images_task(self, event_id, original_image_url): @celery.task(base=RequestContextTask, name='resize.user.images', bind=True) def resize_user_images_task(self, user_id, original_image_url): - user = safe_query(db, User, 'id', user_id, 'user_id') + user = safe_query(User, 'id', user_id, 'user_id') try: logging.info('User image resizing tasks started {}'.format(original_image_url)) uploaded_images = create_save_image_sizes( @@ -245,7 +245,7 @@ def resize_speaker_images_task(self, speaker_id, photo_url): @celery.task(base=RequestContextTask, name='export.event', bind=True) def export_event_task(self, email, event_id, settings): - event = safe_query(db, Event, 'id', event_id, 'event_id') + event = safe_query(Event, 'id', event_id, 'event_id') user = db.session.query(User).filter_by(email=email).first() smtp_encryption = get_settings()['smtp_encryption'] try: @@ -307,7 +307,7 @@ def import_event_task(self, email, file, source_type, creator_id): @celery.task(base=RequestContextTask, name='export.ical', bind=True) def export_ical_task(self, event_id, temp=True): - event = safe_query(db, Event, 'id', event_id, 'event_id') + event = safe_query(Event, 'id', event_id, 'event_id') try: if temp: @@ -349,7 +349,7 @@ def export_ical_task(self, event_id, temp=True): @celery.task(base=RequestContextTask, name='export.xcal', bind=True) def export_xcal_task(self, event_id, temp=True): - event = safe_query(db, Event, 'id', event_id, 'event_id') + event = safe_query(Event, 'id', event_id, 'event_id') try: if temp: @@ -391,7 +391,7 @@ def export_xcal_task(self, event_id, temp=True): @celery.task(base=RequestContextTask, name='export.pentabarf', bind=True) def export_pentabarf_task(self, event_id, temp=True): - event = safe_query(db, Event, 'id', event_id, 'event_id') + event = safe_query(Event, 'id', event_id, 'event_id') try: if temp: diff --git a/app/api/microlocations.py b/app/api/microlocations.py index 8155223e9d..827c484408 100644 --- a/app/api/microlocations.py +++ b/app/api/microlocations.py @@ -48,11 +48,9 @@ def query(self, view_kwargs): :return: """ query_ = self.session.query(Microlocation) - query_ = event_query(self, query_, view_kwargs) + query_ = event_query(query_, view_kwargs) if view_kwargs.get('session_id'): - session = safe_query( - self, Session, 'id', view_kwargs['session_id'], 'session_id' - ) + session = safe_query(Session, 'id', view_kwargs['session_id'], 'session_id') query_ = query_.join(Session).filter(Session.id == session.id) return query_ @@ -78,9 +76,7 @@ def before_get_object(self, view_kwargs): :return: """ if view_kwargs.get('session_id') is not None: - session = safe_query( - self, Session, 'id', view_kwargs['session_id'], 'session_id' - ) + session = safe_query(Session, 'id', view_kwargs['session_id'], 'session_id') if session.microlocation_id is not None: view_kwargs['id'] = session.microlocation_id else: diff --git a/app/api/notifications.py b/app/api/notifications.py index 8d5ad85c7e..82c89a4d0d 100644 --- a/app/api/notifications.py +++ b/app/api/notifications.py @@ -32,7 +32,7 @@ def query(self, view_kwargs): """ query_ = self.session.query(Notification) 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_ @@ -44,7 +44,7 @@ def before_create_object(self, data, view_kwargs): :return: """ if view_kwargs.get('user_id') is not None: - user = safe_query(self, User, 'id', view_kwargs['user_id'], 'user_id') + user = safe_query(User, 'id', view_kwargs['user_id'], 'user_id') data['user_id'] = user.id view_kwargs = True @@ -68,7 +68,6 @@ class NotificationDetail(ResourceDetail): def before_get(self, args, kwargs): if kwargs.get('notification_action_id'): notification_action = safe_query( - db, NotificationAction, 'id', kwargs['notification_action_id'], @@ -84,7 +83,6 @@ def before_get_object(self, view_kwargs): """ if view_kwargs.get('notification_action_id'): notification_action = safe_query( - self, NotificationAction, 'id', view_kwargs['notification_action_id'], diff --git a/app/api/order_statistics/events.py b/app/api/order_statistics/events.py index 49790e63c9..4c01508c05 100644 --- a/app/api/order_statistics/events.py +++ b/app/api/order_statistics/events.py @@ -195,7 +195,7 @@ class OrderStatisticsEventDetail(ResourceDetail): def before_get_object(self, view_kwargs): if view_kwargs.get('identifier'): event = safe_query( - self, Event, 'identifier', view_kwargs['identifier'], 'identifier' + Event, 'identifier', view_kwargs['identifier'], 'identifier' ) view_kwargs['id'] = event.id diff --git a/app/api/orders.py b/app/api/orders.py index b8ea55b0db..dfee399e5a 100644 --- a/app/api/orders.py +++ b/app/api/orders.py @@ -203,7 +203,7 @@ def before_create_object(self, data, view_kwargs): 'is_coorganizer', event_id=data['event'] ): discount_code = safe_query_without_soft_deleted_entries( - self, DiscountCode, 'id', data['discount_code'], 'discount_code_id' + DiscountCode, 'id', data['discount_code'], 'discount_code_id' ) if not discount_code.is_active: raise UnprocessableEntity( @@ -357,7 +357,7 @@ def query(self, view_kwargs): query_ = self.session.query(Order) if view_kwargs.get('user_id'): # orders under a user - 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.id == Order.user_id).filter( @@ -365,7 +365,7 @@ def query(self, view_kwargs): ) else: # orders under an event - query_ = event_query(self, query_, view_kwargs) + query_ = event_query(query_, view_kwargs) # expire the initializing orders if the time limit is over. orders = query_.all() @@ -395,20 +395,16 @@ def before_get_object(self, view_kwargs): """ if view_kwargs.get('attendee_id'): attendee = safe_query( - self, TicketHolder, 'id', view_kwargs['attendee_id'], 'attendee_id' + TicketHolder, 'id', view_kwargs['attendee_id'], 'attendee_id' ) view_kwargs['id'] = attendee.order.id 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', ) view_kwargs['id'] = order.id elif view_kwargs.get('id'): - order = safe_query(self, Order, 'id', view_kwargs['id'], 'id') + order = safe_query(Order, 'id', view_kwargs['id'], 'id') if not has_access( 'is_coorganizer_or_user_itself', @@ -675,11 +671,11 @@ def before_get(self, args, kwargs): """ if kwargs.get('order_identifier'): order = safe_query( - db, Order, 'identifier', kwargs['order_identifier'], 'order_identifier' + Order, 'identifier', kwargs['order_identifier'], 'order_identifier' ) kwargs['id'] = order.id elif kwargs.get('id'): - order = safe_query(db, Order, 'id', kwargs['id'], 'id') + order = safe_query(Order, 'id', kwargs['id'], 'id') if not has_access( 'is_coorganizer', event_id=order.event_id, user_id=order.user_id @@ -746,7 +742,7 @@ def create_paypal_payment(order_identifier): except TypeError: raise BadRequestError({'source': ''}, 'Bad Request Error') - order = safe_query(db, Order, 'identifier', order_identifier, 'identifier') + order = safe_query(Order, 'identifier', order_identifier, 'identifier') status, response = PayPalPaymentsManager.create_payment(order, return_url, cancel_url) if status: @@ -768,7 +764,7 @@ def verify_mobile_paypal_payment(order_identifier): payment_id = request.json['data']['attributes']['payment-id'] except TypeError: raise BadRequestError({'source': ''}, 'Bad Request Error') - order = safe_query(db, Order, 'identifier', order_identifier, 'identifier') + order = safe_query(Order, 'identifier', order_identifier, 'identifier') status, error = PayPalPaymentsManager.verify_payment(payment_id, order) return jsonify(status=status, error=error) @@ -784,7 +780,7 @@ def create_source(order_identifier): :return: The alipay redirection link. """ try: - order = safe_query(db, Order, 'identifier', order_identifier, 'identifier') + order = safe_query(Order, 'identifier', order_identifier, 'identifier') source_object = AliPayPaymentsManager.create_source( amount=int(order.amount), currency='usd', @@ -813,7 +809,7 @@ def alipay_return_uri(order_identifier): try: charge_response = AliPayPaymentsManager.charge_source(order_identifier) if charge_response.status == 'succeeded': - order = safe_query(db, Order, 'identifier', order_identifier, 'identifier') + order = safe_query(Order, 'identifier', order_identifier, 'identifier') order.status = 'completed' save_to_db(order) return redirect(make_frontend_url('/orders/{}/view'.format(order_identifier))) @@ -834,7 +830,7 @@ def omise_checkout(order_identifier): :return: JSON response of the payment status. """ token = request.form.get('omiseToken') - order = safe_query(db, Order, 'identifier', order_identifier, 'identifier') + order = safe_query(Order, 'identifier', order_identifier, 'identifier') order.status = 'completed' save_to_db(order) try: @@ -875,7 +871,7 @@ def initiate_transaction(order_identifier): :param order_identifier: :return: JSON response containing the signature & txn token """ - order = safe_query(db, Order, 'identifier', order_identifier, 'identifier') + order = safe_query(Order, 'identifier', order_identifier, 'identifier') paytm_mode = get_settings()['paytm_mode'] paytm_params = {} # body parameters diff --git a/app/api/panel_permissions.py b/app/api/panel_permissions.py index d458fd3fea..d92bd8b408 100644 --- a/app/api/panel_permissions.py +++ b/app/api/panel_permissions.py @@ -22,7 +22,6 @@ def query(self, view_kwargs): query_ = self.session.query(PanelPermission) if view_kwargs.get('custom_system_role_id'): role = safe_query( - self, CustomSysRole, 'id', view_kwargs['custom_system_role_id'], diff --git a/app/api/role_invites.py b/app/api/role_invites.py index c5f1c02c88..0025cece41 100644 --- a/app/api/role_invites.py +++ b/app/api/role_invites.py @@ -103,7 +103,7 @@ def query(self, view_kwargs): :return: """ query_ = self.session.query(RoleInvite) - query_ = event_query(self, query_, view_kwargs) + query_ = event_query(query_, view_kwargs) return query_ view_kwargs = True diff --git a/app/api/roles.py b/app/api/roles.py index 21da8c9e24..6e18167599 100644 --- a/app/api/roles.py +++ b/app/api/roles.py @@ -33,7 +33,7 @@ def before_get_object(self, view_kwargs): """ if view_kwargs.get('role_invite_id') is not None: role_invite = safe_query( - self, RoleInvite, 'id', view_kwargs['role_invite_id'], 'role_invite_id' + RoleInvite, 'id', view_kwargs['role_invite_id'], 'role_invite_id' ) if role_invite.role_id is not None: view_kwargs['id'] = role_invite.role_id @@ -42,7 +42,6 @@ def before_get_object(self, view_kwargs): if view_kwargs.get('users_events_role_id') is not None: users_events_role = safe_query( - self, UsersEventsRoles, 'id', view_kwargs['users_events_role_id'], diff --git a/app/api/session_types.py b/app/api/session_types.py index e87f7700d5..d3f733c54b 100644 --- a/app/api/session_types.py +++ b/app/api/session_types.py @@ -49,7 +49,7 @@ def query(self, view_kwargs): :return: """ query_ = self.session.query(SessionType) - query_ = event_query(self, query_, view_kwargs) + query_ = event_query(query_, view_kwargs) return query_ view_kwargs = True @@ -77,9 +77,7 @@ def before_get_object(self, view_kwargs): :return: """ if view_kwargs.get('session_id'): - session = safe_query( - self, Session, 'id', view_kwargs['session_id'], 'session_id' - ) + session = safe_query(Session, 'id', view_kwargs['session_id'], 'session_id') if session.session_type_id: view_kwargs['id'] = session.session_type_id else: diff --git a/app/api/sessions.py b/app/api/sessions.py index 0a26ea7bd8..ab28a88760 100644 --- a/app/api/sessions.py +++ b/app/api/sessions.py @@ -105,26 +105,22 @@ def query(self, view_kwargs): """ query_ = self.session.query(Session) if view_kwargs.get('track_id') is not None: - track = safe_query(self, Track, 'id', view_kwargs['track_id'], 'track_id') + track = safe_query(Track, 'id', view_kwargs['track_id'], 'track_id') query_ = query_.join(Track).filter(Track.id == track.id) if view_kwargs.get('session_type_id') is not None: session_type = safe_query( - self, SessionType, 'id', view_kwargs['session_type_id'], 'session_type_id' + SessionType, 'id', view_kwargs['session_type_id'], 'session_type_id' ) query_ = query_.join(SessionType).filter(SessionType.id == session_type.id) if view_kwargs.get('microlocation_id') is not None: microlocation = safe_query( - self, - Microlocation, - 'id', - view_kwargs['microlocation_id'], - 'microlocation_id', + Microlocation, 'id', view_kwargs['microlocation_id'], 'microlocation_id', ) query_ = query_.join(Microlocation).filter( Microlocation.id == microlocation.id ) if view_kwargs.get('user_id') is not None: - 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) .join(Speaker) @@ -135,11 +131,9 @@ def query(self, view_kwargs): ) ) ) - query_ = event_query(self, query_, view_kwargs) + query_ = event_query(query_, view_kwargs) if view_kwargs.get('speaker_id'): - speaker = safe_query( - self, Speaker, 'id', view_kwargs['speaker_id'], 'speaker_id' - ) + speaker = safe_query(Speaker, 'id', view_kwargs['speaker_id'], 'speaker_id') # session-speaker :: many-to-many relationship query_ = Session.query.filter(Session.speakers.any(id=speaker.id)) @@ -164,7 +158,7 @@ def before_get_object(self, view_kwargs): """ if view_kwargs.get('event_identifier'): event = safe_query( - self, Event, 'identifier', view_kwargs['event_identifier'], 'identifier' + Event, 'identifier', view_kwargs['event_identifier'], 'identifier' ) view_kwargs['event_id'] = event.id diff --git a/app/api/social_links.py b/app/api/social_links.py index d1f8ba3ce3..647588ddbb 100644 --- a/app/api/social_links.py +++ b/app/api/social_links.py @@ -40,7 +40,7 @@ def query(self, view_kwargs): :return: """ query_ = self.session.query(SocialLink) - query_ = event_query(self, query_, view_kwargs) + query_ = event_query(query_, view_kwargs) return query_ view_kwargs = True diff --git a/app/api/speakers.py b/app/api/speakers.py index 1bab2e370c..7de475b591 100644 --- a/app/api/speakers.py +++ b/app/api/speakers.py @@ -125,16 +125,14 @@ def query(self, view_kwargs): :return: """ query_ = self.session.query(Speaker) - query_ = event_query(self, query_, view_kwargs) + query_ = event_query(query_, view_kwargs) 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) if view_kwargs.get('session_id'): - session = safe_query( - self, Session, 'id', view_kwargs['session_id'], 'session_id' - ) + session = safe_query(Session, 'id', view_kwargs['session_id'], 'session_id') # session-speaker :: many-to-many relationship query_ = Speaker.query.filter(Speaker.sessions.any(id=session.id)) if 'Authorization' in request.headers and not has_access( diff --git a/app/api/sponsors.py b/app/api/sponsors.py index 519cfd7ea0..988eaeb96f 100644 --- a/app/api/sponsors.py +++ b/app/api/sponsors.py @@ -57,7 +57,7 @@ def query(self, view_kwargs): :return: """ query_ = self.session.query(Sponsor) - query_ = event_query(self, query_, view_kwargs) + query_ = event_query(query_, view_kwargs) return query_ view_kwargs = True diff --git a/app/api/stripe_authorization.py b/app/api/stripe_authorization.py index 1080262203..d57bcbce66 100644 --- a/app/api/stripe_authorization.py +++ b/app/api/stripe_authorization.py @@ -133,17 +133,13 @@ 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'): stripe_authorization = safe_query( - self, StripeAuthorization, 'event_id', view_kwargs['event_id'], 'event_id' + StripeAuthorization, 'event_id', view_kwargs['event_id'], 'event_id' ) view_kwargs['id'] = stripe_authorization.id @@ -187,14 +183,14 @@ def get_id(view_kwargs): if view_kwargs.get('event_identifier') is not None: event = safe_query( - db, Event, 'identifier', view_kwargs['event_identifier'], 'event_identifier' + Event, 'identifier', view_kwargs['event_identifier'], 'event_identifier' ) if event.id is not None: view_kwargs['event_id'] = event.id if view_kwargs.get('event_id') is not None: stripe_authorization = safe_query( - db, StripeAuthorization, 'event_id', view_kwargs['event_id'], 'event_id' + StripeAuthorization, 'event_id', view_kwargs['event_id'], 'event_id' ) view_kwargs['id'] = stripe_authorization.id return view_kwargs diff --git a/app/api/tax.py b/app/api/tax.py index 9c77ccc439..0ef761428f 100644 --- a/app/api/tax.py +++ b/app/api/tax.py @@ -99,18 +99,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: - tax = safe_query(self, Tax, 'event_id', event.id, 'event_id') + tax = safe_query(Tax, 'event_id', event.id, 'event_id') view_kwargs['id'] = tax.id def before_get(self, args, kwargs): diff --git a/app/api/ticket_tags.py b/app/api/ticket_tags.py index bde9425fed..c6d863b17f 100644 --- a/app/api/ticket_tags.py +++ b/app/api/ticket_tags.py @@ -49,9 +49,9 @@ def query(self, view_kwargs): """ query_ = self.session.query(TicketTag) 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') query_ = query_.join(ticket_tags_table).filter_by(ticket_id=ticket.id) - query_ = event_query(self, query_, view_kwargs) + query_ = event_query(query_, view_kwargs) return query_ view_kwargs = True diff --git a/app/api/tickets.py b/app/api/tickets.py index c78cb25a2e..b4fb6e3db6 100644 --- a/app/api/tickets.py +++ b/app/api/tickets.py @@ -138,35 +138,27 @@ def query(self, view_kwargs): if view_kwargs.get('ticket_tag_id'): ticket_tag = safe_query( - self, TicketTag, 'id', view_kwargs['ticket_tag_id'], 'ticket_tag_id' + TicketTag, 'id', view_kwargs['ticket_tag_id'], 'ticket_tag_id' ) query_ = query_.join(ticket_tags_table).filter_by(ticket_tag_id=ticket_tag.id) - query_ = event_query(self, query_, view_kwargs) + query_ = event_query(query_, view_kwargs) if view_kwargs.get('access_code_id'): access_code = safe_query( - self, AccessCode, 'id', view_kwargs['access_code_id'], 'access_code_id' + AccessCode, 'id', view_kwargs['access_code_id'], 'access_code_id' ) # access_code - ticket :: many-to-many relationship query_ = Ticket.query.filter(Ticket.access_codes.any(id=access_code.id)) if view_kwargs.get('discount_code_id'): discount_code = safe_query( - self, - DiscountCode, - 'id', - view_kwargs['discount_code_id'], - 'discount_code_id', + DiscountCode, 'id', view_kwargs['discount_code_id'], 'discount_code_id', ) # discount_code - ticket :: many-to-many relationship query_ = Ticket.query.filter(Ticket.discount_codes.any(id=discount_code.id)) 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', ) ticket_ids = [] for ticket in order.tickets: @@ -216,7 +208,7 @@ def before_get_object(self, view_kwargs): """ if view_kwargs.get('attendee_id') is not None: attendee = safe_query( - self, TicketHolder, 'id', view_kwargs['attendee_id'], 'attendee_id' + TicketHolder, 'id', view_kwargs['attendee_id'], 'attendee_id' ) if attendee.ticket_id is not None: view_kwargs['id'] = attendee.ticket_id diff --git a/app/api/tracks.py b/app/api/tracks.py index 8c8c41e17d..538f7014d7 100644 --- a/app/api/tracks.py +++ b/app/api/tracks.py @@ -47,7 +47,7 @@ def query(self, view_kwargs): :return: """ query_ = self.session.query(Track) - query_ = event_query(self, query_, view_kwargs) + query_ = event_query(query_, view_kwargs) return query_ view_kwargs = True @@ -68,9 +68,7 @@ def before_get_object(self, view_kwargs): :return: """ if view_kwargs.get('session_id'): - session = safe_query( - self, Session, 'id', view_kwargs['session_id'], 'session_id' - ) + session = safe_query(Session, 'id', view_kwargs['session_id'], 'session_id') if session.event_id: view_kwargs['id'] = session.track_id else: diff --git a/app/api/user_emails.py b/app/api/user_emails.py index 91054c64f7..fc5f0783b5 100644 --- a/app/api/user_emails.py +++ b/app/api/user_emails.py @@ -36,7 +36,7 @@ def query(self, view_kwargs): """ query_ = self.session.query(UserEmail) 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_ diff --git a/app/api/user_favourite_events.py b/app/api/user_favourite_events.py index 5d6386b556..2afc704817 100644 --- a/app/api/user_favourite_events.py +++ b/app/api/user_favourite_events.py @@ -69,7 +69,7 @@ def query(self, view_kwargs): """ query_ = self.session.query(UserFavouriteEvent) if view_kwargs.get('user_id') is not None: - 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) elif has_access('is_admin'): pass diff --git a/app/api/users.py b/app/api/users.py index 613a00ddeb..7c593c1c26 100644 --- a/app/api/users.py +++ b/app/api/users.py @@ -152,11 +152,7 @@ def before_get_object(self, view_kwargs): """ if view_kwargs.get('notification_id') is not None: notification = safe_query( - self, - Notification, - 'id', - view_kwargs['notification_id'], - 'notification_id', + Notification, 'id', view_kwargs['notification_id'], 'notification_id', ) if notification.user_id is not None: view_kwargs['id'] = notification.user_id @@ -165,7 +161,7 @@ def before_get_object(self, view_kwargs): if view_kwargs.get('feedback_id') is not None: feedback = safe_query( - self, Feedback, 'id', view_kwargs['feedback_id'], 'feedback_id' + Feedback, 'id', view_kwargs['feedback_id'], 'feedback_id' ) if feedback.user_id is not None: view_kwargs['id'] = feedback.user_id @@ -174,7 +170,7 @@ def before_get_object(self, view_kwargs): if view_kwargs.get('attendee_id') is not None: attendee = safe_query( - self, TicketHolder, 'id', view_kwargs['attendee_id'], 'attendee_id' + TicketHolder, 'id', view_kwargs['attendee_id'], 'attendee_id' ) if attendee.user is not None: if not has_access( @@ -187,11 +183,7 @@ def before_get_object(self, view_kwargs): if view_kwargs.get('event_invoice_id') is not None: 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.user_id is not None: view_kwargs['id'] = event_invoice.user_id @@ -200,7 +192,6 @@ def before_get_object(self, view_kwargs): if view_kwargs.get('event_invoice_identifier') is not None: event_invoice = safe_query( - self, EventInvoice, 'identifier', view_kwargs['event_invoice_identifier'], @@ -213,7 +204,6 @@ def before_get_object(self, view_kwargs): if view_kwargs.get('users_events_role_id') is not None: users_events_role = safe_query( - self, UsersEventsRoles, 'id', view_kwargs['users_events_role_id'], @@ -225,18 +215,14 @@ def before_get_object(self, view_kwargs): view_kwargs['id'] = None if view_kwargs.get('speaker_id') is not None: - speaker = safe_query( - self, Speaker, 'id', view_kwargs['speaker_id'], 'speaker_id' - ) + speaker = safe_query(Speaker, 'id', view_kwargs['speaker_id'], 'speaker_id') if speaker.user_id is not None: view_kwargs['id'] = speaker.user_id else: view_kwargs['id'] = None if view_kwargs.get('session_id') is not None: - session = safe_query( - self, Session, 'id', view_kwargs['session_id'], 'session_id' - ) + session = safe_query(Session, 'id', view_kwargs['session_id'], 'session_id') if session.creator_id is not None: view_kwargs['id'] = session.creator_id else: @@ -244,7 +230,7 @@ def before_get_object(self, view_kwargs): if view_kwargs.get('access_code_id') is not None: access_code = safe_query( - self, AccessCode, 'id', view_kwargs['access_code_id'], 'access_code_id' + AccessCode, 'id', view_kwargs['access_code_id'], 'access_code_id' ) if access_code.marketer_id is not None: view_kwargs['id'] = access_code.marketer_id @@ -252,7 +238,7 @@ def before_get_object(self, view_kwargs): view_kwargs['id'] = None if view_kwargs.get('event_id') is not None: - 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.owner is not None: view_kwargs['id'] = event.owner.id else: @@ -260,11 +246,7 @@ def before_get_object(self, view_kwargs): if view_kwargs.get('discount_code_id') is not None: discount_code = safe_query( - self, - DiscountCode, - 'id', - view_kwargs['discount_code_id'], - 'discount_code_id', + DiscountCode, 'id', view_kwargs['discount_code_id'], 'discount_code_id', ) if discount_code.marketer_id is not None: view_kwargs['id'] = discount_code.marketer_id @@ -273,7 +255,6 @@ def before_get_object(self, view_kwargs): if view_kwargs.get('email_notification_id') is not None: email_notification = safe_query( - self, EmailNotification, 'id', view_kwargs['email_notification_id'], diff --git a/tests/all/integration/api/helpers/order/test_calculate_order_amount.py b/tests/all/integration/api/helpers/order/test_calculate_order_amount.py index 2eeb11ac87..9998ab72cf 100644 --- a/tests/all/integration/api/helpers/order/test_calculate_order_amount.py +++ b/tests/all/integration/api/helpers/order/test_calculate_order_amount.py @@ -199,7 +199,7 @@ def test_discount_code(db): ) db.session.commit() - amount_data = calculate_order_amount([{'id': ticket.id}], discount_code) + amount_data = calculate_order_amount([{'id': ticket.id}], discount_code.id) assert amount_data['total'] == 90.0 assert amount_data['tax_included'] is None @@ -232,7 +232,7 @@ def test_multiple_tickets_discount(db): tickets_dict = _create_ticket_dict([ticket_a, ticket_b, ticket_c], [2, 3, 1]) - amount_data = calculate_order_amount(tickets_dict, discount) + amount_data = calculate_order_amount(tickets_dict, discount.id) assert amount_data['total'] == 1115.0 assert amount_data['discount'] == 793.7 @@ -268,3 +268,13 @@ def test_ticket_of_deleted_event(db): with pytest.raises(ObjectNotFound): calculate_order_amount([{'id': ticket.id}]) + + +def test_ticket_with_deleted_discount_code(db): + ticket = TicketSubFactory() + discount = DiscountCodeTicketSubFactory(deleted_at=datetime.now(), tickets=[ticket]) + + db.session.commit() + + with pytest.raises(ObjectNotFound): + calculate_order_amount([{'id': ticket.id}], discount.id) diff --git a/tests/all/integration/api/helpers/test_db.py b/tests/all/integration/api/helpers/test_db.py index 4667ac80ec..50c2e509f8 100644 --- a/tests/all/integration/api/helpers/test_db.py +++ b/tests/all/integration/api/helpers/test_db.py @@ -1,67 +1,85 @@ -import unittest +from datetime import datetime +import pytest from flask_rest_jsonapi.exceptions import ObjectNotFound -from app.api.helpers.db import get_count, get_or_create, safe_query, save_to_db -from tests.factories.attendee import AttendeeFactory -from tests.factories.event import EventFactoryBasic -from app.models import db +from app.api.helpers.db import ( + get_count, + get_or_create, + safe_query, + save_to_db, + safe_query_by_id, +) from app.models.event import Event from app.models.ticket_holder import TicketHolder -from tests.all.integration.utils import OpenEventTestCase +from tests.factories.attendee import AttendeeSubFactory +from tests.factories.event import EventFactoryBasic + + +def test_save_to_db(db): + """Method to test the function save_to_db""" + + obj = EventFactoryBasic() + save_to_db(obj) + event = Event.query.filter_by(id=obj.id).first() + assert event.id == obj.id + assert event == obj + + +def test_safe_query(db): + """Method to test the function safe_query""" + + event = EventFactoryBasic() + save_to_db(event) + obj = safe_query(Event, 'id', event.id, 'event_id') + assert event.id == obj.id + assert event == obj + + +def test_safe_query_exception(db): + """Method to test the exception in function safe_query""" + with pytest.raises(ObjectNotFound): + safe_query_by_id(Event, 1) -class TestDBHelperValidation(OpenEventTestCase): - def test_save_to_db(self): - """Method to test the function save_to_db""" - with self.app.test_request_context(): - obj = EventFactoryBasic() - save_to_db(obj) - event = db.session.query(Event).filter(Event.id == obj.id).first() - self.assertEqual(obj.name, event.name) +def test_get_or_create(db): + """Method to test the function get_or_create""" - def test_safe_query(self): - """Method to test the function safe_query""" + event = EventFactoryBasic() + save_to_db(event) + obj, is_created = get_or_create(Event, name=event.name) + assert event.id == obj.id + assert is_created is False - with self.app.test_request_context(): - event = EventFactoryBasic() - save_to_db(event) - obj = safe_query(db, Event, 'id', event.id, 'event_id') - self.assertEqual(obj.name, event.name) + obj, is_created = get_or_create( + Event, name="new event", starts_at=event.starts_at, ends_at=event.ends_at + ) + assert event.id != obj.id + assert is_created is True - def test_safe_query_exception(self): - """Method to test the exception in function safe_query""" - with self.app.test_request_context(): - self.assertRaises( - ObjectNotFound, lambda: safe_query(db, Event, 'id', 1, 'event_id') - ) +def test_get_count(db): + """Method to test the number of queries concerning a Model""" - def test_get_or_create(self): - """Method to test the function get_or_create""" + attendee = AttendeeSubFactory() + save_to_db(attendee) + assert get_count(TicketHolder.query) == 1 - with self.app.test_request_context(): - event = EventFactoryBasic() - save_to_db(event) - obj, is_created = get_or_create(Event, name=event.name) - self.assertEqual(event.id, obj.id) - self.assertFalse(is_created) - obj, is_created = get_or_create( - Event, name="new event", starts_at=event.starts_at, ends_at=event.ends_at - ) - self.assertNotEqual(event.id, obj.id) - self.assertTrue(is_created) +def test_filter_deleted_event(db): + event = EventFactoryBasic(deleted_at=datetime.now()) + db.session.commit() - def test_get_count(self): - """Method to test the number of queries concerning a Model""" + with pytest.raises(ObjectNotFound): + safe_query(Event, 'id', event.id, 'id') - with self.app.test_request_context(): - attendee = AttendeeFactory() - save_to_db(attendee) - self.assertEqual(get_count(TicketHolder.query), 1) +def test_allow_deleted_event_for_admin(db, app): + obj = EventFactoryBasic(deleted_at=datetime.now()) + db.session.commit() -if __name__ == '__main__': - unittest.main() + with app.test_request_context('?get_trashed=true'): + event = safe_query(Event, 'id', obj.id, 'id') + assert event.id == obj.id + assert event == obj diff --git a/tests/factories/attendee.py b/tests/factories/attendee.py index 5df7f736d1..ee2b4c9153 100644 --- a/tests/factories/attendee.py +++ b/tests/factories/attendee.py @@ -27,6 +27,10 @@ class Meta: modified_at = common.date_ +class AttendeeSubFactory(AttendeeFactoryBase): + event = factory.SubFactory(EventFactoryBasic) + + class AttendeeFactory(AttendeeFactoryBase): event = factory.RelatedFactory(EventFactoryBasic) ticket = factory.RelatedFactory(TicketFactory)