From a472d6b110d7be52f644761fb12a7ff13059b978 Mon Sep 17 00:00:00 2001 From: Bilal Elmoussaoui Date: Fri, 27 May 2016 03:51:58 +0200 Subject: [PATCH] imporve database stuff --- data/Makefile.am | 4 ++-- database.db | Bin 163840 -> 0 bytes installation.sql | 6 ----- src/twofactorauth.in | 6 +++-- src/twofactorauth/application.py | 5 ++-- src/twofactorauth/models/provider.py | 34 +++++++++++++++++++++++++-- src/twofactorauth/ui/window.py | 2 +- 7 files changed, 41 insertions(+), 16 deletions(-) delete mode 100644 database.db delete mode 100644 installation.sql diff --git a/data/Makefile.am b/data/Makefile.am index ed27719..0726599 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -1,4 +1,4 @@ -desktopdir = $(DATADIR)/applications +desktopdir = $(datadir)/applications desktop_DATA = twofactorauth.desktop UPDATE_DESKTOP = update-desktop-database $(datadir)/applications || : @@ -15,7 +15,7 @@ logo_DATA = about.glade \ menu.glade \ style.css -appdatadir = $(DATADIR)/appdata +appdatadir = $(datadir)/appdata appdata_DATA = \ two-factor.appdata.xml diff --git a/database.db b/database.db deleted file mode 100644 index effd21e9d218fc5f23f0ce734e4c85debfc2d493..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163840 zcmeI*ziu2w901^5+h?O7OLRs;=vIe}5;-6ll%7j;fQ55TjY- zJ}R#C!ti>p`sewLVYq%H>})>WtX=4|nt3bBo9CBX*;BEncZxEct!AEyU#!$-=IZtI z%kp5+-9i6mcPk8r$CZh{Ez~&fZ)B$%-K|Ep)XrNUv^v?P&eFwZXFdChf}yt+tmgueP$YSz~_-jcl#ix$t4L^H)SQG7Ou8FxuGcZ~ari z6H9c<;#w7ww?3_wKl;R(#hK~3Ry|F+J6qwi!-E$$M*V~K#_|3)-Z`#LEl&TtDT~Kb zCaXL5(*C`hjSrHEcsq&T#oMtPAH+BJ9`8LqF*njd2@oJafB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkL{e-ilizpOjIR!d%=pMSsD3|IR7?P6GjqDtdXgsX>rZ}0A0 zTgYq4Yv)qd*F+0&_NY$85P;=}lR{JF|M z#ryI8b0!!fK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pkFNi>GGEMV* zzg$~86(1!N@m><|#UHERqxem{6Ysnr2Xzbr1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oN}l0(2y3rSo=e9?8G1!I4%-JsS&VxjuXJ8M6q>Ex zY5XOr9*F<}0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PGiQf!TDjp6(9% LH@jP5F#O~X62|6U diff --git a/installation.sql b/installation.sql deleted file mode 100644 index e84e469..0000000 --- a/installation.sql +++ /dev/null @@ -1,6 +0,0 @@ -CREATE TABLE "providers" ( - "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE , - "title" VARCHAR NOT NULL , - "secret_code" VARCHAR NOT NULL UNIQUE , - "image" TEXT NOT NULL -) diff --git a/src/twofactorauth.in b/src/twofactorauth.in index e236865..1a809f4 100644 --- a/src/twofactorauth.in +++ b/src/twofactorauth.in @@ -19,11 +19,13 @@ along with UnitsConverter. If not, see . """ import sys +sys.path.insert(1, '@pyexecdir@') sys.path.insert(1, '@pythondir@') from twofactorauth import application if __name__ == "__main__": - app = application.TwoFactor(package="@PACKAGE@", + app = application.Application(package="@PACKAGE@", version="@VERSION@", pkgdatadir="@pkgdatadir@") - app.run(None) + exit_status = app.run(sys.argv) + sys.exit(exit_status) diff --git a/src/twofactorauth/application.py b/src/twofactorauth/application.py index 8177e98..cfe5e45 100644 --- a/src/twofactorauth/application.py +++ b/src/twofactorauth/application.py @@ -1,7 +1,7 @@ from gi import require_version require_version("Gtk", "3.0") from gi.repository import Gtk, GLib, Gio, Gdk, GObject -from ui.window import TwoFactorWindow +from ui.window import Window import logging from models.provider import Provider @@ -9,8 +9,7 @@ logging.basicConfig(level=logging.DEBUG, format='[%(levelname)s] %(message)s', ) - -class TwoFactor(Gtk.Application): +class Application(Gtk.Application): win = None def __init__(self, *args, **kwargs): diff --git a/src/twofactorauth/models/provider.py b/src/twofactorauth/models/provider.py index 55173db..189efd4 100644 --- a/src/twofactorauth/models/provider.py +++ b/src/twofactorauth/models/provider.py @@ -1,13 +1,18 @@ import sqlite3 import logging -from os import path +from os import path, mknod from gi.repository import GdkPixbuf, Gtk logging.basicConfig(level=logging.DEBUG, format='[%(levelname)s] %(message)s', ) class Provider: def __init__(self): - self.conn = sqlite3.connect('/home/bilal/Projects/Two-factor-gtk/database.db') + database_file = '/home/bilal/.config/TwoFactorAuth/database.db' + if not (path.isfile(database_file) and path.exists(database_file)): + mknod(database_file) + self.conn = sqlite3.connect(database_file) + if not self.is_table_exists(): + self.create_table() def add_provider(self, name, secret_code, image): t = (name, secret_code, image,) @@ -79,3 +84,28 @@ class Provider: logging.error("Couldn't fetch providers list") logging.error(str(e)) return None + + def create_table(self): + query = '''CREATE TABLE "providers" ( + "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE , + "title" VARCHAR NOT NULL , + "secret_code" VARCHAR NOT NULL UNIQUE , + "image" TEXT NOT NULL + )''' + try: + self.conn.execute(query) + self.conn.commit() + except Exception as e: + logging.error("Error during the creation of the database table") + logging.error(str(e)) + + def is_table_exists(self): + query = "SELECT id from providers LIMIT 1" + c = self.conn.cursor() + try: + data = c.execute(query) + return True + except Exception as e: + logging.error("Coudln't check if a table exists") + logging.error(e) + return False diff --git a/src/twofactorauth/ui/window.py b/src/twofactorauth/ui/window.py index 2c43471..4e78b86 100644 --- a/src/twofactorauth/ui/window.py +++ b/src/twofactorauth/ui/window.py @@ -13,7 +13,7 @@ logging.basicConfig(level=logging.DEBUG, format='[%(levelname)s] %(message)s', ) -class TwoFactorWindow(Gtk.ApplicationWindow): +class Window(Gtk.ApplicationWindow): app = None selected_app_idx = None