Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 7 additions & 10 deletions access_controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,12 @@
import firebase_admin
from firebase_admin import credentials
from firebase_admin import db
from pymongo import MongoClient

from database_access import FirebaseAccess, MongoAccess
from database_access import FirebaseAccess, TinyDbAccess
from fingerprint_reader import FingerprintReader

from tinydb import TinyDB

GPIO.setmode(GPIO.BCM) # GPIO Numbers instead of board numbers


Expand Down Expand Up @@ -142,19 +143,15 @@ def execute():


def get_database_access():
if validate_connection():
return firebase_access
else:
return mongo_access
return tiny_db_access


client = MongoClient('localhost', 27020)
local_db = client['cda']

authenticate()
reader = FingerprintReader()

firebase_access = FirebaseAccess(db)
mongo_access = MongoAccess(local_db)

tiny_db = TinyDB('./cda.json')
tiny_db_access = TinyDbAccess(tiny_db)

execute()
25 changes: 24 additions & 1 deletion database_access.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
from datetime import datetime

import pytz
from tinydb import Query


class DatabaseAccess:
Expand Down Expand Up @@ -52,7 +53,7 @@ def create_log_data(hash_data, user, log_id):
"datetime": str(time),
"hash": hash_data,
"user": user,
"_id": log_id
"_id": str(log_id)
}
return log_data

Expand All @@ -70,3 +71,25 @@ def add_log(self, hash, user_id):

logs_db = self.db.logs
logs_db.insert_one(log_data)


class TinyDbAccess(DatabaseAccess):

def get_fingerprint(self, fingerprint):
print('Searching fingerprint in local db')
finger_db = self.db.table('fingerprints')
fingerprint_query = Query()

user = finger_db.get(fingerprint_query.fingerprint == fingerprint)

if user:
return user['user']
else:
return None

def add_log(self, hash, user_id):
print('Adding local log')
log_data = create_log_data(hash, user_id, uuid.uuid1())

logs_db = self.db.table('logs')
logs_db.insert(log_data)
17 changes: 8 additions & 9 deletions fingerprint_sync.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import firebase_admin
from firebase_admin import credentials
from firebase_admin import db
from pymongo import MongoClient
import datetime
from os import system
from tinydb import TinyDB


def authenticate():
Expand All @@ -15,20 +15,20 @@ def authenticate():

def sync():

local_db.fingerprints.drop()
local_db.table('fingerprints').truncate()
fingerprints = db.reference('fingerprints/').get()
for i in fingerprints:
add_fingerprint(i, fingerprints[i]['user'])
print('Finish fingerprint sync')

local_db.users.drop()
local_db.table('users').truncate()
users = db.reference('users/').get()
for i in users:
add_user(i, users[i]['name'], users[i]['lastname'], users[i]['company'], users[i]['status'])
print('Finish user sync')

data = {'date': datetime.datetime.now()}
local_db.syncs.insert_one(data)
data = {'date': datetime.datetime.now().strftime('%Y-%m-%dT%H:%M:%S')}
local_db.table('syncs').insert(data)
print('Change sync date')


Expand All @@ -42,19 +42,18 @@ def add_user(user_id, name, lastname, company, status):
'status': status,
'company': company
}
local_db.users.insert_one(data)
local_db.table('users').insert(data)


def add_fingerprint(fingerprint_id, user_id):
data = {
'fingerprint': fingerprint_id,
'user': user_id
}
local_db.fingerprints.insert_one(data)
local_db.table('fingerprints').insert(data)


client = MongoClient('localhost', 27017)
local_db = client['cda']
local_db = TinyDB('./cda.json')


system('clear')
Expand Down
3 changes: 2 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@ pymongo==3.4.0
pytz==2020.1
urllib3==1.24.3

pyfingerprint~=1.5
pyfingerprint~=1.5
tinydb==4.4.0