Add basic item adding

This commit is contained in:
Tim Van Baak 2023-06-03 12:17:20 -07:00
parent f4b6ef2f1c
commit 0de40b1b5c
2 changed files with 59 additions and 0 deletions

View File

@ -1,5 +1,6 @@
from datetime import datetime, timedelta from datetime import datetime, timedelta
from pathlib import Path from pathlib import Path
from random import getrandbits
from typing import List from typing import List
import json import json
import os import os
@ -299,6 +300,33 @@ def _parse_channels_config(config_str: str):
return (None, parsed) return (None, parsed)
@app.post("/add")
def add_item():
# Ensure the default source exists
source_path = intake_data_dir() / "default"
if not source_path.exists():
source_path.mkdir()
config_path = source_path / "intake.json"
if not config_path.exists():
config_path.write_text(json.dumps({
"action": {
"fetch": {
"exe": "true"
}
}
}, indent=2))
source = LocalSource(source_path.parent, source_path.name)
# Clean up the fields
item = {key: value for key, value in request.form.items() if value}
item["id"] = '{:x}'.format(getrandbits(16 * 4))
# TODO: this doesn't support tags or ttX fields correctly
source.new_item(item)
return redirect(url_for("source_feed", name="default"))
def wsgi(): def wsgi():
# init_default_logging() # init_default_logging()
return app return app

View File

@ -61,6 +61,37 @@ summary:focus {
</details> </details>
</div> </div>
<div class="readable-item">
<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>
<input type="submit" value="Add">
</form>
</details>
</div>
</div> </div>
</body> </body>
</html> </html>