def event_update_api(public_id): valid_public_id(public_id) try: event = g.db_session.query(Event).filter( Event.public_id == public_id, Event.namespace_id == g.namespace.id).one() except NoResultFound: raise NotFoundError("Couldn't find event {0}".format(public_id)) if event.read_only: raise InputError('Cannot update read_only event.') data = request.get_json(force=True) valid_event_update(data, g.namespace, g.db_session) if 'participants' in data: for p in data['participants']: if 'status' not in p: p['status'] = 'noreply' for attr in ['title', 'description', 'location', 'when', 'participants']: if attr in data: setattr(event, attr, data[attr]) g.db_session.commit() schedule_action('update_event', event, g.namespace.id, g.db_session, calendar_uid=event.calendar.uid) return g.encoder.jsonify(event)
def event_update_api(public_id): data = request.get_json(force=True) try: valid_event_update(data) except InputError as e: return err(404, e.message) if 'start' in data: data['start'] = datetime.utcfromtimestamp(int(data.get('start'))) if 'end' in data: data['end'] = datetime.utcfromtimestamp(int(data.get('end'))) if 'busy' in data: data['busy'] = int(data.get('busy')) if 'all_day' in data: data['all_day'] = int(data.get('all_day')) if 'participants' in data: data['participant_list'] = data['participants'] del data['participants'] for p in data['participant_list']: if 'status' not in p: p['status'] = 'awaiting' result = events.crud.update(g.namespace, g.db_session, public_id, data) if result is None: return err(404, "Couldn't find event with id {0}". format(public_id)) return g.encoder.jsonify(result)
def event_update_api(public_id): try: valid_public_id(public_id) except InputError: return err(400, 'Invalid event id {}'.format(public_id)) data = request.get_json(force=True) try: valid_event_update(data, g.namespace, g.db_session) except InputError as e: return err(404, e.message) # Convert the data into our types where necessary # e.g. timestamps, participant_list if 'start' in data: data['start'] = datetime.utcfromtimestamp(int(data.get('start'))) if 'end' in data: data['end'] = datetime.utcfromtimestamp(int(data.get('end'))) if 'participants' in data: data['participant_list'] = [] for p in data['participants']: if 'status' not in p: p['status'] = 'noreply' data['participant_list'].append(p) del data['participants'] try: result = events.crud.update(g.namespace, g.db_session, public_id, data) except InputError as e: return err(400, e.message) if result is None: return err(404, "Couldn't find event with id {0}".format(public_id)) return g.encoder.jsonify(result)
def event_update_api(public_id): valid_public_id(public_id) data = request.get_json(force=True) valid_event_update(data, g.namespace, g.db_session) # Convert the data into our types where necessary # e.g. timestamps, participant_list if 'start' in data: data['start'] = datetime.utcfromtimestamp(int(data.get('start'))) if 'end' in data: data['end'] = datetime.utcfromtimestamp(int(data.get('end'))) if 'participants' in data: data['participant_list'] = [] for p in data['participants']: if 'status' not in p: p['status'] = 'noreply' data['participant_list'].append(p) del data['participants'] result = events.crud.update(g.namespace, g.db_session, public_id, data) if result is None: raise NotFoundError("Couldn't find event {0}".format(public_id)) schedule_action('update_event', result, g.namespace.id, g.db_session) return g.encoder.jsonify(result)
def event_update_api(public_id): try: valid_public_id(public_id) except InputError: return err(400, "Invalid event id {}".format(public_id)) data = request.get_json(force=True) try: valid_event_update(data) except InputError as e: return err(404, e.message) # Convert the data into our types where necessary # e.g. timestamps, participant_list if "start" in data: data["start"] = datetime.utcfromtimestamp(int(data.get("start"))) if "end" in data: data["end"] = datetime.utcfromtimestamp(int(data.get("end"))) if "participants" in data: data["participant_list"] = [] for p in data["participants"]: if "status" not in p: p["status"] = "noreply" data["participant_list"].append(p) del data["participants"] try: result = events.crud.update(g.namespace, g.db_session, public_id, data) except InputError as e: return err(404, e.message) if result is None: return err(404, "Couldn't find event with id {0}".format(public_id)) return g.encoder.jsonify(result)
def event_update_api(public_id): data = request.get_json(force=True) try: valid_event_update(data) except InputError as e: return err(404, e.message) # Convert the data into our types where necessary # e.g. timestamps, participant_list if 'start' in data: data['start'] = datetime.utcfromtimestamp(int(data.get('start'))) if 'end' in data: data['end'] = datetime.utcfromtimestamp(int(data.get('end'))) if 'participants' in data: data['participant_list'] = [] for p in data['participants']: if 'status' not in p: p['status'] = 'noreply' data['participant_list'].append(p) del data['participants'] try: result = events.crud.update(g.namespace, g.db_session, public_id, data) except InputError as e: return err(404, e.message) if result is None: return err(404, "Couldn't find event with id {0}". format(public_id)) return g.encoder.jsonify(result)
def event_update_api(public_id): g.parser.add_argument('notify_participants', type=strict_bool, location='args') args = strict_parse_args(g.parser, request.args) notify_participants = args['notify_participants'] valid_public_id(public_id) try: event = g.db_session.query(Event).filter( Event.public_id == public_id, Event.namespace_id == g.namespace.id).one() except NoResultFound: raise NotFoundError("Couldn't find event {0}".format(public_id)) if event.read_only: raise InputError('Cannot update read_only event.') if (isinstance(event, RecurringEvent) or isinstance(event, RecurringEventOverride)): raise InputError('Cannot update a recurring event yet.') data = request.get_json(force=True) valid_event_update(data, g.namespace, g.db_session) if 'participants' in data: for p in data['participants']: if 'status' not in p: p['status'] = 'noreply' # Don't update an event if we don't need to. if noop_event_update(event, data): return g.encoder.jsonify(event) for attr in ['title', 'description', 'location', 'when', 'participants']: if attr in data: setattr(event, attr, data[attr]) event.sequence_number += 1 g.db_session.commit() schedule_action('update_event', event, g.namespace.id, g.db_session, calendar_uid=event.calendar.uid, notify_participants=notify_participants) return g.encoder.jsonify(event)