# Import PyGObject
# PyGObject is a Python package which provides bindings for GObject based libraries such as GTK, GStreamer, WebKitGTK, GLib, GIO and many more.
from gi import require_version

# for arguments
from sys import argv
from os import geteuid

if geteuid() != 0:
    exit("You need to have root privileges to run this script.\nPlease try again, this time using 'sudo'. Exiting.")

# Load FPrint gi module
require_version('FPrint', '2.0')

# Import FPrint
from gi.repository import FPrint

# Get FPrint Context
fprint_context = FPrint.Context()

# Loop over FPrint devices
for fprint_device in fprint_context.get_devices():

    # Print device info
    print(fprint_device)
    print(fprint_device.get_driver())
    print(fprint_device.props.device_id)

    # Open the device synchronously.
    fprint_device.open_sync()

    # Get list of enrolled prints
    enrolled_fingerprints = fprint_device.list_prints_sync()
    print("Device has %d enrolled fingerprints." % len(enrolled_fingerprints))

    # Loop through enrolled fingerprints
    for fingerprint in enrolled_fingerprints:

        # Print fingerprint info
        date = fingerprint.props.enroll_date
        print('    %04d-%02d-%02d valid: %d' % (date.get_year(), date.get_month(), date.get_day(), date.valid()))
        print('    ' + str(fingerprint.props.finger))
        print('    ' + str(fingerprint.props.username))
        print('    ' + str(fingerprint.props.description))
        
        # check for delete flag
        if (len(argv) > 1 and argv[1] == "-d"):
            # Delete print
            print('Deleting print:')
            fprint_device.delete_print_sync(fingerprint)
            print('Deleted')

    # Close the device synchronously.
    fprint_device.close_sync()
