Ejemplo n.º 1
0
 def get(self):
     event_id = request.args['id']
     event = event_repository.get_by_id(event_id)
     if not event:
         return EVENT_NOT_FOUND
     else:
         event_org = event_repository.get_by_id_with_organisation(event.id)
         return event_details(event_org), 200
Ejemplo n.º 2
0
    def put(self):
        args = self.req_parser.parse_args()

        event = event_repository.get_by_id(args['id'])
        if not event:
            return EVENT_NOT_FOUND

        user_id = g.current_user["id"]
        current_user = user_repository.get_by_id(user_id)
        if not current_user.is_event_admin(event.id):
            return FORBIDDEN

        _date_format = '%Y-%m-%dT%H:%M:%S.%fZ'
        name = args['name']
        description = args['description']
        start_date = datetime.strptime((args['start_date']), _date_format)
        end_date = datetime.strptime((args['end_date']), _date_format)
        key = args['key']
        organisation_id = args['organisation_id']
        email_from = args['email_from']
        url = args['url']
        application_open = datetime.strptime((args['application_open']),
                                             _date_format)
        application_close = datetime.strptime((args['application_close']),
                                              _date_format)
        review_open = datetime.strptime((args['review_open']), _date_format)
        review_close = datetime.strptime((args['review_close']), _date_format)
        selection_open = datetime.strptime((args['selection_open']),
                                           _date_format)
        selection_close = datetime.strptime((args['selection_close']),
                                            _date_format)
        offer_open = datetime.strptime((args['offer_open']), _date_format)
        offer_close = datetime.strptime((args['offer_close']), _date_format)
        registration_open = datetime.strptime((args['registration_open']),
                                              _date_format)
        registration_close = datetime.strptime((args['registration_close']),
                                               _date_format)

        event.update(name, description, start_date, end_date, key,
                     organisation_id, email_from, url, application_open,
                     application_close, review_open, review_close,
                     selection_open, selection_close, offer_open, offer_close,
                     registration_open, registration_close)

        try:
            db.session.commit()
        except IntegrityError:
            LOGGER.error("Event with KEY: {} already exists".format(key))
            return EVENT_KEY_IN_USE

        event_org = event_repository.get_by_id_with_organisation(event.id)
        return event_details(event_org), 200
Ejemplo n.º 3
0
    def post(self):
        args = self.req_parser.parse_args()

        user_id = g.current_user["id"]
        current_user = user_repository.get_by_id(user_id)
        if not current_user.is_admin:
            return FORBIDDEN

        _date_format = '%Y-%m-%dT%H:%M:%S.%fZ'
        name = args['name']
        description = args['description']
        start_date = datetime.strptime((args['start_date']), _date_format)
        end_date = datetime.strptime((args['end_date']), _date_format)
        key = args['key']
        organisation_id = args['organisation_id']
        email_from = args['email_from']
        url = args['url']
        application_open = datetime.strptime((args['application_open']),
                                             _date_format)
        application_close = datetime.strptime((args['application_close']),
                                              _date_format)
        review_open = datetime.strptime((args['review_open']), _date_format)
        review_close = datetime.strptime((args['review_close']), _date_format)
        selection_open = datetime.strptime((args['selection_open']),
                                           _date_format)
        selection_close = datetime.strptime((args['selection_close']),
                                            _date_format)
        offer_open = datetime.strptime((args['offer_open']), _date_format)
        offer_close = datetime.strptime((args['offer_close']), _date_format)
        registration_open = datetime.strptime((args['registration_open']),
                                              _date_format)
        registration_close = datetime.strptime((args['registration_close']),
                                               _date_format)
        event_type = args['event_type'].upper()

        event = Event(name, description, start_date, end_date, key,
                      organisation_id, email_from, url, application_open,
                      application_close, review_open, review_close,
                      selection_open, selection_close, offer_open, offer_close,
                      registration_open, registration_close,
                      EventType[event_type])
        event.add_event_role('admin', user_id)
        try:
            event = event_repository.add(event)
        except IntegrityError as e:

            LOGGER.error("Event with KEY: {} already exists".format(key))
            LOGGER.error(e)
            return EVENT_KEY_IN_USE

        event_org = event_repository.get_by_id_with_organisation(event.id)
        return event_details(event_org), 201
Ejemplo n.º 4
0
    def get(self):
        args = self.req_parser.parse_args()

        event = event_repository.get_by_id_with_organisation(args['event_id'])
        if not event:
            return EVENT_NOT_FOUND

        user_id = g.current_user["id"]
        event_id = args['event_id']
        current_user = user_repository.get_by_id(user_id)
        if not current_user.is_event_admin(event_id):
            return FORBIDDEN

        num_users = db.session.query(AppUser.id).count()
        num_responses = db.session.query(Response.id).count()
        num_submitted_respones = db.session.query(Response).filter(
            Response.is_submitted == True).count()

        return {
            'event_description': event.Event.description,
            'num_users': num_users,
            'num_responses': num_responses,
            'num_submitted_responses': num_submitted_respones
        }, 200