Persist quick composer default type

This commit is contained in:
rucki
2026-09-07 11:40:37 +02:00
parent 60786e6814
commit c655b82c9b
5 changed files with 31 additions and 7 deletions
+16 -4
View File
@@ -327,7 +327,7 @@ def index(request):
if form.is_valid():
raw = form.cleaned_data['content']
raw, due_at, _ = parse_due_command(raw)
kind, visibility, content, url = parse_quick_content(raw, requested_default_item_kind(request.POST, prefs))
kind, visibility, content, url = parse_quick_content(raw, requested_default_item_kind(request.POST, prefs, save=True))
active_tag = request.GET.get('tag')
if active_tag and not TAG_RE.search(without_markdown_code(content)):
content = f'{content} #{active_tag.strip().lower()}'
@@ -425,7 +425,7 @@ def new_item(request):
if requested_kind in {'todo', 'link', 'journal'} and not TYPE_COMMAND_RE.match(raw.strip()):
raw = f'/{requested_kind} {raw}'
raw, due_at, _ = parse_due_command(raw)
kind, visibility, content, url = parse_quick_content(raw, requested_default_item_kind(request.POST, prefs))
kind, visibility, content, url = parse_quick_content(raw, requested_default_item_kind(request.POST, prefs, save=True))
item = Item.objects.create(owner=request.user, kind=kind, visibility=visibility, content=content, url=url, due_at=due_at)
attach_files_and_replace_tokens(item, request.FILES.getlist('files'))
item.sync_metadata()
@@ -1169,9 +1169,21 @@ def tag_list(request):
return render(request, 'core/_tags.html', {'tags': index_filter_tags(request, request.user, prefs, active_tags), 'active_tag': active_tags[0] if active_tags else None, 'active_tags': active_tags, 'active_tag_mode': active_tag_mode})
def requested_default_item_kind(post, prefs):
def requested_default_item_kind(post, prefs, save=False):
kind = post.get('default_item_kind') or prefs.default_item_kind
return kind if kind in Item.Kind.values else prefs.default_item_kind
kind = kind if kind in Item.Kind.values else prefs.default_item_kind
if save and kind != prefs.default_item_kind:
prefs.default_item_kind = kind
prefs.save(update_fields=['default_item_kind'])
return kind
@login_required
@require_POST
def set_default_item_kind(request):
prefs, created = UserPreference.objects.get_or_create(user=request.user)
requested_default_item_kind(request.POST, prefs, save=True)
return HttpResponse(status=204)
@login_required