* Display app version.
* Fix: FPrint enroll start/stop toggle.
This commit is contained in:
@@ -5,7 +5,8 @@ import base64
|
||||
import os
|
||||
import requests
|
||||
from flask import Flask
|
||||
|
||||
import subprocess
|
||||
|
||||
import gi
|
||||
gi.require_version("FPrint", "2.0")
|
||||
gi.require_version("Gio", "2.0")
|
||||
@@ -46,7 +47,10 @@ def progress(device, completed_stages, prnt, sessionId, error):
|
||||
else:
|
||||
print('Completed with an error.')
|
||||
|
||||
def enroll(sessionId, data):
|
||||
enroll_canceller = None;
|
||||
def enroll_start(sessionId, data):
|
||||
global enroll_canceller;
|
||||
|
||||
ctx = FPrint.Context()
|
||||
devices = ctx.get_devices()
|
||||
if (len(devices) == 0):
|
||||
@@ -64,14 +68,20 @@ def enroll(sessionId, data):
|
||||
print('Opening...')
|
||||
try:
|
||||
prt = FPrint.Print.new(device)
|
||||
prt = device.enroll_sync(prt, None, progress_cb=progress, progress_data=sessionId)
|
||||
enroll_canceller = Gio.Cancellable.new();
|
||||
prt = device.enroll_sync(prt, enroll_canceller, progress_cb=progress, progress_data=sessionId)
|
||||
img = prt.serialize()
|
||||
sio.emit('fprint-enroll-done', { 'ok': True, "fingerprint": base64.b64encode(img).decode('utf-8'), 'id': str(uuid.uuid4()), 'data': data })
|
||||
except Exception as e:
|
||||
print({'error': e});
|
||||
sio.emit('fprint-enroll-done', { 'ok': False, 'message': e})
|
||||
sio.emit('fprint-enroll-done', { 'ok': False, 'message': e.message})
|
||||
finally:
|
||||
device.close_sync()
|
||||
try:
|
||||
device.close_sync()
|
||||
except:
|
||||
print('An error occured while closing device.');
|
||||
finally:
|
||||
print('It appears device has already been removed.')
|
||||
|
||||
is_verify_active = False
|
||||
device = None;
|
||||
@@ -208,6 +218,14 @@ def stop_fprint_identify():
|
||||
|
||||
sio.emit("fprint-identify-stop-done", { 'ok': True, 'message': 'Identification stopped.' })
|
||||
is_identify_active = False;
|
||||
|
||||
def stop_fprint_enroll():
|
||||
global enroll_canceller;
|
||||
|
||||
if enroll_canceller:
|
||||
enroll_canceller.cancel()
|
||||
|
||||
sio.emit("fprint-enroll-done", { 'ok': False, 'message': 'Enrollment stopped.' })
|
||||
|
||||
@sio.on("fprint-identify-start")
|
||||
def fprint_identify_start(sid, data):
|
||||
@@ -218,11 +236,15 @@ def fprint_identify_stop(sid, data):
|
||||
stop_fprint_identify()
|
||||
|
||||
@sio.on("fprint-enroll")
|
||||
def fprint_enroll(sid, data):
|
||||
def fprint_enroll_start(sid, data):
|
||||
print('Enrolling {}'.format(data['finger']))
|
||||
enroll(sid, data)
|
||||
enroll_start(sid, data)
|
||||
pass
|
||||
|
||||
@sio.on("fprint-enroll-stop")
|
||||
def fprint_enroll_stop(sid, data):
|
||||
stop_fprint_enroll()
|
||||
|
||||
@sio.event
|
||||
def capture(sid, data):
|
||||
print(data)
|
||||
@@ -231,6 +253,7 @@ def capture(sid, data):
|
||||
@sio.event
|
||||
def connect(sid, data):
|
||||
global config;
|
||||
config['version'] = subprocess.check_output(['git', 'rev-parse', '--short', 'HEAD']).decode('ascii').strip()
|
||||
if config['mode'] == 'clockio':
|
||||
global raw_prints;
|
||||
stop_fprint_identify();
|
||||
@@ -241,7 +264,6 @@ def connect(sid, data):
|
||||
if responseJson['ok']:
|
||||
config['departments'] = responseJson['data'];
|
||||
domain_fprint_file = '{}/fprint-sync/.{}-fprint-data.json'.format(os.getenv("HOME"), domain_code);
|
||||
print(domain_fprint_file);
|
||||
if os.path.exists(domain_fprint_file):
|
||||
with open(domain_fprint_file) as f:
|
||||
records = json.loads(f.read());
|
||||
@@ -254,6 +276,8 @@ def connect(sid, data):
|
||||
'length': len(records['profiles']),
|
||||
'timestamp': records['timestamp']
|
||||
};
|
||||
else:
|
||||
stop_fprint_enroll();
|
||||
|
||||
sio.emit('config', config);
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user