def getAllEvents(): try: event = Event() events = event.connectToEvents() responseBody = event.formatAllEvs(events) if responseBody == {}: responseObject = { 'status': 'failure', 'message': 'No events found', } statusCode = 404 else: responseObject = { 'status': 'success', 'message': 'Found all events', 'body': responseBody } statusCode = 200 except (Exception): responseObject = { 'status': 'failure', 'message': 'Internal server error' } statusCode = 500 return responseObject, statusCode
def getOneEvent(_id): try: event = Event() events = event.connectToEvents() ev = event.findEvById(_id, events) if ev: responseBody = event.formatOneEv(ev) responseObject = { 'status': 'success', 'message': 'Found one event', 'body': responseBody } statusCode = 200 else: responseObject = { 'status': 'failure', 'message': 'Event not found' } statusCode = 404 except (Exception): responseObject = { 'status': 'failure', 'message': 'Internal server error' } statusCode = 500 return responseObject, statusCode
def save_new_event(data): """Saves a new event if not existing already Args: data (dict): A dict of the event's data Returns: dict: The response object to send back """ event = Event.objects(name=data["name"]).first() if not event: new_event = Event( **{atr: value for atr, value in data.items() if value != ""}) new_event.save() response_object = { 'status': 'success', 'message': 'Successfully registered.' } return response_object, 201 else: response_object = { 'status': 'fail', 'message': 'Event already exists. Please choose another name.' } return response_object, 409
def addEvent(data): try: keys = countEventKeys(data) if not isValidEventInput(keys): responseObject = {'status': 'failure', 'message': 'Invalid input'} return responseObject, 400 event = Event() events = event.connectToEvents() newEvent = Event(name=data['name'], organizer=data['organizer'], startTime=data['startTime'], endTime=data['endTime'], building=data['building'], room=data['room'], description=data['description'], tags=data['tags']) newEvent.assignEventId(events) responseBody = newEvent.formatAsResponseBody() responseObject = { 'status': 'success', 'message': 'Event successfully added', 'body': responseBody } statusCode = 201 except (Exception): responseObject = { 'status': 'failure', 'message': 'Internal server error' } statusCode = 500 return responseObject, statusCode
def save_new_event(data): new_event = Event() new_event.id = str(uuid.uuid4()) try: new_event.action = data['action'] except KeyError: pass try: new_event.reference_id = data['reference_id'] except KeyError: pass try: new_event.description = data['description'] except KeyError: pass try: new_event.intiator = data['intiator'] except KeyError: pass try: new_event.linked_event_id = data['linked_event_id'] except KeyError: pass try: new_event.incident_id = data['incident_id'] except KeyError: pass try: new_event.affected_attribute = data['affected_attribute'] except KeyError: pass db.session.add(new_event) db.session.commit()
class TestEvent(unittest.TestCase): evento = Event() def setUp(self): self.cci_teste = '{"idOrdem": 3456, "idEventRec": 1, "eventNumber": "4733-09-2016", "forecastDate": "2016-09-13T00:47:48-03:00", "initialDate": "2016-09-12T18:47:48-03:00", "endDate": "31/07/2016", "requestDateREC": "2016-10-10T14:06:28-03:00","resultDateREC": "2016-10-10T14:06:28-03:00", "descrEventType": "EXISTE EVENTO DE INTERRUPCAO NAO PROGRAMADA","result": "OK", "msg": "Sucesso"}' def test_fill(self): self.evento.fill(self.cci_teste) self.assertEqual(self.evento.id_ordem, 3456) self.assertEqual(self.evento.descr_event_type, "EXISTE EVENTO DE INTERRUPCAO NAO PROGRAMADA") self.assertEqual(self.evento.event_number, "4733-09-2016")
def save_new_event(data, creator_id): new_event = Event( name=data['name'], public=data['public'], date=datetime.strptime(data['date'], '%Y-%m-%dT%H:%M:%S.%fZ'), location=data['location'], details=data['details'], creator_id=creator_id, cover_photo='a' #? ) save_changes(new_event) return create_response_object(201, 'Successfully created.', marshal(new_event, EventDTO.event)), 201
def updateEvent(_id, data): try: keys = countEventKeys(data) if not isValidEventInput(keys): responseObject = {'status': 'failure', 'message': 'Invalid input'} return responseObject, 400 event = Event() events = event.connectToEvents() ev = event.findEvById(_id, events) if ev: eventToUpdate = Event(_id=_id, name=data['name'], organizer=data['organizer'], startTime=data['startTime'], endTime=data['endTime'], building=data['building'], room=data['room'], description=data['description'], tags=data['tags']) eventToUpdate.updateEv(events, ev) responseBody = eventToUpdate.formatAsResponseBody() responseObject = { 'status': 'success', 'message': 'Event successfully updated', 'body': responseBody } statusCode = 201 else: responseObject = { 'status': 'failure', 'message': 'Event not found' } statusCode = 404 except (Exception): responseObject = { 'status': 'failure', 'message': 'Internal server error' } statusCode = 500 return responseObject, statusCode
def deleteOneEvent(_id): try: event = Event() events = event.connectToEvents() if event.deleteEvById(_id, events): responseObject = { 'status': 'success', 'message': 'Event successfully deleted' } statusCode = 200 else: responseObject = { 'status': 'failure', 'message': 'Event not found' } statusCode = 404 except (Exception): responseObject = { 'status': 'failure', 'message': 'Internal server error' } statusCode = 500 return responseObject, statusCode
def remove_events(name_list): """ Removes events with corresponding names Args: name_list (list of str): Names to remove Returns: dict: The response object to send back """ try: Event.objects(name__in=name_list).delete() response_object = { 'status': 'success', 'message': 'Successfully deleted.' } return response_object, 200 except: response_object = { 'status': 'fail', 'message': 'Error, could not delete the events.' } return response_object, 500
def get_events(filters): """ Returns events with filters Args: filters (dict): A dict of the filters name (str): str contained in the name, or full name depending on name_exact (default is full) name_exact (str): name is exact (True) or partial (False) start_min (datetime): filters start date before start_min start_max (datetime): filters start date after start_max stop_min (datetime): filters stop date before stop_min stop_max (datetime): filters stop date after stop_max tags (list of str): tags associated with the events Returns: list: A list of events passing the filters """ query_filters = dict() if "name" in filters: if "name_exact" in filters: if filters["name_exact"] == "False": query_filters["name"] = { "$regex": filters["name"], '$options': 'i' } else: query_filters["name"] = filters["name"] else: """ Default behaviour """ query_filters["name"] = filters["name"] if any( [True for element in ["start_min", "start_max"] if element in filters]): query_filters["start"] = dict() if "start_min" in filters: query_filters["start"]["$gte"] = datetime.datetime.strptime( filters["start_min"], '%Y-%m-%d %H:%M') if "start_max" in filters: query_filters["start"]["$lte"] = datetime.datetime.strptime( filters["start_max"], '%Y-%m-%d %H:%M') if any( [True for element in ["stop_min", "stop_max"] if element in filters]): query_filters["stop"] = dict() if "stop_min" in filters: query_filters["stop"]["$gte"] = datetime.datetime.strptime( filters["stop_min"], '%Y-%m-%d %H:%M') if "stop_max" in filters: query_filters["stop"]["$lte"] = datetime.datetime.strptime( filters["stop_max"], '%Y-%m-%d %H:%M') if "tags" in filters: tags_list = list(filters["tags"].split(",")) query_filters["tags"] = {"$all": tags_list} pipeline = [{ "$match": query_filters }, { "$project": { "array": True, "name": "$name", "start": { "$dateToString": { "format": "%Y-%m-%d %H:%M", "date": "$start" } }, "stop": { "$dateToString": { "format": "%Y-%m-%d %H:%M", "date": "$start" } }, "tags": "$tags", "_id": 0 } }] query = list(Event.objects(__raw__=query_filters).aggregate(*pipeline)) return json.loads(json.JSONEncoder().encode(query))