Add /new/ endpoint
This commit is contained in:
parent
c263d8b469
commit
e8fca58e71
|
@ -1,9 +1,9 @@
|
|||
"""
|
||||
Logic for operations that depend on a whole collection of documents.
|
||||
Logic for managing documents.
|
||||
"""
|
||||
import os
|
||||
|
||||
from redstring.parser import load, DocumentTag, DocumentTab, Document
|
||||
from redstring.parser import load, DocumentTag, DocumentTab, Document, TabOptions, TagOptions
|
||||
|
||||
|
||||
def generate_index_document(directory: str) -> Document:
|
||||
|
@ -69,3 +69,31 @@ def generate_index_document(directory: str) -> Document:
|
|||
built_tabs.append(DocumentTab(category, built_tags))
|
||||
|
||||
return Document(built_tabs)
|
||||
|
||||
|
||||
def generate_default_document(doc_id) -> Document:
|
||||
"""
|
||||
Generate a blank document.
|
||||
"""
|
||||
return Document(tabs=[
|
||||
DocumentTab(
|
||||
name='tags',
|
||||
tags=[
|
||||
DocumentTag('id', doc_id),
|
||||
DocumentTag('title', ''),
|
||||
DocumentTag('author', ''),
|
||||
DocumentTag('date', ''),
|
||||
DocumentTag('source', ''),
|
||||
DocumentTag('summary', ''),
|
||||
DocumentTag('category', 'index', TagOptions(private=True)),
|
||||
DocumentTag('topic', 'uncategorized', TagOptions(private=True)),
|
||||
]
|
||||
),
|
||||
DocumentTab(
|
||||
name='notes',
|
||||
tags=[
|
||||
DocumentTag('notes', ''),
|
||||
],
|
||||
options=TabOptions(private=True, hide_names=True)
|
||||
)
|
||||
])
|
||||
|
|
|
@ -14,8 +14,8 @@ from flask import (
|
|||
url_for,
|
||||
)
|
||||
|
||||
from redstring.library import generate_index_document
|
||||
from redstring.parser import load
|
||||
from redstring.library import generate_index_document, generate_default_document
|
||||
from redstring.parser import load, dump
|
||||
|
||||
|
||||
CONFIG_ENVVAR = 'REDSTRING_CONFIG'
|
||||
|
@ -44,6 +44,16 @@ def document(document_id):
|
|||
return render_template('doc.jinja', document=doc, index=False)
|
||||
|
||||
|
||||
@app.route('/new/')
|
||||
def new():
|
||||
document_id = 'new'
|
||||
new_doc = generate_default_document(document_id)
|
||||
doc_path = safe_join(current_app.config['root'], f'{document_id}.json')
|
||||
with open(doc_path, 'w') as f:
|
||||
dump(new_doc, f)
|
||||
return redirect(url_for('document', document_id=document_id))
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="Run the redstring server.")
|
||||
parser.add_argument("--config", help="Config file path.")
|
||||
|
|
Loading…
Reference in New Issue