From 7b709c15c26b4bce1ce42d56389110eb9f2bf26b Mon Sep 17 00:00:00 2001 From: Jack Darlington Date: Wed, 22 Feb 2017 22:06:59 +0000 Subject: [PATCH] GitIgnore update + fixes for initial setup --- .gitignore | 3 +++ cps/db.py | 2 ++ cps/gdriveutils.py | 4 ++-- cps/ub.py | 2 +- cps/web.py | 11 +++++++---- 5 files changed, 15 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index 4ed21c61..a8166349 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,6 @@ cps/static/[0-9]* *.bak *.log.* tags + +settings.yaml +gdrive_credentials \ No newline at end of file diff --git a/cps/db.py b/cps/db.py index 56594de2..c64f286b 100755 --- a/cps/db.py +++ b/cps/db.py @@ -274,6 +274,8 @@ def setup_db(): return False dbpath = os.path.join(config.config_calibre_dir, "metadata.db") + if not os.path.exists(dbpath): + return False engine = create_engine('sqlite:///{0}'.format(dbpath.encode('utf-8')), echo=False) try: conn = engine.connect() diff --git a/cps/gdriveutils.py b/cps/gdriveutils.py index a0d1fa2f..66afed71 100644 --- a/cps/gdriveutils.py +++ b/cps/gdriveutils.py @@ -204,9 +204,9 @@ def copyToDrive(drive, uploadFile, createRoot, replaceFiles, if os.path.basename(uploadFile) not in ignoreFiles: existingFiles=drive.ListFile({'q' : "title = '%s' and '%s' in parents and trashed = false" % (os.path.basename(uploadFile), parent['id'])}).GetList() if len(existingFiles) > 0: - driveFile = drive.CreateFile({'title': os.path.basename(uploadFile), 'parents' : [{"kind": "drive#fileLink", 'id' : parent['id']}], }) - else: driveFile=existingFiles[0] + else: + driveFile = drive.CreateFile({'title': os.path.basename(uploadFile), 'parents' : [{"kind": "drive#fileLink", 'id' : parent['id']}], }) driveFile.SetContentFile(os.path.join(prevDir,uploadFile)) driveFile.Upload() diff --git a/cps/ub.py b/cps/ub.py index 1addddcb..d5063866 100644 --- a/cps/ub.py +++ b/cps/ub.py @@ -312,7 +312,7 @@ class Config: else: self.config_google_drive_watch_changes_response=None - if self.config_calibre_dir is not None: + if (self.config_calibre_dir is not None and not self.config_use_google_drive) or os.path.exists(self.config_calibre_dir + '/metadata.db'): self.db_configured = True else: self.db_configured = False diff --git a/cps/web.py b/cps/web.py index 9a49ddf2..53a5b1a5 100755 --- a/cps/web.py +++ b/cps/web.py @@ -43,6 +43,7 @@ import re import db from shutil import move, copyfile from tornado.ioloop import IOLoop +import shutil import StringIO from shutil import move import gdriveutils @@ -198,6 +199,9 @@ lm.anonymous_user = ub.Anonymous app.secret_key = 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT' db.setup_db() +def is_gdrive_ready(): + return os.path.exists('settings.yaml') and os.path.exists('gdrive_credentials') + @babel.localeselector def get_locale(): # if a user is logged in, use the locale from the user settings @@ -1889,17 +1893,14 @@ def configuration_helper(origin): if content.config_google_drive_client_id != to_save["config_google_drive_client_id"]: content.config_google_drive_client_id = to_save["config_google_drive_client_id"] create_new_yaml=True - db_change = True if "config_google_drive_client_secret" in to_save: if content.config_google_drive_client_secret != to_save["config_google_drive_client_secret"]: content.config_google_drive_client_secret = to_save["config_google_drive_client_secret"] create_new_yaml=True - db_change = True if "config_google_drive_calibre_url_base" in to_save: if content.config_google_drive_calibre_url_base != to_save["config_google_drive_calibre_url_base"]: content.config_google_drive_calibre_url_base = to_save["config_google_drive_calibre_url_base"] create_new_yaml=True - db_change = True if ("config_use_google_drive" in to_save and not content.config_use_google_drive) or ("config_use_google_drive" not in to_save and content.config_use_google_drive): content.config_use_google_drive = "config_use_google_drive" in to_save db_change = True @@ -1953,6 +1954,8 @@ def configuration_helper(origin): if "passwd_role" in to_save: content.config_default_role = content.config_default_role + ub.ROLE_PASSWD try: + if content.config_use_google_drive and is_gdrive_ready() and not os.path.exists(config.config_calibre_dir + "/metadata.db"): + gdriveutils.downloadFile(Gdrive.Instance().drive, None, "metadata.db", config.config_calibre_dir + "/metadata.db") if db_change: if config.db_configured: db.session.close() @@ -1984,7 +1987,7 @@ def configuration_helper(origin): if origin: success = True return render_title_template("config_edit.html", origin=origin, success=success, content=config, - show_authenticate_google_drive=not os.path.exists('settings.yaml') or not os.path.exists('gdrive_credentials'), + show_authenticate_google_drive=not is_gdrive_ready(), title=_(u"Basic Configuration"))