diff --git a/app/apps/transactions/urls.py b/app/apps/transactions/urls.py index 19284284..00291fa9 100644 --- a/app/apps/transactions/urls.py +++ b/app/apps/transactions/urls.py @@ -397,11 +397,6 @@ urlpatterns = [ views.quick_transaction_add_as_transaction, name="quick_transaction_add_as_transaction", ), - path( - "transactions//add-as-quick-transaction/", - views.quick_transaction_add_as_quick_transaction, - name="quick_transaction_add_as_quick_transaction", - ), path( "transaction//convert/quick-transaction/", views.transaction_convert_to_quick_transaction, diff --git a/app/apps/transactions/views/quick_transactions.py b/app/apps/transactions/views/quick_transactions.py index ee7dc4c4..b8c9acb7 100644 --- a/app/apps/transactions/views/quick_transactions.py +++ b/app/apps/transactions/views/quick_transactions.py @@ -162,70 +162,3 @@ def quick_transaction_add_as_transaction(request, quick_transaction_id): }, ) - -@only_htmx -@login_required -@require_http_methods(["GET"]) -def quick_transaction_add_as_quick_transaction(request, transaction_id): - transaction: Transaction = get_object_or_404(Transaction, pk=transaction_id) - - if ( - transaction.description - and QuickTransaction.objects.filter( - name__startswith=transaction.description - ).exists() - ) or QuickTransaction.objects.filter( - name__startswith=_("Quick Transaction") - ).exists(): - if transaction.description: - count = QuickTransaction.objects.filter( - name__startswith=transaction.description - ).count() - qt_name = transaction.description + f" ({count + 1})" - else: - count = QuickTransaction.objects.filter( - name__startswith=_("Quick Transaction") - ).count() - qt_name = _("Quick Transaction") + f" ({count + 1})" - else: - qt_name = transaction.description or _("Quick Transaction") - - transaction_data = model_to_dict( - transaction, - exclude=[ - "id", - "name", - "owner", - "account", - "category", - "tags", - "entities", - "date", - "reference_date", - "installment_plan", - "installment_id", - "recurring_transaction", - "deleted", - "deleted_at", - "internal_id", - ], - ) - - new_quick_transaction = QuickTransaction(**transaction_data) - new_quick_transaction.account = transaction.account - new_quick_transaction.category = transaction.category - - new_quick_transaction.name = qt_name - - new_quick_transaction.save() - new_quick_transaction.tags.set(transaction.tags.all()) - new_quick_transaction.entities.set(transaction.entities.all()) - - messages.success(request, _("Item added successfully")) - - return HttpResponse( - status=204, - headers={ - "HX-Trigger": "toasts", - }, - ) diff --git a/app/templates/cotton/transaction/item.html b/app/templates/cotton/transaction/item.html index 82ff696a..1ab65568 100644 --- a/app/templates/cotton/transaction/item.html +++ b/app/templates/cotton/transaction/item.html @@ -202,9 +202,50 @@ hx-target="closest .transaction" hx-swap="outerHTML">{% translate 'Hide from summaries' %} {% endif %} -
  • {% translate 'Add as quick transaction' %} +

  • .dropdown-submenu-content { + display: none; + // Inline (mobile) submenu fits the menu's current width instead of widening it + contain: inline-size; + width: auto; // stretch to the parent item (daisyUI's .menu is fit-content) + white-space: normal; + margin-inline-start: 0.5rem; + padding: 0; + + &::before { + display: none; + } + } + + &:hover > .dropdown-submenu-content, + &:focus-within > .dropdown-submenu-content { + display: block; + } + + @include media-breakpoint-up(md) { + > .dropdown-submenu-content { + position: absolute; + top: calc(-1 * (var(--dropdown-padding-y) + var(--dropdown-border-width))); + left: 100%; + margin: 0; + z-index: var(--dropdown-z-index); + width: max-content; + contain: none; + white-space: nowrap; + padding: var(--dropdown-padding-y) var(--dropdown-padding-x); + background-color: var(--dropdown-bg); + border: var(--dropdown-border-width) solid var(--dropdown-border-color); + border-radius: var(--dropdown-border-radius); + box-shadow: var(--dropdown-box-shadow); + } + } +}