Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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
Exemplo n.º 5
0
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()
Exemplo n.º 6
0
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")
Exemplo n.º 7
0
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
Exemplo n.º 8
0
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
Exemplo n.º 9
0
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
Exemplo n.º 10
0
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
Exemplo n.º 11
0
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))