def registra_acceso(utente, media, varianza): ts = time.time() st = datetime.datetime.fromtimestamp(time.time())+timedelta(minutes=120) fascia_orario = int(datetime.datetime.fromtimestamp(ts).strftime('%H'))+2 anomalia, prob = verificaAnomalia(fascia_orario, media, varianza) accesso = Accessi(codice=utente.codice, nome=utente.nome, cognome=utente.cognome, autorizzazione=utente.autorizzazione, timestamp=st, datatemp=fascia_orario, anomalia=anomalia) accesso.put() return prob
def get(self): accessi = Accessi.query().order(-Accessi.timestamp).fetch(1) return {'codice': accessi[0].codice, 'nome' : accessi[0].nome, 'cognome': accessi[0].cognome, 'autorizzazione': accessi[0].autorizzazione, 'timestamp' : str(accessi[0].timestamp), 'fascia_orario': accessi[0].datatemp }
def get_access(): accessi = Accessi.query().order(-Accessi.timestamp).fetch() output = [] for accesso in accessi: read = [(accesso.codice), (accesso.nome), (accesso.cognome), (accesso.autorizzazione), (accesso.timestamp), (accesso.datatemp), (accesso.anomalia)] output.append(read) if output: return render_template('accessi.html', handlers=output) return jsonify({'data': []})
def training(): vettore_accessi = [] # rimpie vettore degli orari accessi = Accessi.query().order(Accessi.datatemp).fetch(projection=[Accessi.datatemp]) for accesso in accessi: vettore_accessi.append(accesso.datatemp) mean_access = average(vettore_accessi) sig_access = statistics.stdev(vettore_accessi) return mean_access, sig_access
def get_ultimo(): accessi = Accessi.query().order(-Accessi.timestamp).fetch(1) output = [] for accesso in accessi: read = { 'codice': accesso.codice, 'nome': accesso.nome, 'cognome': accesso.cognome, 'autorizzazione': accesso.autorizzazione, 'timestamp': accesso.timestamp, 'fascia_orario': accesso.datatemp } output.append(read) if output: return jsonify(output) return jsonify({'data': []})
def post(self): if not request.json or 'codice' not in request.json: abort(400) #prendo il numero della tessera codice = request.json['codice'] utenti = Utenti.query(Utenti.codice==codice).fetch(1) if not utenti: return {'message': 'CODICE SCONOSCIUTO'} utente = utenti[0] accessi = Accessi.query().fetch() if len(accessi) > 3: media, varianza = training() else: media = 0 varianza = 1 if utente.autorizzazione=='True': prob = registra_acceso(utente, media, varianza) return {'nome': utente.nome, 'cognome': utente.cognome, 'message' : 'ACCESSO CONSENTITO', 'media' : media, 'varianza' : varianza, 'prob' : prob } prob = registra_acceso(utente, media, varianza) return {'nome': utente.nome, 'cognome': utente.cognome, 'message' : 'ACCESSO NEGATO', 'media' : media, 'varianza' : varianza, 'prob' : prob }