예제 #1
0
    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)
    })
예제 #3
0
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':
예제 #4
0
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'
예제 #6
0
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,
예제 #7
0
    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)),
예제 #9
0
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(),