Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
147 changes: 74 additions & 73 deletions app/api/__init__.py
Original file line number Diff line number Diff line change
@@ -1,90 +1,90 @@
from app.api.access_codes import AccessCodeList, AccessCodeListPost, AccessCodeDetail, AccessCodeRelationshipRequired, \
AccessCodeRelationshipOptional
from app.api.activities import ActivityList, ActivityDetail
from app.api.admin_sales.discounted import AdminSalesDiscountedList
from app.api.admin_sales.events import AdminSalesByEventsList
from app.api.admin_sales.fees import AdminSalesFeesList
from app.api.admin_sales.invoices import AdminSalesInvoicesList
from app.api.admin_sales.locations import AdminSalesByLocationList
from app.api.admin_sales.marketer import AdminSalesByMarketerList
from app.api.admin_sales.organizer import AdminSalesByOrganizersList
from app.api.admin_statistics_api.events import AdminStatisticsEventDetail
from app.api.admin_statistics_api.mails import AdminStatisticsMailDetail
from app.api.admin_statistics_api.sessions import AdminStatisticsSessionDetail
from app.api.admin_statistics_api.users import AdminStatisticsUserDetail
from app.api.attendees import AttendeeList, AttendeeDetail, AttendeeRelationshipOptional, \
AttendeeRelationshipRequired, AttendeeListPost
from app.api.bootstrap import api
from app.api.event_orga import EventOrgaDetail
from app.api.stripe_authorization import StripeAuthorizationDetail, StripeAuthorizationRelationship, \
StripeAuthorizationListPost
from app.api.ticket_fees import TicketFeeList, TicketFeeDetail
from app.api.users import UserList, UserDetail, UserRelationship
from app.api.user_emails import UserEmailListAdmin, UserEmailListPost, UserEmailList, UserEmailDetail, \
UserEmailRelationship
from app.api.user_favourite_events import UserFavouriteEventListPost, UserFavouriteEventList, \
UserFavouriteEventDetail, UserFavouriteEventRelationship
from app.api.notifications import NotificationList, NotificationListAdmin, NotificationDetail,\
NotificationRelationship, NotificationActionDetail, NotificationActionRelationship, NotificationActionList
from app.api.custom_forms import CustomFormList, CustomFormListPost, CustomFormDetail, CustomFormRelationshipRequired
from app.api.custom_placeholders import CustomPlaceholderList, CustomPlaceholderDetail, CustomPlaceholderRelationship
from app.api.custom_system_roles import CustomSystemRoleList, CustomSystemRoleDetail, CustomSystemRoleRelationship
from app.api.discount_codes import DiscountCodeList, DiscountCodeDetail, DiscountCodeRelationshipOptional, \
DiscountCodeRelationshipRequired, DiscountCodeListPost
from app.api.email_notifications import EmailNotificationList, EmailNotificationListAdmin, EmailNotificationDetail, \
EmailNotificationRelationshipOptional, EmailNotificationRelationshipRequired
from app.api.tickets import TicketList, TicketListPost, TicketDetail, TicketRelationshipRequired, \
TicketRelationshipOptional
from app.api.events import EventList, EventDetail, EventRelationship, EventCopyResource
from app.api.event_types import EventTypeList, EventTypeDetail, EventTypeRelationship
from app.api.event_copyright import EventCopyrightListPost, EventCopyrightDetail, EventCopyrightRelationshipRequired
from app.api.event_image_sizes import EventImageSizeDetail
from app.api.event_invoices import EventInvoiceList, EventInvoiceDetail, \
EventInvoiceRelationshipRequired, EventInvoiceRelationshipOptional
from app.api.event_locations import EventLocationList
from app.api.event_topics import EventTopicList, EventTopicDetail, EventTopicRelationship
from app.api.event_orga import EventOrgaDetail
from app.api.event_statistics import EventStatisticsGeneralDetail
from app.api.event_sub_topics import EventSubTopicList, EventSubTopicListPost, EventSubTopicDetail, \
EventSubTopicRelationshipRequired, EventSubTopicRelationshipOptional
from app.api.event_topics import EventTopicList, EventTopicDetail, EventTopicRelationship
from app.api.event_types import EventTypeList, EventTypeDetail, EventTypeRelationship
from app.api.events import EventList, EventDetail, EventRelationship, EventCopyResource

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'app.api.events.EventCopyResource' imported but unused

from app.api.events_role_permission import EventsRolePermissionList, EventsRolePermissionDetail, \
EventsRolePermissionRelationship
from app.api.faq_types import FaqTypeList, FaqTypeListPost, FaqTypeDetail, FaqTypeRelationshipOptional, \
FaqTypeRelationshipRequired
from app.api.faqs import FaqListPost, FaqList, FaqDetail, FaqRelationshipRequired, FaqRelationshipOptional
from app.api.feedbacks import FeedbackListPost, FeedbackList, FeedbackDetail, \
FeedbackRelationship
from app.api.full_text_search.events import EventSearchResultList
from app.api.import_jobs import ImportJobList, ImportJobDetail
from app.api.mails import MailList, MailDetail
from app.api.message_settings import MessageSettingsList, MessageSettingsDetail
from app.api.microlocations import MicrolocationList, MicrolocationListPost, MicrolocationDetail, \
MicrolocationRelationshipRequired, MicrolocationRelationshipOptional
from app.api.modules import ModuleDetail
from app.api.notifications import NotificationList, NotificationListAdmin, NotificationDetail, \
NotificationRelationship, NotificationActionDetail, NotificationActionRelationship, NotificationActionList
from app.api.order_statistics.events import OrderStatisticsEventDetail
from app.api.order_statistics.tickets import OrderStatisticsTicketDetail
from app.api.orders import OrdersList, OrderDetail, OrderRelationship, ChargeList, OrdersListPost
from app.api.pages import PageList, PageDetail
from app.api.panel_permissions import PanelPermissionList, PanelPermissionDetail, \
PanelPermissionRelationship
from app.api.role_invites import RoleInviteListPost, RoleInviteList, RoleInviteDetail, RoleInviteRelationship
from app.api.roles import RoleList, RoleDetail
from app.api.service import ServiceList, ServiceDetail
from app.api.session_types import SessionTypeList, SessionTypeListPost, SessionTypeDetail, \
SessionTypeRelationshipRequired, SessionTypeRelationshipOptional
from app.api.sessions import SessionList, SessionListPost, SessionDetail, SessionRelationshipRequired, \
SessionRelationshipOptional
from app.api.settings import SettingDetail
from app.api.social_links import SocialLinkList, SocialLinkListPost, SocialLinkDetail, SocialLinkRelationship
from app.api.speaker_image_sizes import SpeakerImageSizeDetail
from app.api.speakers import SpeakerList, SpeakerListPost, SpeakerDetail, SpeakerRelationshipRequired, \
SpeakerRelationshipOptional
from app.api.service import ServiceList, ServiceDetail
from app.api.social_links import SocialLinkList, SocialLinkListPost, SocialLinkDetail, SocialLinkRelationship
from app.api.sponsors import SponsorList, SponsorListPost, SponsorDetail, SponsorRelationship
from app.api.tracks import TrackList, TrackListPost, TrackDetail, TrackRelationshipOptional, TrackRelationshipRequired
from app.api.speakers_calls import SpeakersCallList, SpeakersCallDetail, SpeakersCallRelationship
from app.api.event_invoices import EventInvoiceList, EventInvoiceDetail, \
EventInvoiceRelationshipRequired, EventInvoiceRelationshipOptional
from app.api.role_invites import RoleInviteListPost, RoleInviteList, RoleInviteDetail, RoleInviteRelationship
from app.api.event_image_sizes import EventImageSizeDetail
from app.api.speaker_image_sizes import SpeakerImageSizeDetail
from app.api.roles import RoleList, RoleDetail
from app.api.custom_system_roles import CustomSystemRoleList, CustomSystemRoleDetail, CustomSystemRoleRelationship
from app.api.session_types import SessionTypeList, SessionTypeListPost, SessionTypeDetail, \
SessionTypeRelationshipRequired, SessionTypeRelationshipOptional
from app.api.event_copyright import EventCopyrightListPost, EventCopyrightDetail, EventCopyrightRelationshipRequired
from app.api.pages import PageList, PageDetail
from app.api.user_permission import UserPermissionList, UserPermissionDetail
from app.api.events_role_permission import EventsRolePermissionList, EventsRolePermissionDetail, \
EventsRolePermissionRelationship
from app.api.panel_permissions import PanelPermissionList, PanelPermissionDetail, \
PanelPermissionRelationship
from app.api.message_settings import MessageSettingsList, MessageSettingsDetail
from app.api.sponsors import SponsorList, SponsorListPost, SponsorDetail, SponsorRelationship
from app.api.stripe_authorization import StripeAuthorizationDetail, StripeAuthorizationRelationship, \
StripeAuthorizationListPost
from app.api.tax import TaxList, TaxDetail, TaxRelationship
from app.api.settings import SettingDetail
from app.api.discount_codes import DiscountCodeList, DiscountCodeDetail, DiscountCodeRelationshipOptional, \
DiscountCodeRelationshipRequired, DiscountCodeListPost
from app.api.ticket_fees import TicketFeeList, TicketFeeDetail
from app.api.ticket_tags import TicketTagList, TicketTagListPost, TicketTagDetail, TicketTagRelationshipOptional, \
TicketTagRelationshipRequired
from app.api.attendees import AttendeeList, AttendeeDetail, AttendeeRelationshipOptional, \
AttendeeRelationshipRequired, AttendeeListPost
from app.api.access_codes import AccessCodeList, AccessCodeListPost, AccessCodeDetail, AccessCodeRelationshipRequired, \
AccessCodeRelationshipOptional
from app.api.custom_forms import CustomFormList, CustomFormListPost, CustomFormDetail, CustomFormRelationshipRequired
from app.api.faqs import FaqListPost, FaqList, FaqDetail, FaqRelationshipRequired, FaqRelationshipOptional
from app.api.feedbacks import FeedbackListPost, FeedbackList, FeedbackDetail, \
FeedbackRelationship
from app.api.modules import ModuleDetail
from app.api.custom_placeholders import CustomPlaceholderList, CustomPlaceholderDetail, CustomPlaceholderRelationship
from app.api.activities import ActivityList, ActivityDetail
from app.api.orders import OrdersList, OrderDetail, OrderRelationship, ChargeList, OrdersListPost
from app.api.event_statistics import EventStatisticsGeneralDetail
from app.api.mails import MailList, MailDetail
from app.api.admin_statistics_api.sessions import AdminStatisticsSessionDetail
from app.api.admin_statistics_api.events import AdminStatisticsEventDetail
from app.api.admin_statistics_api.users import AdminStatisticsUserDetail
from app.api.admin_statistics_api.mails import AdminStatisticsMailDetail
from app.api.order_statistics.events import OrderStatisticsEventDetail
from app.api.order_statistics.tickets import OrderStatisticsTicketDetail
from app.api.faq_types import FaqTypeList, FaqTypeListPost, FaqTypeDetail, FaqTypeRelationshipOptional, \
FaqTypeRelationshipRequired
from app.api.admin_sales.events import AdminSalesByEventsList
from app.api.admin_sales.organizer import AdminSalesByOrganizersList
from app.api.admin_sales.locations import AdminSalesByLocationList
from app.api.admin_sales.marketer import AdminSalesByMarketerList
from app.api.admin_sales.discounted import AdminSalesDiscountedList
from app.api.admin_sales.fees import AdminSalesFeesList
from app.api.admin_sales.invoices import AdminSalesInvoicesList
from app.api.full_text_search.events import EventSearchResultList
from app.api.import_jobs import ImportJobList, ImportJobDetail
from app.api.tickets import TicketList, TicketListPost, TicketDetail, TicketRelationshipRequired, \
TicketRelationshipOptional
from app.api.tracks import TrackList, TrackListPost, TrackDetail, TrackRelationshipOptional, TrackRelationshipRequired
from app.api.user_emails import UserEmailListAdmin, UserEmailListPost, UserEmailList, UserEmailDetail, \
UserEmailRelationship
from app.api.user_favourite_events import UserFavouriteEventListPost, UserFavouriteEventList, \
UserFavouriteEventDetail, UserFavouriteEventRelationship
from app.api.user_permission import UserPermissionList, UserPermissionDetail
from app.api.users import UserList, UserDetail, UserRelationship

# users
api.route(UserList, 'user_list', '/users')
Expand Down Expand Up @@ -474,7 +474,7 @@
'/tickets/<int:ticket_id>/discount-codes')
api.route(DiscountCodeDetail, 'discount_code_detail', '/discount-codes/<int:id>',
'/events/<int:event_id>/discount-code', '/event-invoices/<int:event_invoice_id>/discount-code',
'/discount-codes/<code>')
'/event/<int:discount_event_id>/discount-code/<code>')
api.route(DiscountCodeRelationshipRequired, 'discount_code_event',
'/discount-codes/<int:id>/relationships/event')
api.route(DiscountCodeRelationshipOptional, 'discount_code_events',
Expand Down Expand Up @@ -541,7 +541,8 @@
api.route(AccessCodeList, 'access_code_list', '/events/<int:event_id>/access-codes',
'/events/<event_identifier>/access-codes', '/users/<int:user_id>/access-codes',
'/tickets/<int:ticket_id>/access-codes')
api.route(AccessCodeDetail, 'access_code_detail', '/access-codes/<int:id>', '/access-codes/<code>')
api.route(AccessCodeDetail, 'access_code_detail', '/access-codes/<int:id>',
'/event/<int:access_event_id>/access-code/<code>')
api.route(AccessCodeRelationshipRequired, 'access_code_event',
'/access-codes/<int:id>/relationships/event')
api.route(AccessCodeRelationshipOptional, 'access_code_user',
Expand Down
5 changes: 3 additions & 2 deletions app/api/access_codes.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,8 +111,9 @@ def before_get(self, args, kwargs):
:return:
"""
# Any registered user can fetch access code details using the code.
if kwargs.get('code'):
access = db.session.query(AccessCode).filter_by(code=kwargs.get('code')).first()
if kwargs.get('code') and kwargs.get('access_event_id'):
access = db.session.query(AccessCode).filter_by(code=kwargs.get('code'),
event_id=kwargs.get('access_event_id')).first()
if access:
kwargs['id'] = access.id
else:
Expand Down
4 changes: 3 additions & 1 deletion app/api/discount_codes.py
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,9 @@ def before_get(self, args, kwargs):
if kwargs.get('code'):
# filter on deleted_at is required to catch the id of a
# discount code which has not been deleted.
discount = db.session.query(DiscountCode).filter_by(code=kwargs.get('code'), deleted_at=None).first()
discount = db.session.query(DiscountCode).filter_by(code=kwargs.get('code'),
event_id=kwargs.get('discount_event_id'),
deleted_at=None).first()
if discount:
kwargs['id'] = discount.id
discount_tz = discount.valid_from.tzinfo
Expand Down
6 changes: 4 additions & 2 deletions docs/api/api_blueprint.apib
Original file line number Diff line number Diff line change
Expand Up @@ -17815,9 +17815,10 @@ Delete a single discount code (Check permission to delete).
}
}

## Get Discount Code Detail using the code [/v1/discount-codes/{code}]
## Get Discount Code Detail using the code [/v1/event/{event_id}/discount-code/{code}]
+ Parameters
+ code: DC101 (string) - code associated with a discount code. (DC101 is an example of code)
+ event_id: 1 (integer) - ID of the Event in the form of an integer

### Get Discount Code Detail [GET]
Get a single discount code using a code.
Expand Down Expand Up @@ -18428,9 +18429,10 @@ Delete a single Access code.
}
}

## Access Code Detail using the Code [/v1/access-codes/{code}]
## Access Code Detail using the Code [/v1/event/{event_id}/access-code/{code}]
+ Parameters
+ code: AC101 (string) - code of the access-code.
+ event_id: 1 (integer) - ID of the Event in the form of an integer.

### Access Code Detail [GET]
Get a single access code using the code.
Expand Down
9 changes: 7 additions & 2 deletions tests/hook_main.py
Original file line number Diff line number Diff line change
Expand Up @@ -2804,7 +2804,7 @@ def discount_delete(transaction):
@hooks.before("Discount Codes > Get Discount Code Detail using the code > Get Discount Code Detail")
def discount_code_get_detail_using_code(transaction):
"""
GET /discount-codes/DC101
GET event/1/discount-codes/DC101
:param transaction:
:return:
"""
Expand All @@ -2815,6 +2815,7 @@ def discount_code_get_detail_using_code(transaction):

discount_code = DiscountCodeFactory(event_id=1)
discount_code.code = 'DC101'
discount_code.event_id = 1
db.session.add(discount_code)
db.session.commit()

Expand Down Expand Up @@ -2940,11 +2941,15 @@ def access_code_delete(transaction):
@hooks.before("Access Codes > Access Code Detail using the Code > Access Code Detail")
def access_code_get_detail_using_code(transaction):
"""
GET /access-codes/AC101
GET event/1/access-code/AC101
:param transaction:
:return:
"""
with stash['app'].app_context():
event = EventFactoryBasic()
db.session.add(event)
db.session.commit()

access_code = AccessCodeFactory()
access_code.code = 'AC101'
db.session.add(access_code)
Expand Down