- Fewer requests on choicesreventes and tabular inlines (of
attributions)
- User and tirage cannot be updated if updating a participant instance.
- Tabular inlines are fixed:
- the one which is used for spectacles with listing only propose
choices in spectacle with listing
- same with the other (spectacles without listing)
- Still does too much request (because of tabularinlines)
- New attribution form issue less queries
- Spectacle and Participant are readonly if updating an attribution.
ReadOnlyMixin allows to set readonly fields only while updating an
object.
bda.algorithm
- use iterator to find max_groups, instead of a db request
bda.views.do_tirage
- select_related() are now focused on some relationships (they were
taking useless relationships)
- bda-revente filling takes 1 request (each save and add was issuing
1 request)
bda.views.etat_places
- Use select_related on spectacles_set, avoid query issue for each spectacle.
- `slots__sum` is computed in view, instead of a query.
- Cleaner code (and avoid useless computations).
bda.views.places
- Add select_related on places, avoid query issue for each spectacle.
bda.views.inscription
- 1 query for spectacle field choices, instead of (#forms in formset *
#spectacles)
- Delete BaseBdaFormSet. The validation was redundant with
`unique_together` of ChoixSpectacle model.
- AccountNegative use new AccountNegativeManager which select_related
account, cofprofile and user for instances accessed via
AccountNegative.objects.
- Compute sum of negatives with python instead of an SQL statement
(since we already got the data with a previous query).
- Fix bug on account property `real_balance` (happened if
an account has a relative AccountNegative instance but balance_offset
to NULL).
- More compliant to PEP8
- When Account model is queried with Account.objects, it always add
.select_related('cofprofile_user', 'negative').
- Eg benefits: history doesn't do anymore one request by account to
fill the account filter.
Important
Using this workaround (systemically append select_related) can be
dangerous normally, however a certain number of properties in
cofprofile and user are frequently used (as firstname or lastname), and
the benefits seems greater.
createopes script:
- more than 6x faster
- only bulk_create is used instead of create or save
- correctly create editions (~5% of created operations)
- ratio of withdrawals go from ~10% to ~5%
- No string concatenations
- Use `get_object_or_404` instead of performing a `.get` and catching
the eventual exception.
- More accurate error messages when a bad request is detected.
- More accurate error handling
K-Fêt - Majorations
- Seulement les catégories préalablement sélectionnées sont majorées le
le cas échéant.
- Pour modifier cette sélection, suivre le lien "Catégories" depuis la
liste des articles.
Fixes#149
See merge request !189
- add verbose names to ArticleCategory fields
- add button to view categories list from articles list
- fix article_update template in form validation
- improve interface for articlecategory_update
- revert vanished urls (happened in merge with master...)
- get_scale_args method of ScaleMixin retrieves useful GET params for
Scale object instanciation (by default from request.GET)
- it takes into account the type of the scale arg
- prefix used for GET param can be modified in stats_manifest funcs and
ScaleMixin
- References to `Stat` in `Scale` objects are deleted (because scales
are independent of stats)
- KFET_WAKES_UP_AT is now a time object insted of an hour
- Proper use of date, datetime, timedelta, etc (django.utils.timezone
provides neither datetime nor timedelta)
- KFetConfig `set` method now takes model instance instead of their pk
for this type of entries.
- Add tests for KFetConfig class: tests against types currently used by
kfet app (duration, modelinstance, decimal).
- These tests are located in `kfet/tests/test_config.py`. We should
separate tests suites by file like this, considering what they are about.
- KFetConfig method `set_many` renamed to `set` (because it also updates
only one).