From adf68faa1438212cb745aa07931ca56891af2933 Mon Sep 17 00:00:00 2001 From: Mark Powers Date: Sat, 17 Dec 2022 20:58:41 -0600 Subject: Add tracker hook --- Makefile | 8 ++++++++ pyproject.toml | 2 +- wikijscmd/app.py | 1 - wikijscmd/commands.py | 30 +++++++++++++++++++----------- wikijscmd/custom_requests.py | 9 +++++++++ wikijscmd/util.py | 13 ++++++++++++- 6 files changed, 49 insertions(+), 14 deletions(-) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..1053f09 --- /dev/null +++ b/Makefile @@ -0,0 +1,8 @@ +upload: + python3 -m twine upload --verbose dist/* + +build: + python3 -m build + +clean: + rm dist/* diff --git a/pyproject.toml b/pyproject.toml index e2b14a8..15a268b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "wikijscmd" -version = "0.2.0" +version = "0.3.0" description = "A command line interface (CLI) for wiki.js" authors = ["Mark Powers "] license = "GPL 3" diff --git a/wikijscmd/app.py b/wikijscmd/app.py index 9dc3cd5..64ab390 100644 --- a/wikijscmd/app.py +++ b/wikijscmd/app.py @@ -3,7 +3,6 @@ import sys import argparse -from wikijscmd.config import config from wikijscmd.commands import create, edit, single, tree, today, move, fill_in_pages, latest_journal_entry, view from wikijscmd.tui import tui diff --git a/wikijscmd/commands.py b/wikijscmd/commands.py index ae90507..5a10099 100644 --- a/wikijscmd/commands.py +++ b/wikijscmd/commands.py @@ -3,25 +3,33 @@ import subprocess import time import os -from wikijscmd import graphql_queries from datetime import datetime, timedelta + +from wikijscmd import graphql_queries +from wikijscmd.config import config from wikijscmd.util import clean_filename, get_tree, open_editor, get_single_page, print_item, args_for_date -def create(path, title, content=None): +def create(path, title, content=None, edit=False): page = get_single_page(path) if page is not None: print("Page already exists with path: %s" % path) if input("Edit it? (y/n) ") == "y": edit(path) return - if not content: - content = open_editor("create", path, "") - response = graphql_queries.create_page(content, title, path) - result = response["data"]["pages"]["create"]["responseResult"] - if not result["succeeded"]: - print("Error!", result["message"]) - sys.exit(1) - print(result["message"]) + if content is None: + content = "" + # Edit if requested or no content was supplied + if edit or not content: + content = open_editor("create", path, content) + if content: + response = graphql_queries.create_page(content, title, path) + result = response["data"]["pages"]["create"]["responseResult"] + if not result["succeeded"]: + print("Error!", result["message"]) + sys.exit(1) + print(result["message"]) + else: + print("No content") def tree(regex): """ @@ -109,7 +117,7 @@ def fill_in_pages(): pending_date = last_date.date() while pending_date < today: pending_date += timedelta(days=1) - create(**args_for_date(pending_date)) + create(**args_for_date(pending_date), edit=True) def today(): """ diff --git a/wikijscmd/custom_requests.py b/wikijscmd/custom_requests.py index bc9b16e..a32a14c 100644 --- a/wikijscmd/custom_requests.py +++ b/wikijscmd/custom_requests.py @@ -28,3 +28,12 @@ def send_query(query, query_vars): handle_errors(r) return r.json() +def query_date(date): + res = requests.get( + f'{config["tracker"]["url"]}/{date}', + auth=requests.auth.HTTPBasicAuth( + config["tracker"]["username"], config["tracker"]["password"]) + ) + if res.status_code != 200: + return [] + return res.json() diff --git a/wikijscmd/util.py b/wikijscmd/util.py index 6720831..e16bf85 100644 --- a/wikijscmd/util.py +++ b/wikijscmd/util.py @@ -1,4 +1,5 @@ from wikijscmd import graphql_queries +from wikijscmd import custom_requests import subprocess import re import os @@ -57,7 +58,17 @@ def open_editor(action, pathname, initial_body): return new_body def args_for_date(date): - return { + obj = { "path": date.strftime("journal/%Y/%b/%d").lower(), "title": date.strftime("%B %-d"), } + date_content_json = custom_requests.query_date(date.strftime("%Y-%m-%d")) + if date_content_json: + date_content = "" + for item in date_content_json: + if item.get("key"): + date_content += f'{item["datatype"]}: {item["key"]}-{item["value"]}\n' + else: + date_content += f'{item["datatype"]}: {item["value"]}\n' + obj["content"] = str(date_content) + return obj -- cgit v1.2.3