Dokončení virtuálních transakcí #23

Open
wikiker wants to merge 3 commits from feature/virtual into dev
Owner

Přidáno overview a editace virtuálních transakcí

Řeší #2

Přidáno overview a editace virtuálních transakcí Řeší #2
- Added virtual_transactions to overview context
- Added virtual transactions table section in overview template
- Shows date, title, amount, source seminar, and destination seminar
- Only displayed if virtual transactions exist
- Added virtual_transactions_overview view
- Added virtual_detail view with editing capability
- Added virtual_delete view
- Created virtual_overview.html template
- Created virtual_detail.html template
- Added URLs: virtual_overview, virtual_detail, virtual_delete
- Updated navbar to have 'Přehled' dropdown with both overviews
- Added 11 tests for virtual transaction views
- All 46 tests pass
wikiker self-assigned this 2026-10-24 12:36:03 +02:00
setnicka left a comment

Pár dalších bugů:

  1. Uložení prázdného title pak shodí každé načtení přehledu akce (existovalo už dřív, ale tímhle toho lze docílit taky, tak by to stálo za to opravit). Problém je, že title je nullable (title = CharField(null=True, blank=True)) a ne ve všech použitích se počítá, že by mohlo být null.
  2. Formulář nekontroluje amount > 0 (záporná virtuální transakce IMHO nedává smysl)
Pár dalších bugů: 1. Uložení prázdného title pak shodí každé načtení přehledu akce (existovalo už dřív, ale tímhle toho lze docílit taky, tak by to stálo za to opravit). Problém je, že title je nullable (`title = CharField(null=True, blank=True)`) a ne ve všech použitích se počítá, že by mohlo být null. 2. Formulář nekontroluje `amount > 0` (záporná virtuální transakce IMHO nedává smysl)
@ -0,0 +20,4 @@
</div>
<div class="form-group">
<label>Částka</label>
{{ form.amount }}
Collaborator

Použij radši {{ form.amount.as_field_group }} pro všechna pole. Vykreslí to celý field group (= méně kódu) a i to správně zobrazí chyby v políčkách.

Plus na začátku formuláře by pak mělo být {{ form.non_field_errors }}.

Možná že tohle platí obecně pro všechny formuláře v Helence, teď jsem nezkoumal, jak jsou vyráběné.

Použij radši `{{ form.amount.as_field_group }}` pro všechna pole. Vykreslí to celý field group (= méně kódu) a i to správně zobrazí chyby v políčkách. Plus na začátku formuláře by pak mělo být `{{ form.non_field_errors }}`. Možná že tohle platí obecně pro všechny formuláře v Helence, teď jsem nezkoumal, jak jsou vyráběné.
Author
Owner

Mělo by být opraveno

Mělo by být opraveno
setnicka marked this conversation as resolved
@ -0,0 +23,4 @@
<th>Popis</th>
<th class="sortable-column" data-format="money">Částka</th>
<th class="sortable-column">Ze semináře</th>
<th class="sortable-column">Do semináře</th>
Collaborator

Nemělo by se spíše zobrazit z akce do akce? Interní převody uvnitř semináře se budou zobrazovat krypticky jako "ŠMF -> ŠMF", což mi nic neřekne.

Nemělo by se spíše zobrazit z akce do akce? Interní převody uvnitř semináře se budou zobrazovat krypticky jako "ŠMF -> ŠMF", což mi nic neřekne.
Author
Owner

Mělo by být opraveno

Mělo by být opraveno
setnicka marked this conversation as resolved
@ -133,2 +134,3 @@
date = models.DateField(default=timezone.now)
amount = models.DecimalField(decimal_places=4, max_digits=15)
amount = models.DecimalField(decimal_places=4, max_digits=15,
validators=[MinValueValidator(0)])
Collaborator

Ještě drobnost: ke změně validátoru chybí migrace. Validátory jsou součást stavu, takže makemigrations vygeneruje AlterField.

Bez migrace to taky funguje, ale migrate hlásí neaplikované změny:

$ python manage.py makemigrations budget --settings=helenka.settings.development --dry-run
Migrations for 'budget':
  budget/migrations/0005_alter_virtualtransaction_amount.py
    ~ Alter field amount on virtualtransaction
Ještě drobnost: ke změně validátoru chybí migrace. Validátory jsou součást stavu, takže `makemigrations` vygeneruje `AlterField`. Bez migrace to taky funguje, ale `migrate` hlásí neaplikované změny: ```sh $ python manage.py makemigrations budget --settings=helenka.settings.development --dry-run Migrations for 'budget': budget/migrations/0005_alter_virtualtransaction_amount.py ~ Alter field amount on virtualtransaction ```
@ -72,2 +72,4 @@
{% if record.pk %}
<a href="{% url 'budget:record_detail' record.pk %}">{{ record.code }}</a>
{% elif "VIRT" in record.type %}
<a href="{% url 'budget:virtual_detail' record.code %}">VIRT-{{ record.code }}</a>
Collaborator

virtual_detail je za accountant_required, takže běžný org dostane 403.

Buď odkaz podmínit perms.budget.accountant, nebo detail organizátorům zpřístupnit, ale jen pro čtení a jen když zdroj nebo cíl patří k jejich semináři.

`virtual_detail` je za `accountant_required`, takže běžný org dostane 403. Buď odkaz podmínit `perms.budget.accountant`, nebo detail organizátorům zpřístupnit, ale jen pro čtení a jen když zdroj nebo cíl patří k jejich semináři.
@ -0,0 +8,4 @@
{% endif %}
<div class="row">
<a href="{% url 'budget:virtual_add' %}" class="button primary">
<span class="mif-plus"></span> Nová virtuální transakce
Collaborator

Tohle vede na virtual_add GETem, který je ale pro odeslané formuláře, takže se zobrazí "Virtuální transakci se nepodařilo přidat" a pak se přesměruje na add_overview s dialogem plným "Toto pole je povinné".

Stačí odkazovat rovnou na {% url 'budget:add_overview' %}.

Tohle vede na `virtual_add` GETem, který je ale pro odeslané formuláře, takže se zobrazí "Virtuální transakci se nepodařilo přidat" a pak se přesměruje na `add_overview` s dialogem plným "Toto pole je povinné". Stačí odkazovat rovnou na `{% url 'budget:add_overview' %}`.
This pull request doesn't have enough approvals yet. 0 of 1 approvals granted.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin feature/virtual:feature/virtual
git switch feature/virtual
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
wikiker/helenka!23
No description provided.