예제 #1
0
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
예제 #2
0
 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
     }
예제 #3
0
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': []})
예제 #4
0
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
예제 #5
0
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': []})
예제 #6
0
    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
                }