diff --git a/app/api/access_codes.py b/app/api/access_codes.py
index 65ab6b44ce..1392c7e72f 100644
--- a/app/api/access_codes.py
+++ b/app/api/access_codes.py
@@ -11,10 +11,10 @@
from app.api.helpers.utilities import require_relationship
from app.api.schema.access_codes import AccessCodeSchema
from app.models import db
-from app.models.access_code import AccessCode
-from app.models.event import Event
-from app.models.ticket import Ticket
-from app.models.user import User
+from app.models.Financial_Context.access_code import AccessCode
+from app.models.Event_Context.event import Event
+from app.models.Financial_Context.ticket import Ticket
+from app.models.user_context.user import User
class AccessCodeListPost(ResourceList):
diff --git a/app/api/admin_sales/discounted.py b/app/api/admin_sales/discounted.py
index 6d9bb55c5b..7bbf257c7b 100644
--- a/app/api/admin_sales/discounted.py
+++ b/app/api/admin_sales/discounted.py
@@ -6,13 +6,17 @@
from app.api.bootstrap import api
from app.api.helpers.utilities import dasherize
from app.models import db
-from app.models.discount_code import DiscountCode
-from app.models.event import Event
-from app.models.order import Order, OrderTicket
-from app.models.user import User
+from app.models.Financial_Context.discount_code import DiscountCode
+from app.models.Event_Context.event import Event
+from app.models.Financial_Context.order import Order, OrderTicket
+from app.models.user_context.user import User
def sales_per_marketer_and_discount_by_status(status):
+ """
+ Generates a Common Table Expression (CTE) that calculates sales and ticket quantities
+ per marketer and discount code for a specific order status.
+ """
return (
db.session.query(
Event.id.label('event_id'),
diff --git a/app/api/admin_sales/events.py b/app/api/admin_sales/events.py
index 23bb34d819..5384a64c24 100644
--- a/app/api/admin_sales/events.py
+++ b/app/api/admin_sales/events.py
@@ -7,39 +7,25 @@
from app.api.helpers.db import save_bulk_to_db
from app.api.helpers.utilities import dasherize
from app.models import db
-from app.models.event import Event
+from app.models.Event_Context.event import Event
-
-class AdminSalesByEventsSchema(Schema):
+class EventInfo(Schema):
"""
- Sales summarized by event
-
- Provides
- event(name),
- date,
- count of tickets and total sales for orders grouped by status
+ This class holds information about the event.
+ Holds information on the event type, name, date, and owners.
"""
class Meta:
- type_ = 'admin-sales-by-events'
- self_view = 'v1.admin_sales_by_events'
- inflect = dasherize
+ type_ = 'event-info'
id = fields.String()
identifier = fields.String()
name = fields.String()
created_at = fields.DateTime()
deleted_at = fields.DateTime()
- starts_at = fields.DateTime()
- ends_at = fields.DateTime()
+ duration = fields.DateTime()
payment_currency = fields.String()
payment_country = fields.String()
- completed_order_sales = fields.Integer(dump_only=True)
- placed_order_sales = fields.Integer(dump_only=True)
- pending_order_sales = fields.Integer(dump_only=True)
- completed_order_tickets = fields.Integer(dump_only=True)
- placed_order_tickets = fields.Integer(dump_only=True)
- pending_order_tickets = fields.Integer(dump_only=True)
type = fields.Method('event_type')
owner = fields.Method('event_owner')
owner_id = fields.Method('event_owner_id')
@@ -60,6 +46,35 @@ def event_type(self, obj):
elif obj.location_name:
t = 'Venue'
return str(t)
+
+
+class EventSales(Schema):
+ """
+ This class holds sales data for the event.
+ The data is grouped by order status.
+ """
+
+ class Meta:
+ type_ = 'event-sales'
+
+ completed_order_sales = fields.Integer(dump_only=True)
+ placed_order_sales = fields.Integer(dump_only=True)
+ pending_order_sales = fields.Integer(dump_only=True)
+
+
+
+class EventTickets(Schema):
+ """
+ This class holds ticket data for the event.
+ The data is grouped by order status.
+ """
+
+ class Meta:
+ type_ = 'event-tickets'
+
+ completed_order_tickets = fields.Integer(dump_only=True)
+ placed_order_tickets = fields.Integer(dump_only=True)
+ pending_order_tickets = fields.Integer(dump_only=True)
class AdminSalesByEventsList(ResourceList):
@@ -111,9 +126,9 @@ def after_get(self, res):
methods = ['GET']
decorators = (api.has_permission('is_admin'),)
- schema = AdminSalesByEventsSchema
+ schema = EventInfo
data_layer = {
'model': Event,
'session': db.session,
'methods': {'query': query, 'after_get': after_get},
- }
+ }
\ No newline at end of file
diff --git a/app/api/admin_sales/fees.py b/app/api/admin_sales/fees.py
index f6d0d5ab31..04026d0a20 100644
--- a/app/api/admin_sales/fees.py
+++ b/app/api/admin_sales/fees.py
@@ -5,7 +5,7 @@
from app.api.bootstrap import api
from app.api.helpers.utilities import dasherize
from app.models import db
-from app.models.event import Event
+from app.models.Event_Context.event import Event
class AdminSalesFeesSchema(Schema):
diff --git a/app/api/admin_sales/invoices.py b/app/api/admin_sales/invoices.py
index 9a192ce34d..bfb5056dfe 100644
--- a/app/api/admin_sales/invoices.py
+++ b/app/api/admin_sales/invoices.py
@@ -5,7 +5,7 @@
from app.api.bootstrap import api
from app.api.helpers.utilities import dasherize
from app.models import db
-from app.models.event_invoice import EventInvoice
+from app.models.Financial_Context.event_invoice import EventInvoice
class AdminSalesInvoicesSchema(Schema):
diff --git a/app/api/admin_sales/locations.py b/app/api/admin_sales/locations.py
index d80caf2ad2..02354b1846 100644
--- a/app/api/admin_sales/locations.py
+++ b/app/api/admin_sales/locations.py
@@ -6,11 +6,16 @@
from app.api.bootstrap import api
from app.api.helpers.utilities import dasherize
from app.models import db
-from app.models.event import Event
-from app.models.order import Order, OrderTicket
+from app.models.Event_Context.event import Event
+from app.models.Financial_Context.order import Order, OrderTicket
def sales_per_location_by_status(status):
+ """
+ Generates a Common Table Expression (CTE) that calculates sales and ticket quantities
+ grouped by event location for a specific order status.
+ """
+
return (
db.session.query(
Event.location_name.label('location'),
diff --git a/app/api/admin_sales/marketer.py b/app/api/admin_sales/marketer.py
index 6b6ef1664d..78b2ec2c6a 100644
--- a/app/api/admin_sales/marketer.py
+++ b/app/api/admin_sales/marketer.py
@@ -5,8 +5,8 @@
from app.api.admin_sales.utils import summary
from app.api.bootstrap import api
from app.models import db
-from app.models.order import Order, OrderTicket
-from app.models.user import User
+from app.models.Financial_Context.order import Order, OrderTicket
+from app.models.user_context.user import User
class AdminSalesByMarketerSchema(Schema):
diff --git a/app/api/admin_sales/organizer.py b/app/api/admin_sales/organizer.py
index 007c43f3ef..2d6133fb00 100644
--- a/app/api/admin_sales/organizer.py
+++ b/app/api/admin_sales/organizer.py
@@ -7,11 +7,11 @@
from app.api.bootstrap import api
from app.api.helpers.utilities import dasherize
from app.models import db
-from app.models.event import Event
-from app.models.order import Order, OrderTicket
-from app.models.role import Role
-from app.models.user import User
-from app.models.users_events_role import UsersEventsRoles
+from app.models.Event_Context.event import Event
+from app.models.Financial_Context.order import Order, OrderTicket
+from app.models.Associations_Context.role import Role
+from app.models.user_context.user import User
+from app.models.user_context.users_events_role import UsersEventsRoles
class AdminSalesByOrganizersSchema(Schema):
diff --git a/app/api/admin_sales/utils.py b/app/api/admin_sales/utils.py
index 7a40179f99..9a3fdcd8aa 100644
--- a/app/api/admin_sales/utils.py
+++ b/app/api/admin_sales/utils.py
@@ -4,8 +4,8 @@
"""
from sqlalchemy import func
-from app.models.order import Order
-from app.models.ticket_holder import TicketHolder
+from app.models.Financial_Context.order import Order
+from app.models.Financial_Context.ticket_holder import TicketHolder
def status_summary(sales_summary, tickets_summary, status):
diff --git a/app/api/admin_statistics_api/groups.py b/app/api/admin_statistics_api/groups.py
index 74b41c91b0..292a8e9450 100644
--- a/app/api/admin_statistics_api/groups.py
+++ b/app/api/admin_statistics_api/groups.py
@@ -6,9 +6,9 @@
from app.api.data_layers.NoModelLayer import NoModelLayer
from app.api.helpers.utilities import dasherize
from app.models import db
-from app.models.event import Event
-from app.models.group import Group
-from app.models.user_follow_group import UserFollowGroup
+from app.models.Event_Context.event import Event
+from app.models.Associations_Context.group import Group
+from app.models.user_context.user_follow_group import UserFollowGroup
class AdminStatisticsGroupSchema(Schema):
diff --git a/app/api/admin_statistics_api/mails.py b/app/api/admin_statistics_api/mails.py
index 5d60879ff1..6e46dfe49c 100644
--- a/app/api/admin_statistics_api/mails.py
+++ b/app/api/admin_statistics_api/mails.py
@@ -9,7 +9,7 @@
from app.api.data_layers.NoModelLayer import NoModelLayer
from app.api.helpers.utilities import dasherize
from app.models import db
-from app.models.mail import Mail
+from app.models.Communication_Context.mail import Mail
class AdminStatisticsMailSchema(Schema):
diff --git a/app/api/admin_statistics_api/sessions.py b/app/api/admin_statistics_api/sessions.py
index b6902f3163..ebb239f7ad 100644
--- a/app/api/admin_statistics_api/sessions.py
+++ b/app/api/admin_statistics_api/sessions.py
@@ -7,7 +7,7 @@
from app.api.helpers.db import get_count
from app.api.helpers.utilities import dasherize
from app.models import db
-from app.models.session import Session
+from app.models.Event_Context.session import Session
class AdminStatisticsSessionSchema(Schema):
diff --git a/app/api/admin_statistics_api/users.py b/app/api/admin_statistics_api/users.py
index fe440b9f23..0daeb3916a 100644
--- a/app/api/admin_statistics_api/users.py
+++ b/app/api/admin_statistics_api/users.py
@@ -7,10 +7,10 @@
from app.api.helpers.db import get_count
from app.api.helpers.utilities import dasherize
from app.models import db
-from app.models.role import Role
-from app.models.ticket_holder import TicketHolder
-from app.models.user import User
-from app.models.users_events_role import UsersEventsRoles
+from app.models.Associations_Context.role import Role
+from app.models.Financial_Context.ticket_holder import TicketHolder
+from app.models.user_context.user import User
+from app.models.user_context.users_events_role import UsersEventsRoles
class AdminStatisticsUserSchema(Schema):
diff --git a/app/api/attendees.py b/app/api/attendees.py
index 579789a5c3..41844962ed 100644
--- a/app/api/attendees.py
+++ b/app/api/attendees.py
@@ -13,10 +13,10 @@
from app.api.helpers.query import event_query
from app.api.schema.attendees import AttendeeSchema
from app.models import db
-from app.models.order import Order
-from app.models.ticket import Ticket
-from app.models.ticket_holder import TicketHolder
-from app.models.user import User
+from app.models.Financial_Context.order import Order
+from app.models.Financial_Context.ticket import Ticket
+from app.models.Financial_Context.ticket_holder import TicketHolder
+from app.models.user_context.user import User
from app.settings import get_settings
diff --git a/app/api/auth.py b/app/api/auth.py
index 2f6406976d..cf625abcf5 100644
--- a/app/api/auth.py
+++ b/app/api/auth.py
@@ -44,7 +44,7 @@
from app.api.helpers.utilities import get_serializer, str_generator
from app.extensions.limiter import limiter
from app.models import db
-from app.models.user import User
+from app.models.user_context.user import User
logger = logging.getLogger(__name__)
authorised_blueprint = Blueprint('authorised_blueprint', __name__, url_prefix='/')
diff --git a/app/api/badge_field_forms.py b/app/api/badge_field_forms.py
index 294244c5d8..ba28338e47 100644
--- a/app/api/badge_field_forms.py
+++ b/app/api/badge_field_forms.py
@@ -6,7 +6,7 @@
from app.api.helpers.utilities import require_relationship
from app.api.schema.badge_field_forms import BadgeFieldFormSchema
from app.models import db
-from app.models.badge_field_form import BadgeFieldForms
+from app.models.Form_Context.badge_field_form import BadgeFieldForms
class BadgeFieldFormList(ResourceList):
diff --git a/app/api/badge_forms.py b/app/api/badge_forms.py
index 50178a22eb..255a6588bd 100644
--- a/app/api/badge_forms.py
+++ b/app/api/badge_forms.py
@@ -10,9 +10,9 @@
from app.api.helpers.utilities import require_relationship
from app.api.schema.badge_forms import BadgeFormSchema
from app.models import db
-from app.models.badge_field_form import BadgeFieldForms
-from app.models.badge_form import BadgeForms
-from app.models.event import Event
+from app.models.Form_Context.badge_field_form import BadgeFieldForms
+from app.models.Form_Context.badge_form import BadgeForms
+from app.models.Event_Context.event import Event
class BadgeFormList(ResourceList):
diff --git a/app/api/chat/rocket_chat.py b/app/api/chat/rocket_chat.py
index fdb3ea5885..1583442c69 100644
--- a/app/api/chat/rocket_chat.py
+++ b/app/api/chat/rocket_chat.py
@@ -8,10 +8,10 @@
from app.api.helpers.db import get_new_identifier, get_or_create
from app.models import db
-from app.models.event import Event
-from app.models.microlocation import Microlocation
-from app.models.user import User
-from app.models.video_stream import VideoStream
+from app.models.Event_Context.event import Event
+from app.models.Event_Context.microlocation import Microlocation
+from app.models.user_context.user import User
+from app.models.Event_Context.video_stream import VideoStream
from app.settings import get_settings
logger = logging.getLogger(__name__)
diff --git a/app/api/custom/attendees.py b/app/api/custom/attendees.py
index b9f1de1e25..bdfe810127 100644
--- a/app/api/custom/attendees.py
+++ b/app/api/custom/attendees.py
@@ -9,8 +9,8 @@
from app.api.helpers.permission_manager import has_access
from app.api.helpers.permissions import jwt_required
from app.models import db
-from app.models.order import Order
-from app.models.ticket_holder import TicketHolder
+from app.models.Financial_Context.order import Order
+from app.models.Financial_Context.ticket_holder import TicketHolder
attendee_blueprint = Blueprint('attendee_blueprint', __name__, url_prefix='/v1')
diff --git a/app/api/custom/badge_forms.py b/app/api/custom/badge_forms.py
index 1f2ca7a9b1..2a5128b247 100644
--- a/app/api/custom/badge_forms.py
+++ b/app/api/custom/badge_forms.py
@@ -9,8 +9,8 @@
create_export_badge_job,
)
from app.api.helpers.permission_manager import has_access
-from app.models.badge_form import BadgeForms
-from app.models.ticket_holder import TicketHolder
+from app.models.Form_Context.badge_form import BadgeForms
+from app.models.Financial_Context.ticket_holder import TicketHolder
badge_forms_routes = Blueprint(
'badge_forms_routes', __name__, url_prefix='/v1/badge-forms'
diff --git a/app/api/custom/calendars.py b/app/api/custom/calendars.py
index 2d74a8e72c..4064db2e13 100644
--- a/app/api/custom/calendars.py
+++ b/app/api/custom/calendars.py
@@ -5,7 +5,7 @@
from app.api.helpers.calendar.ical import to_ical
from app.api.helpers.permissions import to_event_id
-from app.models.event import Event
+from app.models.Event_Context.event import Event
calendar_routes = Blueprint('calendars', __name__, url_prefix='/v1/events')
diff --git a/app/api/custom/check_in_stats.py b/app/api/custom/check_in_stats.py
index 27e84b1149..2dcbc6352a 100644
--- a/app/api/custom/check_in_stats.py
+++ b/app/api/custom/check_in_stats.py
@@ -6,14 +6,14 @@
from app.api.helpers.permissions import jwt_required
from app.api.helpers.static import STATION_TYPE
from app.models import db
-from app.models.event import Event
-from app.models.session import Session
-from app.models.session_type import SessionType
-from app.models.station import Station
-from app.models.station_store_pax import StationStorePax
-from app.models.ticket_holder import TicketHolder
+from app.models.Event_Context.event import Event
+from app.models.Event_Context.session import Session
+from app.models.Event_Context.session_type import SessionType
+from app.models.Event_Context.station import Station
+from app.models.Event_Context.station_store_pax import StationStorePax
+from app.models.Financial_Context.ticket_holder import TicketHolder
from app.models.track import Track
-from app.models.user_check_in import UserCheckIn
+from app.models.user_context.user_check_in import UserCheckIn
check_in_stats_routes = Blueprint(
'check_in_stats_routes', __name__, url_prefix='/v1/user-check-in/stats'
diff --git a/app/api/custom/events.py b/app/api/custom/events.py
index 12ed181b23..56c03e4157 100644
--- a/app/api/custom/events.py
+++ b/app/api/custom/events.py
@@ -12,14 +12,14 @@
from app.api.schema.speakers import SpeakerReorderSchema
from app.api.schema.virtual_check_in import VirtualCheckInSchema
from app.models import db
-from app.models.discount_code import DiscountCode
-from app.models.event import Event
-from app.models.exhibitor import Exhibitor
-from app.models.microlocation import Microlocation
-from app.models.order import Order
-from app.models.session import Session
-from app.models.speaker import Speaker
-from app.models.ticket_holder import TicketHolder
+from app.models.Financial_Context.discount_code import DiscountCode
+from app.models.Event_Context.event import Event
+from app.models.Event_Context.exhibitor import Exhibitor
+from app.models.Event_Context.microlocation import Microlocation
+from app.models.Financial_Context.order import Order
+from app.models.Event_Context.session import Session
+from app.models.Associations_Context.speaker import Speaker
+from app.models.Financial_Context.ticket_holder import TicketHolder
events_routes = Blueprint('events_routes', __name__, url_prefix='/v1/events')
diff --git a/app/api/custom/group_role_invite.py b/app/api/custom/group_role_invite.py
index 648abed199..281debc377 100644
--- a/app/api/custom/group_role_invite.py
+++ b/app/api/custom/group_role_invite.py
@@ -1,7 +1,7 @@
from flask import Blueprint, jsonify
from app.api.helpers.permissions import jwt_required
-from app.models.users_groups_role import UsersGroupsRoles
+from app.models.user_context.users_groups_role import UsersGroupsRoles
group_role_invites_routes = Blueprint(
'group_role_invites_routes', __name__, url_prefix='/v1/group-role-invites'
diff --git a/app/api/custom/groups.py b/app/api/custom/groups.py
index 0b9e386e04..ba1ff0055a 100644
--- a/app/api/custom/groups.py
+++ b/app/api/custom/groups.py
@@ -10,11 +10,11 @@
from app.api.helpers.permissions import jwt_required, to_event_id
from app.api.helpers.system_mails import MAILS, MailType
from app.api.helpers.utilities import strip_tags
-from app.models.event import Event
-from app.models.group import Group
-from app.models.role import Role
-from app.models.user_follow_group import UserFollowGroup
-from app.models.users_groups_role import UsersGroupsRoles
+from app.models.Event_Context.event import Event
+from app.models.Associations_Context.group import Group
+from app.models.Associations_Context.role import Role
+from app.models.user_context.user_follow_group import UserFollowGroup
+from app.models.user_context.users_groups_role import UsersGroupsRoles
groups_routes = Blueprint('groups_routes', __name__, url_prefix='/v1/groups')
@@ -34,7 +34,7 @@ def announce_event(group_id, event_id):
if event.is_announced:
raise ForbiddenError({'source': 'event_id'}, "Event has already been announced")
current_time = datetime.now(pytz.utc)
- if event.ends_at < current_time or event.state != "published":
+ if event.duration.higher < current_time or event.state != "published":
raise ForbiddenError(
{'source': 'event_id'}, "Only upcoming and published events can be announced"
)
diff --git a/app/api/custom/invoices.py b/app/api/custom/invoices.py
index be067f59c2..e8feec35b3 100644
--- a/app/api/custom/invoices.py
+++ b/app/api/custom/invoices.py
@@ -12,8 +12,8 @@
from app.api.helpers.order import 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.models.event_invoice import EventInvoice
-from app.models.order import Order
+from app.models.Financial_Context.event_invoice import EventInvoice
+from app.models.Financial_Context.order import Order
event_blueprint = Blueprint('event_blueprint', __name__, url_prefix='/v1/events')
diff --git a/app/api/custom/orders.py b/app/api/custom/orders.py
index 14f3bc391c..7f13ce9033 100644
--- a/app/api/custom/orders.py
+++ b/app/api/custom/orders.py
@@ -21,11 +21,11 @@
from app.api.schema.orders import OrderSchema
from app.extensions.limiter import limiter
from app.models import db
-from app.models.access_code import AccessCode
-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
+from app.models.Financial_Context.access_code import AccessCode
+from app.models.Financial_Context.discount_code import DiscountCode
+from app.models.Financial_Context.order import Order, OrderTicket
+from app.models.Financial_Context.ticket import Ticket
+from app.models.Financial_Context.ticket_holder import TicketHolder
order_blueprint = Blueprint('order_blueprint', __name__, url_prefix='/v1/orders')
ticket_blueprint = Blueprint('ticket_blueprint', __name__, url_prefix='/v1/tickets')
diff --git a/app/api/custom/role_invites.py b/app/api/custom/role_invites.py
index 4afdd72b09..ab708b6add 100644
--- a/app/api/custom/role_invites.py
+++ b/app/api/custom/role_invites.py
@@ -1,7 +1,7 @@
from flask import Blueprint, jsonify
from app.api.helpers.permissions import jwt_required
-from app.models.role_invite import RoleInvite
+from app.models.Associations_Context.role_invite import RoleInvite
role_invites_routes = Blueprint(
'role_invites_routes', __name__, url_prefix='/v1/role-invites'
diff --git a/app/api/custom/tickets.py b/app/api/custom/tickets.py
index 32a568e75d..3364db433f 100644
--- a/app/api/custom/tickets.py
+++ b/app/api/custom/tickets.py
@@ -2,8 +2,8 @@
from flask_jwt_extended import jwt_required
from app.api.helpers.errors import NotFoundError
-from app.models.badge_field_form import BadgeFieldForms
-from app.models.ticket import Ticket
+from app.models.Form_Context.badge_field_form import BadgeFieldForms
+from app.models.Financial_Context.ticket import Ticket
ticket_routes = Blueprint('ticket_routes', __name__, url_prefix='/v1/tickets')
diff --git a/app/api/custom/users_groups_roles.py b/app/api/custom/users_groups_roles.py
index 0384f6e5ef..4ae074deb5 100644
--- a/app/api/custom/users_groups_roles.py
+++ b/app/api/custom/users_groups_roles.py
@@ -6,8 +6,8 @@
from app.api.helpers.db import save_to_db
from app.api.helpers.errors import ConflictError, ForbiddenError, NotFoundError
from app.api.helpers.permissions import jwt_required
-from app.models.user import User
-from app.models.users_groups_role import UsersGroupsRoles
+from app.models.user_context.user import User
+from app.models.user_context.users_groups_role import UsersGroupsRoles
logger = logging.getLogger(__name__)
diff --git a/app/api/custom_form_options.py b/app/api/custom_form_options.py
index 530a394089..56fb30a5f1 100644
--- a/app/api/custom_form_options.py
+++ b/app/api/custom_form_options.py
@@ -2,7 +2,7 @@
from app.api.schema.custom_form_options import CustomFormOptionSchema
from app.models import db
-from app.models.custom_form_option import CustomFormOptions
+from app.models.Form_Context.custom_form_option import CustomFormOptions
class CustomFormOptionList(ResourceList):
diff --git a/app/api/custom_form_translates.py b/app/api/custom_form_translates.py
index 952b97cecc..73556a4d6d 100644
--- a/app/api/custom_form_translates.py
+++ b/app/api/custom_form_translates.py
@@ -6,7 +6,7 @@
from app.api.helpers.utilities import require_relationship
from app.api.schema.custom_form_translates import CustomFormTranslateSchema
from app.models import db
-from app.models.custom_form_translate import CustomFormTranslates
+from app.models.Form_Context.custom_form_translate import CustomFormTranslates
class CustomFormTranslateList(ResourceList):
diff --git a/app/api/custom_forms.py b/app/api/custom_forms.py
index e182b109aa..6f10d734cc 100644
--- a/app/api/custom_forms.py
+++ b/app/api/custom_forms.py
@@ -10,9 +10,9 @@
from app.api.helpers.utilities import require_relationship
from app.api.schema.custom_forms import CustomFormSchema
from app.models import db
-from app.models.custom_form import CUSTOM_FORM_IDENTIFIER_NAME_MAP, CustomForms
-from app.models.custom_form_translate import CustomFormTranslates
-from app.models.event import Event
+from app.models.Form_Context.custom_form import CUSTOM_FORM_IDENTIFIER_NAME_MAP, CustomForms
+from app.models.Form_Context.custom_form_translate import CustomFormTranslates
+from app.models.Event_Context.event import Event
class CustomFormListPost(ResourceList):
diff --git a/app/api/custom_placeholders.py b/app/api/custom_placeholders.py
index b7eb0ab314..1c0c49d73d 100644
--- a/app/api/custom_placeholders.py
+++ b/app/api/custom_placeholders.py
@@ -5,8 +5,8 @@
from app.api.helpers.files import create_save_image_sizes
from app.api.schema.custom_placeholders import CustomPlaceholderSchema
from app.models import db
-from app.models.custom_placeholder import CustomPlaceholder
-from app.models.event_sub_topic import EventSubTopic
+from app.models.Form_Context.custom_placeholder import CustomPlaceholder
+from app.models.Event_Context.event_sub_topic import EventSubTopic
class CustomPlaceholderList(ResourceList):
diff --git a/app/api/custom_system_roles.py b/app/api/custom_system_roles.py
index f2e2c51b9d..5aa252a966 100644
--- a/app/api/custom_system_roles.py
+++ b/app/api/custom_system_roles.py
@@ -4,8 +4,8 @@
from app.api.helpers.db import safe_query_kwargs
from app.api.schema.custom_system_roles import CustomSystemRoleSchema
from app.models import db
-from app.models.custom_system_role import CustomSysRole
-from app.models.panel_permission import PanelPermission
+from app.models.Associations_Context.custom_system_role import CustomSysRole
+from app.models.Associations_Context.panel_permission import PanelPermission
class CustomSystemRoleList(ResourceList):
diff --git a/app/api/data_layers/BadgeFormLayer.py b/app/api/data_layers/BadgeFormLayer.py
index 3ed1ace9b4..97d3be4e81 100644
--- a/app/api/data_layers/BadgeFormLayer.py
+++ b/app/api/data_layers/BadgeFormLayer.py
@@ -1,8 +1,8 @@
from flask_rest_jsonapi.data_layers.base import BaseDataLayer
from app.api.helpers.db import save_to_db
-from app.models.badge_field_form import BadgeFieldForms
-from app.models.badge_form import BadgeForms
+from app.models.Form_Context.badge_field_form import BadgeFieldForms
+from app.models.Form_Context.badge_form import BadgeForms
class BadgeFormLayer(BaseDataLayer):
diff --git a/app/api/data_layers/ChargesLayer.py b/app/api/data_layers/ChargesLayer.py
index fb646dbcdc..9ed60a7e4e 100644
--- a/app/api/data_layers/ChargesLayer.py
+++ b/app/api/data_layers/ChargesLayer.py
@@ -3,7 +3,7 @@
from app.api.helpers.errors import ConflictError, UnprocessableEntityError
from app.api.helpers.ticketing import TicketingManager
-from app.models.order import Order
+from app.models.Financial_Context.order import Order
class ChargesLayer(BaseDataLayer):
diff --git a/app/api/data_layers/CustomFormTranslateLayer.py b/app/api/data_layers/CustomFormTranslateLayer.py
index 4ddf23da0c..5da2af8fe5 100644
--- a/app/api/data_layers/CustomFormTranslateLayer.py
+++ b/app/api/data_layers/CustomFormTranslateLayer.py
@@ -1,8 +1,8 @@
from flask_rest_jsonapi.data_layers.base import BaseDataLayer
from app.api.helpers.db import save_to_db
-from app.models.custom_form import CustomForms
-from app.models.custom_form_translate import CustomFormTranslates
+from app.models.Form_Context.custom_form import CustomForms
+from app.models.Form_Context.custom_form_translate import CustomFormTranslates
class CustomFormTranslateLayer(BaseDataLayer):
diff --git a/app/api/data_layers/EventCopyLayer.py b/app/api/data_layers/EventCopyLayer.py
index 8ecf027f3d..925bb89dfe 100644
--- a/app/api/data_layers/EventCopyLayer.py
+++ b/app/api/data_layers/EventCopyLayer.py
@@ -6,14 +6,14 @@
from app.api.helpers.db import safe_query, save_to_db
from app.api.helpers.files import create_save_resized_image
from app.models import db
-from app.models.custom_form import CustomForms
-from app.models.discount_code import DiscountCode
-from app.models.event import Event, get_new_event_identifier
-from app.models.microlocation import Microlocation
-from app.models.social_link import SocialLink
-from app.models.speakers_call import SpeakersCall
-from app.models.sponsor import Sponsor
-from app.models.ticket import Ticket
+from app.models.Form_Context.custom_form import CustomForms
+from app.models.Financial_Context.discount_code import DiscountCode
+from app.models.Event_Context.event import Event, get_new_event_identifier
+from app.models.Event_Context.microlocation import Microlocation
+from app.models.Communication_Context.social_link import SocialLink
+from app.models.Event_Context.speakers_call import SpeakersCall
+from app.models.Event_Context.sponsor import Sponsor
+from app.models.Financial_Context.ticket import Ticket
from app.models.track import Track
diff --git a/app/api/discount_codes.py b/app/api/discount_codes.py
index cff1d1bc3c..0d35374ea0 100644
--- a/app/api/discount_codes.py
+++ b/app/api/discount_codes.py
@@ -22,11 +22,11 @@
DiscountCodeSchemaTicket,
)
from app.models import db
-from app.models.discount_code import DiscountCode
-from app.models.event import Event
-from app.models.event_invoice import EventInvoice
-from app.models.ticket import Ticket
-from app.models.user import User
+from app.models.Financial_Context.discount_code import DiscountCode
+from app.models.Event_Context.event import Event
+from app.models.Financial_Context.event_invoice import EventInvoice
+from app.models.Financial_Context.ticket import Ticket
+from app.models.user_context.user import User
class DiscountCodeListPost(ResourceList):
diff --git a/app/api/email_notifications.py b/app/api/email_notifications.py
index 2e8360b80c..ac38262128 100644
--- a/app/api/email_notifications.py
+++ b/app/api/email_notifications.py
@@ -5,8 +5,8 @@
from app.api.helpers.permissions import jwt_required
from app.api.schema.email_notifications import EmailNotificationSchema
from app.models import db
-from app.models.email_notification import EmailNotification
-from app.models.user import User
+from app.models.Communication_Context.email_notification import EmailNotification
+from app.models.user_context.user import User
class EmailNotificationListAdmin(ResourceList):
diff --git a/app/api/event_copy.py b/app/api/event_copy.py
index 7a6ff3b448..ff45062d19 100644
--- a/app/api/event_copy.py
+++ b/app/api/event_copy.py
@@ -4,17 +4,17 @@
from app.api.helpers.db import safe_query, save_to_db
from app.api.helpers.permission_manager import has_access
from app.models import db
-from app.models.custom_form import CustomForms
-from app.models.discount_code import DiscountCode
-from app.models.event import Event, get_new_event_identifier
-from app.models.microlocation import Microlocation
-from app.models.social_link import SocialLink
-from app.models.speakers_call import SpeakersCall
-from app.models.sponsor import Sponsor
-from app.models.tax import Tax
-from app.models.ticket import Ticket
+from app.models.Form_Context.custom_form import CustomForms
+from app.models.Financial_Context.discount_code import DiscountCode
+from app.models.Event_Context.event import Event, get_new_event_identifier
+from app.models.Event_Context.microlocation import Microlocation
+from app.models.Communication_Context.social_link import SocialLink
+from app.models.Event_Context.speakers_call import SpeakersCall
+from app.models.Event_Context.sponsor import Sponsor
+from app.models.Event_Context.tax import Tax
+from app.models.Financial_Context.ticket import Ticket
from app.models.track import Track
-from app.models.users_events_role import UsersEventsRoles
+from app.models.user_context.users_events_role import UsersEventsRoles
event_copy = Blueprint('event_copy', __name__, url_prefix='/v1/events')
diff --git a/app/api/event_copyright.py b/app/api/event_copyright.py
index e66760df25..7b3e0d44e8 100644
--- a/app/api/event_copyright.py
+++ b/app/api/event_copyright.py
@@ -8,8 +8,8 @@
from app.api.helpers.utilities import require_relationship
from app.api.schema.event_copyright import EventCopyrightSchema
from app.models import db
-from app.models.event import Event
-from app.models.event_copyright import EventCopyright
+from app.models.Event_Context.event import Event
+from app.models.Event_Context.event_copyright import EventCopyright
class EventCopyrightListPost(ResourceList):
diff --git a/app/api/event_image_sizes.py b/app/api/event_image_sizes.py
index eca38b317f..437e4626c3 100644
--- a/app/api/event_image_sizes.py
+++ b/app/api/event_image_sizes.py
@@ -3,7 +3,7 @@
from app.api.bootstrap import api
from app.api.schema.image_sizes import EventImageSizeSchema
from app.models import db
-from app.models.image_size import ImageSizes
+from app.models.Form_Context.image_size import ImageSizes
class EventImageSizeDetail(ResourceDetail):
diff --git a/app/api/event_invoices.py b/app/api/event_invoices.py
index fd6054e918..c26d7ce1be 100644
--- a/app/api/event_invoices.py
+++ b/app/api/event_invoices.py
@@ -12,8 +12,8 @@
from app.api.orders import order_misc_routes
from app.api.schema.event_invoices import EventInvoiceSchema
from app.models import db
-from app.models.event_invoice import EventInvoice
-from app.models.user import User
+from app.models.Financial_Context.event_invoice import EventInvoice
+from app.models.user_context.user import User
from app.settings import get_settings
diff --git a/app/api/event_locations.py b/app/api/event_locations.py
index 745589b1b2..46976fd825 100644
--- a/app/api/event_locations.py
+++ b/app/api/event_locations.py
@@ -7,8 +7,8 @@
from app.api.bootstrap import api
from app.api.schema.event_locations import EventLocationSchema
from app.models import db
-from app.models.event import Event
-from app.models.event_location import EventLocation
+from app.models.Event_Context.event import Event
+from app.models.Event_Context.event_location import EventLocation
class EventLocationList(ResourceList):
diff --git a/app/api/event_statistics.py b/app/api/event_statistics.py
index e58a0946ee..701ac95731 100644
--- a/app/api/event_statistics.py
+++ b/app/api/event_statistics.py
@@ -4,7 +4,7 @@
from app.api.helpers.db import safe_query_kwargs
from app.api.schema.event_statistics import EventStatisticsGeneralSchema
from app.models import db
-from app.models.event import Event
+from app.models.Event_Context.event import Event
class EventStatisticsGeneralDetail(ResourceDetail):
diff --git a/app/api/event_sub_topics.py b/app/api/event_sub_topics.py
index a26007214f..f76d5246fd 100644
--- a/app/api/event_sub_topics.py
+++ b/app/api/event_sub_topics.py
@@ -8,9 +8,9 @@
from app.api.helpers.utilities import require_relationship
from app.api.schema.event_sub_topics import EventSubTopicSchema
from app.models import db
-from app.models.event import Event
-from app.models.event_sub_topic import EventSubTopic
-from app.models.event_topic import EventTopic
+from app.models.Event_Context.event import Event
+from app.models.Event_Context.event_sub_topic import EventSubTopic
+from app.models.Event_Context.event_topic import EventTopic
class EventSubTopicListPost(ResourceList):
diff --git a/app/api/event_topics.py b/app/api/event_topics.py
index ab19de24e2..7e255b9d8b 100644
--- a/app/api/event_topics.py
+++ b/app/api/event_topics.py
@@ -8,9 +8,9 @@
from app.api.helpers.files import create_system_image
from app.api.schema.event_topics import EventTopicSchema
from app.models import db
-from app.models.event import Event
-from app.models.event_sub_topic import EventSubTopic
-from app.models.event_topic import EventTopic
+from app.models.Event_Context.event import Event
+from app.models.Event_Context.event_sub_topic import EventSubTopic
+from app.models.Event_Context.event_topic import EventTopic
class EventTopicList(ResourceList):
diff --git a/app/api/event_types.py b/app/api/event_types.py
index 871499a590..958860ccd1 100644
--- a/app/api/event_types.py
+++ b/app/api/event_types.py
@@ -4,8 +4,8 @@
from app.api.helpers.db import safe_query_kwargs
from app.api.schema.event_types import EventTypeSchema
from app.models import db
-from app.models.event import Event
-from app.models.event_type import EventType
+from app.models.Event_Context.event import Event
+from app.models.Event_Context.event_type import EventType
class EventTypeList(ResourceList):
diff --git a/app/api/events.py b/app/api/events.py
index 7c463dab64..2c4d066fca 100644
--- a/app/api/events.py
+++ b/app/api/events.py
@@ -11,6 +11,8 @@
from marshmallow_jsonapi import fields
from marshmallow_jsonapi.flask import Schema
from sqlalchemy import and_, or_
+from sqlalchemy.dialects.postgresql import TSTZRANGE
+
from app.api.bootstrap import api
from app.api.chat.rocket_chat import (
@@ -35,35 +37,35 @@
# models
from app.models import db
-from app.models.access_code import AccessCode
-from app.models.custom_form import CustomForms
-from app.models.discount_code import DiscountCode
-from app.models.email_notification import EmailNotification
-from app.models.event import Event
-from app.models.event_copyright import EventCopyright
-from app.models.event_invoice import EventInvoice
-from app.models.exhibitor import Exhibitor
-from app.models.faq import Faq
-from app.models.faq_type import FaqType
-from app.models.feedback import Feedback
-from app.models.group import Group
-from app.models.microlocation import Microlocation
-from app.models.order import Order
-from app.models.role import Role
-from app.models.role_invite import RoleInvite
-from app.models.session import Session
-from app.models.session_type import SessionType
-from app.models.social_link import SocialLink
-from app.models.speaker import Speaker
-from app.models.speaker_invite import SpeakerInvite
-from app.models.speakers_call import SpeakersCall
-from app.models.sponsor import Sponsor
-from app.models.stripe_authorization import StripeAuthorization
-from app.models.tax import Tax
-from app.models.ticket import Ticket, TicketTag
-from app.models.ticket_holder import TicketHolder
+from app.models.Financial_Context.access_code import AccessCode
+from app.models.Form_Context.custom_form import CustomForms
+from app.models.Financial_Context.discount_code import DiscountCode
+from app.models.Communication_Context.email_notification import EmailNotification
+from app.models.Event_Context.event import Event
+from app.models.Event_Context.event_copyright import EventCopyright
+from app.models.Financial_Context.event_invoice import EventInvoice
+from app.models.Event_Context.exhibitor import Exhibitor
+from app.models.Form_Context.faq import Faq
+from app.models.Form_Context.faq_type import FaqType
+from app.models.Event_Context.feedback import Feedback
+from app.models.Associations_Context.group import Group
+from app.models.Event_Context.microlocation import Microlocation
+from app.models.Financial_Context.order import Order
+from app.models.Associations_Context.role import Role
+from app.models.Associations_Context.role_invite import RoleInvite
+from app.models.Event_Context.session import Session
+from app.models.Event_Context.session_type import SessionType
+from app.models.Communication_Context.social_link import SocialLink
+from app.models.Associations_Context.speaker import Speaker
+from app.models.Associations_Context.speaker_invite import SpeakerInvite
+from app.models.Event_Context.speakers_call import SpeakersCall
+from app.models.Event_Context.sponsor import Sponsor
+from app.models.Financial_Context.stripe_authorization import StripeAuthorization
+from app.models.Event_Context.tax import Tax
+from app.models.Financial_Context.ticket import Ticket, TicketTag
+from app.models.Financial_Context.ticket_holder import TicketHolder
from app.models.track import Track
-from app.models.user import (
+from app.models.user_context.user import (
MARKETER,
MODERATOR,
REGISTRAR,
@@ -71,9 +73,9 @@
TRACK_ORGANIZER,
User,
)
-from app.models.user_favourite_event import UserFavouriteEvent
-from app.models.users_events_role import UsersEventsRoles
-from app.models.video_stream import VideoStream
+from app.models.user_context.user_favourite_event import UserFavouriteEvent
+from app.models.user_context.users_events_role import UsersEventsRoles
+from app.models.Event_Context.video_stream import VideoStream
events_blueprint = Blueprint('events_blueprint', __name__, url_prefix='/v1/events')
@@ -221,24 +223,16 @@ def validate_event(user, data):
def validate_date(event, data):
if event:
- if 'starts_at' not in data:
- data['starts_at'] = event.starts_at
-
- if 'ends_at' not in data:
- data['ends_at'] = event.ends_at
+ if 'duration' not in data:
+ data['duration'] = event.duration
- if not data.get('starts_at') or not data.get('ends_at'):
+ if not data.get('duration'):
raise UnprocessableEntityError(
{'pointer': '/data/attributes/date'},
- "enter required fields starts-at/ends-at",
- )
-
- if data['starts_at'] >= data['ends_at']:
- raise UnprocessableEntityError(
- {'pointer': '/data/attributes/ends-at'}, "ends-at should be after starts-at"
+ "enter required fields duration",
)
- if (data['ends_at'] - data['starts_at']).days > 20:
+ if (data['duration'].higher - data['duration']).lower.days > 20:
raise UnprocessableEntityError(
{'pointer': '/data/attributes/ends-at'},
"Event duration can not be more than 20 days",
@@ -612,8 +606,7 @@ def before_update_object(self, event, data, view_kwargs):
g.event_name = event.name
is_date_updated = (
- data.get('starts_at') != event.starts_at
- or data.get('ends_at') != event.ends_at
+ data.get('duration') != event.duration
)
is_draft_published = (
event.state == Event.State.DRAFT
@@ -799,8 +792,7 @@ def query(self, view_kwargs):
query_ = (
self.session.query(Event)
.filter(
- Event.starts_at > current_time,
- Event.ends_at > current_time,
+ Event.duration.lower > current_time,
Event.state == Event.State.PUBLISHED,
Event.privacy == Event.Privacy.PUBLIC,
or_(
@@ -838,7 +830,7 @@ def query(self, view_kwargs):
),
),
)
- .order_by(Event.starts_at)
+ .order_by(Event.duration.lower)
)
return query_
diff --git a/app/api/events_role_permission.py b/app/api/events_role_permission.py
index df8cef4c18..4a9b7b1b08 100644
--- a/app/api/events_role_permission.py
+++ b/app/api/events_role_permission.py
@@ -3,7 +3,7 @@
from app.api.bootstrap import api
from app.api.schema.event_role_permissions import EventsRolePermissionSchema
from app.models import db
-from app.models.permission import Permission
+from app.models.Associations_Context.permission import Permission
class EventsRolePermissionList(ResourceList):
diff --git a/app/api/exhibitors.py b/app/api/exhibitors.py
index 9d4e73ca25..0ba3e851bc 100644
--- a/app/api/exhibitors.py
+++ b/app/api/exhibitors.py
@@ -8,8 +8,8 @@
from app.api.helpers.utilities import changed, require_relationship
from app.api.schema.exhibitors import ExhibitorSchema
from app.models import db
-from app.models.exhibitor import Exhibitor
-from app.models.session import Session
+from app.models.Event_Context.exhibitor import Exhibitor
+from app.models.Event_Context.session import Session
class ExhibitorListPost(ResourceList):
diff --git a/app/api/faq_types.py b/app/api/faq_types.py
index 40479ea2e3..41ec18b388 100644
--- a/app/api/faq_types.py
+++ b/app/api/faq_types.py
@@ -8,8 +8,8 @@
from app.api.helpers.utilities import require_relationship
from app.api.schema.faq_types import FaqTypeSchema
from app.models import db
-from app.models.faq import Faq
-from app.models.faq_type import FaqType
+from app.models.Form_Context.faq import Faq
+from app.models.Form_Context.faq_type import FaqType
class FaqTypeListPost(ResourceList):
diff --git a/app/api/faqs.py b/app/api/faqs.py
index 78dc1e2799..9874499162 100644
--- a/app/api/faqs.py
+++ b/app/api/faqs.py
@@ -8,8 +8,8 @@
from app.api.helpers.utilities import require_relationship
from app.api.schema.faqs import FaqSchema
from app.models import db
-from app.models.faq import Faq
-from app.models.faq_type import FaqType
+from app.models.Form_Context.faq import Faq
+from app.models.Form_Context.faq_type import FaqType
class FaqListPost(ResourceList):
diff --git a/app/api/feedbacks.py b/app/api/feedbacks.py
index 80cba026b0..675f6e852d 100644
--- a/app/api/feedbacks.py
+++ b/app/api/feedbacks.py
@@ -11,10 +11,10 @@
from app.api.helpers.utilities import require_relationship
from app.api.schema.feedbacks import FeedbackSchema
from app.models import db
-from app.models.event import Event
-from app.models.feedback import Feedback
-from app.models.session import Session
-from app.models.user import User
+from app.models.Event_Context.event import Event
+from app.models.Event_Context.feedback import Feedback
+from app.models.Event_Context.session import Session
+from app.models.user_context.user import User
class FeedbackListPost(ResourceList):
diff --git a/app/api/groups.py b/app/api/groups.py
index 62163c9601..427de15875 100644
--- a/app/api/groups.py
+++ b/app/api/groups.py
@@ -11,12 +11,12 @@
# models
from app.models import db
-from app.models.event import Event
-from app.models.group import Group
-from app.models.role import Role
-from app.models.user import User
-from app.models.user_follow_group import UserFollowGroup
-from app.models.users_groups_role import UsersGroupsRoles
+from app.models.Event_Context.event import Event
+from app.models.Associations_Context.group import Group
+from app.models.Associations_Context.role import Role
+from app.models.user_context.user import User
+from app.models.user_context.user_follow_group import UserFollowGroup
+from app.models.user_context.users_groups_role import UsersGroupsRoles
def is_owner_or_organizer(group, user):
diff --git a/app/api/helpers/ICalExporter.py b/app/api/helpers/ICalExporter.py
index c0c2e59d81..0f87ac0060 100644
--- a/app/api/helpers/ICalExporter.py
+++ b/app/api/helpers/ICalExporter.py
@@ -1,5 +1,5 @@
from app.api.helpers.calendar.ical import to_ical
-from app.models.event import Event
+from app.models.Event_Context.event import Event
class ICalExporter:
diff --git a/app/api/helpers/auth.py b/app/api/helpers/auth.py
index 21aa743039..92ec1c4927 100644
--- a/app/api/helpers/auth.py
+++ b/app/api/helpers/auth.py
@@ -5,8 +5,8 @@
from flask_login import current_user
from app.models import db
-from app.models.user import User
-from app.models.user_token_blacklist import UserTokenBlackListTime
+from app.models.user_context.user import User
+from app.models.user_context.user_token_blacklist import UserTokenBlackListTime
class AuthManager:
diff --git a/app/api/helpers/badge_forms.py b/app/api/helpers/badge_forms.py
index cb37c0d1a2..6abd813bdd 100644
--- a/app/api/helpers/badge_forms.py
+++ b/app/api/helpers/badge_forms.py
@@ -7,9 +7,9 @@
from app.api.helpers.files import create_save_pdf
from app.api.helpers.storage import UPLOAD_PATHS, generate_hash
from app.api.helpers.utilities import to_snake_case
-from app.models.badge_field_form import BadgeFieldForms
-from app.models.custom_form import CustomForms
-from app.models.ticket_holder import TicketHolder
+from app.models.Form_Context.badge_field_form import BadgeFieldForms
+from app.models.Form_Context.custom_form import CustomForms
+from app.models.Financial_Context.ticket_holder import TicketHolder
def file_pdf_path(self) -> str:
diff --git a/app/api/helpers/calendar/ical.py b/app/api/helpers/calendar/ical.py
index fd2be132fb..5a65419c7a 100644
--- a/app/api/helpers/calendar/ical.py
+++ b/app/api/helpers/calendar/ical.py
@@ -8,7 +8,7 @@
from sqlalchemy.orm import joinedload
from app.api.helpers.utilities import remove_html_tags
-from app.models.session import Session
+from app.models.Event_Context.session import Session
def to_ical(event, include_sessions=False, my_schedule=False, user_id=None):
diff --git a/app/api/helpers/csv_jobs_util.py b/app/api/helpers/csv_jobs_util.py
index 71ae66d7ae..ca0431f05a 100644
--- a/app/api/helpers/csv_jobs_util.py
+++ b/app/api/helpers/csv_jobs_util.py
@@ -3,11 +3,11 @@
from app.api.admin_sales.utils import event_type, summary
from app.api.helpers.group_user_role import get_user_group_role
from app.models import db
-from app.models.access_code import AccessCode
+from app.models.Financial_Context.access_code import AccessCode
from app.models.helpers.versioning import strip_tags
-from app.models.order import OrderTicket
-from app.models.ticket import access_codes_tickets
-from app.models.user_check_in import VirtualCheckIn
+from app.models.Financial_Context.order import OrderTicket
+from app.models.Financial_Context.ticket import access_codes_tickets
+from app.models.user_context.user_check_in import VirtualCheckIn
def export_orders_csv(orders):
diff --git a/app/api/helpers/custom_forms.py b/app/api/helpers/custom_forms.py
index 26f5155c31..9c7b715a73 100644
--- a/app/api/helpers/custom_forms.py
+++ b/app/api/helpers/custom_forms.py
@@ -4,8 +4,8 @@
from app.api.helpers.errors import UnprocessableEntityError
from app.api.schema.base import TrimmedEmail
-from app.models.custom_form import CustomForms
-from app.models.ticket import Ticket
+from app.models.Form_Context.custom_form import CustomForms
+from app.models.Financial_Context.ticket import Ticket
def object_as_dict(obj):
diff --git a/app/api/helpers/event_invoices.py b/app/api/helpers/event_invoices.py
index f20fd7633c..6b98144357 100644
--- a/app/api/helpers/event_invoices.py
+++ b/app/api/helpers/event_invoices.py
@@ -1,6 +1,6 @@
import datetime
-from app.models.event_invoice import EventInvoice
+from app.models.Financial_Context.event_invoice import EventInvoice
def fetch_event_invoices(invoice_status):
diff --git a/app/api/helpers/events.py b/app/api/helpers/events.py
index 7c1aa2c02d..21aba0725b 100644
--- a/app/api/helpers/events.py
+++ b/app/api/helpers/events.py
@@ -1,5 +1,5 @@
from app.api.helpers.db import save_to_db
-from app.models.custom_form import CustomForms
+from app.models.Form_Context.custom_form import CustomForms
def create_custom_forms_for_attendees(event):
diff --git a/app/api/helpers/export_helpers.py b/app/api/helpers/export_helpers.py
index 620a1b3cf6..a8bfc81dd6 100644
--- a/app/api/helpers/export_helpers.py
+++ b/app/api/helpers/export_helpers.py
@@ -15,14 +15,14 @@
from app.api.helpers.storage import UPLOAD_PATHS, UploadedFile, upload
from app.api.helpers.utilities import get_filename_from_cd, is_downloadable
from app.models import db
-from app.models.custom_form import CustomForms
-from app.models.event import Event
+from app.models.Form_Context.custom_form import CustomForms
+from app.models.Event_Context.event import Event
from app.models.export_job import ExportJob
-from app.models.microlocation import Microlocation
-from app.models.session import Session
-from app.models.session_type import SessionType
-from app.models.speaker import Speaker
-from app.models.sponsor import Sponsor
+from app.models.Event_Context.microlocation import Microlocation
+from app.models.Event_Context.session import Session
+from app.models.Event_Context.session_type import SessionType
+from app.models.Associations_Context.speaker import Speaker
+from app.models.Event_Context.sponsor import Sponsor
from app.models.track import Track
# order of keys in export json
@@ -33,8 +33,7 @@
'latitude',
'longitude',
'location_name',
- 'starts_at',
- 'ends_at',
+ 'duration',
'timezone',
'description',
'original_image_url',
diff --git a/app/api/helpers/files.py b/app/api/helpers/files.py
index 6b61fa8503..5b7e5420ef 100644
--- a/app/api/helpers/files.py
+++ b/app/api/helpers/files.py
@@ -15,7 +15,7 @@
from app.api.helpers.ICalExporter import ICalExporter
from app.api.helpers.storage import UPLOAD_PATHS, UploadedFile, generate_hash, upload
-from app.models.image_size import ImageSizes
+from app.models.Form_Context.image_size import ImageSizes
from app.settings import get_settings
diff --git a/app/api/helpers/group_user_role.py b/app/api/helpers/group_user_role.py
index b5cb80b89f..fa98ce790b 100644
--- a/app/api/helpers/group_user_role.py
+++ b/app/api/helpers/group_user_role.py
@@ -1,6 +1,6 @@
-from app.models.group import Group
-from app.models.role import Role
-from app.models.users_groups_role import UsersGroupsRoles
+from app.models.Associations_Context.group import Group
+from app.models.Associations_Context.role import Role
+from app.models.user_context.users_groups_role import UsersGroupsRoles
def get_user_group_role(user_id, group_id):
diff --git a/app/api/helpers/import_helpers.py b/app/api/helpers/import_helpers.py
index 9ea0d55ad5..9c9470c503 100644
--- a/app/api/helpers/import_helpers.py
+++ b/app/api/helpers/import_helpers.py
@@ -16,19 +16,19 @@
from app.api.helpers.storage import UPLOAD_PATHS, UploadedFile, UploadedMemory, upload
from app.api.helpers.utilities import is_downloadable, update_state, write_file
from app.models import db
-from app.models.custom_form import CustomForms
-from app.models.event import Event
+from app.models.Form_Context.custom_form import CustomForms
+from app.models.Event_Context.event import Event
from app.models.import_job import ImportJob
-from app.models.microlocation import Microlocation
-from app.models.role import Role
-from app.models.session import Session
-from app.models.session_type import SessionType
-from app.models.social_link import SocialLink
-from app.models.speaker import Speaker
-from app.models.sponsor import Sponsor
+from app.models.Event_Context.microlocation import Microlocation
+from app.models.Associations_Context.role import Role
+from app.models.Event_Context.session import Session
+from app.models.Event_Context.session_type import SessionType
+from app.models.Communication_Context.social_link import SocialLink
+from app.models.Associations_Context.speaker import Speaker
+from app.models.Event_Context.sponsor import Sponsor
from app.models.track import Track
-from app.models.user import User
-from app.models.users_events_role import UsersEventsRoles
+from app.models.user_context.user import User
+from app.models.user_context.users_events_role import UsersEventsRoles
IMPORT_SERIES = [
('social_links', SocialLink),
diff --git a/app/api/helpers/jwt.py b/app/api/helpers/jwt.py
index 9c8fb6921e..35f6f2ec05 100644
--- a/app/api/helpers/jwt.py
+++ b/app/api/helpers/jwt.py
@@ -4,7 +4,7 @@
from flask_jwt_extended.view_decorators import _decode_jwt_from_request, _load_user
from jwt.exceptions import PyJWTError
-from app.models.user import User
+from app.models.user_context.user import User
def jwt_authenticate(email, password):
diff --git a/app/api/helpers/mail.py b/app/api/helpers/mail.py
index 2f3e7c0a4e..d4cebe8387 100644
--- a/app/api/helpers/mail.py
+++ b/app/api/helpers/mail.py
@@ -16,12 +16,12 @@
from app.api.helpers.log import record_activity
from app.api.helpers.system_mails import MAILS, MailType
from app.api.helpers.utilities import get_serializer, str_generator, string_empty
-from app.models.event import Event
-from app.models.mail import Mail
-from app.models.message_setting import MessageSettings
-from app.models.order import OrderTicket
-from app.models.ticket_holder import TicketHolder
-from app.models.user import User
+from app.models.Event_Context.event import Event
+from app.models.Communication_Context.mail import Mail
+from app.models.Communication_Context.message_setting import MessageSettings
+from app.models.Financial_Context.order import OrderTicket
+from app.models.Financial_Context.ticket_holder import TicketHolder
+from app.models.user_context.user import User
from app.settings import get_settings
logger = logging.getLogger(__name__)
@@ -383,11 +383,11 @@ def send_email_announce_event(event, group, emails):
event_name = event.name
group_name = group.name
- event_date = event.starts_at
+ event_date = event.duration.lower
event_description = event.description
event_url = event.site_link
event_location = event.normalized_location
- event_time = event.starts_at
+ event_time = event.duration.lower
group_url = group.view_page_link
app_name = get_settings()['app_name']
@@ -557,16 +557,16 @@ def send_email_to_attendees(order):
buyer_email = order.user.email
event_date = convert_to_user_locale(
buyer_email,
- date=order.event.starts_at,
+ date=order.event.duration.lower,
)
event_end_date = convert_to_user_locale(
buyer_email,
- date_time=order.event.ends_at,
+ date_time=order.event.duration.higher,
tz=order.event.timezone,
)
event_time = convert_to_user_locale(
buyer_email,
- time=order.event.starts_at,
+ time=order.event.duration.lower,
tz=order.event.timezone,
)
@@ -574,7 +574,7 @@ def send_email_to_attendees(order):
order=order,
starts_at=convert_to_user_locale(
buyer_email,
- date_time=order.event.starts_at,
+ date_time=order.event.duration.lower,
tz=order.event.timezone,
),
ends_at=event_end_date,
@@ -640,11 +640,11 @@ def send_order_purchase_organizer_email(order, recipients):
order_url=order.site_view_link,
event_date=convert_to_user_locale(
order.user.email,
- date=order.event.starts_at,
+ date=order.event.duration.lower,
),
event_time=convert_to_user_locale(
order.user.email,
- time=order.event.starts_at,
+ time=order.event.duration.lower,
tz=order.event.timezone,
),
timezone=order.event.timezone,
diff --git a/app/api/helpers/notification.py b/app/api/helpers/notification.py
index cbacbf929b..1aac03cc03 100644
--- a/app/api/helpers/notification.py
+++ b/app/api/helpers/notification.py
@@ -7,9 +7,9 @@
NotificationContent,
NotificationType,
)
-from app.models.notification_setting import NotificationSettings
-from app.models.speaker import Speaker
-from app.models.user import User
+from app.models.Communication_Context.notification_setting import NotificationSettings
+from app.models.Associations_Context.speaker import Speaker
+from app.models.user_context.user import User
logger = logging.getLogger(__name__)
diff --git a/app/api/helpers/order.py b/app/api/helpers/order.py
index 0b2de0f102..d8adc7700f 100644
--- a/app/api/helpers/order.py
+++ b/app/api/helpers/order.py
@@ -22,11 +22,11 @@
)
from app.api.helpers.storage import UPLOAD_PATHS
from app.models import db
-from app.models.order import OrderTicket
+from app.models.Financial_Context.order import OrderTicket
from app.models.setting import Setting
-from app.models.ticket import Ticket
-from app.models.ticket_fee import TicketFees
-from app.models.ticket_holder import TicketHolder
+from app.models.Financial_Context.ticket import Ticket
+from app.models.Financial_Context.ticket_fee import TicketFees
+from app.models.Financial_Context.ticket_holder import TicketHolder
from app.settings import get_settings
@@ -78,10 +78,10 @@ def create_pdf_tickets_for_holder(order):
:param order: The order for which to create tickets for.
"""
starts_at = convert_to_user_locale(
- order.user.email, date_time=order.event.starts_at, tz=order.event.timezone
+ order.user.email, date_time=order.event.duration.lower, tz=order.event.timezone
)
ends_at = convert_to_user_locale(
- order.user.email, date_time=order.event.ends_at, tz=order.event.timezone
+ order.user.email, date_time=order.event.duration.higher, tz=order.event.timezone
)
admin_info = Setting.query.first()
if order.status == 'completed' or order.status == 'placed':
@@ -105,10 +105,10 @@ def create_pdf_tickets_for_holder(order):
for holder in order.ticket_holders:
starts_at = convert_to_user_locale(
- holder.email, date_time=order.event.starts_at, tz=order.event.timezone
+ holder.email, date_time=order.event.duration.lower, tz=order.event.timezone
)
ends_at = convert_to_user_locale(
- holder.email, date_time=order.event.ends_at, tz=order.event.timezone
+ holder.email, date_time=order.event.duration.higher, tz=order.event.timezone
)
# create attendee pdf for every ticket holder
diff --git a/app/api/helpers/payment.py b/app/api/helpers/payment.py
index 01fd8b7894..98c031fd65 100644
--- a/app/api/helpers/payment.py
+++ b/app/api/helpers/payment.py
@@ -11,8 +11,8 @@
from app.api.helpers.db import safe_query, save_to_db
from app.api.helpers.errors import ConflictError, ForbiddenError
from app.api.helpers.utilities import represents_int, round_money
-from app.models.order import Order
-from app.models.stripe_authorization import StripeAuthorization
+from app.models.Financial_Context.order import Order
+from app.models.Financial_Context.stripe_authorization import StripeAuthorization
from app.settings import Environment, get_settings
diff --git a/app/api/helpers/pentabarfxml.py b/app/api/helpers/pentabarfxml.py
index 9beaed0e87..e49f724c8d 100644
--- a/app/api/helpers/pentabarfxml.py
+++ b/app/api/helpers/pentabarfxml.py
@@ -7,9 +7,9 @@
from sqlalchemy import Date, asc, func
from app.models import db
-from app.models.event import Event as EventModel
-from app.models.microlocation import Microlocation
-from app.models.session import Session
+from app.models.Event_Context.event import Event as EventModel
+from app.models.Event_Context.microlocation import Microlocation
+from app.models.Event_Context.session import Session
from app.settings import get_settings
@@ -27,12 +27,12 @@ def __init__(self):
def export(event_id):
"""Takes an event id and returns the event in pentabarf XML format"""
event = EventModel.query.get(event_id)
- diff = event.ends_at - event.starts_at
+ diff = event.duration.higher - event.duration.lower
conference = Conference(
title=event.name,
- start=event.starts_at,
- end=event.ends_at,
+ start=event.duration.lower,
+ end=event.duration.higher,
days=diff.days if diff.days > 0 else 1,
day_change="00:00",
timeslot_duration="00:15",
diff --git a/app/api/helpers/permission_manager.py b/app/api/helpers/permission_manager.py
index 66ebf687b5..a18674f880 100644
--- a/app/api/helpers/permission_manager.py
+++ b/app/api/helpers/permission_manager.py
@@ -8,12 +8,12 @@
from app.api.helpers.errors import ForbiddenError, NotFoundError
from app.api.helpers.jwt import get_identity
from app.api.helpers.permissions import jwt_required
-from app.models.event import Event
-from app.models.event_invoice import EventInvoice
-from app.models.order import Order
-from app.models.session import Session
-from app.models.speaker import Speaker
-from app.models.user import User
+from app.models.Event_Context.event import Event
+from app.models.Financial_Context.event_invoice import EventInvoice
+from app.models.Financial_Context.order import Order
+from app.models.Event_Context.session import Session
+from app.models.Associations_Context.speaker import Speaker
+from app.models.user_context.user import User
logger = logging.getLogger(__name__)
diff --git a/app/api/helpers/permissions.py b/app/api/helpers/permissions.py
index 318f8c4945..8dec456a26 100644
--- a/app/api/helpers/permissions.py
+++ b/app/api/helpers/permissions.py
@@ -7,7 +7,7 @@
from app.api.helpers.db import save_to_db
from app.api.helpers.errors import ForbiddenError
from app.models import db
-from app.models.event import Event
+from app.models.Event_Context.event import Event
def second_order_decorator(inner_dec):
diff --git a/app/api/helpers/query.py b/app/api/helpers/query.py
index af0ed56aa0..0f7e2fd290 100644
--- a/app/api/helpers/query.py
+++ b/app/api/helpers/query.py
@@ -3,9 +3,9 @@
from app.api.helpers.db import safe_query_kwargs
from app.api.helpers.errors import ForbiddenError
from app.api.helpers.permission_manager import has_access, is_logged_in
-from app.models.event import Event
-from app.models.role import Role
-from app.models.users_events_role import UsersEventsRoles
+from app.models.Event_Context.event import Event
+from app.models.Associations_Context.role import Role
+from app.models.user_context.users_events_role import UsersEventsRoles
def event_query(
diff --git a/app/api/helpers/role_invite.py b/app/api/helpers/role_invite.py
index a27d5bdb8d..27d5e9f9c0 100644
--- a/app/api/helpers/role_invite.py
+++ b/app/api/helpers/role_invite.py
@@ -1,7 +1,7 @@
import logging
from app.models import db
-from app.models.role_invite import RoleInvite
+from app.models.Associations_Context.role_invite import RoleInvite
logger = logging.getLogger(__name__)
diff --git a/app/api/helpers/scheduled_jobs.py b/app/api/helpers/scheduled_jobs.py
index 8713a9889d..4955ff0d0e 100644
--- a/app/api/helpers/scheduled_jobs.py
+++ b/app/api/helpers/scheduled_jobs.py
@@ -18,13 +18,13 @@
from app.api.helpers.utilities import monthdelta
from app.instance import celery
from app.models import db
-from app.models.event import Event
-from app.models.event_invoice import EventInvoice
-from app.models.order import Order
-from app.models.session import Session
-from app.models.speaker import Speaker
-from app.models.ticket import Ticket
-from app.models.ticket_holder import TicketHolder
+from app.models.Event_Context.event import Event
+from app.models.Financial_Context.event_invoice import EventInvoice
+from app.models.Financial_Context.order import Order
+from app.models.Event_Context.session import Session
+from app.models.Associations_Context.speaker import Speaker
+from app.models.Financial_Context.ticket import Ticket
+from app.models.Financial_Context.ticket_holder import TicketHolder
from app.settings import get_settings
from app.views.redis_store import redis_store
@@ -41,7 +41,7 @@ def ticket_sales_end_mail():
events_with_expired_tickets = (
Event.query.filter_by(state='published', deleted_at=None)
.filter(
- Event.ends_at > current_time,
+ Event.duration.higher > current_time,
Event.tickets.any(
and_(
Ticket.deleted_at == None,
@@ -54,7 +54,7 @@ def ticket_sales_end_mail():
events_whose_ticket_expiring_tomorrow = (
Event.query.filter_by(state='published', deleted_at=None)
.filter(
- Event.ends_at > current_time,
+ Event.duration.higher > current_time,
Event.tickets.any(
and_(
Ticket.deleted_at == None,
@@ -67,7 +67,7 @@ def ticket_sales_end_mail():
events_whose_ticket_expiring_next_week = (
Event.query.filter_by(state='published', deleted_at=None)
.filter(
- Event.ends_at > current_time,
+ Event.duration.higher > current_time,
Event.tickets.any(
and_(
Ticket.deleted_at == None,
@@ -110,8 +110,8 @@ def send_after_event_mail():
events = (
Event.query.filter_by(state='published', deleted_at=None)
.filter(
- Event.ends_at < current_time,
- current_time - Event.ends_at < datetime.timedelta(days=1),
+ Event.duration.higher < current_time,
+ current_time - Event.duration.higher < datetime.timedelta(days=1),
)
.all()
)
@@ -146,7 +146,7 @@ def change_session_state_on_event_completion():
sessions_to_be_changed = (
Session.query.join(Event)
.filter(Session.state == 'pending')
- .filter(Event.ends_at < datetime.datetime.now())
+ .filter(Event.duration.higher < datetime.datetime.now())
)
for session in sessions_to_be_changed:
session.state = 'rejected'
@@ -250,8 +250,8 @@ def send_monthly_event_invoice(send_notification: bool = True):
Event.query.filter(Event.owner != None)
.filter(
or_(
- Event.starts_at.between(last_month, this_month),
- Event.ends_at.between(last_month, this_month),
+ Event.duration.lower.between(last_month, this_month),
+ Event.duration.higher.between(last_month, this_month),
Event.id.in_(last_order_event_ids),
)
)
diff --git a/app/api/helpers/tasks.py b/app/api/helpers/tasks.py
index d5bacd2b21..d6acc8557f 100644
--- a/app/api/helpers/tasks.py
+++ b/app/api/helpers/tasks.py
@@ -41,22 +41,22 @@
from app.api.imports import import_event_task_base
from app.instance import create_app
from app.models import db
-from app.models.custom_form import ATTENDEE_CUSTOM_FORM, CustomForms
-from app.models.discount_code import DiscountCode
-from app.models.event import Event
-from app.models.exhibitor import Exhibitor
-from app.models.group import Group
-from app.models.order import Order
-from app.models.session import Session
-from app.models.speaker import Speaker
-from app.models.sponsor import Sponsor
-from app.models.ticket_holder import TicketHolder
-from app.models.user import User
-from app.models.user_follow_group import UserFollowGroup
+from app.models.Form_Context.custom_form import ATTENDEE_CUSTOM_FORM, CustomForms
+from app.models.Financial_Context.discount_code import DiscountCode
+from app.models.Event_Context.event import Event
+from app.models.Event_Context.exhibitor import Exhibitor
+from app.models.Associations_Context.group import Group
+from app.models.Financial_Context.order import Order
+from app.models.Event_Context.session import Session
+from app.models.Associations_Context.speaker import Speaker
+from app.models.Event_Context.sponsor import Sponsor
+from app.models.Financial_Context.ticket_holder import TicketHolder
+from app.models.user_context.user import User
+from app.models.user_context.user_follow_group import UserFollowGroup
from app.settings import get_settings
-from ...models.badge_field_form import BadgeFieldForms
-from ...models.badge_form import BadgeForms
+from ...models.Form_Context.badge_field_form import BadgeFieldForms
+from ...models.Form_Context.badge_form import BadgeForms
from .badge_forms import (
create_base64_img_qr,
get_value_from_field_indentifier,
@@ -697,12 +697,12 @@ def export_admin_sales_csv_task(self, status='all'):
sales = Event.query.all()
elif status == 'live':
sales = Event.query.filter(
- Event.starts_at <= current_time,
- Event.ends_at >= current_time,
+ Event.duration.lower <= current_time,
+ Event.duration.higher >= current_time,
).all()
elif status == 'past':
sales = Event.query.filter(
- Event.ends_at <= current_time,
+ Event.duration.higher <= current_time,
).all()
try:
diff --git a/app/api/helpers/ticketing.py b/app/api/helpers/ticketing.py
index 32a107d0c6..e5eeebfbe4 100644
--- a/app/api/helpers/ticketing.py
+++ b/app/api/helpers/ticketing.py
@@ -9,9 +9,9 @@
from app.api.helpers.order import delete_related_attendees_for_order, on_order_completed
from app.api.helpers.payment import PayPalPaymentsManager, StripePaymentsManager
from app.models import db
-from app.models.ticket import Ticket
-from app.models.ticket_fee import TicketFees
-from app.models.ticket_holder import TicketHolder
+from app.models.Financial_Context.ticket import Ticket
+from app.models.Financial_Context.ticket_fee import TicketFees
+from app.models.Financial_Context.ticket_holder import TicketHolder
logger = logging.getLogger(__name__)
diff --git a/app/api/helpers/user.py b/app/api/helpers/user.py
index 18b42f5f6b..569a29ad3e 100644
--- a/app/api/helpers/user.py
+++ b/app/api/helpers/user.py
@@ -7,8 +7,8 @@
from app.api.helpers.db import save_to_db
from app.api.helpers.errors import ForbiddenError, UnprocessableEntityError
from app.models import db
-from app.models.user import User
-from app.models.user_check_in import VirtualCheckIn
+from app.models.user_context.user import User
+from app.models.user_context.user_check_in import VirtualCheckIn
def modify_email_for_user_to_be_deleted(user):
diff --git a/app/api/helpers/user_check_in.py b/app/api/helpers/user_check_in.py
index 0e09f6183d..9e93c6153d 100644
--- a/app/api/helpers/user_check_in.py
+++ b/app/api/helpers/user_check_in.py
@@ -8,9 +8,9 @@
from app.api.helpers.errors import BadRequestError, UnprocessableEntityError
from app.api.helpers.static import STATION_TYPE
from app.api.helpers.storage import UPLOAD_PATHS, UploadedFile, generate_hash, upload
-from app.models.session import Session
-from app.models.station import Station
-from app.models.user_check_in import UserCheckIn
+from app.models.Event_Context.session import Session
+from app.models.Event_Context.station import Station
+from app.models.user_context.user_check_in import UserCheckIn
def export_csv(data):
diff --git a/app/api/helpers/xcal.py b/app/api/helpers/xcal.py
index 4f600a02ed..486c1922d5 100644
--- a/app/api/helpers/xcal.py
+++ b/app/api/helpers/xcal.py
@@ -3,8 +3,8 @@
from flask import url_for
from sqlalchemy import asc
-from app.models.event import Event
-from app.models.session import Session
+from app.models.Event_Context.event import Event
+from app.models.Event_Context.session import Session
class XCalExporter:
diff --git a/app/api/mails.py b/app/api/mails.py
index 2e867a9ed7..4743b70324 100644
--- a/app/api/mails.py
+++ b/app/api/mails.py
@@ -3,7 +3,7 @@
from app.api.bootstrap import api
from app.api.schema.mails import MailSchema
from app.models import db
-from app.models.mail import Mail
+from app.models.Communication_Context.mail import Mail
class MailList(ResourceList):
diff --git a/app/api/message_settings.py b/app/api/message_settings.py
index 6ec205edb7..2cc69fdca8 100644
--- a/app/api/message_settings.py
+++ b/app/api/message_settings.py
@@ -3,7 +3,7 @@
from app.api.bootstrap import api
from app.api.schema.message_settings import MessageSettingSchema
from app.models import db
-from app.models.message_setting import MessageSettings
+from app.models.Communication_Context.message_setting import MessageSettings
class MessageSettingsList(ResourceList):
diff --git a/app/api/microlocations.py b/app/api/microlocations.py
index 6a9cfea3f4..1d535bb094 100644
--- a/app/api/microlocations.py
+++ b/app/api/microlocations.py
@@ -8,8 +8,8 @@
from app.api.helpers.utilities import require_relationship
from app.api.schema.microlocations import MicrolocationSchema
from app.models import db
-from app.models.microlocation import Microlocation
-from app.models.session import Session
+from app.models.Event_Context.microlocation import Microlocation
+from app.models.Event_Context.session import Session
class MicrolocationListPost(ResourceList):
diff --git a/app/api/notification_settings.py b/app/api/notification_settings.py
index ef09990ac7..8f2bb76d5f 100644
--- a/app/api/notification_settings.py
+++ b/app/api/notification_settings.py
@@ -3,7 +3,7 @@
from app.api.bootstrap import api
from app.api.schema.notification_settings import NotificationSettingSchema
from app.models import db
-from app.models.notification_setting import NotificationSettings
+from app.models.Communication_Context.notification_setting import NotificationSettings
class NotificationSettingsList(ResourceList):
diff --git a/app/api/notifications.py b/app/api/notifications.py
index 7e8818e72f..1c2f94bdcf 100644
--- a/app/api/notifications.py
+++ b/app/api/notifications.py
@@ -4,8 +4,8 @@
from app.api.helpers.db import safe_query_kwargs
from app.api.schema.notifications import NotificationSchema
from app.models import db
-from app.models.notification import Notification
-from app.models.user import User
+from app.models.Communication_Context.notification import Notification
+from app.models.user_context.user import User
class NotificationListAdmin(ResourceList):
diff --git a/app/api/order_statistics/events.py b/app/api/order_statistics/events.py
index 0004d9ec00..541eaa267e 100644
--- a/app/api/order_statistics/events.py
+++ b/app/api/order_statistics/events.py
@@ -7,9 +7,9 @@
from app.api.helpers.db import get_count, safe_query_kwargs
from app.api.helpers.utilities import dasherize
from app.models import db
-from app.models.event import Event
-from app.models.order import Order, OrderTicket
-from app.models.ticket import Ticket
+from app.models.Event_Context.event import Event
+from app.models.Financial_Context.order import Order, OrderTicket
+from app.models.Financial_Context.ticket import Ticket
class OrderStatisticsEventSchema(Schema):
diff --git a/app/api/order_statistics/tickets.py b/app/api/order_statistics/tickets.py
index 2989200a98..5972d23f92 100644
--- a/app/api/order_statistics/tickets.py
+++ b/app/api/order_statistics/tickets.py
@@ -7,12 +7,14 @@
from app.api.helpers.db import get_count
from app.api.helpers.utilities import dasherize
from app.models import db
-from app.models.order import Order, OrderTicket
-from app.models.ticket import Ticket
+from app.models.Financial_Context.order import Order, OrderTicket
+from app.models.Financial_Context.ticket import Ticket
def calculated_sale_by_status(ticket_id, status):
- """calculated_sale_by_status"""
+ """
+ Calculates the total sales amount for a specific ticket and order status.
+ """
query_ = OrderTicket.query.join(Order).join(Order.discount_code, isouter=True)
order_ticket_ids: OrderTicket = query_.filter(
OrderTicket.ticket_id == ticket_id, Order.status == status
diff --git a/app/api/orders.py b/app/api/orders.py
index 853a754b89..957ed57741 100644
--- a/app/api/orders.py
+++ b/app/api/orders.py
@@ -42,9 +42,9 @@
from app.api.schema.attendees import AttendeeSchema
from app.api.schema.orders import OrderSchema
from app.models import db
-from app.models.order import Order, OrderTicket, get_updatable_fields
-from app.models.ticket_holder import TicketHolder
-from app.models.user import User
+from app.models.Financial_Context.order import Order, OrderTicket, get_updatable_fields
+from app.models.Financial_Context.ticket_holder import TicketHolder
+from app.models.user_context.user import User
from app.settings import get_settings
order_misc_routes = Blueprint('order_misc', __name__, url_prefix='/v1')
diff --git a/app/api/panel_permissions.py b/app/api/panel_permissions.py
index cbcc7aa436..d7ec684b8b 100644
--- a/app/api/panel_permissions.py
+++ b/app/api/panel_permissions.py
@@ -4,8 +4,8 @@
from app.api.helpers.db import safe_query_kwargs
from app.api.schema.panel_permissions import PanelPermissionSchema
from app.models import db
-from app.models.custom_system_role import CustomSysRole
-from app.models.panel_permission import PanelPermission
+from app.models.Associations_Context.custom_system_role import CustomSysRole
+from app.models.Associations_Context.panel_permission import PanelPermission
class PanelPermissionList(ResourceList):
diff --git a/app/api/role_invites.py b/app/api/role_invites.py
index 5ef3cf014b..f6fc13b4e5 100644
--- a/app/api/role_invites.py
+++ b/app/api/role_invites.py
@@ -11,11 +11,11 @@
from app.api.helpers.utilities import require_relationship
from app.api.schema.role_invites import RoleInviteSchema
from app.models import db
-from app.models.event import Event
-from app.models.role import Role
-from app.models.role_invite import RoleInvite
-from app.models.user import User
-from app.models.users_events_role import UsersEventsRoles
+from app.models.Event_Context.event import Event
+from app.models.Associations_Context.role import Role
+from app.models.Associations_Context.role_invite import RoleInvite
+from app.models.user_context.user import User
+from app.models.user_context.users_events_role import UsersEventsRoles
role_invites_misc_routes = Blueprint('role_invites_misc', __name__, url_prefix='/v1')
diff --git a/app/api/roles.py b/app/api/roles.py
index c32eeae376..f3be66131c 100644
--- a/app/api/roles.py
+++ b/app/api/roles.py
@@ -5,10 +5,10 @@
from app.api.helpers.errors import UnprocessableEntityError
from app.api.schema.roles import RoleSchema
from app.models import db
-from app.models.role import Role
-from app.models.role_invite import RoleInvite
-from app.models.users_events_role import UsersEventsRoles
-from app.models.users_groups_role import UsersGroupsRoles
+from app.models.Associations_Context.role import Role
+from app.models.Associations_Context.role_invite import RoleInvite
+from app.models.user_context.users_events_role import UsersEventsRoles
+from app.models.user_context.users_groups_role import UsersGroupsRoles
class RoleList(ResourceList):
diff --git a/app/api/schema/access_codes.py b/app/api/schema/access_codes.py
index 084bcb94e0..d9f4ab9550 100644
--- a/app/api/schema/access_codes.py
+++ b/app/api/schema/access_codes.py
@@ -5,7 +5,7 @@
from app.api.helpers.errors import UnprocessableEntityError
from app.api.helpers.utilities import dasherize
from app.api.schema.base import SoftDeletionSchema
-from app.models.access_code import AccessCode
+from app.models.Financial_Context.access_code import AccessCode
from utils.common import use_defaults
diff --git a/app/api/schema/admin_statistics_schema/events.py b/app/api/schema/admin_statistics_schema/events.py
index fc9fb4f120..b1cd167e9b 100644
--- a/app/api/schema/admin_statistics_schema/events.py
+++ b/app/api/schema/admin_statistics_schema/events.py
@@ -6,7 +6,7 @@
from app.api.helpers.db import get_count
from app.api.helpers.utilities import dasherize
-from app.models.event import Event
+from app.models.Event_Context.event import Event
class AdminStatisticsEventSchema(Schema):
@@ -29,12 +29,12 @@ class Meta:
past = fields.Method("events_past_count")
def events_draft_count(self, obj):
- events = Event.query.filter(Event.ends_at > datetime.now(pytz.utc))
+ events = Event.query.filter(Event.duration.higher > datetime.now(pytz.utc))
return get_count(events.filter_by(state='draft', deleted_at=None))
def events_published_count(self, obj):
- events = Event.query.filter(Event.ends_at > datetime.now(pytz.utc))
+ events = Event.query.filter(Event.duration.higher > datetime.now(pytz.utc))
return get_count(events.filter_by(state='published', deleted_at=None))
def events_past_count(self, obj):
- return get_count(Event.query.filter(Event.ends_at < datetime.now(pytz.utc)))
+ return get_count(Event.query.filter(Event.duration.higher < datetime.now(pytz.utc)))
diff --git a/app/api/schema/discount_codes.py b/app/api/schema/discount_codes.py
index 49936592ff..68780e61c3 100644
--- a/app/api/schema/discount_codes.py
+++ b/app/api/schema/discount_codes.py
@@ -7,8 +7,8 @@
from app.api.helpers.errors import UnprocessableEntityError
from app.api.helpers.utilities import dasherize
from app.api.schema.base import SoftDeletionSchema
-from app.models.discount_code import DiscountCode
-from app.models.ticket import Ticket
+from app.models.Financial_Context.discount_code import DiscountCode
+from app.models.Financial_Context.ticket import Ticket
class DiscountCodeSchemaPublic(SoftDeletionSchema):
diff --git a/app/api/schema/event_statistics.py b/app/api/schema/event_statistics.py
index 765bbd13e9..c699405fad 100644
--- a/app/api/schema/event_statistics.py
+++ b/app/api/schema/event_statistics.py
@@ -4,9 +4,9 @@
from app.api.helpers.cache import cache
from app.api.helpers.utilities import dasherize
-from app.models.session import Session
-from app.models.speaker import Speaker
-from app.models.sponsor import Sponsor
+from app.models.Event_Context.session import Session
+from app.models.Associations_Context.speaker import Speaker
+from app.models.Event_Context.sponsor import Sponsor
class EventStatisticsGeneralSchema(Schema):
diff --git a/app/api/schema/events.py b/app/api/schema/events.py
index 89f8cc59c2..03a731002d 100644
--- a/app/api/schema/events.py
+++ b/app/api/schema/events.py
@@ -10,7 +10,7 @@
from app.api.helpers.errors import UnprocessableEntityError
from app.api.helpers.utilities import dasherize
from app.api.schema.base import GetterRelationship, SoftDeletionSchema, TrimmedEmail
-from app.models.event import Event
+from app.models.Event_Context.event import Event
class DocumentLinkSchema(Schema):
@@ -48,8 +48,7 @@ def validate_timezone(self, data, original_data):
identifier = fields.Str(dump_only=True)
name = fields.Str(required=True)
external_event_url = fields.Url(allow_none=True)
- starts_at = fields.DateTime(required=True, timezone=True)
- ends_at = fields.DateTime(required=True, timezone=True)
+ duration = fields.DateTime(required=True, timezone=True)
timezone = fields.Str(required=True)
online = fields.Boolean(default=False)
latitude = fields.Float(validate=lambda n: -90 <= n <= 90, allow_none=True)
diff --git a/app/api/schema/exhibitors.py b/app/api/schema/exhibitors.py
index 02cc2f8216..6651278b2c 100644
--- a/app/api/schema/exhibitors.py
+++ b/app/api/schema/exhibitors.py
@@ -6,7 +6,7 @@
from app.api.helpers.utilities import dasherize
from app.api.schema.base import TrimmedEmail
-from app.models.exhibitor import Exhibitor
+from app.models.Event_Context.exhibitor import Exhibitor
class ExhibitorSocialLinkSchema(Schema):
diff --git a/app/api/schema/role_invites.py b/app/api/schema/role_invites.py
index 05895450cf..7329d67c7d 100644
--- a/app/api/schema/role_invites.py
+++ b/app/api/schema/role_invites.py
@@ -7,8 +7,8 @@
from app.api.helpers.errors import UnprocessableEntityError
from app.api.helpers.utilities import dasherize
from app.api.schema.base import TrimmedEmail
-from app.models.role import Role
-from app.models.role_invite import RoleInvite
+from app.models.Associations_Context.role import Role
+from app.models.Associations_Context.role_invite import RoleInvite
from utils.common import use_defaults
diff --git a/app/api/schema/sessions.py b/app/api/schema/sessions.py
index e99fea6ac0..8bf9aa5c8e 100644
--- a/app/api/schema/sessions.py
+++ b/app/api/schema/sessions.py
@@ -14,7 +14,7 @@
from app.api.helpers.validations import validate_complex_fields_json
from app.api.schema.base import SoftDeletionSchema
from app.models.helpers.versioning import clean_html
-from app.models.session import Session
+from app.models.Event_Context.session import Session
from utils.common import use_defaults
diff --git a/app/api/schema/speakers_calls.py b/app/api/schema/speakers_calls.py
index b68d86bac7..c552c6d6fe 100644
--- a/app/api/schema/speakers_calls.py
+++ b/app/api/schema/speakers_calls.py
@@ -5,7 +5,7 @@
from app.api.helpers.errors import UnprocessableEntityError
from app.api.helpers.utilities import dasherize
from app.api.schema.base import SoftDeletionSchema
-from app.models.speakers_call import SpeakersCall
+from app.models.Event_Context.speakers_call import SpeakersCall
class SpeakersCallSchema(SoftDeletionSchema):
diff --git a/app/api/schema/tickets.py b/app/api/schema/tickets.py
index 415b08c3e3..684a594073 100644
--- a/app/api/schema/tickets.py
+++ b/app/api/schema/tickets.py
@@ -6,8 +6,8 @@
from app.api.helpers.errors import UnprocessableEntityError
from app.api.helpers.utilities import dasherize
from app.api.schema.base import SoftDeletionSchema
-from app.models.discount_code import DiscountCode
-from app.models.ticket import Ticket
+from app.models.Financial_Context.discount_code import DiscountCode
+from app.models.Financial_Context.ticket import Ticket
from utils.common import use_defaults
diff --git a/app/api/schema/users.py b/app/api/schema/users.py
index ee36fa192d..717d3c08f0 100644
--- a/app/api/schema/users.py
+++ b/app/api/schema/users.py
@@ -6,7 +6,7 @@
from app.api.helpers.permission_manager import require_current_user
from app.api.helpers.utilities import dasherize
from app.api.schema.base import SoftDeletionSchema, TrimmedEmail
-from app.models.user import User
+from app.models.user_context.user import User
from utils.common import use_defaults
diff --git a/app/api/session_types.py b/app/api/session_types.py
index 94810938be..26437be00a 100644
--- a/app/api/session_types.py
+++ b/app/api/session_types.py
@@ -8,8 +8,8 @@
from app.api.helpers.utilities import require_relationship
from app.api.schema.session_types import SessionTypeSchema
from app.models import db
-from app.models.session import Session
-from app.models.session_type import SessionType
+from app.models.Event_Context.session import Session
+from app.models.Event_Context.session_type import SessionType
class SessionTypeListPost(ResourceList):
diff --git a/app/api/sessions.py b/app/api/sessions.py
index 363eb9389f..2bfcbcbbce 100644
--- a/app/api/sessions.py
+++ b/app/api/sessions.py
@@ -23,14 +23,14 @@
from app.api.schema.sessions import SessionNotifySchema, SessionSchema
from app.api.speaker_invites import SpeakerInvite
from app.models import db
-from app.models.exhibitor import Exhibitor
-from app.models.microlocation import Microlocation
-from app.models.session import Session
-from app.models.session_speaker_link import SessionsSpeakersLink
-from app.models.session_type import SessionType
-from app.models.speaker import Speaker
+from app.models.Event_Context.exhibitor import Exhibitor
+from app.models.Event_Context.microlocation import Microlocation
+from app.models.Event_Context.session import Session
+from app.models.Associations_Context.session_speaker_link import SessionsSpeakersLink
+from app.models.Event_Context.session_type import SessionType
+from app.models.Associations_Context.speaker import Speaker
from app.models.track import Track
-from app.models.user import User
+from app.models.user_context.user import User
sessions_blueprint = Blueprint('sessions_blueprint', __name__, url_prefix='/v1/sessions')
diff --git a/app/api/speaker_image_sizes.py b/app/api/speaker_image_sizes.py
index 24544dc6a2..56b47de322 100644
--- a/app/api/speaker_image_sizes.py
+++ b/app/api/speaker_image_sizes.py
@@ -3,7 +3,7 @@
from app.api.bootstrap import api
from app.api.schema.image_sizes import SpeakerImageSizeSchema
from app.models import db
-from app.models.image_size import ImageSizes
+from app.models.Form_Context.image_size import ImageSizes
class SpeakerImageSizeDetail(ResourceDetail):
diff --git a/app/api/speaker_invites.py b/app/api/speaker_invites.py
index 416c5b75d9..c059bab5f6 100644
--- a/app/api/speaker_invites.py
+++ b/app/api/speaker_invites.py
@@ -14,11 +14,11 @@
from app.api.helpers.utilities import require_relationship
from app.api.schema.speaker_invites import SpeakerInviteSchema
from app.models import db
-from app.models.event import Event
-from app.models.session import Session
-from app.models.speaker import Speaker
-from app.models.speaker_invite import SpeakerInvite
-from app.models.user import User
+from app.models.Event_Context.event import Event
+from app.models.Event_Context.session import Session
+from app.models.Associations_Context.speaker import Speaker
+from app.models.Associations_Context.speaker_invite import SpeakerInvite
+from app.models.user_context.user import User
speaker_invites_misc_routes = Blueprint(
'speaker_invites_misc', __name__, url_prefix='/v1'
diff --git a/app/api/speakers.py b/app/api/speakers.py
index 2245e6dadc..39d98088ea 100644
--- a/app/api/speakers.py
+++ b/app/api/speakers.py
@@ -12,11 +12,11 @@
from app.api.helpers.utilities import require_relationship
from app.api.schema.speakers import SpeakerSchema
from app.models import db
-from app.models.event import Event
-from app.models.session import Session
-from app.models.session_speaker_link import SessionsSpeakersLink
-from app.models.speaker import Speaker
-from app.models.user import User
+from app.models.Event_Context.event import Event
+from app.models.Event_Context.session import Session
+from app.models.Associations_Context.session_speaker_link import SessionsSpeakersLink
+from app.models.Associations_Context.speaker import Speaker
+from app.models.user_context.user import User
def check_email_override(data, event_id, speaker=None):
diff --git a/app/api/speakers_calls.py b/app/api/speakers_calls.py
index abb8334e1e..dfac3242df 100644
--- a/app/api/speakers_calls.py
+++ b/app/api/speakers_calls.py
@@ -8,8 +8,8 @@
from app.api.helpers.utilities import require_relationship
from app.api.schema.speakers_calls import SpeakersCallSchema
from app.models import db
-from app.models.event import Event
-from app.models.speakers_call import SpeakersCall
+from app.models.Event_Context.event import Event
+from app.models.Event_Context.speakers_call import SpeakersCall
class SpeakersCallList(ResourceList):
@@ -44,8 +44,8 @@ def before_create_object(self, data, view_kwargs):
)
event = speakers_call.event
if (
- speakers_call.starts_at > event.starts_at
- or speakers_call.ends_at > event.starts_at
+ speakers_call.starts_at > event.duration.lower
+ or speakers_call.ends_at > event.duration.higher
):
raise ForbiddenError(
{'source': ''},
@@ -90,8 +90,8 @@ def before_patch(self, args, kwargs, data):
).one()
event = speakers_call.event
if (
- speakers_call.starts_at > event.starts_at
- or speakers_call.ends_at > event.starts_at
+ speakers_call.starts_at > event.duration.lower
+ or speakers_call.ends_at > event.duration.higher
):
raise ForbiddenError(
{'source': ''},
diff --git a/app/api/sponsors.py b/app/api/sponsors.py
index 7935c4ef98..8d059d0209 100644
--- a/app/api/sponsors.py
+++ b/app/api/sponsors.py
@@ -9,7 +9,7 @@
from app.api.helpers.utilities import require_relationship
from app.api.schema.sponsors import SponsorSchema
from app.models import db
-from app.models.sponsor import Sponsor
+from app.models.Event_Context.sponsor import Sponsor
class SponsorListPost(ResourceList):
diff --git a/app/api/station.py b/app/api/station.py
index 4588bfe961..08ebbba96f 100644
--- a/app/api/station.py
+++ b/app/api/station.py
@@ -7,9 +7,9 @@
from app.api.helpers.utilities import require_relationship
from app.api.schema.station import StationSchema
from app.models import db
-from app.models.event import Event
-from app.models.microlocation import Microlocation
-from app.models.station import Station
+from app.models.Event_Context.event import Event
+from app.models.Event_Context.microlocation import Microlocation
+from app.models.Event_Context.station import Station
class StationList(ResourceList):
diff --git a/app/api/station_store_paxs.py b/app/api/station_store_paxs.py
index e4c5776b68..8490e3ee4d 100644
--- a/app/api/station_store_paxs.py
+++ b/app/api/station_store_paxs.py
@@ -6,9 +6,9 @@
from app.api.helpers.utilities import require_relationship
from app.api.schema.station_store_pax import StationStorePaxSchema
from app.models import db
-from app.models.session import Session
-from app.models.station import Station
-from app.models.station_store_pax import StationStorePax
+from app.models.Event_Context.session import Session
+from app.models.Event_Context.station import Station
+from app.models.Event_Context.station_store_pax import StationStorePax
class StationStorePaxList(ResourceList):
diff --git a/app/api/stripe_authorization.py b/app/api/stripe_authorization.py
index be0ade2aaa..84b7800f3b 100644
--- a/app/api/stripe_authorization.py
+++ b/app/api/stripe_authorization.py
@@ -13,8 +13,8 @@
StripeAuthorizationSchemaPublic,
)
from app.models import db
-from app.models.event import Event
-from app.models.stripe_authorization import StripeAuthorization
+from app.models.Event_Context.event import Event
+from app.models.Financial_Context.stripe_authorization import StripeAuthorization
class StripeAuthorizationListPost(ResourceList):
diff --git a/app/api/tags.py b/app/api/tags.py
index c8036f7a93..8aaee207dd 100644
--- a/app/api/tags.py
+++ b/app/api/tags.py
@@ -5,9 +5,9 @@
from app.api.helpers.utilities import require_relationship
from app.api.schema.tag import TagSchema
from app.models import db
-from app.models.event import Event
-from app.models.tag import Tag
-from app.models.ticket_holder import TicketHolder
+from app.models.Event_Context.event import Event
+from app.models.Event_Context.tag import Tag
+from app.models.Financial_Context.ticket_holder import TicketHolder
class TagList(ResourceList):
diff --git a/app/api/tax.py b/app/api/tax.py
index 0ffc5a4ab0..f00ab5881a 100644
--- a/app/api/tax.py
+++ b/app/api/tax.py
@@ -9,8 +9,8 @@
from app.api.helpers.utilities import require_relationship
from app.api.schema.tax import TaxSchema, TaxSchemaPublic
from app.models import db
-from app.models.event import Event
-from app.models.tax import Tax
+from app.models.Event_Context.event import Event
+from app.models.Event_Context.tax import Tax
class TaxList(ResourceList):
diff --git a/app/api/ticket_fees.py b/app/api/ticket_fees.py
index c0c8c0dc6c..67ecd8b2d6 100644
--- a/app/api/ticket_fees.py
+++ b/app/api/ticket_fees.py
@@ -3,7 +3,7 @@
from app.api.bootstrap import api
from app.api.schema.ticket_fees import TicketFeesSchema
from app.models import db
-from app.models.ticket_fee import TicketFees
+from app.models.Financial_Context.ticket_fee import TicketFees
class TicketFeeList(ResourceList):
diff --git a/app/api/ticket_tags.py b/app/api/ticket_tags.py
index 9a93f63d44..4f37eba6c0 100644
--- a/app/api/ticket_tags.py
+++ b/app/api/ticket_tags.py
@@ -8,7 +8,7 @@
from app.api.helpers.utilities import require_relationship
from app.api.schema.ticket_tags import TicketTagSchema
from app.models import db
-from app.models.ticket import Ticket, TicketTag, ticket_tags_table
+from app.models.Financial_Context.ticket import Ticket, TicketTag, ticket_tags_table
class TicketTagListPost(ResourceList):
diff --git a/app/api/tickets.py b/app/api/tickets.py
index fce5e43ac9..60a84dfb84 100644
--- a/app/api/tickets.py
+++ b/app/api/tickets.py
@@ -13,12 +13,12 @@
from app.api.helpers.utilities import require_relationship
from app.api.schema.tickets import TicketSchema, TicketSchemaPublic
from app.models import db
-from app.models.access_code import AccessCode
-from app.models.discount_code import DiscountCode
-from app.models.event import Event
-from app.models.order import Order
-from app.models.ticket import Ticket, TicketTag, ticket_tags_table
-from app.models.ticket_holder import TicketHolder
+from app.models.Financial_Context.access_code import AccessCode
+from app.models.Financial_Context.discount_code import DiscountCode
+from app.models.Event_Context.event import Event
+from app.models.Financial_Context.order import Order
+from app.models.Financial_Context.ticket import Ticket, TicketTag, ticket_tags_table
+from app.models.Financial_Context.ticket_holder import TicketHolder
tickets_routes = Blueprint('tickets_routes', __name__, url_prefix='/v1/events')
@@ -103,7 +103,7 @@ def before_create_object(self, data, view_kwargs):
"Event having paid ticket must have a payment method",
)
- if data.get('sales_ends_at') > event.ends_at:
+ if data.get('sales_ends_at') > event.duration.higher:
raise UnprocessableEntityError(
{'sales_ends_at': '/data/attributes/sales-ends-at'},
f"End of ticket sales date of '{data.get('name')}' cannot be after end of event date",
@@ -273,7 +273,7 @@ def before_update_object(self, ticket, data, view_kwargs):
"Can't delete a ticket that has sales",
)
- if data.get('sales_ends_at') and data['sales_ends_at'] > ticket.event.ends_at:
+ if data.get('sales_ends_at') and data['sales_ends_at'] > ticket.event.duration.higher:
raise UnprocessableEntityError(
{'sales_ends_at': '/data/attributes/sales-ends-at'},
f"End of ticket sales date of '{ticket.name}' cannot be after end of event date",
diff --git a/app/api/tracks.py b/app/api/tracks.py
index e863880290..91f9458900 100644
--- a/app/api/tracks.py
+++ b/app/api/tracks.py
@@ -8,7 +8,7 @@
from app.api.helpers.utilities import require_relationship
from app.api.schema.tracks import TrackSchema
from app.models import db
-from app.models.session import Session
+from app.models.Event_Context.session import Session
from app.models.track import Track
diff --git a/app/api/translation_channels.py b/app/api/translation_channels.py
index 8326b448ce..e4343ca34c 100644
--- a/app/api/translation_channels.py
+++ b/app/api/translation_channels.py
@@ -7,9 +7,9 @@
from app.api.helpers.utilities import require_relationship
from app.api.schema.translation_channels import TranslationChannelSchema
from app.models import db
-from app.models.translation_channels import TranslationChannel
-from app.models.video_channel import VideoChannel
-from app.models.video_stream import VideoStream
+from app.models.Event_Context.translation_channels import TranslationChannel
+from app.models.Event_Context.video_channel import VideoChannel
+from app.models.Event_Context.video_stream import VideoStream
class TranslationChannelsList(ResourceList):
diff --git a/app/api/user_check_in.py b/app/api/user_check_in.py
index fb0c6ab090..8a417906b1 100644
--- a/app/api/user_check_in.py
+++ b/app/api/user_check_in.py
@@ -17,12 +17,12 @@
from app.api.schema.station import StationSchema
from app.api.schema.user_check_in import UserCheckInSchema
from app.models import db
-from app.models.session import Session
-from app.models.session_type import SessionType
-from app.models.station import Station
-from app.models.ticket_holder import TicketHolder
+from app.models.Event_Context.session import Session
+from app.models.Event_Context.session_type import SessionType
+from app.models.Event_Context.station import Station
+from app.models.Financial_Context.ticket_holder import TicketHolder
from app.models.track import Track
-from app.models.user_check_in import UserCheckIn
+from app.models.user_context.user_check_in import UserCheckIn
class UserCheckInList(ResourceList):
diff --git a/app/api/user_emails.py b/app/api/user_emails.py
index aee318cc05..ccc41b5650 100644
--- a/app/api/user_emails.py
+++ b/app/api/user_emails.py
@@ -6,8 +6,8 @@
from app.api.helpers.utilities import require_relationship
from app.api.schema.user_email import UserEmailSchema
from app.models import db
-from app.models.user import User
-from app.models.user_email import UserEmail
+from app.models.user_context.user import User
+from app.models.user_context.user_email import UserEmail
class UserEmailListAdmin(ResourceList):
diff --git a/app/api/user_favourite_events.py b/app/api/user_favourite_events.py
index 0b0e8af7ff..00ba8e8b7c 100644
--- a/app/api/user_favourite_events.py
+++ b/app/api/user_favourite_events.py
@@ -9,8 +9,8 @@
from app.api.helpers.utilities import require_relationship
from app.api.schema.user_favourite_events import UserFavouriteEventSchema
from app.models import db
-from app.models.user import User
-from app.models.user_favourite_event import UserFavouriteEvent
+from app.models.user_context.user import User
+from app.models.user_context.user_favourite_event import UserFavouriteEvent
class UserFavouriteEventListPost(ResourceList):
diff --git a/app/api/user_favourite_sessions.py b/app/api/user_favourite_sessions.py
index 6f5468356f..aa5089e8ec 100644
--- a/app/api/user_favourite_sessions.py
+++ b/app/api/user_favourite_sessions.py
@@ -7,10 +7,10 @@
from app.api.helpers.utilities import require_relationship
from app.api.schema.user_favourite_sessions import UserFavouriteSessionSchema
from app.models import db
-from app.models.event import Event
-from app.models.session import Session
-from app.models.user import User
-from app.models.user_favourite_session import UserFavouriteSession
+from app.models.Event_Context.event import Event
+from app.models.Event_Context.session import Session
+from app.models.user_context.user import User
+from app.models.user_context.user_favourite_session import UserFavouriteSession
class UserFavouriteSessionListPost(ResourceList):
diff --git a/app/api/user_follow_groups.py b/app/api/user_follow_groups.py
index e294f3af49..da9ac130d4 100644
--- a/app/api/user_follow_groups.py
+++ b/app/api/user_follow_groups.py
@@ -7,9 +7,9 @@
from app.api.helpers.utilities import require_relationship
from app.api.schema.user_follow_groups import UserFollowGroupSchema
from app.models import db
-from app.models.group import Group
-from app.models.user import User
-from app.models.user_follow_group import UserFollowGroup
+from app.models.Associations_Context.group import Group
+from app.models.user_context.user import User
+from app.models.user_context.user_follow_group import UserFollowGroup
class UserFollowGroupListPost(ResourceList):
diff --git a/app/api/user_permission.py b/app/api/user_permission.py
index 20cd6e2244..e57460a2ab 100644
--- a/app/api/user_permission.py
+++ b/app/api/user_permission.py
@@ -3,7 +3,7 @@
from app.api.bootstrap import api
from app.api.schema.user_permission import UserPermissionSchema
from app.models import db
-from app.models.user_permission import UserPermission
+from app.models.user_context.user_permission import UserPermission
class UserPermissionList(ResourceList):
diff --git a/app/api/users.py b/app/api/users.py
index 23d9e0941e..38e8dc078c 100644
--- a/app/api/users.py
+++ b/app/api/users.py
@@ -19,22 +19,22 @@
)
from app.api.schema.users import UserSchema, UserSchemaPublic
from app.models import db
-from app.models.access_code import AccessCode
-from app.models.discount_code import DiscountCode
-from app.models.email_notification import EmailNotification
-from app.models.event import Event
-from app.models.event_invoice import EventInvoice
-from app.models.feedback import Feedback
-from app.models.group import Group
-from app.models.notification import Notification
-from app.models.order import Order
-from app.models.session import Session
-from app.models.speaker import Speaker
-from app.models.ticket_holder import TicketHolder
-from app.models.user import User
-from app.models.user_follow_group import UserFollowGroup
-from app.models.users_events_role import UsersEventsRoles
-from app.models.video_stream_moderator import VideoStreamModerator
+from app.models.Financial_Context.access_code import AccessCode
+from app.models.Financial_Context.discount_code import DiscountCode
+from app.models.Communication_Context.email_notification import EmailNotification
+from app.models.Event_Context.event import Event
+from app.models.Financial_Context.event_invoice import EventInvoice
+from app.models.Event_Context.feedback import Feedback
+from app.models.Associations_Context.group import Group
+from app.models.Communication_Context.notification import Notification
+from app.models.Financial_Context.order import Order
+from app.models.Event_Context.session import Session
+from app.models.Associations_Context.speaker import Speaker
+from app.models.Financial_Context.ticket_holder import TicketHolder
+from app.models.user_context.user import User
+from app.models.user_context.user_follow_group import UserFollowGroup
+from app.models.user_context.users_events_role import UsersEventsRoles
+from app.models.Event_Context.video_stream_moderator import VideoStreamModerator
logger = logging.getLogger(__name__)
@@ -305,7 +305,7 @@ def before_update_object(self, user, data, view_kwargs):
TicketHolder.query.filter_by(user=user)
.join(Order)
.join(Order.event)
- .filter(Event.ends_at > datetime.now())
+ .filter(Event.duration.higher > datetime.now())
.filter(
or_(
Order.status == 'completed',
diff --git a/app/api/users_events_roles.py b/app/api/users_events_roles.py
index 4a6a739b0c..0b557b8ba4 100644
--- a/app/api/users_events_roles.py
+++ b/app/api/users_events_roles.py
@@ -5,8 +5,8 @@
from app.api.helpers.query import event_query
from app.api.schema.users_events_roles import UsersEventsRolesSchema
from app.models import db
-from app.models.role_invite import RoleInvite
-from app.models.users_events_role import UsersEventsRoles
+from app.models.Associations_Context.role_invite import RoleInvite
+from app.models.user_context.users_events_role import UsersEventsRoles
class UsersEventsRolesList(ResourceList):
diff --git a/app/api/users_groups_roles.py b/app/api/users_groups_roles.py
index a83be8b143..8e121c2b50 100644
--- a/app/api/users_groups_roles.py
+++ b/app/api/users_groups_roles.py
@@ -8,10 +8,10 @@
from app.api.helpers.utilities import require_relationship
from app.api.schema.users_groups_roles import UsersGroupsRolesSchema
from app.models import db
-from app.models.group import Group
-from app.models.role import Role
-from app.models.user import User
-from app.models.users_groups_role import UsersGroupsRoles
+from app.models.Associations_Context.group import Group
+from app.models.Associations_Context.role import Role
+from app.models.user_context.user import User
+from app.models.user_context.users_groups_role import UsersGroupsRoles
class UsersGroupsRolesList(ResourceList):
diff --git a/app/api/video_channel.py b/app/api/video_channel.py
index b0342ea7c9..8246d7046b 100644
--- a/app/api/video_channel.py
+++ b/app/api/video_channel.py
@@ -5,8 +5,8 @@
from app.api.helpers.permission_manager import has_access, is_logged_in
from app.api.schema.video_channel import VideoChannelSchema, VideoChannelSchemaPublic
from app.models import db
-from app.models.video_channel import VideoChannel
-from app.models.video_stream import VideoStream
+from app.models.Event_Context.video_channel import VideoChannel
+from app.models.Event_Context.video_stream import VideoStream
class VideoChannelListPost(ResourceList):
diff --git a/app/api/video_channel_stream.py b/app/api/video_channel_stream.py
index bcc2ca9635..1750266073 100644
--- a/app/api/video_channel_stream.py
+++ b/app/api/video_channel_stream.py
@@ -5,8 +5,8 @@
from app.api.helpers.permission_manager import has_access, is_logged_in
from app.api.schema.video_channel import VideoChannelSchema, VideoChannelSchemaPublic
from app.models import db
-from app.models.video_channel import VideoChannel
-from app.models.video_stream import VideoStream
+from app.models.Event_Context.video_channel import VideoChannel
+from app.models.Event_Context.video_stream import VideoStream
class VideoChannelListPost(ResourceList):
diff --git a/app/api/video_recordings.py b/app/api/video_recordings.py
index 32eb673021..52ed708139 100644
--- a/app/api/video_recordings.py
+++ b/app/api/video_recordings.py
@@ -10,8 +10,8 @@
from app.api.schema.video_recordings import VideoRecordingSchema
from app.api.video_channels.bbb import BigBlueButton
from app.models import db
-from app.models.video_recording import VideoRecording
-from app.models.video_stream import VideoStream
+from app.models.Event_Context.video_recording import VideoRecording
+from app.models.Event_Context.video_stream import VideoStream
class VideoRecordingList(ResourceList):
diff --git a/app/api/video_stream.py b/app/api/video_stream.py
index f88bd85463..1faa54248f 100644
--- a/app/api/video_stream.py
+++ b/app/api/video_stream.py
@@ -23,12 +23,12 @@
from app.api.schema.video_stream import ChatmosphereSchema, VideoStreamSchema
from app.api.video_channels.bbb import BigBlueButton
from app.models import db
-from app.models.event import Event
-from app.models.microlocation import Microlocation
-from app.models.video_channel import VideoChannel
-from app.models.video_recording import VideoRecording
-from app.models.video_stream import VideoStream
-from app.models.video_stream_moderator import VideoStreamModerator
+from app.models.Event_Context.event import Event
+from app.models.Event_Context.microlocation import Microlocation
+from app.models.Event_Context.video_channel import VideoChannel
+from app.models.Event_Context.video_recording import VideoRecording
+from app.models.Event_Context.video_stream import VideoStream
+from app.models.Event_Context.video_stream_moderator import VideoStreamModerator
logger = logging.getLogger(__name__)
diff --git a/app/api/video_stream_moderators.py b/app/api/video_stream_moderators.py
index bccfeece9e..5ac95dc8df 100644
--- a/app/api/video_stream_moderators.py
+++ b/app/api/video_stream_moderators.py
@@ -9,9 +9,9 @@
from app.api.helpers.utilities import require_relationship
from app.api.schema.video_stream_moderators import VideoStreamModeratorSchema
from app.models import db
-from app.models.user import User
-from app.models.video_stream import VideoStream
-from app.models.video_stream_moderator import VideoStreamModerator
+from app.models.user_context.user import User
+from app.models.Event_Context.video_stream import VideoStream
+from app.models.Event_Context.video_stream_moderator import VideoStreamModerator
class VideoStreamModeratorList(ResourceList):
diff --git a/app/models/custom_system_role.py b/app/models/Associations_Context/custom_system_role.py
similarity index 93%
rename from app/models/custom_system_role.py
rename to app/models/Associations_Context/custom_system_role.py
index 5d0a26decf..cbff5b4761 100644
--- a/app/models/custom_system_role.py
+++ b/app/models/Associations_Context/custom_system_role.py
@@ -1,5 +1,5 @@
from app.models import db
-from app.models.panel_permission import PanelPermission
+from app.models.Associations_Context.panel_permission import PanelPermission
class CustomSysRole(db.Model):
diff --git a/app/models/group.py b/app/models/Associations_Context/group.py
similarity index 95%
rename from app/models/group.py
rename to app/models/Associations_Context/group.py
index c6ec3206e5..c0e5cd03bc 100644
--- a/app/models/group.py
+++ b/app/models/Associations_Context/group.py
@@ -6,7 +6,7 @@
from app.models import db
from app.models.base import SoftDeletionModel
-from app.models.user_follow_group import UserFollowGroup
+from app.models.user_context.user_follow_group import UserFollowGroup
from app.settings import get_settings
diff --git a/app/models/panel_permission.py b/app/models/Associations_Context/panel_permission.py
similarity index 100%
rename from app/models/panel_permission.py
rename to app/models/Associations_Context/panel_permission.py
diff --git a/app/models/permission.py b/app/models/Associations_Context/permission.py
similarity index 100%
rename from app/models/permission.py
rename to app/models/Associations_Context/permission.py
diff --git a/app/models/role.py b/app/models/Associations_Context/role.py
similarity index 100%
rename from app/models/role.py
rename to app/models/Associations_Context/role.py
diff --git a/app/models/role_invite.py b/app/models/Associations_Context/role_invite.py
similarity index 96%
rename from app/models/role_invite.py
rename to app/models/Associations_Context/role_invite.py
index 1d1d8cf85a..4c043050b0 100644
--- a/app/models/role_invite.py
+++ b/app/models/Associations_Context/role_invite.py
@@ -11,8 +11,8 @@
from app.api.helpers.notification import notify_event_role_invitation
from app.api.helpers.permission_manager import has_access
from app.models import db
-from app.models.event import Event
-from app.models.user import User
+from app.models.Event_Context.event import Event
+from app.models.user_context.user import User
from app.settings import get_settings
diff --git a/app/models/session_speaker_link.py b/app/models/Associations_Context/session_speaker_link.py
similarity index 100%
rename from app/models/session_speaker_link.py
rename to app/models/Associations_Context/session_speaker_link.py
diff --git a/app/models/speaker.py b/app/models/Associations_Context/speaker.py
similarity index 100%
rename from app/models/speaker.py
rename to app/models/Associations_Context/speaker.py
diff --git a/app/models/speaker_invite.py b/app/models/Associations_Context/speaker_invite.py
similarity index 93%
rename from app/models/speaker_invite.py
rename to app/models/Associations_Context/speaker_invite.py
index 1a2fe1695d..83794bef7f 100644
--- a/app/models/speaker_invite.py
+++ b/app/models/Associations_Context/speaker_invite.py
@@ -3,8 +3,8 @@
from app.api.helpers.permission_manager import has_access
from app.models import db
from app.models.helpers.timestamp import Timestamp
-from app.models.session import Session
-from app.models.speaker import Speaker
+from app.models.Event_Context.session import Session
+from app.models.Associations_Context.speaker import Speaker
from app.settings import get_settings
diff --git a/app/models/email_notification.py b/app/models/Communication_Context/email_notification.py
similarity index 71%
rename from app/models/email_notification.py
rename to app/models/Communication_Context/email_notification.py
index c97a1cc72a..b9713931bf 100644
--- a/app/models/email_notification.py
+++ b/app/models/Communication_Context/email_notification.py
@@ -1,9 +1,13 @@
from app.models import db
from app.models.base import SoftDeletionModel
-
+# Email notifaction preferences for a user assoicated with a specific event.
+# This model allows users to enable or disable specific types of notifcations.
class EmailNotification(SoftDeletionModel):
- """email notifications model class"""
+ """
+ Email notifaction preferences for a user assoicated with a specific event.
+ This model allows users to enable or disable specific types of notifcations.
+ """
__tablename__ = 'email_notifications'
id = db.Column(db.Integer, primary_key=True)
diff --git a/app/models/mail.py b/app/models/Communication_Context/mail.py
similarity index 87%
rename from app/models/mail.py
rename to app/models/Communication_Context/mail.py
index a317eebddd..4c819ce0cd 100644
--- a/app/models/mail.py
+++ b/app/models/Communication_Context/mail.py
@@ -4,6 +4,9 @@
class Mail(db.Model):
+ """
+ Represents an email record in the database.
+ """
__tablename__ = 'mails'
id = db.Column(db.Integer, primary_key=True)
recipient = db.Column(db.String)
diff --git a/app/models/message_setting.py b/app/models/Communication_Context/message_setting.py
similarity index 100%
rename from app/models/message_setting.py
rename to app/models/Communication_Context/message_setting.py
diff --git a/app/models/notification.py b/app/models/Communication_Context/notification.py
similarity index 100%
rename from app/models/notification.py
rename to app/models/Communication_Context/notification.py
diff --git a/app/models/notification_setting.py b/app/models/Communication_Context/notification_setting.py
similarity index 100%
rename from app/models/notification_setting.py
rename to app/models/Communication_Context/notification_setting.py
diff --git a/app/models/social_link.py b/app/models/Communication_Context/social_link.py
similarity index 100%
rename from app/models/social_link.py
rename to app/models/Communication_Context/social_link.py
diff --git a/app/models/event.py b/app/models/Event_Context/event.py
similarity index 95%
rename from app/models/event.py
rename to app/models/Event_Context/event.py
index b4f48c6a35..fa8b71bd01 100644
--- a/app/models/event.py
+++ b/app/models/Event_Context/event.py
@@ -8,24 +8,26 @@
from flask_babel import _
from sqlalchemy import event
from sqlalchemy.dialects.postgresql import JSONB
+from sqlalchemy.dialects.postgresql import TSTZRANGE
+
from sqlalchemy.sql import func
from sqlalchemy.sql.expression import and_, or_
from app.api.helpers.db import get_new_identifier
from app.models import db
from app.models.base import SoftDeletionModel
-from app.models.email_notification import EmailNotification
-from app.models.event_topic import EventTopic
-from app.models.feedback import Feedback
+from app.models.Communication_Context.email_notification import EmailNotification
+from app.models.Event_Context.event_topic import EventTopic
+from app.models.Event_Context.feedback import Feedback
from app.models.helpers.versioning import clean_html, clean_up_string
-from app.models.order import Order
-from app.models.role import Role
+from app.models.Financial_Context.order import Order
+from app.models.Associations_Context.role import Role
from app.models.search import sync
-from app.models.session import Session
-from app.models.speaker import Speaker
-from app.models.ticket import Ticket
-from app.models.ticket_fee import get_fee, get_maximum_fee
-from app.models.ticket_holder import TicketHolder
+from app.models.Event_Context.session import Session
+from app.models.Associations_Context.speaker import Speaker
+from app.models.Financial_Context.ticket import Ticket
+from app.models.Financial_Context.ticket_fee import get_fee, get_maximum_fee
+from app.models.Financial_Context.ticket_holder import TicketHolder
from app.settings import get_settings
@@ -53,8 +55,7 @@ class Privacy:
name = db.Column(db.String, nullable=False)
external_event_url = db.Column(db.String)
logo_url = db.Column(db.String)
- starts_at = db.Column(db.DateTime(timezone=True), nullable=False)
- ends_at = db.Column(db.DateTime(timezone=True), nullable=False)
+ duration = db.Column(TSTZRANGE, nullable=False)
timezone = db.Column(db.String, nullable=False, default="UTC")
online = db.Column(db.Boolean, nullable=False, default=False, server_default='False')
latitude = db.Column(db.Float)
@@ -456,11 +457,11 @@ def organizer_site_link(self):
@property
def starts_at_tz(self):
- return self.starts_at.astimezone(pytz.timezone(self.timezone))
+ return self.duration.lower.astimezone(pytz.timezone(self.timezone))
@property
def ends_at_tz(self):
- return self.ends_at.astimezone(pytz.timezone(self.timezone))
+ return self.duration.higher.astimezone(pytz.timezone(self.timezone))
@property
def normalized_location(self):
diff --git a/app/models/event_copyright.py b/app/models/Event_Context/event_copyright.py
similarity index 100%
rename from app/models/event_copyright.py
rename to app/models/Event_Context/event_copyright.py
diff --git a/app/models/event_location.py b/app/models/Event_Context/event_location.py
similarity index 100%
rename from app/models/event_location.py
rename to app/models/Event_Context/event_location.py
diff --git a/app/models/event_orga.py b/app/models/Event_Context/event_orga.py
similarity index 100%
rename from app/models/event_orga.py
rename to app/models/Event_Context/event_orga.py
diff --git a/app/models/event_sub_topic.py b/app/models/Event_Context/event_sub_topic.py
similarity index 100%
rename from app/models/event_sub_topic.py
rename to app/models/Event_Context/event_sub_topic.py
diff --git a/app/models/event_topic.py b/app/models/Event_Context/event_topic.py
similarity index 100%
rename from app/models/event_topic.py
rename to app/models/Event_Context/event_topic.py
diff --git a/app/models/event_type.py b/app/models/Event_Context/event_type.py
similarity index 100%
rename from app/models/event_type.py
rename to app/models/Event_Context/event_type.py
diff --git a/app/models/exhibitor.py b/app/models/Event_Context/exhibitor.py
similarity index 100%
rename from app/models/exhibitor.py
rename to app/models/Event_Context/exhibitor.py
diff --git a/app/models/feedback.py b/app/models/Event_Context/feedback.py
similarity index 100%
rename from app/models/feedback.py
rename to app/models/Event_Context/feedback.py
diff --git a/app/models/invite.py b/app/models/Event_Context/invite.py
similarity index 100%
rename from app/models/invite.py
rename to app/models/Event_Context/invite.py
diff --git a/app/models/microlocation.py b/app/models/Event_Context/microlocation.py
similarity index 100%
rename from app/models/microlocation.py
rename to app/models/Event_Context/microlocation.py
diff --git a/app/models/session.py b/app/models/Event_Context/session.py
similarity index 97%
rename from app/models/session.py
rename to app/models/Event_Context/session.py
index a5d697376a..6d8d293610 100644
--- a/app/models/session.py
+++ b/app/models/Event_Context/session.py
@@ -8,9 +8,9 @@
from app.models import db
from app.models.base import SoftDeletionModel
-from app.models.feedback import Feedback
+from app.models.Event_Context.feedback import Feedback
from app.models.helpers.versioning import clean_html, clean_up_string
-from app.models.user_favourite_session import UserFavouriteSession
+from app.models.user_context.user_favourite_session import UserFavouriteSession
speakers_sessions = db.Table(
'speakers_sessions',
diff --git a/app/models/session_type.py b/app/models/Event_Context/session_type.py
similarity index 100%
rename from app/models/session_type.py
rename to app/models/Event_Context/session_type.py
diff --git a/app/models/speakers_call.py b/app/models/Event_Context/speakers_call.py
similarity index 100%
rename from app/models/speakers_call.py
rename to app/models/Event_Context/speakers_call.py
diff --git a/app/models/sponsor.py b/app/models/Event_Context/sponsor.py
similarity index 100%
rename from app/models/sponsor.py
rename to app/models/Event_Context/sponsor.py
diff --git a/app/models/station.py b/app/models/Event_Context/station.py
similarity index 100%
rename from app/models/station.py
rename to app/models/Event_Context/station.py
diff --git a/app/models/station_store_pax.py b/app/models/Event_Context/station_store_pax.py
similarity index 100%
rename from app/models/station_store_pax.py
rename to app/models/Event_Context/station_store_pax.py
diff --git a/app/models/tag.py b/app/models/Event_Context/tag.py
similarity index 100%
rename from app/models/tag.py
rename to app/models/Event_Context/tag.py
diff --git a/app/models/tax.py b/app/models/Event_Context/tax.py
similarity index 100%
rename from app/models/tax.py
rename to app/models/Event_Context/tax.py
diff --git a/app/models/translation_channels.py b/app/models/Event_Context/translation_channels.py
similarity index 91%
rename from app/models/translation_channels.py
rename to app/models/Event_Context/translation_channels.py
index ced2fe7256..14d9214271 100644
--- a/app/models/translation_channels.py
+++ b/app/models/Event_Context/translation_channels.py
@@ -1,7 +1,7 @@
from sqlalchemy.orm import backref
from app.models import db
-from app.models.video_channel import VideoChannel
+from app.models.Event_Context.video_channel import VideoChannel
class TranslationChannel(db.Model):
diff --git a/app/models/video_channel.py b/app/models/Event_Context/video_channel.py
similarity index 100%
rename from app/models/video_channel.py
rename to app/models/Event_Context/video_channel.py
diff --git a/app/models/video_recording.py b/app/models/Event_Context/video_recording.py
similarity index 100%
rename from app/models/video_recording.py
rename to app/models/Event_Context/video_recording.py
diff --git a/app/models/video_stream.py b/app/models/Event_Context/video_stream.py
similarity index 92%
rename from app/models/video_stream.py
rename to app/models/Event_Context/video_stream.py
index f492450939..1db019c32c 100644
--- a/app/models/video_stream.py
+++ b/app/models/Event_Context/video_stream.py
@@ -6,11 +6,11 @@
from app.api.helpers.permission_manager import has_access
from app.models import db
-from app.models.order import Order
-from app.models.session import Session
-from app.models.speaker import Speaker
-from app.models.ticket_holder import TicketHolder
-from app.models.video_channel import VideoChannel
+from app.models.Financial_Context.order import Order
+from app.models.Event_Context.session import Session
+from app.models.Associations_Context.speaker import Speaker
+from app.models.Financial_Context.ticket_holder import TicketHolder
+from app.models.Event_Context.video_channel import VideoChannel
class VideoStream(db.Model):
diff --git a/app/models/video_stream_moderator.py b/app/models/Event_Context/video_stream_moderator.py
similarity index 100%
rename from app/models/video_stream_moderator.py
rename to app/models/Event_Context/video_stream_moderator.py
diff --git a/app/models/access_code.py b/app/models/Financial_Context/access_code.py
similarity index 92%
rename from app/models/access_code.py
rename to app/models/Financial_Context/access_code.py
index bc8ba445da..419f32c91f 100644
--- a/app/models/access_code.py
+++ b/app/models/Financial_Context/access_code.py
@@ -6,8 +6,8 @@
from app.api.helpers.db import get_count
from app.models import db
from app.models.base import SoftDeletionModel
-from app.models.order import Order
-from app.models.ticket_holder import TicketHolder
+from app.models.Financial_Context.order import Order
+from app.models.Financial_Context.ticket_holder import TicketHolder
@dataclass(init=False, unsafe_hash=True)
@@ -46,7 +46,7 @@ def get_service_name():
@property
def valid_expire_time(self):
- return self.valid_till or self.event.ends_at
+ return self.valid_till or self.event.duration.higher
def get_confirmed_attendees_query(self):
"""
diff --git a/app/models/discount_code.py b/app/models/Financial_Context/discount_code.py
similarity index 92%
rename from app/models/discount_code.py
rename to app/models/Financial_Context/discount_code.py
index f19d306730..6896064aa0 100644
--- a/app/models/discount_code.py
+++ b/app/models/Financial_Context/discount_code.py
@@ -6,9 +6,9 @@
from app.api.helpers.ticketing import is_discount_available, validate_discount_code
from app.models import db
from app.models.base import SoftDeletionModel
-from app.models.order import Order
-from app.models.ticket import Ticket
-from app.models.ticket_holder import TicketHolder
+from app.models.Financial_Context.order import Order
+from app.models.Financial_Context.ticket import Ticket
+from app.models.Financial_Context.ticket_holder import TicketHolder
class DiscountCode(SoftDeletionModel):
@@ -62,7 +62,7 @@ def confirmed_attendees_count(self) -> int:
@property
def valid_expire_time(self):
- return self.valid_till or self.event.ends_at
+ return self.valid_till or self.event.duration.higher
def get_supported_tickets(self, ticket_ids=None):
query = Ticket.query.with_parent(self).filter_by(deleted_at=None)
diff --git a/app/models/event_invoice.py b/app/models/Financial_Context/event_invoice.py
similarity index 98%
rename from app/models/event_invoice.py
rename to app/models/Financial_Context/event_invoice.py
index 8ef88e9167..416d191815 100644
--- a/app/models/event_invoice.py
+++ b/app/models/Financial_Context/event_invoice.py
@@ -12,9 +12,9 @@
from app.api.helpers.utilities import monthdelta, round_money
from app.models import db
from app.models.base import SoftDeletionModel
-from app.models.order import Order
+from app.models.Financial_Context.order import Order
from app.models.setting import Setting
-from app.models.ticket_fee import TicketFees
+from app.models.Financial_Context.ticket_fee import TicketFees
from app.settings import get_settings
logger = logging.getLogger(__name__)
diff --git a/app/models/order.py b/app/models/Financial_Context/order.py
similarity index 98%
rename from app/models/order.py
rename to app/models/Financial_Context/order.py
index 9d21eed228..5f1b6bc9e8 100644
--- a/app/models/order.py
+++ b/app/models/Financial_Context/order.py
@@ -6,7 +6,7 @@
from app.api.helpers.db import get_new_identifier
from app.api.helpers.storage import UPLOAD_PATHS, generate_hash
from app.models import db
-from app.models.ticket_holder import TicketHolder
+from app.models.Financial_Context.ticket_holder import TicketHolder
from app.settings import get_settings
diff --git a/app/models/stripe_authorization.py b/app/models/Financial_Context/stripe_authorization.py
similarity index 100%
rename from app/models/stripe_authorization.py
rename to app/models/Financial_Context/stripe_authorization.py
diff --git a/app/models/ticket.py b/app/models/Financial_Context/ticket.py
similarity index 97%
rename from app/models/ticket.py
rename to app/models/Financial_Context/ticket.py
index 2ebd538366..ddd7b6d1bb 100644
--- a/app/models/ticket.py
+++ b/app/models/Financial_Context/ticket.py
@@ -3,8 +3,8 @@
from app.api.helpers.errors import ConflictError
from app.models import db
from app.models.base import SoftDeletionModel
-from app.models.order import Order, OrderTicket
-from app.models.ticket_holder import TicketHolder
+from app.models.Financial_Context.order import Order, OrderTicket
+from app.models.Financial_Context.ticket_holder import TicketHolder
access_codes_tickets = db.Table(
'access_codes_tickets',
diff --git a/app/models/ticket_fee.py b/app/models/Financial_Context/ticket_fee.py
similarity index 100%
rename from app/models/ticket_fee.py
rename to app/models/Financial_Context/ticket_fee.py
diff --git a/app/models/ticket_holder.py b/app/models/Financial_Context/ticket_holder.py
similarity index 100%
rename from app/models/ticket_holder.py
rename to app/models/Financial_Context/ticket_holder.py
diff --git a/app/models/badge_field_form.py b/app/models/Form_Context/badge_field_form.py
similarity index 100%
rename from app/models/badge_field_form.py
rename to app/models/Form_Context/badge_field_form.py
diff --git a/app/models/badge_form.py b/app/models/Form_Context/badge_form.py
similarity index 100%
rename from app/models/badge_form.py
rename to app/models/Form_Context/badge_form.py
diff --git a/app/models/custom_form.py b/app/models/Form_Context/custom_form.py
similarity index 100%
rename from app/models/custom_form.py
rename to app/models/Form_Context/custom_form.py
diff --git a/app/models/custom_form_option.py b/app/models/Form_Context/custom_form_option.py
similarity index 100%
rename from app/models/custom_form_option.py
rename to app/models/Form_Context/custom_form_option.py
diff --git a/app/models/custom_form_translate.py b/app/models/Form_Context/custom_form_translate.py
similarity index 100%
rename from app/models/custom_form_translate.py
rename to app/models/Form_Context/custom_form_translate.py
diff --git a/app/models/custom_placeholder.py b/app/models/Form_Context/custom_placeholder.py
similarity index 100%
rename from app/models/custom_placeholder.py
rename to app/models/Form_Context/custom_placeholder.py
diff --git a/app/models/faq.py b/app/models/Form_Context/faq.py
similarity index 100%
rename from app/models/faq.py
rename to app/models/Form_Context/faq.py
diff --git a/app/models/faq_type.py b/app/models/Form_Context/faq_type.py
similarity index 100%
rename from app/models/faq_type.py
rename to app/models/Form_Context/faq_type.py
diff --git a/app/models/image_size.py b/app/models/Form_Context/image_size.py
similarity index 100%
rename from app/models/image_size.py
rename to app/models/Form_Context/image_size.py
diff --git a/app/models/user.py b/app/models/user_context/user.py
similarity index 95%
rename from app/models/user.py
rename to app/models/user_context/user.py
index 8810535165..745173db49 100644
--- a/app/models/user.py
+++ b/app/models/user_context/user.py
@@ -17,18 +17,18 @@
from app.api.helpers.utilities import get_serializer
from app.models import db
from app.models.base import SoftDeletionModel
-from app.models.custom_system_role import UserSystemRole
-from app.models.event import Event
+from app.models.Associations_Context.custom_system_role import UserSystemRole
+from app.models.Event_Context.event import Event
from app.models.helpers.versioning import clean_html, clean_up_string
from app.models.notification import Notification
-from app.models.panel_permission import PanelPermission
-from app.models.permission import Permission
-from app.models.role import Role
+from app.models.Associations_Context.panel_permission import PanelPermission
+from app.models.Associations_Context.permission import Permission
+from app.models.Associations_Context.role import Role
from app.models.service import Service
-from app.models.session import Session
-from app.models.speaker import Speaker
-from app.models.user_permission import UserPermission
-from app.models.users_events_role import UsersEventsRoles as UER
+from app.models.Event_Context.session import Session
+from app.models.Associations_Context.speaker import Speaker
+from app.models.user_context.user_permission import UserPermission
+from app.models.user_context.users_events_role import UsersEventsRoles as UER
# System-wide
ADMIN = 'admin'
@@ -198,7 +198,7 @@ def _is_role(self, role_name, event_id=None):
"""
Checks if a user has a particular Role at an Event.
"""
- from app.models.users_groups_role import UsersGroupsRoles
+ from app.models.user_context.users_groups_role import UsersGroupsRoles
role = Role.query.filter_by(name=role_name).first()
uer = UER.query.filter_by(user=self, role=role)
diff --git a/app/models/user_check_in.py b/app/models/user_context/user_check_in.py
similarity index 100%
rename from app/models/user_check_in.py
rename to app/models/user_context/user_check_in.py
diff --git a/app/models/user_email.py b/app/models/user_context/user_email.py
similarity index 100%
rename from app/models/user_email.py
rename to app/models/user_context/user_email.py
diff --git a/app/models/user_favourite_event.py b/app/models/user_context/user_favourite_event.py
similarity index 100%
rename from app/models/user_favourite_event.py
rename to app/models/user_context/user_favourite_event.py
diff --git a/app/models/user_favourite_session.py b/app/models/user_context/user_favourite_session.py
similarity index 95%
rename from app/models/user_favourite_session.py
rename to app/models/user_context/user_favourite_session.py
index 366c833cdc..97c4923c70 100644
--- a/app/models/user_favourite_session.py
+++ b/app/models/user_context/user_favourite_session.py
@@ -19,7 +19,7 @@ class UserFavouriteSession(db.Model, Timestamp):
@property
def safe_user(self):
from app.api.helpers.permission_manager import require_current_user
- from app.models.user import User
+ from app.models.user_context.user import User
if not self.user_id:
return None
diff --git a/app/models/user_follow_group.py b/app/models/user_context/user_follow_group.py
similarity index 100%
rename from app/models/user_follow_group.py
rename to app/models/user_context/user_follow_group.py
diff --git a/app/models/user_permission.py b/app/models/user_context/user_permission.py
similarity index 100%
rename from app/models/user_permission.py
rename to app/models/user_context/user_permission.py
diff --git a/app/models/user_token_blacklist.py b/app/models/user_context/user_token_blacklist.py
similarity index 100%
rename from app/models/user_token_blacklist.py
rename to app/models/user_context/user_token_blacklist.py
diff --git a/app/models/users_events_role.py b/app/models/user_context/users_events_role.py
similarity index 100%
rename from app/models/users_events_role.py
rename to app/models/user_context/users_events_role.py
diff --git a/app/models/users_groups_role.py b/app/models/user_context/users_groups_role.py
similarity index 100%
rename from app/models/users_groups_role.py
rename to app/models/user_context/users_groups_role.py
diff --git a/app/templates/email/ticket_purchased.html b/app/templates/email/ticket_purchased.html
index bd8ea9cc55..bb2bae101a 100644
--- a/app/templates/email/ticket_purchased.html
+++ b/app/templates/email/ticket_purchased.html
@@ -16,10 +16,10 @@
{{ _('Location') }}: {{ order.event.event_location_status }}
{{ _('URL') }}: {{ order.event.site_link }}
-
{{ _('Add to calendar') }}: {{ _('Google Calendar') }} •
+
{{ _('Add to calendar') }}: {{ _('Google Calendar') }} •
{{ _('iCal') }} •
- {{ _('Yahoo') }} •
- {{ _('Outlook') }}
+ {{ _('Yahoo') }} •
+ {{ _('Outlook') }}
{% if order.event.after_order_message | strip_tags != '' %}
{{ _('Below you find a message from the organizer') }}:
diff --git a/app/templates/pdf/ticket_attendee.html b/app/templates/pdf/ticket_attendee.html
index 201d8f5af3..10da43297b 100644
--- a/app/templates/pdf/ticket_attendee.html
+++ b/app/templates/pdf/ticket_attendee.html
@@ -164,12 +164,14 @@
- {% if order.event.starts_at %}
- {{_('From: %(start_time)s',start_time=starts_at)}}
- {% endif %}
+ {% if order.event.date_range %}
+
+ {{ _('From: %(start_time)s', start_time=order.event.date_range.lower) }}
+
- {% if order.event.ends_at %}
- {{_('To: %(end_time)s',end_time=ends_at)}}
+
+ {{ _('To: %(end_time)s', end_time=order.event.date_range.upper) }}
+
{% endif %}
diff --git a/app/templates/pdf/ticket_purchaser.html b/app/templates/pdf/ticket_purchaser.html
index 81a2dc1bba..faba3d0760 100644
--- a/app/templates/pdf/ticket_purchaser.html
+++ b/app/templates/pdf/ticket_purchaser.html
@@ -160,12 +160,10 @@
- {% if order.event.starts_at %}
- {{_('From: %(start_time)s',start_time=starts_at)}}
- {% endif %}
+ {% if order.event.date_range %}
+ {{ _('From: %(start_time)s', start_time=order.event.date_range.lower) }}
- {% if order.event.ends_at %}
- {{_('To: %(end_time)s',end_time=ends_at)}}
+ {{ _('To: %(end_time)s', end_time=order.event.date_range.upper) }}
{% endif %}
diff --git a/app/views/blueprints.py b/app/views/blueprints.py
index e5a51e470a..877f860ddf 100644
--- a/app/views/blueprints.py
+++ b/app/views/blueprints.py
@@ -7,7 +7,7 @@
from wtforms import fields, form, validators
from app.models import db
-from app.models.user import User
+from app.models.user_context.user import User
class AdminModelView(ModelView):
diff --git a/app/views/elastic_cron_helpers.py b/app/views/elastic_cron_helpers.py
index d1b132257f..f203a9dea0 100644
--- a/app/views/elastic_cron_helpers.py
+++ b/app/views/elastic_cron_helpers.py
@@ -6,7 +6,7 @@
"""
from app.api.helpers.tasks import celery
-from app.models.event import Event
+from app.models.Event_Context.event import Event
from app.models.search.sync import rebuild_indices, sync, sync_event_from_database
from app.views.elastic_search import connect_from_config
from app.views.postgres import get_session_from_config
diff --git a/docs/general/roles.md b/docs/general/roles.md
index 6bc63cc0e5..d5ae10c3d6 100644
--- a/docs/general/roles.md
+++ b/docs/general/roles.md
@@ -243,7 +243,7 @@ user.can_delete(service, event_id)
e.g.
```
->>> from app.models.user import User
+>>> from app.models.user_context.user_context.user import User
>>> from app.models.track import Track
>>> u = User.query.all()[0]
>>> u.can_create(Track, event_id=1)
@@ -260,8 +260,8 @@ You can define a user's role for an event in `UsersEventsRoles`.
Here's an example showing how a user is assigned as a Track Organizer for an Event (with `event_id = 1`).
```
->>> from app.models.users_events_roles import UsersEventsRoles as UER
->>> from app.models.user import User
+>>> from app.models.user_context.user_context.users_events_roles import UsersEventsRoles as UER
+>>> from app.models.user_context.user_context.user import User
>>> from app.models.event import Event
>>> from app.models.role import Role
>>> r = Role.query.filter_by(name='track_organizer').first()
diff --git a/migrations/versions/rev-2019-08-03-05:18:10-4925dd5fd720_add_user_token_blacklist_time_table.py b/migrations/versions/rev-2019-08-03-05:18:10-4925dd5fd720_add_user_token_blacklist_time_table.py
deleted file mode 100644
index a499ba379a..0000000000
--- a/migrations/versions/rev-2019-08-03-05:18:10-4925dd5fd720_add_user_token_blacklist_time_table.py
+++ /dev/null
@@ -1,36 +0,0 @@
-"""Add user token blacklist time table
-
-Revision ID: 4925dd5fd720
-Revises: 2504915ffd08
-Create Date: 2019-08-03 05:18:10.804364
-
-"""
-
-from alembic import op
-import sqlalchemy as sa
-import sqlalchemy_utils
-
-
-# revision identifiers, used by Alembic.
-revision = '4925dd5fd720'
-down_revision = '2504915ffd08'
-
-
-def upgrade():
- # ### commands auto generated by Alembic - please adjust! ###
- op.create_table('user_token_blacklist_time',
- sa.Column('id', sa.Integer(), nullable=False),
- sa.Column('created_at', sa.DateTime(timezone=True), server_default='now', nullable=False),
- sa.Column('blacklisted_at', sa.DateTime(timezone=True), server_default='now', nullable=False),
- sa.Column('user_id', sa.Integer(), nullable=False),
- sa.ForeignKeyConstraint(['user_id'], ['users.id'], ondelete='CASCADE'),
- sa.PrimaryKeyConstraint('id'),
- sa.UniqueConstraint('user_id', name='user_blacklist_time_uc')
- )
- # ### end Alembic commands ###
-
-
-def downgrade():
- # ### commands auto generated by Alembic - please adjust! ###
- op.drop_table('user_token_blacklist_time')
- # ### end Alembic commands ###
diff --git a/migrations/versions/rev-2019-08-07-01:11:29-f5c3a4fd23fb_.py b/migrations/versions/rev-2019-08-07-01:11:29-f5c3a4fd23fb_.py
deleted file mode 100644
index 11f82050cd..0000000000
--- a/migrations/versions/rev-2019-08-07-01:11:29-f5c3a4fd23fb_.py
+++ /dev/null
@@ -1,30 +0,0 @@
-"""add stripe test keys
-
-Revision ID: f5c3a4fd23fb
-Revises: 4925dd5fd720
-Create Date: 2019-08-07 01:11:29.736517
-
-"""
-
-from alembic import op
-import sqlalchemy as sa
-import sqlalchemy_utils
-
-
-# revision identifiers, used by Alembic.
-revision = 'f5c3a4fd23fb'
-down_revision = '4925dd5fd720'
-
-
-def upgrade():
- # ### commands auto generated by Alembic - please adjust! ###
- op.add_column('settings', sa.Column('stripe_test_publishable_key', sa.String(), nullable=True))
- op.add_column('settings', sa.Column('stripe_test_secret_key', sa.String(), nullable=True))
- # ### end Alembic commands ###
-
-
-def downgrade():
- # ### commands auto generated by Alembic - please adjust! ###
- op.drop_column('settings', 'stripe_test_secret_key')
- op.drop_column('settings', 'stripe_test_publishable_key')
- # ### end Alembic commands ###
diff --git a/populate_db.py b/populate_db.py
index f136ef5da2..daf7efc63f 100644
--- a/populate_db.py
+++ b/populate_db.py
@@ -10,39 +10,39 @@
from app.models.custom_system_role import CustomSysRole
# EventLocation
-from app.models.event_location import EventLocation
+from app.models.Event_Context.event_location import EventLocation
# EventSubTopic
-from app.models.event_sub_topic import EventSubTopic
+from app.models.Event_Context.event_sub_topic import EventSubTopic
# EventTopic
-from app.models.event_topic import EventTopic
+from app.models.Event_Context.event_topic import EventTopic
# EventType
-from app.models.event_type import EventType
-from app.models.image_size import ImageSizes
-from app.models.message_setting import MessageSettings
-from app.models.microlocation import Microlocation
-from app.models.notification import NotificationType
-from app.models.notification_setting import NotificationSettings
+from app.models.Event_Context.event_type import EventType
+from app.models.Form_Context.image_size import ImageSizes
+from app.models.Communication_Context.message_setting import MessageSettings
+from app.models.Event_Context.microlocation import Microlocation
+from app.models.Communication_Context.notification import NotificationType
+from app.models.Communication_Context.notification_setting import NotificationSettings
# Admin Panel Permissions
-from app.models.panel_permission import PanelPermission
-from app.models.permission import Permission
+from app.models.Associations_Context.panel_permission import PanelPermission
+from app.models.Associations_Context.permission import Permission
# Event Role-Service Permissions
-from app.models.role import Role
+from app.models.Associations_Context.role import Role
from app.models.service import Service
-from app.models.session import Session
+from app.models.Event_Context.session import Session
from app.models.setting import Setting
-from app.models.speaker import Speaker
-from app.models.sponsor import Sponsor
+from app.models.Associations_Context.speaker import Speaker
+from app.models.Event_Context.sponsor import Sponsor
from app.models.track import Track
-from app.models.user import MODERATOR, REGISTRAR, TRACK_ORGANIZER
+from app.models.user_context.user import MODERATOR, REGISTRAR, TRACK_ORGANIZER
# User Permissions
-from app.models.user_permission import UserPermission
-from app.models.video_channel import VideoChannel
+from app.models.user_context.user_permission import UserPermission
+from app.models.Event_Context.video_channel import VideoChannel
SALES = 'sales'
ADMIN = 'admin'
diff --git a/tests/all/integration/api/attendee/test_attendee_access_api.py b/tests/all/integration/api/attendee/test_attendee_access_api.py
index 78db781efd..f20f794d23 100644
--- a/tests/all/integration/api/attendee/test_attendee_access_api.py
+++ b/tests/all/integration/api/attendee/test_attendee_access_api.py
@@ -1,8 +1,8 @@
import json
from app.api.helpers.db import get_or_create
-from app.models.role import Role
-from app.models.users_events_role import UsersEventsRoles
+from app.models.Associations_Context.role import Role
+from app.models.user_context.users_events_role import UsersEventsRoles
from tests.factories.attendee import AttendeeOrderTicketSubFactory
diff --git a/tests/all/integration/api/attendee/test_attendee_api.py b/tests/all/integration/api/attendee/test_attendee_api.py
index 657d3b9816..518a9aafba 100644
--- a/tests/all/integration/api/attendee/test_attendee_api.py
+++ b/tests/all/integration/api/attendee/test_attendee_api.py
@@ -1,6 +1,6 @@
import json
-from app.models.custom_form import CustomForms
+from app.models.Form_Context.custom_form import CustomForms
from tests.factories.attendee import AttendeeOrderTicketSubFactory
from tests.factories.order import OrderSubFactory
from tests.factories.ticket import TicketSubFactory
diff --git a/tests/all/integration/api/badge_forms/test_badge_forms_api.py b/tests/all/integration/api/badge_forms/test_badge_forms_api.py
index c407b02d62..abecb492d1 100644
--- a/tests/all/integration/api/badge_forms/test_badge_forms_api.py
+++ b/tests/all/integration/api/badge_forms/test_badge_forms_api.py
@@ -1,6 +1,6 @@
import json
-from app.models.badge_field_form import BadgeFieldForms
+from app.models.Form_Context.badge_field_form import BadgeFieldForms
from tests.factories import common
from tests.factories.badge_field_form import BadgeFieldFormFactory
from tests.factories.badge_form import BadgeFormFactory
diff --git a/tests/all/integration/api/custom_forms/test_custom_forms_api.py b/tests/all/integration/api/custom_forms/test_custom_forms_api.py
index 520d1cf01c..7a00034ec7 100644
--- a/tests/all/integration/api/custom_forms/test_custom_forms_api.py
+++ b/tests/all/integration/api/custom_forms/test_custom_forms_api.py
@@ -1,6 +1,6 @@
import json
-from app.models.custom_form import CustomForms
+from app.models.Form_Context.custom_form import CustomForms
from tests.factories.event import EventFactoryBasic
diff --git a/tests/all/integration/api/event/test_event_roles.py b/tests/all/integration/api/event/test_event_roles.py
index 952232a288..612280e0cf 100644
--- a/tests/all/integration/api/event/test_event_roles.py
+++ b/tests/all/integration/api/event/test_event_roles.py
@@ -1,9 +1,9 @@
import json
from app.api.helpers.db import get_or_create
-from app.models.role import Role
-from app.models.role_invite import RoleInvite
-from app.models.users_events_role import UsersEventsRoles
+from app.models.Associations_Context.role import Role
+from app.models.Associations_Context.role_invite import RoleInvite
+from app.models.user_context.users_events_role import UsersEventsRoles
from tests.factories.event import EventFactoryBasic
from tests.factories.role_invite import RoleInviteSubFactory
from tests.factories.users_events_roles import UsersEventsRolesSubFactory
diff --git a/tests/all/integration/api/event/test_event_view_access.py b/tests/all/integration/api/event/test_event_view_access.py
index 6f19036d31..926c7e96de 100644
--- a/tests/all/integration/api/event/test_event_view_access.py
+++ b/tests/all/integration/api/event/test_event_view_access.py
@@ -1,8 +1,8 @@
import json
from app.api.helpers.db import get_or_create
-from app.models.role import Role
-from app.models.users_events_role import UsersEventsRoles
+from app.models.Associations_Context.role import Role
+from app.models.user_context.users_events_role import UsersEventsRoles
from tests.factories.event import EventFactoryBasic
diff --git a/tests/all/integration/api/event_invoices/test_event_invoices_access.py b/tests/all/integration/api/event_invoices/test_event_invoices_access.py
index 41f018d576..5fa0ba42f9 100644
--- a/tests/all/integration/api/event_invoices/test_event_invoices_access.py
+++ b/tests/all/integration/api/event_invoices/test_event_invoices_access.py
@@ -1,6 +1,6 @@
import json
-from app.models.event_invoice import EventInvoice
+from app.models.Financial_Context.event_invoice import EventInvoice
from tests.factories.event_invoice import EventInvoiceSubFactory
from tests.factories.user import UserFactory
diff --git a/tests/all/integration/api/group/test_group_misc.py b/tests/all/integration/api/group/test_group_misc.py
index f52c78fbc0..9913df02a6 100644
--- a/tests/all/integration/api/group/test_group_misc.py
+++ b/tests/all/integration/api/group/test_group_misc.py
@@ -1,8 +1,8 @@
import json
from app.api.helpers.db import get_or_create
-from app.models.role import Role
-from app.models.users_events_role import UsersEventsRoles
+from app.models.Associations_Context.role import Role
+from app.models.user_context.users_events_role import UsersEventsRoles
from tests.factories.event import EventFactoryBasic
from tests.factories.group import GroupFactory
diff --git a/tests/all/integration/api/group/test_group_roles.py b/tests/all/integration/api/group/test_group_roles.py
index 810c33ac41..678599d47a 100644
--- a/tests/all/integration/api/group/test_group_roles.py
+++ b/tests/all/integration/api/group/test_group_roles.py
@@ -2,8 +2,8 @@
from app.api.helpers.db import get_or_create
from app.api.helpers.permission_manager import has_access
-from app.models.role import Role
-from app.models.users_groups_role import UsersGroupsRoles
+from app.models.Associations_Context.role import Role
+from app.models.user_context.users_groups_role import UsersGroupsRoles
from tests.factories.event import EventFactoryBasic
from tests.factories.group import GroupSubFactory
diff --git a/tests/all/integration/api/helpers/order/test_create_order.py b/tests/all/integration/api/helpers/order/test_create_order.py
index f06bc1a155..3096342de5 100644
--- a/tests/all/integration/api/helpers/order/test_create_order.py
+++ b/tests/all/integration/api/helpers/order/test_create_order.py
@@ -1,10 +1,10 @@
import json
from app.api.helpers.db import get_or_create
-from app.models.order import Order
-from app.models.role import Role
-from app.models.ticket_holder import TicketHolder
-from app.models.users_events_role import UsersEventsRoles
+from app.models.Financial_Context.order import Order
+from app.models.Associations_Context.role import Role
+from app.models.Financial_Context.ticket_holder import TicketHolder
+from app.models.user_context.users_events_role import UsersEventsRoles
from tests.factories.attendee import AttendeeFactoryBase
from tests.factories.discount_code import DiscountCodeTicketSubFactory
from tests.factories.event import EventFactoryBasic
diff --git a/tests/all/integration/api/helpers/order/test_edit_order.py b/tests/all/integration/api/helpers/order/test_edit_order.py
index b3f7bd36b1..2067e96513 100644
--- a/tests/all/integration/api/helpers/order/test_edit_order.py
+++ b/tests/all/integration/api/helpers/order/test_edit_order.py
@@ -1,8 +1,8 @@
import json
-from app.models.custom_form import CustomForms
-from app.models.order import Order
-from app.models.ticket_holder import TicketHolder
+from app.models.Form_Context.custom_form import CustomForms
+from app.models.Financial_Context.order import Order
+from app.models.Financial_Context.ticket_holder import TicketHolder
from tests.factories.attendee import AttendeeSubFactory
from tests.factories.event import EventFactoryBasic
from tests.factories.order import OrderSubFactory
diff --git a/tests/all/integration/api/helpers/test_auth.py b/tests/all/integration/api/helpers/test_auth.py
index d7fbb5c058..6b30eedab5 100644
--- a/tests/all/integration/api/helpers/test_auth.py
+++ b/tests/all/integration/api/helpers/test_auth.py
@@ -3,7 +3,7 @@
from flask_login import login_user, logout_user
from app.api.helpers.auth import AuthManager
-from app.models.user import User
+from app.models.user_context.user import User
from tests.all.integration.auth_helper import create_user
diff --git a/tests/all/integration/api/helpers/test_csv_jobs_util.py b/tests/all/integration/api/helpers/test_csv_jobs_util.py
index a567bcbc4b..bc8f28485d 100644
--- a/tests/all/integration/api/helpers/test_csv_jobs_util.py
+++ b/tests/all/integration/api/helpers/test_csv_jobs_util.py
@@ -10,7 +10,7 @@
export_speakers_csv,
)
from app.models import db
-from app.models.custom_form import ATTENDEE_CUSTOM_FORM
+from app.models.Form_Context.custom_form import ATTENDEE_CUSTOM_FORM
from tests.all.integration.auth_helper import create_user
from tests.all.integration.utils import OpenEventTestCase
from tests.factories import common
diff --git a/tests/all/integration/api/helpers/test_db.py b/tests/all/integration/api/helpers/test_db.py
index a463a456c8..d3e7a9bab0 100644
--- a/tests/all/integration/api/helpers/test_db.py
+++ b/tests/all/integration/api/helpers/test_db.py
@@ -10,8 +10,8 @@
safe_query_by_id,
save_to_db,
)
-from app.models.event import Event
-from app.models.ticket_holder import TicketHolder
+from app.models.Event_Context.event import Event
+from app.models.Financial_Context.ticket_holder import TicketHolder
from tests.factories.attendee import AttendeeSubFactory
from tests.factories.event import EventFactoryBasic
diff --git a/tests/all/integration/api/helpers/test_events.py b/tests/all/integration/api/helpers/test_events.py
index 49b211a85b..af274d57f9 100644
--- a/tests/all/integration/api/helpers/test_events.py
+++ b/tests/all/integration/api/helpers/test_events.py
@@ -2,7 +2,7 @@
from app.api.helpers.db import get_count, save_to_db
from app.api.helpers.events import create_custom_forms_for_attendees
-from app.models.custom_form import CustomForms
+from app.models.Form_Context.custom_form import CustomForms
from tests.all.integration.utils import OpenEventTestCase
from tests.factories.event import EventFactoryBasic
diff --git a/tests/all/integration/api/helpers/test_notification.py b/tests/all/integration/api/helpers/test_notification.py
index b1a97390d5..4563993999 100644
--- a/tests/all/integration/api/helpers/test_notification.py
+++ b/tests/all/integration/api/helpers/test_notification.py
@@ -8,9 +8,9 @@
notify_session_state_change,
notify_ticket_purchase_attendee,
)
-from app.models.notification import Notification, NotificationType
-from app.models.role import Role
-from app.models.users_events_role import UsersEventsRoles
+from app.models.Communication_Context.notification import Notification, NotificationType
+from app.models.Associations_Context.role import Role
+from app.models.user_context.users_events_role import UsersEventsRoles
from tests.factories.attendee import AttendeeOrderSubFactory
from tests.factories.event_invoice import EventInvoiceSubFactory
from tests.factories.order import OrderSubFactory
diff --git a/tests/all/integration/api/helpers/test_order.py b/tests/all/integration/api/helpers/test_order.py
index cb873aa693..40dd50d42b 100644
--- a/tests/all/integration/api/helpers/test_order.py
+++ b/tests/all/integration/api/helpers/test_order.py
@@ -5,7 +5,7 @@
from app.api.helpers.db import save_to_db
from app.api.helpers.order import delete_related_attendees_for_order, set_expiry_for_order
from app.models import db
-from app.models.order import Order
+from app.models.Financial_Context.order import Order
from app.settings import get_settings
from tests.all.integration.utils import OpenEventTestCase
from tests.factories import common
diff --git a/tests/all/integration/api/helpers/test_query.py b/tests/all/integration/api/helpers/test_query.py
index f1600771be..1325e7ef2c 100644
--- a/tests/all/integration/api/helpers/test_query.py
+++ b/tests/all/integration/api/helpers/test_query.py
@@ -4,11 +4,11 @@
from app.api.helpers.db import get_or_create
from app.api.helpers.errors import ForbiddenError
from app.api.helpers.query import event_query
-from app.models.event import Event
-from app.models.order import Order
-from app.models.role import Role
-from app.models.ticket import Ticket
-from app.models.users_events_role import UsersEventsRoles
+from app.models.Event_Context.event import Event
+from app.models.Financial_Context.order import Order
+from app.models.Associations_Context.role import Role
+from app.models.Financial_Context.ticket import Ticket
+from app.models.user_context.users_events_role import UsersEventsRoles
from tests.factories.event import EventFactoryBasic
diff --git a/tests/all/integration/api/helpers/test_scheduled_jobs.py b/tests/all/integration/api/helpers/test_scheduled_jobs.py
index ceb17c11c5..9f51f070f9 100644
--- a/tests/all/integration/api/helpers/test_scheduled_jobs.py
+++ b/tests/all/integration/api/helpers/test_scheduled_jobs.py
@@ -10,9 +10,9 @@
this_month_date,
)
from app.api.helpers.utilities import monthdelta
-from app.models.role import Role
-from app.models.ticket_holder import TicketHolder
-from app.models.users_events_role import UsersEventsRoles
+from app.models.Associations_Context.role import Role
+from app.models.Financial_Context.ticket_holder import TicketHolder
+from app.models.user_context.users_events_role import UsersEventsRoles
from app.settings import get_settings
from tests.factories import common
from tests.factories.attendee import AttendeeOrderSubFactory, AttendeeSubFactory
diff --git a/tests/all/integration/api/session/test_session_access_api.py b/tests/all/integration/api/session/test_session_access_api.py
index 643b11fa73..83a8342d0f 100644
--- a/tests/all/integration/api/session/test_session_access_api.py
+++ b/tests/all/integration/api/session/test_session_access_api.py
@@ -1,8 +1,8 @@
import json
from app.api.helpers.db import get_or_create
-from app.models.role import Role
-from app.models.users_events_role import UsersEventsRoles
+from app.models.Associations_Context.role import Role
+from app.models.user_context.users_events_role import UsersEventsRoles
from tests.factories.session import SessionSubFactory
from tests.factories.speaker import SpeakerSubFactory
from tests.factories.user import UserFactory
diff --git a/tests/all/integration/api/session/test_session_forms_api.py b/tests/all/integration/api/session/test_session_forms_api.py
index 88c3b55569..9114b3ef5a 100644
--- a/tests/all/integration/api/session/test_session_forms_api.py
+++ b/tests/all/integration/api/session/test_session_forms_api.py
@@ -1,7 +1,7 @@
import json
-from app.models.custom_form import CustomForms
-from app.models.session import Session
+from app.models.Form_Context.custom_form import CustomForms
+from app.models.Event_Context.session import Session
from tests.factories.session import SessionSubFactory
from tests.factories.speakers_call import SpeakersCallSubFactory
from tests.factories.track import TrackSubFactory
diff --git a/tests/all/integration/api/session/test_session_lock_api.py b/tests/all/integration/api/session/test_session_lock_api.py
index e62f486d0e..21a4bf770c 100644
--- a/tests/all/integration/api/session/test_session_lock_api.py
+++ b/tests/all/integration/api/session/test_session_lock_api.py
@@ -1,8 +1,8 @@
import json
from app.api.helpers.db import get_or_create
-from app.models.role import Role
-from app.models.users_events_role import UsersEventsRoles
+from app.models.Associations_Context.role import Role
+from app.models.user_context.users_events_role import UsersEventsRoles
from tests.factories.session import SessionSubFactory
from tests.factories.speakers_call import SpeakersCallSubFactory
from tests.factories.user import UserFactory
diff --git a/tests/all/integration/api/session/test_session_state_api.py b/tests/all/integration/api/session/test_session_state_api.py
index 4f583c007d..81b3868e6b 100644
--- a/tests/all/integration/api/session/test_session_state_api.py
+++ b/tests/all/integration/api/session/test_session_state_api.py
@@ -3,8 +3,8 @@
import pytest
from app.api.helpers.db import get_or_create
-from app.models.role import Role
-from app.models.users_events_role import UsersEventsRoles
+from app.models.Associations_Context.role import Role
+from app.models.user_context.users_events_role import UsersEventsRoles
from tests.factories.session import SessionSubFactory
from tests.factories.speakers_call import SpeakersCallSubFactory
from tests.factories.user import UserFactory
diff --git a/tests/all/integration/api/speaker/test_speaker_api.py b/tests/all/integration/api/speaker/test_speaker_api.py
index 500ab18eac..282ddc990f 100644
--- a/tests/all/integration/api/speaker/test_speaker_api.py
+++ b/tests/all/integration/api/speaker/test_speaker_api.py
@@ -1,7 +1,7 @@
import json
-from app.models.custom_form import CustomForms
-from app.models.speaker import Speaker
+from app.models.Form_Context.custom_form import CustomForms
+from app.models.Associations_Context.speaker import Speaker
from tests.factories.speaker import SpeakerSubFactory
from tests.factories.speakers_call import SpeakersCallSubFactory
diff --git a/tests/all/integration/api/speaker/test_speaker_email_override.py b/tests/all/integration/api/speaker/test_speaker_email_override.py
index d65810521e..46838334fc 100644
--- a/tests/all/integration/api/speaker/test_speaker_email_override.py
+++ b/tests/all/integration/api/speaker/test_speaker_email_override.py
@@ -1,9 +1,9 @@
import json
from app.api.helpers.db import get_or_create
-from app.models.custom_form import CustomForms
-from app.models.role import Role
-from app.models.users_events_role import UsersEventsRoles
+from app.models.Form_Context.custom_form import CustomForms
+from app.models.Associations_Context.role import Role
+from app.models.user_context.users_events_role import UsersEventsRoles
from tests.factories.event import EventFactoryBasic
from tests.factories.speaker import SpeakerSubFactory
from tests.factories.speakers_call import SpeakersCallSubFactory
diff --git a/tests/all/integration/api/station/test_station_store_paxs_api.py b/tests/all/integration/api/station/test_station_store_paxs_api.py
index 04ca242e36..cde27d901a 100644
--- a/tests/all/integration/api/station/test_station_store_paxs_api.py
+++ b/tests/all/integration/api/station/test_station_store_paxs_api.py
@@ -1,6 +1,6 @@
import json
-from app.models.station_store_pax import StationStorePax
+from app.models.Event_Context.station_store_pax import StationStorePax
from tests.factories.event import EventFactoryBasic
from tests.factories.microlocation import MicrolocationSubFactory
from tests.factories.session import SessionSubFactory
diff --git a/tests/all/integration/api/station/test_stations_api.py b/tests/all/integration/api/station/test_stations_api.py
index 0cc5fdea92..c9b43003e3 100644
--- a/tests/all/integration/api/station/test_stations_api.py
+++ b/tests/all/integration/api/station/test_stations_api.py
@@ -1,6 +1,6 @@
import json
-from app.models.station import Station
+from app.models.Event_Context.station import Station
from tests.factories.event import EventFactoryBasic
from tests.factories.microlocation import MicrolocationFactory, MicrolocationSubFactory
from tests.factories.station import StationFactory
diff --git a/tests/all/integration/api/video_stream/test_video_stream_access_api.py b/tests/all/integration/api/video_stream/test_video_stream_access_api.py
index 145215dfe2..881a938d4d 100644
--- a/tests/all/integration/api/video_stream/test_video_stream_access_api.py
+++ b/tests/all/integration/api/video_stream/test_video_stream_access_api.py
@@ -3,8 +3,8 @@
import pytest
from app.api.helpers.db import get_or_create
-from app.models.role import Role
-from app.models.users_events_role import UsersEventsRoles
+from app.models.Associations_Context.role import Role
+from app.models.user_context.users_events_role import UsersEventsRoles
from tests.factories.attendee import AttendeeOrderSubFactory
from tests.factories.microlocation import MicrolocationSubVideoStreamFactory
from tests.factories.session import SessionSubFactory
diff --git a/tests/all/integration/api/video_stream/test_video_stream_create_api.py b/tests/all/integration/api/video_stream/test_video_stream_create_api.py
index e3dfa38e02..d8c9e3552c 100644
--- a/tests/all/integration/api/video_stream/test_video_stream_create_api.py
+++ b/tests/all/integration/api/video_stream/test_video_stream_create_api.py
@@ -2,9 +2,9 @@
from app.api.helpers.db import get_or_create
from app.models import event
-from app.models.role import Role
-from app.models.users_events_role import UsersEventsRoles
-from app.models.video_stream import VideoStream
+from app.models.Associations_Context.role import Role
+from app.models.user_context.users_events_role import UsersEventsRoles
+from app.models.Event_Context.video_stream import VideoStream
from tests.factories.event import EventFactoryBasic
from tests.factories.microlocation import MicrolocationSubFactory
diff --git a/tests/all/integration/api/video_stream/test_video_stream_edit_api.py b/tests/all/integration/api/video_stream/test_video_stream_edit_api.py
index 0e1286f3cd..32cc998be4 100644
--- a/tests/all/integration/api/video_stream/test_video_stream_edit_api.py
+++ b/tests/all/integration/api/video_stream/test_video_stream_edit_api.py
@@ -2,9 +2,9 @@
from app.api.helpers.db import get_or_create
from app.models import event
-from app.models.role import Role
-from app.models.users_events_role import UsersEventsRoles
-from app.models.video_stream import VideoStream
+from app.models.Associations_Context.role import Role
+from app.models.user_context.users_events_role import UsersEventsRoles
+from app.models.Event_Context.video_stream import VideoStream
from tests.factories.attendee import AttendeeOrderSubFactory
from tests.factories.event import EventFactoryBasic
from tests.factories.microlocation import MicrolocationSubVideoStreamFactory
diff --git a/tests/all/integration/auth_helper.py b/tests/all/integration/auth_helper.py
index adb9ab481b..f6d17fa12a 100644
--- a/tests/all/integration/auth_helper.py
+++ b/tests/all/integration/auth_helper.py
@@ -1,5 +1,5 @@
from app.api.helpers.db import save_to_db
-from app.models.user import User
+from app.models.user_context.user import User
def create_user(email, password, is_verified=True):
diff --git a/tests/all/integration/models/test_custom_forms.py b/tests/all/integration/models/test_custom_forms.py
index 03f1ccc228..ba506def0d 100644
--- a/tests/all/integration/models/test_custom_forms.py
+++ b/tests/all/integration/models/test_custom_forms.py
@@ -1,4 +1,4 @@
-from app.models.custom_form import CustomForms, assign_field_names
+from app.models.Form_Context.custom_form import CustomForms, assign_field_names
from tests.factories.event import EventFactoryBasic
diff --git a/tests/all/integration/utils.py b/tests/all/integration/utils.py
index 5c1a58a1d1..2508b5b5fb 100644
--- a/tests/all/integration/utils.py
+++ b/tests/all/integration/utils.py
@@ -1,6 +1,6 @@
import unittest
-from app.models.user import User
+from app.models.user_context.user import User
from tests.all.integration.auth_helper import create_super_admin
from tests.all.integration.setup_database import Setup, db
diff --git a/tests/factories/access_code.py b/tests/factories/access_code.py
index 28a660ead8..74212dc8ad 100644
--- a/tests/factories/access_code.py
+++ b/tests/factories/access_code.py
@@ -1,6 +1,6 @@
import factory
-from app.models.access_code import AccessCode
+from app.models.Financial_Context.access_code import AccessCode
from tests.factories import common
from tests.factories.base import BaseFactory
from tests.factories.event import EventFactoryBasic
diff --git a/tests/factories/attendee.py b/tests/factories/attendee.py
index c23c7f17b6..e682f44067 100644
--- a/tests/factories/attendee.py
+++ b/tests/factories/attendee.py
@@ -1,6 +1,6 @@
import factory
-from app.models.ticket_holder import TicketHolder
+from app.models.Financial_Context.ticket_holder import TicketHolder
from tests.factories import common
from tests.factories.base import BaseFactory
from tests.factories.event import EventFactoryBasic
diff --git a/tests/factories/badge_field_form.py b/tests/factories/badge_field_form.py
index 8a97af4a42..7ef05c64e0 100644
--- a/tests/factories/badge_field_form.py
+++ b/tests/factories/badge_field_form.py
@@ -1,6 +1,6 @@
import factory
-from app.models.badge_field_form import BadgeFieldForms
+from app.models.Form_Context.badge_field_form import BadgeFieldForms
from tests.factories import common
from tests.factories.badge_form import BadgeFormFactory
from tests.factories.base import BaseFactory
diff --git a/tests/factories/badge_form.py b/tests/factories/badge_form.py
index 8ed76c2d92..79ae8440b5 100644
--- a/tests/factories/badge_form.py
+++ b/tests/factories/badge_form.py
@@ -1,6 +1,6 @@
import factory
-from app.models.badge_form import BadgeForms
+from app.models.Form_Context.badge_form import BadgeForms
from tests.factories import common
from tests.factories.base import BaseFactory
from tests.factories.event import EventFactoryBasic
diff --git a/tests/factories/custom_form.py b/tests/factories/custom_form.py
index 4c4935fcff..34f38a58b6 100644
--- a/tests/factories/custom_form.py
+++ b/tests/factories/custom_form.py
@@ -1,6 +1,6 @@
import factory
-from app.models.custom_form import CustomForms
+from app.models.Form_Context.custom_form import CustomForms
from tests.factories.base import BaseFactory
from tests.factories.event import EventFactoryBasic
diff --git a/tests/factories/custom_placeholder.py b/tests/factories/custom_placeholder.py
index 01c496ee18..21bc0c4ea7 100644
--- a/tests/factories/custom_placeholder.py
+++ b/tests/factories/custom_placeholder.py
@@ -1,4 +1,4 @@
-from app.models.custom_placeholder import CustomPlaceholder
+from app.models.Form_Context.custom_placeholder import CustomPlaceholder
from tests.factories import common
from tests.factories.base import BaseFactory
diff --git a/tests/factories/custom_system_role.py b/tests/factories/custom_system_role.py
index 864fc9ee16..6fbcdc86d0 100644
--- a/tests/factories/custom_system_role.py
+++ b/tests/factories/custom_system_role.py
@@ -1,4 +1,4 @@
-from app.models.custom_system_role import CustomSysRole
+from app.models.Associations_Context.custom_system_role import CustomSysRole
from tests.factories import common
from tests.factories.base import BaseFactory
diff --git a/tests/factories/discount_code.py b/tests/factories/discount_code.py
index 849f25ba97..48f0eb96a0 100644
--- a/tests/factories/discount_code.py
+++ b/tests/factories/discount_code.py
@@ -1,6 +1,6 @@
import factory
-from app.models.discount_code import DiscountCode
+from app.models.Financial_Context.discount_code import DiscountCode
from tests.factories import common
from tests.factories.base import BaseFactory
from tests.factories.ticket import TicketFactory
diff --git a/tests/factories/event.py b/tests/factories/event.py
index c0622d3f3a..7d4de8129b 100644
--- a/tests/factories/event.py
+++ b/tests/factories/event.py
@@ -1,4 +1,4 @@
-from app.models.event import Event
+from app.models.Event_Context.event import Event
from tests.factories import common
from tests.factories.base import BaseFactory
diff --git a/tests/factories/event_copyright.py b/tests/factories/event_copyright.py
index 3aeb76fa01..0f388dc669 100644
--- a/tests/factories/event_copyright.py
+++ b/tests/factories/event_copyright.py
@@ -1,6 +1,6 @@
import factory
-from app.models.event_copyright import EventCopyright
+from app.models.Event_Context.event_copyright import EventCopyright
from tests.factories import common
from tests.factories.base import BaseFactory
from tests.factories.event import EventFactoryBasic
diff --git a/tests/factories/event_invoice.py b/tests/factories/event_invoice.py
index 23a1168498..f2688c9bc1 100644
--- a/tests/factories/event_invoice.py
+++ b/tests/factories/event_invoice.py
@@ -1,6 +1,6 @@
import factory
-from app.models.event_invoice import EventInvoice
+from app.models.Financial_Context.event_invoice import EventInvoice
from tests.factories import common
from tests.factories.base import BaseFactory
from tests.factories.event import EventFactoryBasic
diff --git a/tests/factories/event_location.py b/tests/factories/event_location.py
index e8458a6e42..9500f29655 100644
--- a/tests/factories/event_location.py
+++ b/tests/factories/event_location.py
@@ -1,4 +1,4 @@
-from app.models.event_location import EventLocation
+from app.models.Event_Context.event_location import EventLocation
from tests.factories import common
from tests.factories.base import BaseFactory
diff --git a/tests/factories/event_role_permission.py b/tests/factories/event_role_permission.py
index 3f42991b8c..6c844de399 100644
--- a/tests/factories/event_role_permission.py
+++ b/tests/factories/event_role_permission.py
@@ -1,6 +1,6 @@
import factory
-from app.models.permission import Permission
+from app.models.Associations_Context.permission import Permission
from tests.factories.base import BaseFactory
from tests.factories.role import RoleFactory
from tests.factories.service import ServiceFactory
diff --git a/tests/factories/event_sub_topic.py b/tests/factories/event_sub_topic.py
index bbc8c9cd18..e60abdf7a8 100644
--- a/tests/factories/event_sub_topic.py
+++ b/tests/factories/event_sub_topic.py
@@ -1,6 +1,6 @@
import factory
-from app.models.event_sub_topic import EventSubTopic
+from app.models.Event_Context.event_sub_topic import EventSubTopic
from tests.factories import common
from tests.factories.base import BaseFactory
from tests.factories.event_topic import EventTopicFactory
diff --git a/tests/factories/event_topic.py b/tests/factories/event_topic.py
index 32e197cbf2..4239b6a850 100644
--- a/tests/factories/event_topic.py
+++ b/tests/factories/event_topic.py
@@ -1,4 +1,4 @@
-from app.models.event_topic import EventTopic
+from app.models.Event_Context.event_topic import EventTopic
from tests.factories import common
from tests.factories.base import BaseFactory
diff --git a/tests/factories/event_type.py b/tests/factories/event_type.py
index 52d9436b10..2a13ae7af8 100644
--- a/tests/factories/event_type.py
+++ b/tests/factories/event_type.py
@@ -1,4 +1,4 @@
-from app.models.event_type import EventType
+from app.models.Event_Context.event_type import EventType
from tests.factories import common
from tests.factories.base import BaseFactory
diff --git a/tests/factories/exhibitor.py b/tests/factories/exhibitor.py
index 6ce5511792..d0ddd69ec3 100644
--- a/tests/factories/exhibitor.py
+++ b/tests/factories/exhibitor.py
@@ -1,6 +1,6 @@
import factory
-from app.models.exhibitor import Exhibitor
+from app.models.Event_Context.exhibitor import Exhibitor
from tests.factories import common
from tests.factories.base import BaseFactory
from tests.factories.event import EventFactoryBasic
diff --git a/tests/factories/faq.py b/tests/factories/faq.py
index bf20a8151a..468cb6dc8e 100644
--- a/tests/factories/faq.py
+++ b/tests/factories/faq.py
@@ -1,6 +1,6 @@
import factory
-from app.models.faq import Faq
+from app.models.Form_Context.faq import Faq
from tests.factories.base import BaseFactory
from tests.factories.event import EventFactoryBasic
from tests.factories.faq_type import FaqTypeFactory
diff --git a/tests/factories/faq_type.py b/tests/factories/faq_type.py
index 85e67a49bd..22959d67d0 100644
--- a/tests/factories/faq_type.py
+++ b/tests/factories/faq_type.py
@@ -1,6 +1,6 @@
import factory
-from app.models.faq_type import FaqType
+from app.models.Form_Context.faq_type import FaqType
from tests.factories import common
from tests.factories.base import BaseFactory
from tests.factories.event import EventFactoryBasic
diff --git a/tests/factories/feedback.py b/tests/factories/feedback.py
index 932a78876b..f4494383c8 100644
--- a/tests/factories/feedback.py
+++ b/tests/factories/feedback.py
@@ -1,6 +1,6 @@
import factory
-from app.models.feedback import Feedback
+from app.models.Event_Context.feedback import Feedback
from tests.factories.base import BaseFactory
from tests.factories.session import SessionFactory
from tests.factories.user import UserFactory
diff --git a/tests/factories/group.py b/tests/factories/group.py
index c68c0dcfb0..cc0a2a4469 100644
--- a/tests/factories/group.py
+++ b/tests/factories/group.py
@@ -1,6 +1,6 @@
import factory
-from app.models.group import Group
+from app.models.Associations_Context.group import Group
from tests.factories.base import BaseFactory
from tests.factories.user import UserFactory
diff --git a/tests/factories/image_size.py b/tests/factories/image_size.py
index ba8237d7a5..c17274aa32 100644
--- a/tests/factories/image_size.py
+++ b/tests/factories/image_size.py
@@ -1,4 +1,4 @@
-from app.models.image_size import ImageSizes
+from app.models.Form_Context.image_size import ImageSizes
from tests.factories import common
from tests.factories.base import BaseFactory
diff --git a/tests/factories/mail.py b/tests/factories/mail.py
index e299105c97..8511e45f42 100644
--- a/tests/factories/mail.py
+++ b/tests/factories/mail.py
@@ -1,4 +1,4 @@
-from app.models.mail import Mail
+from app.models.Communication_Context.mail import Mail
from tests.factories import common
from tests.factories.base import BaseFactory
diff --git a/tests/factories/message_setting.py b/tests/factories/message_setting.py
index f4ae92b250..694e7a2935 100644
--- a/tests/factories/message_setting.py
+++ b/tests/factories/message_setting.py
@@ -1,5 +1,5 @@
from app.api.helpers.system_mails import MailType
-from app.models.message_setting import MessageSettings
+from app.models.Communication_Context.message_setting import MessageSettings
from tests.factories.base import BaseFactory
diff --git a/tests/factories/microlocation.py b/tests/factories/microlocation.py
index 58ca51dfe7..22d9d01cfa 100644
--- a/tests/factories/microlocation.py
+++ b/tests/factories/microlocation.py
@@ -1,6 +1,6 @@
import factory
-from app.models.microlocation import Microlocation
+from app.models.Event_Context.microlocation import Microlocation
from tests.factories import common
from tests.factories.base import BaseFactory
from tests.factories.event import EventFactoryBasic
diff --git a/tests/factories/notification.py b/tests/factories/notification.py
index 9821b64d54..d3dac1edca 100644
--- a/tests/factories/notification.py
+++ b/tests/factories/notification.py
@@ -1,6 +1,6 @@
import factory
-from app.models.notification import Notification, NotificationActor, NotificationContent
+from app.models.Communication_Context.notification import Notification, NotificationActor, NotificationContent
from tests.factories import common
from tests.factories.base import BaseFactory
from tests.factories.event import EventFactoryBasic
diff --git a/tests/factories/order.py b/tests/factories/order.py
index 574cc81e9e..9c33b66c15 100644
--- a/tests/factories/order.py
+++ b/tests/factories/order.py
@@ -1,6 +1,6 @@
import factory
-from app.models.order import Order
+from app.models.Financial_Context.order import Order
from tests.factories.base import BaseFactory
from tests.factories.event import EventFactoryBasic
diff --git a/tests/factories/panel_permission.py b/tests/factories/panel_permission.py
index 01be5fc158..26a7667814 100644
--- a/tests/factories/panel_permission.py
+++ b/tests/factories/panel_permission.py
@@ -1,4 +1,4 @@
-from app.models.panel_permission import PanelPermission
+from app.models.Associations_Context.panel_permission import PanelPermission
from tests.factories import common
from tests.factories.base import BaseFactory
diff --git a/tests/factories/role.py b/tests/factories/role.py
index f7dafdea7c..7d39300614 100644
--- a/tests/factories/role.py
+++ b/tests/factories/role.py
@@ -1,4 +1,4 @@
-from app.models.role import Role
+from app.models.Associations_Context.role import Role
from tests.factories import common
from tests.factories.base import BaseFactory
diff --git a/tests/factories/role_invite.py b/tests/factories/role_invite.py
index 5d73f8e3f7..d6efd44fe6 100644
--- a/tests/factories/role_invite.py
+++ b/tests/factories/role_invite.py
@@ -1,6 +1,6 @@
import factory
-from app.models.role_invite import RoleInvite
+from app.models.Associations_Context.role_invite import RoleInvite
from tests.factories import common
from tests.factories.base import BaseFactory
from tests.factories.event import EventFactoryBasic
diff --git a/tests/factories/session.py b/tests/factories/session.py
index 94e74b2fe5..94f7036c74 100644
--- a/tests/factories/session.py
+++ b/tests/factories/session.py
@@ -1,6 +1,6 @@
import factory
-from app.models.session import Session
+from app.models.Event_Context.session import Session
from tests.factories import common
from tests.factories.base import BaseFactory
from tests.factories.event import EventFactoryBasic
diff --git a/tests/factories/session_type.py b/tests/factories/session_type.py
index 8186debb64..08aa14308c 100644
--- a/tests/factories/session_type.py
+++ b/tests/factories/session_type.py
@@ -1,6 +1,6 @@
import factory
-from app.models.session_type import SessionType
+from app.models.Event_Context.session_type import SessionType
from tests.factories import common
from tests.factories.base import BaseFactory
from tests.factories.event import EventFactoryBasic
diff --git a/tests/factories/social_link.py b/tests/factories/social_link.py
index 3d853932de..1a1211e690 100644
--- a/tests/factories/social_link.py
+++ b/tests/factories/social_link.py
@@ -1,6 +1,6 @@
import factory
-from app.models.social_link import SocialLink
+from app.models.Communication_Context.social_link import SocialLink
from tests.factories import common
from tests.factories.base import BaseFactory
from tests.factories.event import EventFactoryBasic
diff --git a/tests/factories/speaker.py b/tests/factories/speaker.py
index ebd32ab476..9a811a8b0e 100644
--- a/tests/factories/speaker.py
+++ b/tests/factories/speaker.py
@@ -1,6 +1,6 @@
import factory
-from app.models.speaker import Speaker
+from app.models.Associations_Context.speaker import Speaker
from tests.factories import common
from tests.factories.base import BaseFactory
from tests.factories.event import EventFactoryBasic
diff --git a/tests/factories/speakers_call.py b/tests/factories/speakers_call.py
index d08a9a7e8b..f259eb0922 100644
--- a/tests/factories/speakers_call.py
+++ b/tests/factories/speakers_call.py
@@ -1,6 +1,6 @@
import factory
-from app.models.speakers_call import SpeakersCall
+from app.models.Event_Context.speakers_call import SpeakersCall
from tests.factories import common
from tests.factories.base import BaseFactory
from tests.factories.event import EventFactoryBasic
diff --git a/tests/factories/sponsor.py b/tests/factories/sponsor.py
index f8701ea911..2652567f69 100644
--- a/tests/factories/sponsor.py
+++ b/tests/factories/sponsor.py
@@ -1,6 +1,6 @@
import factory
-from app.models.sponsor import Sponsor
+from app.models.Event_Context.sponsor import Sponsor
from tests.factories import common
from tests.factories.base import BaseFactory
from tests.factories.event import EventFactoryBasic
diff --git a/tests/factories/station.py b/tests/factories/station.py
index 256b3e9704..39ad3dfa69 100644
--- a/tests/factories/station.py
+++ b/tests/factories/station.py
@@ -1,6 +1,6 @@
import factory
-from app.models.station import Station
+from app.models.Event_Context.station import Station
from tests.factories import common
from tests.factories.base import BaseFactory
from tests.factories.event import EventFactoryBasic
diff --git a/tests/factories/station_store_pax.py b/tests/factories/station_store_pax.py
index afbca8096e..8dff92c43d 100644
--- a/tests/factories/station_store_pax.py
+++ b/tests/factories/station_store_pax.py
@@ -1,6 +1,6 @@
import factory
-from app.models.station_store_pax import StationStorePax
+from app.models.Event_Context.station_store_pax import StationStorePax
from tests.factories.base import BaseFactory
from tests.factories.session import SessionFactory
from tests.factories.station import StationFactory
diff --git a/tests/factories/stripe_authorization.py b/tests/factories/stripe_authorization.py
index b610792c47..5545e726bf 100644
--- a/tests/factories/stripe_authorization.py
+++ b/tests/factories/stripe_authorization.py
@@ -1,6 +1,6 @@
import factory
-from app.models.stripe_authorization import StripeAuthorization
+from app.models.Financial_Context.stripe_authorization import StripeAuthorization
from tests.factories import common
from tests.factories.base import BaseFactory
from tests.factories.event import EventFactoryBasic
diff --git a/tests/factories/tax.py b/tests/factories/tax.py
index 3ca818c9f9..0330e52b42 100644
--- a/tests/factories/tax.py
+++ b/tests/factories/tax.py
@@ -1,6 +1,6 @@
import factory
-from app.models.tax import Tax
+from app.models.Event_Context.tax import Tax
from tests.factories import common
from tests.factories.base import BaseFactory
from tests.factories.event import EventFactoryBasic
diff --git a/tests/factories/ticket.py b/tests/factories/ticket.py
index 55911406d3..2741ee668d 100644
--- a/tests/factories/ticket.py
+++ b/tests/factories/ticket.py
@@ -1,6 +1,6 @@
import factory
-from app.models.ticket import Ticket
+from app.models.Financial_Context.ticket import Ticket
from tests.factories import common
from tests.factories.base import BaseFactory
from tests.factories.event import EventFactoryBasic
diff --git a/tests/factories/ticket_fee.py b/tests/factories/ticket_fee.py
index fd5a3c951f..365ea320d7 100644
--- a/tests/factories/ticket_fee.py
+++ b/tests/factories/ticket_fee.py
@@ -1,4 +1,4 @@
-from app.models.ticket_fee import TicketFees
+from app.models.Financial_Context.ticket_fee import TicketFees
from tests.factories import common
from tests.factories.base import BaseFactory
diff --git a/tests/factories/ticket_tag.py b/tests/factories/ticket_tag.py
index 3270d0f04a..89f00c4611 100644
--- a/tests/factories/ticket_tag.py
+++ b/tests/factories/ticket_tag.py
@@ -1,6 +1,6 @@
import factory
-from app.models.ticket import TicketTag
+from app.models.Financial_Context.ticket import TicketTag
from tests.factories import common
from tests.factories.base import BaseFactory
from tests.factories.event import EventFactoryBasic
diff --git a/tests/factories/translation_channel.py b/tests/factories/translation_channel.py
index 441d7014e8..9b0ffea5fc 100644
--- a/tests/factories/translation_channel.py
+++ b/tests/factories/translation_channel.py
@@ -1,6 +1,6 @@
import factory
-from app.models.translation_channels import TranslationChannel
+from app.models.Event_Context.translation_channels import TranslationChannel
from tests.factories import common
from tests.factories.base import BaseFactory
from tests.factories.video_stream import VideoStreamFactoryBase
diff --git a/tests/factories/user.py b/tests/factories/user.py
index a5f66a381b..8d14b6aea6 100644
--- a/tests/factories/user.py
+++ b/tests/factories/user.py
@@ -1,4 +1,4 @@
-from app.models.user import User
+from app.models.user_context.user import User
from tests.factories import common
from tests.factories.base import BaseFactory
diff --git a/tests/factories/user_email.py b/tests/factories/user_email.py
index 7063eefbe7..82e378f049 100644
--- a/tests/factories/user_email.py
+++ b/tests/factories/user_email.py
@@ -1,6 +1,6 @@
import factory
-from app.models.user_email import UserEmail
+from app.models.user_context.user_email import UserEmail
from tests.factories import common
from tests.factories.base import BaseFactory
from tests.factories.user import UserFactory
diff --git a/tests/factories/user_favourite_events.py b/tests/factories/user_favourite_events.py
index 5c1739be90..2caf5eb182 100644
--- a/tests/factories/user_favourite_events.py
+++ b/tests/factories/user_favourite_events.py
@@ -1,7 +1,7 @@
import factory
-from app.models.user import User
-from app.models.user_favourite_event import UserFavouriteEvent
+from app.models.user_context.user import User
+from app.models.user_context.user_favourite_event import UserFavouriteEvent
from tests.factories.base import BaseFactory
from tests.factories.event import EventFactoryBasic
diff --git a/tests/factories/user_favourite_sessions.py b/tests/factories/user_favourite_sessions.py
index c355a79961..38e97113a8 100644
--- a/tests/factories/user_favourite_sessions.py
+++ b/tests/factories/user_favourite_sessions.py
@@ -1,7 +1,7 @@
import factory
-from app.models.user import User
-from app.models.user_favourite_session import UserFavouriteSession
+from app.models.user_context.user import User
+from app.models.user_context.user_favourite_session import UserFavouriteSession
from tests.factories.base import BaseFactory
from tests.factories.session import SessionFactory
diff --git a/tests/factories/user_permission.py b/tests/factories/user_permission.py
index ba0c4478e0..a84f2a53d0 100644
--- a/tests/factories/user_permission.py
+++ b/tests/factories/user_permission.py
@@ -1,4 +1,4 @@
-from app.models.user_permission import UserPermission
+from app.models.user_context.user_permission import UserPermission
from tests.factories import common
from tests.factories.base import BaseFactory
diff --git a/tests/factories/user_token_blacklist.py b/tests/factories/user_token_blacklist.py
index b3aed50b77..ec88371064 100644
--- a/tests/factories/user_token_blacklist.py
+++ b/tests/factories/user_token_blacklist.py
@@ -1,4 +1,4 @@
-from app.models.user_token_blacklist import UserTokenBlackListTime
+from app.models.user_context.user_token_blacklist import UserTokenBlackListTime
from tests.factories.base import BaseFactory
diff --git a/tests/factories/users_events_roles.py b/tests/factories/users_events_roles.py
index 683c748609..8a0e559823 100644
--- a/tests/factories/users_events_roles.py
+++ b/tests/factories/users_events_roles.py
@@ -1,6 +1,6 @@
import factory
-from app.models.users_events_role import UsersEventsRoles
+from app.models.user_context.users_events_role import UsersEventsRoles
from tests.factories.base import BaseFactory
from tests.factories.event import EventFactoryBasic
from tests.factories.role import RoleFactory
diff --git a/tests/factories/video_channel.py b/tests/factories/video_channel.py
index 3f2d574c29..abbe12799c 100644
--- a/tests/factories/video_channel.py
+++ b/tests/factories/video_channel.py
@@ -1,4 +1,4 @@
-from app.models.video_channel import VideoChannel
+from app.models.Event_Context.video_channel import VideoChannel
from tests.factories import common
from tests.factories.base import BaseFactory
diff --git a/tests/factories/video_stream.py b/tests/factories/video_stream.py
index f70b4cf012..3d6276475a 100644
--- a/tests/factories/video_stream.py
+++ b/tests/factories/video_stream.py
@@ -1,4 +1,4 @@
-from app.models.video_stream import VideoStream
+from app.models.Event_Context.video_stream import VideoStream
from tests.factories import common
from tests.factories.base import BaseFactory
diff --git a/tests/hook_main.py b/tests/hook_main.py
index 5d2722ef7f..6887aa8a5f 100644
--- a/tests/hook_main.py
+++ b/tests/hook_main.py
@@ -11,8 +11,8 @@
from flask_migrate import Migrate
from flask import Flask
from app.models import db
-from app.models.role import Role
-from app.models.user_token_blacklist import ( # noqa
+from app.models.Associations_Context.role import Role
+from app.models.user_context.user_token_blacklist import ( # noqa
UserTokenBlackListTime,
) # Workaround for registering unimported model
from app.api import routes # noqa Workaround for importing all required models