def get_not_deletable_templates(obj): """Get all non-deletable templates for an event/category""" not_deletable_criteria = [ DesignerTemplate.is_system_template, DesignerTemplate.backside_template_of != None, # noqa DesignerTemplate.ticket_for_regforms.any(RegistrationForm.event.has(Event.ends_after(now_utc()))) ] return set(DesignerTemplate.query.filter(DesignerTemplate.owner == obj, db.or_(*not_deletable_criteria)))
def get_not_deletable_templates(obj): """Get all non-deletable templates for an event/category.""" not_deletable_criteria = [ DesignerTemplate.is_system_template, DesignerTemplate.backside_template_of != None, # noqa DesignerTemplate.ticket_for_regforms.any( RegistrationForm.event.has(Event.ends_after(now_utc()))) ] return set( DesignerTemplate.query.filter(DesignerTemplate.owner == obj, db.or_(*not_deletable_criteria)))
def get_events_registered(user, dt=None): """Gets the IDs of events where the user is registered. :param user: A `User` :param dt: Only include events taking place on/after that date :return: A set of event ids """ query = (user.registrations.options(load_only('event_id')).options( joinedload(Registration.registration_form).load_only('event_id')).join( Registration.registration_form).join( RegistrationForm.event_new).filter( Registration.is_active, ~RegistrationForm.is_deleted, ~Event.is_deleted, Event.ends_after(dt))) return {registration.event_id for registration in query}
def add_contrib_data(): has_contrib = (EventPerson.contribution_links.any( ContributionPersonLink.contribution.has(~Contribution.is_deleted))) has_subcontrib = EventPerson.subcontribution_links.any( SubContributionPersonLink.subcontribution.has(db.and_( ~SubContribution.is_deleted, SubContribution.contribution.has(~Contribution.is_deleted)))) query = (Event.query .options(load_only('id')) .options(noload('*')) .filter(~Event.is_deleted, Event.ends_after(dt), Event.persons.any((EventPerson.user_id == user.id) & (has_contrib | has_subcontrib)))) for event in query: data[event.id].add('contributor')
def add_contrib_data(): has_contrib = (EventPerson.contribution_links.any( ContributionPersonLink.contribution.has(~Contribution.is_deleted))) has_subcontrib = EventPerson.subcontribution_links.any( SubContributionPersonLink.subcontribution.has(db.and_( ~SubContribution.is_deleted, SubContribution.contribution.has(~Contribution.is_deleted)))) query = (Event.query .options(load_only('id')) .options(noload('*')) .filter(~Event.is_deleted, Event.ends_after(dt), Event.persons.any((EventPerson.user_id == user.id) & (has_contrib | has_subcontrib)))) for event in query: data[event.id].add('contributor')
def get_events_registered(user, dt=None): """Gets the IDs of events where the user is registered. :param user: A `User` :param dt: Only include events taking place on/after that date :return: A set of event ids """ query = (user.registrations .options(load_only('event_id')) .options(joinedload(Registration.registration_form).load_only('event_id')) .join(Registration.registration_form) .join(RegistrationForm.event) .filter(Registration.is_active, ~RegistrationForm.is_deleted, ~Event.is_deleted, Event.ends_after(dt))) return {registration.event_id for registration in query}
def add_acl_data(): query = (user.in_contribution_acls .options(load_only('contribution_id', 'roles', 'full_access', 'read_access')) .options(noload('*')) .options(contains_eager(ContributionPrincipal.contribution).load_only('event_id')) .join(Contribution) .join(Event, Event.id == Contribution.event_id) .filter(~Contribution.is_deleted, ~Event.is_deleted, Event.ends_after(dt))) for principal in query: roles = data[principal.contribution.event_id] if 'submit' in principal.roles: roles.add('contribution_submission') if principal.full_access: roles.add('contribution_manager') if principal.read_access: roles.add('contribution_access')
def add_acl_data(): query = (user.in_contribution_acls .options(load_only('contribution_id', 'permissions', 'full_access', 'read_access')) .options(noload('*')) .options(contains_eager(ContributionPrincipal.contribution).load_only('event_id')) .join(Contribution) .join(Event, Event.id == Contribution.event_id) .filter(~Contribution.is_deleted, ~Event.is_deleted, Event.ends_after(dt))) for principal in query: roles = data[principal.contribution.event_id] if 'submit' in principal.permissions: roles.add('contribution_submission') if principal.full_access: roles.add('contribution_manager') if principal.read_access: roles.add('contribution_access')