PAGE_PARAMS, POST_RESPONSES, PUT_RESPONSES, SERVICE_RESPONSES from app.api.helpers.utils import Resource, ETAG_HEADER_DEFN api = Namespace('speakers', description='Speakers', path='/') SPEAKER_SESSION = api.model('SpeakerSession', { 'id': fields.Integer(), 'title': fields.String(), }) SPEAKER = api.model( 'Speaker', { 'id': fields.Integer(required=True), 'name': fields.String(required=True), 'photo': fields.Upload(), 'small': fields.Upload(), 'thumbnail': fields.Upload(), 'icon': fields.Upload(), 'short_biography': fields.String(), 'long_biography': fields.String(), 'email': fields.Email(required=True), 'mobile': fields.String(), 'featured': fields.Boolean(), 'website': fields.Uri(), 'twitter': fields.String(), # not sure for now whether uri or string field 'facebook': fields.String(), 'github': fields.String(), 'linkedin': fields.String(), 'organisation': fields.String(required=True),
SESSION_SPEAKER = api.model( 'SessionSpeaker', { 'id': fields.Integer(required=True), 'name': fields.String(), 'organisation': fields.String(), 'city': fields.String(), 'short_biography': fields.String(), 'long_biography': fields.String(), 'heard_from': fields.String(), 'speaking_experience': fields.String(), 'sponsorship_required': fields.String(), 'short_biography': fields.String(), 'long_biography': fields.String(), 'photo': fields.String(), 'small': fields.Upload(), 'thumbnail': fields.Upload(), 'icon': fields.Upload(), }) SESSION_MICROLOCATION = api.model('SessionMicrolocation', { 'id': fields.Integer(required=True), 'name': fields.String(), }) SESSION_TYPE = api.model( 'SessionType', { 'id': fields.Integer(required=True), 'name': fields.String(required=True), 'length': fields.String(required=True) })
del SOCIAL_LINK_POST['id'] EVENT = api.model( 'Event', { 'id': fields.Integer(required=True), 'identifier': fields.String(), 'name': fields.String(required=True), 'event_url': fields.Uri(), 'email': fields.Email(), 'logo': fields.Upload(), 'start_time': fields.DateTime(required=True), 'end_time': fields.DateTime(required=True), 'timezone': fields.String(), 'latitude': fields.Float(), 'longitude': fields.Float(), 'background_image': fields.Upload(attribute='background_url'), 'placeholder_url': fields.PlaceHolder(attribute=lambda event: event), 'description':
SESSION = api.model( 'Session', { 'id': fields.Integer(required=True), 'title': fields.String(required=True), 'subtitle': fields.String(), 'level': fields.String(), 'short_abstract': fields.String(), 'long_abstract': fields.String(), 'comments': fields.String(), 'start_time': fields.DateTime(required=True), 'end_time': fields.DateTime(required=True), 'track': fields.Nested(SESSION_TRACK, allow_null=True), 'speakers': fields.List(fields.Nested(SESSION_SPEAKER)), 'language': SessionLanguageField(), 'microlocation': fields.Nested(SESSION_MICROLOCATION, allow_null=True), 'slides': fields.Upload(), 'video': fields.Upload(), 'audio': fields.Upload(), 'signup_url': fields.Uri(), 'state': SessionStateField(), 'session_type': fields.Nested(SESSION_TYPE, allow_null=True) }) SESSION_PAGINATED = api.clone('SessionPaginated', PAGINATED_MODEL, {'results': fields.List(fields.Nested(SESSION))}) SESSION_POST = api.clone( 'SessionPost', SESSION, { 'track_id': fields.Integer(), 'speaker_ids': fields.List(fields.Integer()), 'microlocation_id': fields.Integer(),
from app.models.sponsor import Sponsor as SponsorModel from app.api.helpers import custom_fields as fields from app.api.helpers.helpers import (can_create, can_update, can_delete, requires_auth) from app.api.helpers.utils import PAGINATED_MODEL, PaginatedResourceBase, ServiceDAO, \ PAGE_PARAMS, POST_RESPONSES, PUT_RESPONSES, SERVICE_RESPONSES from app.api.helpers.utils import Resource, ETAG_HEADER_DEFN api = Namespace('sponsors', description='Sponsors', path='/') SPONSOR = api.model( 'Sponsor', { 'id': fields.Integer(required=True), 'name': fields.String(required=True), 'url': fields.Uri(), 'logo': fields.Upload(), 'description': fields.String(), 'level': fields.String(), 'sponsor_type': fields.String(), }) SPONSOR_PAGINATED = api.clone('SponsorPaginated', PAGINATED_MODEL, {'results': fields.List(fields.Nested(SPONSOR))}) SPONSOR_POST = api.clone('SponsorPost', SPONSOR) del SPONSOR_POST['id'] # Create DAO class SponsorDAO(ServiceDAO): version_key = 'sponsors_ver'
from app.models.user import User as UserModel, ATTENDEE from app.models.user_detail import UserDetail as UserDetailModel from app.models.users_events_roles import UsersEventsRoles from app.api.helpers import custom_fields as fields from app.api.helpers.helpers import requires_auth, can_access_account, staff_only from app.api.helpers.utils import PAGINATED_MODEL, PaginatedResourceBase, BaseDAO, \ PAGE_PARAMS, POST_RESPONSES, PUT_RESPONSES api = Namespace('users', description='Users', path='/') USER_DETAIL = api.model( 'UserDetail', { 'firstname': fields.String(), 'lastname': fields.String(), 'details': fields.String(), 'avatar': fields.Upload(), 'contact': fields.String(), 'facebook': fields.String(), 'twitter': fields.String() }) USER = api.model( 'User', { 'id': fields.Integer(), 'email': fields.Email(required=True), 'signup_time': fields.DateTime(), 'last_access_time': fields.DateTime(), 'user_detail': fields.Nested(USER_DETAIL) }) USER_PAGINATED = api.clone('UserPaginated', PAGINATED_MODEL,
PAGE_PARAMS, POST_RESPONSES, PUT_RESPONSES, SERVICE_RESPONSES from app.api.helpers.utils import Resource, ETAG_HEADER_DEFN api = Namespace('tracks', description='Tracks', path='/') TRACK_SESSION = api.model('TrackSession', { 'id': fields.Integer(required=True), 'title': fields.String(), }) TRACK = api.model('Track', { 'id': fields.Integer(required=True), 'name': fields.String(required=True), 'description': fields.String(), 'color': fields.Color(required=True), 'track_image_url': fields.Upload(), 'location': fields.String(), 'sessions': fields.List(fields.Nested(TRACK_SESSION)), }) TRACK_PAGINATED = api.clone('TrackPaginated', PAGINATED_MODEL, { 'results': fields.List(fields.Nested(TRACK)) }) TRACK_POST = api.clone('TrackPost', TRACK) del TRACK_POST['id'] del TRACK_POST['sessions'] # Create DAO class TrackDAO(ServiceDAO):
PAGE_PARAMS, POST_RESPONSES, PUT_RESPONSES, SERVICE_RESPONSES from app.api.helpers.utils import Resource, ETAG_HEADER_DEFN api = Namespace('speakers', description='Speakers', path='/') SPEAKER_SESSION = api.model('SpeakerSession', { 'id': fields.Integer(), 'title': fields.String(), }) SPEAKER = api.model( 'Speaker', { 'id': fields.Integer(required=True), 'name': fields.String(required=True), 'photo': fields.Upload(), 'short_biography': fields.String(), 'long_biography': fields.String(), 'email': fields.Email(required=True), 'mobile': fields.String(), 'featured': fields.Boolean(), 'website': fields.Uri(), 'twitter': fields.String(), # not sure for now whether uri or string field 'facebook': fields.String(), 'github': fields.String(), 'linkedin': fields.String(), 'organisation': fields.String(required=True), 'position': fields.String(), 'country': fields.String(required=True), 'sessions': fields.List(fields.Nested(SPEAKER_SESSION)),
SOCIAL_LINK = api.model('SocialLink', { 'id': fields.Integer(), 'name': fields.String(required=True), 'link': fields.String(required=True) }) SOCIAL_LINK_POST = api.clone('SocialLinkPost', SOCIAL_LINK) del SOCIAL_LINK_POST['id'] EVENT = api.model('Event', { 'id': fields.Integer(required=True), 'identifier': fields.String(), 'name': fields.String(required=True), 'event_url': fields.Uri(), 'email': fields.Email(), 'logo': fields.Upload(), 'start_time': fields.DateTime(required=True), 'end_time': fields.DateTime(required=True), 'timezone': fields.String(), 'latitude': fields.Float(), 'longitude': fields.Float(), 'background_image': fields.Upload(attribute='background_url'), 'description': fields.String(), 'location_name': fields.String(), 'searchable_location_name': fields.String(), 'organizer_name': fields.String(), 'organizer_description': fields.String(), 'state': EventStateField(default='Draft'), 'type': EventTypeField(), 'topic': EventTopicField(), 'sub_topic': EventSubTopicField(),