Пример #1
0
 def updateTrafficStatus(self, **kw):
     traffic_id = kw['traffic_id']
     state = kw['state']
     comment = kw['comment']
     if kw['false_alarm'] == "true":
         false_alarm = 1
     else:
         false_alarm = 0
     alert = DBSession.query(Traffic).filter_by(id=traffic_id).first()
     if alert is not None:
         alert.attended_state = state
         alert.comment = comment
         alert.false_alarm = false_alarm
         if state == "A":
             alert.attended_time = datetime.datetime.utcnow()
         if state == "P":
             OperatorLog.addLog(user_name=kw["user"], group_name=kw["group"], operation=app_globals.putPending,
                                traffic_id=traffic_id)
             alert.pending_time = datetime.datetime.utcnow()
         if state == "C":
             OperatorLog.addLog(user_name=kw["user"], group_name=kw["group"], operation=app_globals.finalizedTraffic,
                                traffic_id=traffic_id)
             alert.closed_time = datetime.datetime.utcnow()
         DBSession.flush()
     else:
         print("NOT FOUND!!!")
     if not "group" in kw:
         abort(status_code=500, detail="Traffic error, parameter (group) not found")
     else:
         gaugeParameters = Statistics()
         currentGauge=gaugeParameters.byUser(kw["group"])
     Message.post("trafficlistener_" + kw["group"], 'REPAINT' + "|")
     return currentGauge
Пример #2
0
 def post_delete(self, record):
     print("DELETE Id: {} ".format(record))
     query = DBSession.query(Pets).filter_by(id=int(record)).first()
     if query is not None:
         DBSession.delete(query)
         DBSession.flush()
     return dict(id=record)
Пример #3
0
 def post(self, id,data):
     print(data)
     newitem = Assets()
     newitem.assets_id = id
     newitem.data = data
     DBSession.add(newitem)
     DBSession.flush()
     return dict(id=id,data=data)
Пример #4
0
 def post(self, name, breed):
     newitem = Pets()
     newitem.name = name
     newitem.breed = breed
     DBSession.add(newitem)
     DBSession.flush()
     print("Post Name: {} Breed: {}".format(name, breed))
     return dict(name=name, breed=breed, id=newitem.id)
Пример #5
0
 def put(self, name, breed, id):
     query = DBSession.query(Pets).filter_by(id=int(id)).first()
     if query is not None:
         query.name = name
         query.breed = breed
         DBSession.flush()
     print("PUT Name: {} Breed: {} id:".format(name, breed, id))
     return dict(name=name, breed=breed, id=id)
Пример #6
0
    def addTraffic(self, **kw):
        event_id = int(kw['event_id'])
        imei = kw['imei']
        vehicle = kw['vehicle']
        comment = kw['comment']
        listener = 0
        position = getTracker.location(imei=imei)
        latitude = position['latitude']
        print("Latitude:{}".format(latitude))
        longitude = position['longitude']
        print("Longitude:{}".format(longitude))
        speed = position['speed']
        azimuth = position['heading']

        priority = int(kw['priority'])
        if kw['client_id'] == "None":
            client_id = -1
            user_name = "Inexistente=CLIENT_ID=none"
        else:
            parameters = {}
            parameters['imei'] = imei
            connection = requests.get(app_globals.domainpluto + "/services/imeiInfo", parameters)
            imeiData = connection.json()
            if imeiData["error"] == "ok":
                user_name=imeiData["application"]
            else:
                user_name="Inexistente=CLIENT_ID=none"

        currentEvent = DBSession.query(Events).filter_by(event_id=event_id).first()
        if currentEvent is not None:
            nd = currentEvent.event_desc
        else:
            nd = ""

        user = request.identity['repoze.who.userid']
        user = DBSession.query(User).filter_by(user_name=user).first()
        newTraffic = Traffic()
        newTraffic.priority = priority
        newTraffic.event_id = event_id
        newTraffic.user_name = user_name
        newTraffic.imei = imei
        newTraffic.vehicle = vehicle
        newTraffic.callercomment = comment
        newTraffic.event_desc = nd
        newTraffic.latitude = latitude
        newTraffic.longitude = longitude
        newTraffic.azimuth = int(float(azimuth))
        newTraffic.speed = int(float(speed))
        newTraffic.listener = listener
        newTraffic.attended_state = 'A'
        newTraffic.user_id = user.user_id
        newTraffic.user=kw["group"]
        DBSession.add(newTraffic)
        DBSession.flush()


        Message.post("trafficlistener_" + kw["group"], 'RELOAD' + "|")
        return dict(error="ok", id=str(newTraffic.id))
Пример #7
0
 def redirector(self, **kw):
     error = {"Error": "none", "Password": "******"}
     if not ('imei' in kw and 'account' in kw and 'token' in kw
             and 'platform' in kw and 'gate_user' in kw
             and 'gate_password' in kw):
         error = {"Error": "Parametros faltantes"}
     else:
         r = requests.get(app_globals.domainsun + "/app_log/login?user="******"account"])
         j = r.json()
         print(j)
         if j["error"] != "password Not Found":
             error = {"Error": "Cuenta de grupo inexistente"}
         else:
             look = DBSession.query(Smartphones).filter_by(
                 gate_user=kw['gate_user']).first()
             if look is not None:
                 error = {"Error": "Usuario de plataforma ya registrado"}
             else:
                 query = DBSession.query(Smartphones).filter_by(
                     account=kw['account'], imei=kw['imei']).first()
                 if query is not None:
                     if query.token != kw["token"]:
                         error = {
                             "Error":
                             "Este telefono esta asignado a otro dispositivo"
                         }
                 else:
                     root = "23456789AaBbCcDdEeFfGgHhJjKkLlMmNnPpQqRrSsTtUuVvWwXxYyZz"
                     pswd = ""
                     for x in range(0, 4):
                         pswd = pswd + root[random.randint(0, 55)]
                     url = "http://testggs.dwim.mx/GPScontrol/Services/Auth.ashx/login?jsonp=&appId=2&strUsername="******"gate_user"] + "&strPassword="******"gate_password"]
                     r = requests.get(url)
                     j = r.json()
                     print(j)
                     #{'result': True, 'id': -1}
                     if j["result"]:
                         print("Paso!!!")
                         newitem = Smartphones()
                         newitem.imei = kw["imei"]
                         newitem.account = kw["account"]
                         newitem.token = kw["token"]
                         newitem.platform = kw["platform"]
                         newitem.gate_user = kw["gate_user"]
                         newitem.gate_password = kw["gate_password"]
                         newitem.gate_app = "2"
                         newitem.password = pswd
                         DBSession.add(newitem)
                         DBSession.flush()
                         error['Password'] = pswd
                     else:
                         error = {"Error": "Usuario o Password Incorrecto"}
     print(error)
     Message.post("Smartphonesfrom", 'RELOAD' + "|")
     return error
Пример #8
0
 def save_image_app(self, **kw):
     reserved = ReservedImages()
     reserved.code = datetime.now().strftime('%Y-%m-%dT%H:%M:%S')
     reserved.extra = "APP"
     reserved.w = 450
     reserved.h = 450
     reserved.job_id = kw["jobid"]
     reserved.image = base64.decodebytes(bytes(kw["image"], 'utf-8'))
     DBSession.add(reserved)
     DBSession.flush()
     return dict(error="ok")
Пример #9
0
 def addPending(self, **kw):
     traffic_id = int(kw['traffic_id'])
     #OperatorLog.addLog(user_name=kw["user"], group_name=kw["group"], operation=app_globals.putPending, traffic_id=traffic_id)
     newPending = Pending()
     newPending.traffic_id = traffic_id
     # newPending.pending_date = datetime.datetime.utcnow()
     newPending.data = kw['comment']
     DBSession.add(newPending)
     DBSession.flush()
     Message.post("trafficlistener_" + kw["group"], 'RELOAD' + "|")
     return dict(error='ok')
Пример #10
0
    def notification(self, **kw):
        if "user" in kw:
            origin = [
                'System', 'Administrator', 'Guest', 'Bob', 'Louisa', 'Mark'
            ]
            action = [
                'Requests', 'Needs', 'Appreciate', 'Speaks', 'Share', 'Insist'
            ]
            category = [
                'Alert Manager', 'Stop Alarm', 'Extinguish Fire',
                'Invite to dinner', 'Rest', 'Take Vacation'
            ]
            title = [
                'Attend Alarm', 'Kill System', 'Start Procedure',
                'Find dodumentation', 'Press Button', 'End procedure'
            ]
            subtitle = [
                'For Neza', 'For Neto Stores', 'For Mexico News',
                'For Alestra', 'For HSBC', 'For Bancomer'
            ]
            pushDate = str(datetime.utcnow())
            icon = [
                'glyphicon glyphicon-tags', 'glyphicon glyphicon-book',
                'glyphicon glyphicon-bookmark', 'glyphicon glyphicon-eye-open',
                'glyphicon glyphicon-warning-sign',
                'glyphicon glyphicon-comment'
            ]

            message = origin[randomNumber()] + "," + action[
                randomNumber()] + "," + category[randomNumber()] + "," + title[
                    randomNumber()] + "," + subtitle[randomNumber(
                    )] + "," + pushDate + "," + icon[randomNumber()]
            userSession = DBSession.query(User).filter_by(
                user_name=kw['user']).first()
            newItem = Notification()
            newItem.user_id = userSession.user_id
            newItem.attended_state = 'N'
            newItem.time_stamp = datetime.utcnow()
            newItem.message = message
            DBSession.add(newItem)
            DBSession.flush()
            counter = DBSession.query(Notification).filter_by(
                user_id=userSession.user_id, attended_state="N").count()
            if counter == 0:
                value = ""
            else:
                value = str(counter)
            message = 'NOT' + "|" + value
            Message.post(kw['user'], message)
            return dict(error='ok')
        else:
            return dict(error='user parameter missing')
Пример #11
0
 def updateBadge(self, **kw):
     record = kw['record']
     user = DBSession.query(User).filter_by(
         user_name=request.identity['repoze.who.userid']).first()
     notification = DBSession.query(Notification).filter_by(
         id=record).first()
     if notification is not None:
         notification.attended_state = "Y"
         notification.attended_time = datetime.datetime.utcnow()
         DBSession.flush()
     counter = DBSession.query(Notification).filter_by(
         user_id=user.user_id, attended_state='N').count()
     return dict(badge='' if counter == 0 else str(counter))
Пример #12
0
 def uploadImage(self,**kw):
     if "userfile" in kw:
         fileitem = kw["userfile"]
         if fileitem.file:
             fileName = fileitem.filename
             if fileName.find(".png") > 0 or fileName.find(".jpeg") > 0 or fileName.find(".jpg") > 0:
                 newImage = Images()
                 newImage.traffic_id = kw["traffic_id"]
                 newImage.data = fileitem.file.read()
                 DBSession.add(newImage)
                 DBSession.flush()
                 OperatorLog.addLog(user_name=kw["user"], group_name=kw["group"], operation=app_globals.addImage,traffic_id=kw['traffic_id'])
     return dict(dummy="")
Пример #13
0
 def setUp(self):
     """Setup test fixture for each model test method."""
     try:
         new_attrs = {}
         new_attrs.update(self.attrs)
         new_attrs.update(self.do_get_dependencies())
         self.obj = self.klass(**new_attrs)
         DBSession.add(self.obj)
         DBSession.flush()
         return self.obj
     except:
         DBSession.rollback()
         raise
Пример #14
0
 def release_license(self, **kw):
     error = {"Error": "none"}
     print("Release License")
     if not ('imei' in kw and 'account' in kw):
         error = {"Error": "Parametros faltantes"}
     else:
         item = DBSession.query(Smartphones).filter_by(
             account=kw['account'], imei=kw['imei']).first()
         if item is not None:
             DBSession.delete(item)
             DBSession.flush()
             Message.post("Smartphonesfrom", 'RELOAD' + "|")
     print(error)
     return error
Пример #15
0
 def addTicket(self, **kw):
     traffic_id = int(kw['traffic_id'])
     comment = kw['comment']
     OperatorLog.addLog(user_name=kw["user"], group_name=kw["group"], operation=app_globals.createTicket,traffic_id=traffic_id)
     ticket = DBSession.query(Traffic).filter_by(id=traffic_id).first()
     if traffic_id != 0:
         kw['imei'] = ticket.imei
     if kw['imei'] is not None:
         imeiInfo = Rest()
         imeiData = imeiInfo.get(app_globals.domainpluto + "/services/imeiInfo", {"imei": kw['imei']})
         if imeiData["error"] == "ok":
             #print("IMEI:"+kw['imei'])
             client_id = imeiData["client_id"]
             if client_id is not None:
                 last_report = imeiData["last_report"]
                 url = "http://venus.gpscontrol.com.mx/dispatch/create_ticket?client_id=" + str(
                     client_id) + "&last_report=" + str(last_report) + "&folio=" + str(kw['traffic_id']) + "&imei=" + str(
                     kw['imei']) + "&comm=" + urllib.parse.quote_plus(comment)
                 print("URL:{}".format(url))
                 newTicket = Rest()
                 #print("URL:{}".format(url))
                 ticketData = newTicket.get(url, {})
                 #print("data:{}".format(ticketData))
                 ## Insert if error="ok"
                 #response = requests.get(url)
                 #print("Response:{}".format(ticketData))
                 iticket = ticketData['Ticket']
                 searchticket = DBSession.query(Tickets).filter_by(ticket=iticket).first()
                 if searchticket is None:
                     newTickets = Tickets()
                     if id != 0:
                         newTickets.traffic_id = id
                     newTickets.last_report = last_report
                     newTickets.ticket = iticket
                     newTickets.comment = kw['comment']
                     DBSession.add(newTickets)
                     DBSession.flush()
                     try:
                         newTickets = DBSession.query(imeiTicket).filter_by(imei=kw['imei']).one()
                         newTickets.imei = kw['imei']
                         newTickets.ticket = iticket
                     except:
                         newTickets = imeiTicket()
                         newTickets.imei = kw['imei']
                         newTickets.ticket = iticket
                         DBSession.add(newTickets)
                     DBSession.flush()
                 return ticketData
     else:
         return dict(Ticket=0)
Пример #16
0
 def addTraffic(self, **kw):
     fields = 'event_id,event_desc,user_name,user,latitude,longitude,imei,speed,azimuth,priority,vehicle,valid,dedicated_id'
     error = 'Campos faltantes:'
     errorName = ""
     for item in fields.split(","):
         if not item in kw:
             errorName = errorName + item + ","
     if errorName == "":
         newTraffic = Traffic()
         for item in fields.split(","):
             setattr(newTraffic, item, kw[item])
         DBSession.add(newTraffic)
         DBSession.flush()
         Message.post("trafficlistener_" + kw['user'], 'RELOAD' + "|")
         return dict(error="ok")
     return dict(error=error + errorName[:-1])
Пример #17
0
    def updatedispatch(self, **kw):
        error = {"Error": "none"}
        ####
        ##
        ggs = "testggs.dwim.mx"  ### GPS GATE SERVER DEFINITION
        ##
        ####

        imei = kw['imei']
        type = kw['type']
        jobNumber = kw['jobnumber']
        if 'jobcomment' in kw:
            jobComment = kw['jobcomment']
        else:
            jobComment = ""
        latitude = kw['latitude']
        longitude = kw['longitude']
        print("######### Update Dispatch ##########")
        print(imei)
        print(type)
        print("JOb:{}".format(jobNumber))
        print(jobComment)
        print(latitude)
        print(longitude)
        query = DBSession.query(Jobs).filter_by(job_id=jobNumber).first()
        if query is not None:
            query.comment = jobComment
            DBSession.flush()
        query = DBSession.query(Smartphones).filter_by(imei=imei).first()
        if query is not None:
            print(query.gate_user)
            print(query.gate_password)
            print(query.gate_app)
            if type == "D":
                updateJob2Dispatched(ggs, query.gate_user, query.gate_password,
                                     query.gate_app, jobNumber,
                                     float(latitude), float(longitude))
            if type == "A":
                updateJob2Active(ggs, query.gate_user, query.gate_password,
                                 query.gate_app, jobNumber, float(latitude),
                                 float(longitude))
            if type == "F":
                updateJob2Finished(ggs, query.gate_user, query.gate_password,
                                   query.gate_app, jobNumber, float(latitude),
                                   float(longitude), jobComment)

        return error
Пример #18
0
 def storePosition(self, **kw):
     if 'latitude' in kw and 'longitude' in kw:
         query = DBSession.query(Position).filter_by(id=1).first()
         if query is None:
             new = Position()
             new.id = 1
             new.latitude = kw['latitude']
             new.longitude = kw['longitude']
             DBSession.add(new)
             print("added")
         else:
             query.latitude = kw['latitude']
             query.longitude = kw['longitude']
             print("moded")
         DBSession.flush()
         return dict(error="ok")
     else:
         return dict(error="nok")
Пример #19
0
 def location(self, **kw):
     error = {"Error": "none"}
     print("Updating location")
     if not ('imei' in kw and 'account' in kw and 'latitude' in kw
             and 'longitude' in kw and 'speed' in kw and 'battery' in kw
             and 'accuracy' in kw and 'azimuth' in kw and 'valid' in kw):
         error = {"Error": "Parametros faltantes"}
     else:
         query = DBSession.query(Smartphones).filter_by(
             account=kw['account'], imei=kw['imei']).first()
         if query is not None:
             query.lastupdate = datetime.utcnow()
             query.latitude = float(kw['latitude'])
             query.longitude = float(kw['longitude'])
             query.speed = kw['speed']
             query.accuracy = float(kw['accuracy'])
             query.battery = kw['battery']
             DBSession.flush()
         else:
             error = {"Error": "Parametros faltantes"}
     print(error)
     return error
Пример #20
0
 def uploadImage2(self, **kw):
     if 'traffic_id' in kw:
         traffic_id = int(kw['traffic_id'])
         file = request.POST['file']
         if file != '':
             # permanent_file = open(os.path.join('/var/www/python.dispatch', file.filename.lstrip(os.sep)), 'w')
             #print(app_globals.app_dir)
             permanent_file = open(os.path.join(app_globals.app_dir+'/', file.filename.lstrip(os.sep)), 'wb')
             copyfileobj(file.file, permanent_file)
             file.file.close()
             permanent_file.close()
             filename = request.params["file"].filename
             (this_file_name, this_file_extension) = os.path.splitext(filename)
             # format=imghdr.what(filename)
             # if format=='jpeg'or format=='bmp' or format=='png':
             if (this_file_extension == '.jpeg' or this_file_extension == '.bmp' or this_file_extension == '.png'):
                 # f = open('/var/www/python.dispatch/' + filename, 'rb').read()
                 f = open(app_globals.app_dir+'/' + filename, 'rb').read()
                 newImage = Images()
                 newImage.traffic_id = traffic_id
                 newImage.data = f
                 DBSession.add(newImage)
                 DBSession.flush()
     redirect("/index")
Пример #21
0
    def updateGrid(self):
        if "oper" in self.kw:
            if self.kw['oper'] == "edit":
                print("edit")
                # print("id:{}".format(self.kw['id']))
                # for key, value in self.kw.iteritems():
                #     print "%s = %s" % (key, value)

                my_filters = {self.indexkey: self.kw['id']}
                query = DBSession.query(self.model)

                for attr, value in my_filters.items():
                    query = query.filter(getattr(self.model, attr) == value)
                item = query.first()
                if item is not None:
                    #print("None Edit")
                    for column in item.__table__.columns:
                        if column.name != self.indexkey:
                            if column.name in self.kw:
                                if str(column.type) == "BOOLEAN":
                                    newvalue = True if self.kw[
                                        column.name] == "True" else False
                                else:
                                    newvalue = self.kw[column.name]
                                #print("updating: {} to {} type:{}".format(column.name, self.kw[column.name],str(column.type)))
                                setattr(item, column.name, newvalue)
                    DBSession.flush()
            if self.kw['oper'] == "add":
                item = self.model()
                #print("add")
                for column in item.__table__.columns:
                    if column.name in self.kw:
                        #print("{}={}".format(str(column.name),str(self.kw[column.name])))
                        if (self.indexkey == column.name):
                            pass
                        else:
                            setattr(item, column.name, self.kw[column.name])

                DBSession.add(item)
                DBSession.flush()

            if self.kw['oper'] == "del":
                my_filters = {self.indexkey: self.kw['id']}
                query = DBSession.query(self.model)
                for attr, value in my_filters.items():
                    query = query.filter(getattr(self.model, attr) == value)
                item = query.first()
                if item is not None:
                    DBSession.delete(item)
                    DBSession.flush()
            return dict(error="")
Пример #22
0
    def dispatch(self, **kw):
        error = {"Error": "none"}
        jobID = kw['jobid']
        jobDate = kw['jobdate']
        jobDesc = kw['jobdesc']
        state = kw['state']
        name = kw['name']
        latitude = kw['latitude']
        longitude = kw['longitude']
        print("ID:{}".format(jobID))
        print("date:{}".format(jobDate))
        print("Description:{}".format(jobDesc))
        print("name:{}".format(name))
        print("state:{}".format(state))
        print("latitude:{}".format(latitude))
        print("longitude:{}".format(longitude))
        if state != "Assigned":
            dday = jobDate[8:10]
            ntime = jobDate[16:24]
            dyear = jobDate[11:15]
            dmonth = a2m(jobDate[4:7])
            newdate = dyear + "/" + dmonth + "/" + dday
            print("time:{}".format(jobDate[16:24]))
            sjobdate = newdate + " " + jobDate[16:24]
            print("S Date:{}".format(sjobdate))
            jobdate = datetime.strptime(sjobdate, '%Y/%m/%d %H:%M:%S')
            # store data in Job Table
            query = DBSession.query(Jobs).filter_by(gate_user=name,
                                                    job_id=jobID).first()
            if query is None:
                newitem = Jobs()
                newitem.job_id = jobID
                newitem.job_date = jobdate
                newitem.job_description = jobDesc
                newitem.job_state = state
                newitem.latitude = float(latitude)
                newitem.longitude = float(longitude)
                newitem.last_update = datetime.now()
                newitem.gate_user = name
                DBSession.add(newitem)
                DBSession.flush()
            else:
                query.job_date = jobdate
                query.job_description = jobDesc
                query.job_state = state
                query.latitude = float(latitude)
                query.longitude = float(longitude)
                query.last_update = datetime.now()
                DBSession.flush()

            print("Date:{}".format(newdate))
            query = DBSession.query(Smartphones).filter_by(
                gate_user=name).first()
            if query is not None:
                # Send Message
                data_message = {
                    "command": "message",
                    "title": newdate,
                    "body": jobDesc
                }
                # apikey=os.environ.get('FCM_KEY') or "AIzaSyAw5EFGDer7-PEuXXMzYNPwla9RP2SVqz4"
                apikey = "AIzaSyCxiYxZsSqKGaJ4NM7vM4yP9d0BYlQcNmo"
                push_service = FCMNotification(api_key=apikey)
                resp = push_service.notify_single_device(
                    registration_id=query.token, data_message=data_message)
                # Update Data
                print("Send newjob")
                data_message = {
                    "command": "newjob",
                    "jobnumber": jobID,
                    "jobdate": newdate,
                    "jobtime": ntime,
                    "jobdesc": jobDesc,
                    "joblat": latitude,
                    "joblon": longitude,
                    "jobstate": state
                }
                push_service = FCMNotification(api_key=apikey)
                resp = push_service.notify_single_device(
                    registration_id=query.token, data_message=data_message)
            Message.post("Smartphonesfrom", 'RELOAD' + "|")
        return error
Пример #23
0
def read_email_from_gmail(FROM_EMAIL, FROM_PWD, SMTP_SERVER, SMTP_PORT, imei,
                          url, event_id, event_desc, client_id, client_name,
                          latitude, longitude):

    mail = imaplib.IMAP4_SSL(SMTP_SERVER, SMTP_PORT)
    mail.login(FROM_EMAIL, FROM_PWD)
    mail.select('inbox')

    #
    # ("EMAIL:{} password:{}".format(FROM_EMAIL,FROM_PWD))
    #mail.select(readonly=1)

    typ, data = mail.uid('SEARCH', None, '(UNSEEN)')

    for num in data[0].split():
        typ, data = mail.uid('fetch', num, '(RFC822)')
        for response in data:
            if isinstance(response, tuple):
                original = email.message_from_string(
                    response[1].decode("utf-8"))
                # print(original.keys())
                [
                    'Delivered-To', 'Received', 'X-Received', 'ARC-Seal',
                    'ARC-Message-Signature', 'ARC-Authentication-Results',
                    'Return-Path', 'Received', 'Received-SPF',
                    'Authentication-Results', 'DKIM-Signature',
                    'X-Google-DKIM-Signature', 'X-Gm-Message-State',
                    'X-Google-Smtp-Source', 'MIME-Version', 'X-Received',
                    'Date', 'List-Unsubscribe', 'X-Google-Id', 'X-Feedback-Id',
                    'X-No-Auto-Attachment', 'Message-ID', 'Subject', 'From',
                    'To', 'Content-Type'
                ]
                #print("original:{}",format(original))
                # print("From:{}".format(original['From']))
                # print("Subject:{}".format(original['Subject']))
                # print("Content:{}".format(original['Content-Type']))
                # print("ID:{}".format(original['Message-ID']))
                imageHtml = ''
                htmlBody = "<p>"
                if original.is_multipart():
                    #print("Multipart!")
                    for part in original.walk():
                        if part.get_content_maintype() == 'multipart':
                            continue
                        if part.get('Content-Disposition') is None:
                            continue
                        filename = part.get_filename()
                        #print("File Name:{}".format(filename))

                        if filename is not None and (
                                filename.find('.jpeg') > 0
                                or filename.find('.png') > 0
                                or filename.find('.jpg') > 0):
                            image = part.get_payload(decode=True)
                            bencodedString = base64.b64encode(image)
                            encodedString = bencodedString.decode("utf-8")
                            #print("IMAGE:{}".format(encodedString))
                            fp = '<img src="data:image/png;base64, '
                            sp = '" alt="Image" />'
                            imageHtml = imageHtml + fp + encodedString + sp
                    for part in original.get_payload():

                        if part.get_content_maintype() == 'text':
                            body = part.get_payload(decode=True)
                            #print("Body:{}".format(repr(body)))
                            #print("Type:{}".format(type (body)))
                            text = body.decode('utf-8', 'ignore')
                            #print("TEXT:{}".format(text))
                            #if text.find("[<email.message.Message object")<0:
                            for lines in text.split('\r\n'):
                                htmlBody = htmlBody + lines + '<br>'
                            htmlBody = htmlBody + "</p>"
                    utc = datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S")
                    msg = htmlBody + imageHtml
                    query = DBSession.query(EmailData).filter_by(
                        email_id=original['Message-ID']).first()
                    if query is None:
                        newitem = EmailData()
                        newitem.imei = imei
                        newitem.email_id = original['Message-ID']
                        newitem.time_stamp = utc
                        newitem.data = msg
                        DBSession.add(newitem)
                        DBSession.flush()
                        transaction.commit()
                    #url=url+event_desc
                    data = {
                        'client_id': client_id,
                        'vehicle': client_name,
                        'event_id': event_id,
                        'event_desc': event_desc,
                        'rdatetime': utc,
                        'imei': imei,
                        'latitude': str(latitude),
                        'longitude': str(longitude)
                    }
                    #print("URL:{}".format(url+event_desc))
                    #print("Event Desc:{}".format(event_desc))
                    resp = requests.get(url + event_desc, params=data)
                    #print(resp.text)
                else:
                    body = original.get_payload()
                    text = str(body)

                    for lines in text.split('\r\n'):
                        htmlBody = htmlBody + lines + '<br>'
                    htmlBody = htmlBody + "</p>"
                    query = DBSession.query(EmailData).filter_by(
                        email_id=original['Message-ID']).first()
                    if query is None:
                        newitem = EmailData()
                        newitem.imei = imei
                        newitem.email_id = original['Message-ID']
                        newitem.data = htmlBody
                        DBSession.add(newitem)
                        DBSession.flush()
                        transaction.commit()
        mail.store(num, '+FLAGS', '\Seen')
        mail.uid("STORE", num, '+FLAGS', '\Seen')
    mail.close()
    mail.logout()
Пример #24
0
 def addLog(cls, **kw):
     newLog = cls(**kw)
     DBSession.add(newLog)
     DBSession.flush()
Пример #25
0
    def listener(self, listenerID, **kw):
        currentListener = DBSession.query(Listeners).filter_by(
            listener_id=listenerID).first()
        if currentListener is None:
            newListener = Listeners()
            newListener.listener_id = listenerID
            newListener.name = "Not Defined"
            DBSession.add(newListener)
            DBSession.flush()
            if newListener.id is not None:
                for key, value in kw.items():
                    newfielditem = ListenerFields()
                    newfielditem.field = key
                    newfielditem.value = value
                    newListener.fields.append(newfielditem)
                    DBSession.add(newfielditem)
                    DBSession.flush()
                #print("Admin LISTENER")
                Message.post("adminlistener", 'NEW' + "|")
        else:
            if currentListener.state == 1:
                #print("listern on")
                if currentListener.logstate == 1:
                    # Enabled Logging
                    currentListenerFields = DBSession.query(
                        ListenerFields).filter_by(
                            listeners_id=currentListener.id).all()
                    mapper = {}
                    for eachListenerField in currentListenerFields:
                        if eachListenerField.assign != 0:
                            mapper[eachListenerField.
                                   assign] = eachListenerField.field
                    newListenerLog = ListenerLog()
                    newListenerLog.time_stamp = datetime.utcnow()
                    newListenerLog.listener_id = currentListener.listener_id
                    newListenerLog.mapper_state = 1
                    if 1 in mapper:
                        newListenerLog.imei = kw[mapper[1]]
                    DBSession.add(newListenerLog)
                    DBSession.flush()
                    currentLog = newListenerLog.id
                allListenerUsers = DBSession.query(ListenerUsers).filter_by(
                    userlisteners_id=currentListener.id).all()
                globalExpressionsRequiredbyListener = []
                activeListenerUsers = []
                for each_user in allListenerUsers:
                    # Getting Users to know which expressions must evaluate
                    #print("Getting users")
                    if each_user.state == 1:
                        #print("USER-->{} userlistener_id{}".format(each_user.user_name,each_user.userlisteners_id))
                        # If the user is active ---> get all the triggers requested by the user
                        activeListenerUsers.append(
                            dict(id=each_user.id,
                                 user_name=each_user.user_name))
                        currentUseId = each_user.id
                        allUserTriggers = DBSession.query(
                            UserTriggers).filter_by(
                                listener_users_id=currentUseId).all()
                        for eachUserTriger in allUserTriggers:
                            # id=1 / Expression = EVENT_DESC=SOS and CLIENT_ID-510
                            # id=2 Expression = EVENT_DESC=Paro de Motor and CLIENT_ID=510
                            currenUserId = eachUserTriger.id
                            allUserGlobalExpressions = DBSession.query(
                                UserGlobalExp).filter_by(
                                    usertriggers_id=currenUserId).all()
                            for eachGlobalExpression in allUserGlobalExpressions:
                                found = False
                                for eitem in globalExpressionsRequiredbyListener:
                                    if eitem[
                                            0] == eachGlobalExpression.global_exp_id:
                                        found = True
                                if not found:
                                    globalExpressionsRequiredbyListener.append(
                                        (eachGlobalExpression.global_exp_id,
                                         each_user.userlisteners_id))
                                    #print((eachGlobalExpression.global_exp_id,each_user.userlisteners_id))
                globalExpState = {}
                for eachExpression in globalExpressionsRequiredbyListener:
                    # id=1 /Expression EVENT_DESC=SOS /expression_id=3 /expression_op = / expression_value = SOS
                    currentGlobalExpression = DBSession.query(
                        ListenerExpressions).filter_by(
                            id=eachExpression[0]).first()
                    if currentListener.logstate == 1:
                        currentListenerLog = DBSession.query(
                            ListenerLog).filter_by(id=currentLog).first()
                    if currentGlobalExpression is not None:
                        # EVAL EXPRESSIONS
                        currentField = DBSession.query(
                            ListenerFields).filter_by(
                                assign=currentGlobalExpression.expression_id,
                                listeners_id=eachExpression[1]).first()
                        if currentField is not None:
                            currentFieldName = currentField.field
                            operator = "==" if currentGlobalExpression.expression_op == "=" else currentGlobalExpression.expression_op
                            if currentFieldName in kw:
                                utf8 = URLunicode()
                                currentFieldvalue = utf8.decode(
                                    kw[currentFieldName])
                                #evalexpression='kw["'+currentFieldName+'"]'+operator+'"'+currentGlobalExpression.expression_value+'"'
                                evalexpression = '"' + currentFieldvalue + '"' + operator + '"' + currentGlobalExpression.expression_value + '"'
                                isfieldfound = '"' + currentFieldName + '" in kw'
                            else:
                                evalexpression = ""
                                isfieldfound = False
                            # print("EVAL EXPRESSION:{}".format(evalexpression))
                            # print("Field Exists:{} ---> {}".format(isfieldfound,eval(isfieldfound)))
                            # print("Value:{}".format(currentFieldvalue))
                            try:
                                booleanEvalState = eval(evalexpression)
                            except Exception as e:
                                #print("ERROR:{}".format(e))
                                booleanEvalState = False
                            #print("id:{} Exp:{} {} --> {} ".format(eachExpression,currentGlobalExpression.expression,evalexpression,booleanEvalState))
                            globalExpState[
                                eachExpression[0]] = booleanEvalState
                            #
                            #  Listener Log Fields
                            #
                            if currentListener.logstate == 1:
                                newLogFields = ListenerLogFields()
                                newLogFields.field = currentFieldName
                                newLogFields.assigned_to = currentGlobalExpression.expression_id
                                newLogFields.value = currentGlobalExpression.expression_value
                                newLogFields.isfieldfound = eval(isfieldfound)
                                newLogFields.expression = currentGlobalExpression.expression
                                newLogFields.expression_state = booleanEvalState
                                newLogFields.received = kw[currentFieldName]
                                currentListenerLog.fields.append(newLogFields)
                                DBSession.add(newLogFields)
                                DBSession.flush()
                if currentListener.logstate == 1:
                    currentListenerLog = DBSession.query(
                        ListenerLog).filter_by(id=currentLog).first()
                #for k,v in globalExpState.items():
                #print("KEY :{} VALUE:{}".format(k,v))
                ####
                ###   GET IMEI and pluto once
                ####
                currentIMEI = DBSession.query(ListenerFields).filter_by(
                    listeners_id=currentListener.id, assign=1).first()
                if currentIMEI.field in kw:
                    imei = kw[currentIMEI.field]
                else:
                    imei = ""
                #print("IMEI:{}".format(imei))
                pluto = Rest()
                parameters = {}
                parameters['imei'] = imei
                venusTicket = ""
                attended_state = "N"
                sound = 1
                imeiData = pluto.get(
                    app_globals.domainpluto + "/services/imeiInfo", parameters)
                for eachActiveUser in activeListenerUsers:
                    #print("{} {}".format(eachActiveUser['id'],eachActiveUser['user_name']))
                    toEvalUserTriggers = DBSession.query(
                        UserTriggers).filter_by(
                            listener_users_id=eachActiveUser['id']).all()
                    for eachEvalTriggers in toEvalUserTriggers:
                        priority = eachEvalTriggers.priority

                        globalExpToEval = DBSession.query(
                            UserGlobalExp).filter_by(
                                usertriggers_id=eachEvalTriggers.id).all()
                        sumOfexpressionsResult = True
                        for eachGlobalExpToEval in globalExpToEval:
                            #print("Expression:{} --> {}".format(eachGlobalExpToEval.global_exp_id,globalExpState[eachGlobalExpToEval.global_exp_id]))
                            k = eachGlobalExpToEval
                            if globalExpState[eachGlobalExpToEval.
                                              global_exp_id] == False:
                                sumOfexpressionsResult = False
                                break
                        encoded = eachEvalTriggers.expression.encode('utf8')
                        #print("Global Expression:{} Traffic -->: {}".format(encoded,sumOfexpressionsResult))
                        currentUserFiltersExpression = ''
                        ####################
                        #                  #
                        # Checar el valor  #
                        # de abajo         #
                        ####################
                        userTriggerExpressionState = True
                        currentUserFilters = DBSession.query(
                            UserFilters).filter_by(
                                user_trigger_id=eachEvalTriggers.id).first()
                        if currentUserFilters is not None:
                            eventCounter = currentUserFilters.counter + 1
                            currentUserFiltersExpression = currentUserFilters.expression
                            senTicketVenusExp = currentUserFilters.reset_expression
                            #### Checar

                            #print("UserFilters ID: {} For this group{} Eval:{} --->{}".format(currentUserFilters.id,eachActiveUser['user_name'],currentUserFiltersExpression,userTriggerExpressionState))
                            #print("Imei:{}".format(imei))
                            #print("send to discarded when: {}".format(currentUserFiltersExpression))
                            #print("Send Ticket to venus when:{}".format(senTicketVenusExp))

                        else:
                            userTriggerExpressionState = True
                            currentUserFiltersExpression = 'Not Defined'
                        #
                        # Listener Log Users
                        #
                        if currentListener.logstate == 1:
                            newLogUsers = ListenerLogUsers()
                            newLogUsers.user_name = eachActiveUser['user_name']
                            newLogUsers.trigger_expr = eachEvalTriggers.expression
                            newLogUsers.trigger_expr_state = sumOfexpressionsResult
                            newLogUsers.filter_expr = currentUserFiltersExpression
                            newLogUsers.filter_expr_state = userTriggerExpressionState
                            currentListenerLog.users.append(newLogUsers)
                            DBSession.add(newLogUsers)
                            DBSession.flush()
                            Message.post("logListener", 'NEW' + "|")
                        if sumOfexpressionsResult and userTriggerExpressionState:
                            ################
                            # CHECK REPEAT only if there are filters to evaluete #
                            ################
                            if currentUserFilters is not None:
                                venusTicket = ''
                                localtz = 'America/Mexico_City'
                                oper_localtime = datetime.now(
                                    pytz.timezone(localtz))
                                logImeiEvent = DBSession.query(
                                    logImei).filter_by(
                                        imei=imei,
                                        event_desc=eachEvalTriggers.
                                        expression[11:],
                                        group_name=eachActiveUser['user_name']
                                    ).first()
                                if logImeiEvent is None:
                                    newLogImei = logImei()
                                    newLogImei.imei = imei
                                    newLogImei.event_desc = eachEvalTriggers.expression[
                                        11:]
                                    newLogImei.group_name = eachActiveUser[
                                        'user_name']
                                    newLogImei.counter = 1
                                    newLogImei.hour = datetime.utcnow().hour
                                    newLogImei.hour_counter = 1
                                    newLogImei.weekday = oper_localtime.strftime(
                                        "%A")
                                    newLogImei.user_filters_id = currentUserFilters.id
                                    hour = oper_localtime.strftime("%H:%M")
                                    if hour >= "06:00" and hour <= "12:00":
                                        newLogImei.morning = 1
                                    else:
                                        if hour >= "12:00" and hour <= "18:00":
                                            newLogImei.afternoon = 1
                                        else:
                                            if hour >= "18:00" and hour <= "23:59":
                                                newLogImei.night = 1
                                            else:
                                                if hour >= "00:00" and hour <= "06:00":
                                                    newLogImei.early_morning = 1
                                    DBSession.add(newLogImei)
                                else:
                                    time_stamp = logImeiEvent.time_stamp
                                    time_diff = datetime.utcnow() - time_stamp
                                    days_difference = time_diff.days
                                    #print("Time difference since last time stamp in days:{}".format(time_diff.days))
                                    if logImeiEvent.hour == datetime.utcnow(
                                    ).hour:
                                        logImeiEvent.hour_counter += 1
                                        if logImeiEvent.hour_counter > 15:
                                            #send to Venus
                                            venus = Rest()
                                            venusUrl = "http://venus.gpscontrol.com.mx/dispatch/create_ticket?client_id=" + str(
                                                imeiData['client_id']
                                            ) + "&last_report=" + str(
                                                imeiData['last_report']
                                            ) + "&folio=0" + "&imei=" + imei + "&comm=" + "Se detecto una inconcistencia en las alertas"
                                            res = requests.get(venusUrl)
                                            if res is not None:
                                                response = res.json()
                                                if 'Ticket' in response:
                                                    venusTicket = response[
                                                        'Ticket']
                                    else:
                                        logImeiEvent.hour = datetime.utcnow(
                                        ).hour
                                        logImeiEvent.hour_counter = 1
                                    if days_difference > 0:
                                        logImeiEvent.morning = 0
                                        logImeiEvent.afternoon = 0
                                        logImeiEvent.night = 0
                                        logImeiEvent.early_morning = 0
                                        logImeiEvent.counter = 1
                                        logImeiEvent.weekday = oper_localtime.strftime(
                                            "%A")
                                        logImeiEvent.time_stamp = datetime.utcnow(
                                        )
                                    else:
                                        logImeiEvent.counter = logImeiEvent.counter + 1
                                        hour = oper_localtime.strftime("%H:%M")
                                        if hour >= "06:00" and hour <= "12:00":
                                            logImeiEvent.morning += 1
                                        else:
                                            if hour >= "12:00" and hour <= "18:00":
                                                logImeiEvent.afternoon += 1
                                            else:
                                                if hour >= "18:00" and hour <= "23:59":
                                                    logImeiEvent.night += 1
                                                else:
                                                    if hour >= "00:00" and hour <= "06:00":
                                                        logImeiEvent.early_morning += 1
                                        logImeiEvent.weekday = oper_localtime.strftime(
                                            "%A")
                                        newLogExpression = "logImeiEvent." + currentUserFiltersExpression
                                        evalnewLogExp = eval(newLogExpression)
                                        userTriggerExpressionState = True
                                        #print("EXPRESSION REJECTED:{} --->  {}".format(newLogExpression,evalnewLogExp))
                                        if evalnewLogExp:
                                            attended_state = "R"
                                            #if venusTicket=='':

                                            #else:
                                            #    attended_state = "N"
                                DBSession.flush()

                            # resetExpText=currentUserFilters.reset_expression
                            # #print("Reset exp:{}".format(resetExpText))
                            # resetExpText=resetExpText.replace("=","==")
                            # resetExpression=eval(resetExpText)
                            # if resetExpression:
                            #     eventCounter=0
                            # if sumOfexpressionsResult:
                            #     currentUserFilters.counter=eventCounter

                            ################
                            # END REPEAT   #
                            ################

                            #CREATE TRAFFIC FOR THE USER
                            currentListenerFields = DBSession.query(
                                ListenerFields).filter_by(
                                    listeners_id=currentListener.id).all()
                            mapper = {}
                            for eachListenerField in currentListenerFields:
                                if eachListenerField.assign != 0:
                                    mapper[eachListenerField.
                                           assign] = eachListenerField.field

                            newTraffic = Traffic()
                            sound = eachEvalTriggers.sound
                            #print("SOUND: {}".format(sound))
                            newTraffic.attended_state = attended_state
                            if imeiData["error"] == "ok":
                                newTraffic.user_name = imeiData['application']
                            if 1 in mapper:
                                newTraffic.imei = kw[mapper[1]]
                            if 2 in mapper:
                                if kw[mapper[2]] == "":
                                    newTraffic.event_id = 0
                                else:
                                    newTraffic.event_id = kw[mapper[2]]
                            if 3 in mapper:
                                newTraffic.event_desc = kw[mapper[3]]
                            else:
                                eventsid = kw[mapper[2]]
                                events = DBSession.query(Events).filter_by(
                                    event_id=eventsid).first()
                                if events is not None:
                                    newTraffic.event_desc = events.event_desc
                                else:
                                    newTraffic.event_desc = ""
                            if 4 in mapper:
                                newTraffic.latitude = kw[mapper[4]]
                            if 5 in mapper:
                                newTraffic.longitude = kw[mapper[5]]
                            if 6 in mapper:
                                if kw[mapper[6]] == "":
                                    speed = 0
                                else:
                                    speed = int(float(kw[mapper[6]]))
                                newTraffic.speed = speed
                            if 7 in mapper:
                                newTraffic.azimuth = kw[mapper[7]]
                            if 8 in mapper:
                                newTraffic.valid = kw[mapper[8]]
                            if 9 in mapper:
                                newTraffic.event_time = kw[mapper[9]]
                            if 10 in mapper:
                                newTraffic.client_id = kw[mapper[10]]
                            if 11 in mapper:
                                vehicleData = kw[mapper[11]]
                                vehicleCheck = vehicleData.replace(" ", "")
                                if len(vehicleData) > 0:
                                    newTraffic.vehicle = vehicleData
                                else:
                                    if imeiData["error"] == "ok":
                                        if imeiData[
                                                "brand"] is not None and imeiData[
                                                    "model"] is not None:
                                            newTraffic.vehicle = imeiData[
                                                "brand"] + ' ' + imeiData[
                                                    "model"] + ' '
                            else:
                                if imeiData["error"] == "ok":
                                    if imeiData[
                                            "brand"] is not None and imeiData[
                                                "model"] is not None:
                                        newTraffic.vehicle = imeiData[
                                            "brand"] + ' ' + imeiData[
                                                "model"] + ' '

                            if 12 in mapper:
                                if kw[mapper[12]] == '':
                                    kw[mapper[12]] = '0'
                                newTraffic.voltage = kw[mapper[12]]
                            if 13 in mapper:
                                newTraffic.internal_id = kw[mapper[13]]
                            if 14 in mapper:
                                if kw[mapper[14]] == '':
                                    newTraffic.mcc = 0
                                else:
                                    newTraffic.mcc = kw[mapper[14]]
                            if 15 in mapper:
                                if kw[mapper[15]] == '':
                                    newTraffic.mnc = 0
                                else:
                                    newTraffic.mnc = kw[mapper[15]]
                            if 16 in mapper:
                                if kw[mapper[16]] == '':
                                    newTraffic.lac = 0
                                else:
                                    newTraffic.lac = kw[mapper[16]]
                            if 17 in mapper:
                                if kw[mapper[17]] == '':
                                    newTraffic.cellid = 0
                                else:
                                    newTraffic.cellid = kw[mapper[17]]
                            newTraffic.user = eachActiveUser['user_name']
                            newTraffic.priority = priority
                            localtz = 'America/Mexico_City'
                            if 9 in mapper:
                                cuda = kw[mapper[9]]
                                cuda = cuda[:19]
                                dateconversion = datetime.strptime(
                                    cuda, '%Y-%m-%dT%H:%M:%S')
                                oper_utc = arrow.get(dateconversion)
                                oper_localtime = oper_utc.to(localtz)
                            else:
                                oper_localtime = datetime.now(
                                    pytz.timezone(localtz))
                            nd = "Evento no definido"
                            if 3 in mapper:
                                nd = kw[mapper[3]]
                                nd = nd.lstrip().rstrip()
                                if len(nd) == 0:
                                    nd = "Evento no definido:" + newTraffic.event_desc
                            else:
                                eventsid = kw[mapper[2]]
                                events = DBSession.query(Events).filter_by(
                                    event_id=eventsid).first()
                                if events is not None:
                                    nd = events.event_desc
                            #print("-------->>> user:{}".format(eachActiveUser['user_name']))

                            ############################
                            # logImeiRecord = DBSession.query(logImei).filter_by(imei=parameters['imei'],event_desc=nd,group_name=eachActiveUser['user_name']).first()
                            # if mapper[2] in kw:
                            #     if kw[mapper[2]]=="99":
                            #         logImeiRecord = None
                            # if logImeiRecord is not None:
                            #     #print("FOUND!!!!->{}".format(eachActiveUser['user_name']))
                            #     newTraffic.attended_state = "R"
                            #     hour = oper_localtime.strftime("%H:%M")
                            #     if hour >= "06:00" and hour <= "12:00":
                            #         logImeiRecord.morning += 1
                            #     else:
                            #         if hour >= "12:00" and hour <= "18:00":
                            #             logImeiRecord.afternoon += 1
                            #         else:
                            #             if hour >= "18:00" and hour <= "23:59":
                            #                 logImeiRecord.night += 1
                            #             else:
                            #                 if hour >= "00:00" and hour <= "06:00":
                            #                     logImeiRecord.early_morning += 1
                            #     logImeiRecord.counter=logImeiRecord.counter+1
                            #     if logImeiRecord.counter>100:
                            #         logImeiRecord.counter=0
                            #         logImeiRecord.morning = 0
                            #         logImeiRecord.afternoon = 0
                            #         logImeiRecord.night = 0
                            #         logImeiRecord.early_morning = 0
                            #         logImeiRecord.group_name = eachActiveUser['user_name']
                            #     if logImeiRecord.counter==2:
                            #         if 'client_id' in imeiData and 'last_report' in imeiData:
                            #             venus=Rest()
                            #             venusUrl = "http://venus.gpscontrol.com.mx/dispatch/create_ticket?client_id=" + str(imeiData['client_id']) + "&last_report=" + str(imeiData['last_report']) + "&folio=0" + "&imei=" + imei + "&comm=" + "Ignorar Rodo... Cierrala,.. Se detecto una inconcistencia en las alertas"
                            #             res = requests.get(venusUrl)
                            #             if res is not None:
                            #                 response=res.json()
                            #                 if 'Ticket' in response:
                            #                     venusTicket = response['Ticket']
                            #
                            # else:
                            #     nd = "Evento no definido"
                            #     if 3 in mapper:
                            #         nd = kw[mapper[3]]
                            #         nd = nd.lstrip().rstrip()
                            #         if len(nd) == 0:
                            #             nd = "Evento no definido:" + newTraffic.event_desc
                            #     else:
                            #         eventsid = kw[mapper[2]]
                            #         events = DBSession.query(Events).filter_by(event_id=eventsid).first()
                            #         if events is not None:
                            #             nd = events.event_desc
                            #     newLogImei=logImei()
                            #     newLogImei.imei=parameters['imei']
                            #     newLogImei.event_desc=nd
                            #     newLogImei.counter=1
                            #     newLogImei.weekday = oper_localtime.strftime("%A")
                            #     newLogImei.group_name = eachActiveUser['user_name']
                            #     DBSession.add(newLogImei)
                            #
                            ############################

                            DBSession.add(newTraffic)
                            DBSession.flush()
                            #print("Sound: {}".format(sound))
                            if newTraffic.attended_state == "N":
                                Message.post(
                                    "trafficlistener_" +
                                    eachActiveUser['user_name'],
                                    'RELOAD' + "|" + str(sound))
                            elif newTraffic.attended_state == "R":
                                Message.post(
                                    "rejectedlistener_" +
                                    eachActiveUser['user_name'],
                                    'RELOAD' + "|" + str(sound))
                            if venusTicket != "":
                                searchticket = DBSession.query(
                                    Tickets).filter_by(
                                        ticket=venusTicket).first()
                                if searchticket is None:
                                    newTickets = Tickets()
                                    newTickets.traffic_id = newTraffic.id
                                    newTickets.ticket = venusTicket
                                    newTickets.comment = "Se detecto una inconcistencia en las alertas"
                                    DBSession.add(newTickets)
                                    DBSession.flush()

        return 'ok'