]> code.communitydata.science - taguette_google_sheet_integration.git/commitdiff
added new configuration file and README
authorBenjamin Mako Hill <mako@atdot.cc>
Wed, 8 Dec 2021 05:45:08 +0000 (14:45 +0900)
committerBenjamin Mako Hill <mako@atdot.cc>
Wed, 8 Dec 2021 05:45:08 +0000 (14:45 +0900)
updated code to read from the config

.taguette_gdocs [new file with mode: 0644]
README.md [new file with mode: 0644]
taguette-export_tags_to_csv.py
taguette-update_tags_from_sheet.py

diff --git a/.taguette_gdocs b/.taguette_gdocs
new file mode 100644 (file)
index 0000000..cabac84
--- /dev/null
@@ -0,0 +1,7 @@
+[General]
+
+taguette_database_file = ./taguette-working.sqlite3
+taguette_project_id = CHANGEME
+
+gsheet_id = CHANGEME
+gsheet_gid = CHANGME
diff --git a/README.md b/README.md
new file mode 100644 (file)
index 0000000..4974249
--- /dev/null
+++ b/README.md
@@ -0,0 +1,71 @@
+## Step 0: Setup
+
+If you have not already done so, please edit the file `.taguette_gdocs` in this
+directory. You must enter ever variable marked with "CHANGME." You only need to
+do this once.
+
+In order to not commit your changes into git, you can run this command:
+
+```
+git update-index --assume-unchanged .taguette_gdocs
+```
+
+I also create a directory called `taguette_backups` like:
+
+```
+mkdir db_backups
+```
+
+## Step 1: Backing things up
+
+Do this every time before you run the script:
+
+```
+sudo systemctl stop taguette
+BACKUP_FILE="taguette-snapshot-$(date +%Y%m%d-%H%M%S).sqlite3"
+sudo cp /var/lib/taguette/taguette.sqlite3 "taguette_backups/$BACKUP_FILE"
+cp "taguette_backups/$BACKUP_FILE" ./taguette-working.sqlite3
+```
+
+The first line shuts down Taguette. The second line just creates the backup
+file name. The third and fourt lines will create a new backup file and copy the
+backup file into the `./taguette-working.sqlite3`.
+
+### Step 2a: Import from Google Sheets into the database
+
+If everything is setup well, you should just need to run:
+
+```
+python3 taguette-update_tags_from_sheet.py
+```
+
+Check for errors! If you don't see any, you will need to copy the database back
+like:
+
+```
+sudo cp ./taguette-working.sqlite3 /var/lib/taguette/taguette.sqlite3
+```
+
+### Step 2b: Exporting from the database
+
+Exporting tags should be as easy as:
+
+```
+python3 taguette-export_tags_to_csv.py > exported_tags.tsv
+```
+
+This will create a new file called `exported_tags.tsv` which you can manually
+move into the spreadsheet.
+
+## Step 3: Restarting Taguette
+
+Once everything looks good, go ahead and restart Taguette like:
+
+```
+sudo systemctl start taguette
+```
+
+You can check it with `systemctl status taguette` but keep in mind it takes
+some time startup.
+
+
index 31a267dd4eff2c69c6bdb6d4590fe81a25938e37..2085e47a94280e1951b793f45848c39c82ba0af6 100755 (executable)
@@ -2,14 +2,19 @@
 
 import re
 import sqlite3
 
 import re
 import sqlite3
+from configparser ConfigParser
+
+config = ConfigParser()
+config.read('.taguette_gdocs')
+
+## this is project ID from the configuration
+project_id = int(config['General']['taguette_project_id'])
+taguette_database_file = config['General']['taguette_database_file']
 
 ## connect to sqlite3
 
 ## connect to sqlite3
-con = sqlite3.connect('taguette-working.sqlite3')
+con = sqlite3.connect(taguette_database_file)
 cur = con.cursor()
 
 cur = con.cursor()
 
-## this is the hardcoded project id
-project_id = 13
-
 sql_stmt_get = "SELECT id, path, description FROM tags WHERE project_id = ?"
 cur.execute(sql_stmt_get, (project_id,))
 
 sql_stmt_get = "SELECT id, path, description FROM tags WHERE project_id = ?"
 cur.execute(sql_stmt_get, (project_id,))
 
index 036d04dc5c1af04442dcec3296b0f111d8469980..5c529917f6d37c031452bcad587cee013bba7e4e 100755 (executable)
@@ -3,13 +3,18 @@
 import requests
 from csv import DictReader
 import sqlite3
 import requests
 from csv import DictReader
 import sqlite3
+from configparser ConfigParser
 
 
-gsheet_id = "1bfKljA7vw2V4yKrowxCPLdYaBrTzty5_O7msbuFw7Nc"
-gsheet_gid = "0"
+config = ConfigParser()
+config.read('.taguette_gdocs')
 
 
-## this is the hardcoded project id
-project_id = 13
+## this is project ID from the configuration
+project_id = int(config['General']['taguette_project_id'])
+taguette_database_file = config['General']['taguette_database_file']
 
 
+## load the googgle sheet ID from the configuration
+gsheet_id = config['General']['gsheet_id']
+gsheet_gid = config['General']['gsheet_gid']
 
 ## get the spreadsheet data
 axial_url = f"https://docs.google.com/spreadsheets/d/{gsheet_id}/export?format=csv&id={gsheet_id}&gid={gsheet_gid}"
 
 ## get the spreadsheet data
 axial_url = f"https://docs.google.com/spreadsheets/d/{gsheet_id}/export?format=csv&id={gsheet_id}&gid={gsheet_gid}"
@@ -17,7 +22,7 @@ rv = requests.get(axial_url)
 csv_text = rv.content.decode('utf-8')
 
 ## connect to sqlite3
 csv_text = rv.content.decode('utf-8')
 
 ## connect to sqlite3
-con = sqlite3.connect('taguette-working.sqlite3')
+con = sqlite3.connect(taguette_database_file)
 cur = con.cursor()
 
 ## import taguette.database as tagdb
 cur = con.cursor()
 
 ## import taguette.database as tagdb

Community Data Science Collective || Want to submit a patch?