Item add improvements

This commit is contained in:
Tim Van Baak 2023-06-19 13:55:40 -07:00
parent 095c6a7a41
commit 701bd0b19f
2 changed files with 60 additions and 26 deletions

View File

@ -332,16 +332,39 @@ def add_item():
)
source = LocalSource(source_path.parent, source_path.name)
# Clean up the fields
fields = {key: value for key, value in request.form.items() if value}
fields["id"] = "{:x}".format(getrandbits(16 * 4))
# TODO: this doesn't support tags or ttX fields correctly
fields = {"id": "{:x}".format(getrandbits(16 * 4))}
if form_title := request.form.get("title"):
fields["title"] = form_title
if form_link := request.form.get("link"):
fields["link"] = form_link
if form_body := request.form.get("body"):
fields["body"] = form_body
if form_tags := request.form.get("tags"):
fields["tags"] = [
tag.strip()
for tag in form_tags.split()
if tag.strip()
]
if form_tts := request.form.get("tts"):
fields["tts"] = _get_ttx_for_date(datetime.fromisoformat(form_tts))
if form_ttl := request.form.get("ttl"):
fields["ttl"] = _get_ttx_for_date(datetime.fromisoformat(form_ttl))
if form_ttd := request.form.get("ttd"):
fields["ttd"] = _get_ttx_for_date(datetime.fromisoformat(form_ttd))
item = Item.create(source, **fields)
source.save_item(item)
return redirect(url_for("source_feed", name="default"))
def _get_ttx_for_date(dt: datetime) -> int:
"""Get the relative time difference between now and a date."""
ts = int(dt.timestamp())
now = int(time.time())
return ts - now
def wsgi():
# init_default_logging()
return app

View File

@ -29,6 +29,10 @@ summary {
summary:focus {
outline: 1px dotted gray;
}
.wide {
width: 100%;
resize: vertical;
}
</style>
</head>
<body>
@ -65,28 +69,35 @@ summary:focus {
<details open>
<summary><span class="item-title">Add item</span></summary>
<form action="add" method="post">
<label for="title">Title</label>
<input type="text" name="title">
<br>
<label for="body">Body</label>
<br>
<textarea name="body"></textarea>
<br>
<label for="link">Link</label>
<input type="text" name="link">
<br>
<label for="tags">Tags</label>
<input type="text" name="tags">
<br>
<label for="tts">TTS</label>
<input type="text" name="tts">
<br>
<label for="ttl">TTL</label>
<input type="text" name="ttl">
<br>
<label for="ttd">TTD</label>
<input type="text" name="ttd">
<br>
<p>
{# <label for="title">Title</label> #}
<input type="text" name="title" class="wide" placeholder="Title">
</p>
<p>
{# <label for="link">Link</label> #}
<input type="url" name="link" class="wide" placeholder="Link">
</p>
<p>
{# <label for="body">Body</label> #}
<textarea name="body" class="wide" placeholder="Body"></textarea>
</p>
<p>
{# <label for="tags">Tags</label> #}
<input type="text" name="tags" class="wide" placeholder="Tags, comma-separated">
</p>
<p>
<label for="tts">TTS:</label>
<input type="datetime-local" name="tts">
</p>
<p>
<label for="ttl">TTL:</label>
<input type="datetime-local" name="ttl">
</p>
<p>
<label for="ttd">TTD:</label>
<input type="datetime-local" name="ttd">
</p>
<p>
<input type="submit" value="Add">
</form>
</details>