forked from arti/doors
		
	Add support for db export
This commit is contained in:
		| @@ -21,6 +21,10 @@ if __name__ == "__main__": | |||||||
|             from .db import import_ookean |             from .db import import_ookean | ||||||
|             import_ookean() |             import_ookean() | ||||||
|             sys.exit(1) |             sys.exit(1) | ||||||
|  |         elif cmd == "export_db": | ||||||
|  |             from .db import export_db | ||||||
|  |             export_db() | ||||||
|  |             sys.exit(1) | ||||||
|         else: |         else: | ||||||
|             try: |             try: | ||||||
|                 port = int(sys.argv[1]) |                 port = int(sys.argv[1]) | ||||||
|   | |||||||
| @@ -193,11 +193,18 @@ class DB: | |||||||
|         for user in unmatched: |         for user in unmatched: | ||||||
|             print(f"User {user}") |             print(f"User {user}") | ||||||
|  |  | ||||||
|  |     def export_db(self): | ||||||
|  |         users = {} | ||||||
|     def export_db(self, json_file): |         cur = self.db.execute("select id, distinguished_name, user, full_name, email, disabled, admin from users") | ||||||
|         for user in self.list_users(): |         for user in cur.fetchall(): | ||||||
|             pass |             users[user["full_name"]] = dict(user) | ||||||
|  |             del users[user["full_name"]]["id"] | ||||||
|  |             cards_cur = self.db.execute( | ||||||
|  |                 "select card_uid, name, created, disabled from keycards where user_id = ?", | ||||||
|  |                 (user["id"],) | ||||||
|  |             ) | ||||||
|  |             users[user["full_name"]]["keycards"] = [dict(keycard) for keycard in cards_cur.fetchall()] | ||||||
|  |         return users | ||||||
|  |  | ||||||
|  |  | ||||||
| def initdb(): | def initdb(): | ||||||
| @@ -222,5 +229,15 @@ def import_ookean(): | |||||||
|     db.import_ookean("../contrib/ookean_cards.json") |     db.import_ookean("../contrib/ookean_cards.json") | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def export_db(): | ||||||
|  |     dbfile = "kdoorweb.sqlite" | ||||||
|  |     db = DB(dbfile) | ||||||
|  |     import sys | ||||||
|  |     exports = db.export_db() | ||||||
|  |     json.dump(exports, sys.stdout, indent=2) | ||||||
|  |     sys.stdout.write("\n") | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| if __name__ == "__main__": | if __name__ == "__main__": | ||||||
|     initdb() |     initdb() | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user