- validation: Fix date and files answer validation (
e2e0359)
- jexl: Add
parent.questionto JEXL context (2bfb411)
- tests: The model factories must not contain mutable attributes (
a158497)
- validation: Pass document ID to validation errors (
d9cf17b)
- api: Revert rename of context argument in save_answer (
dca2a21)
- form api: Pass data source context to validations in save_answer (
c72c5b6)
- document-validity: Expose error code in document validity graph (
2b4a3a0) - historical: Add parameter to exclude deleted documents (
629a360)
- format-validators: Only raise custom graphql error for save answer mutation (
737bf7c)
- Use multi stage docker file (
c1c661f)
- minio: Add region parameter to support garage s3 storage (
f58f589)
- Downgrade minio because of breaking changes (
b9ae27a)
- work_flow redo: Add some examples to make clear where the redoable condition is tested (
67cf01b) - Update release procedure in maintainer instructions (
b664ec5)
- jexl: Remove whitespace in stringify transform (
dd44dd8)
- format-validators: Add missing question argument to docstring (
25fbcb7)
- format-validators: Expose format validators on question graphs (
7b35221)
- format-validators: Add question as context when validating (
b4b62a5) - format-validators: Allow dynamic arguments for error messages (
bdd77c7)
- form: Allow custom validators on all questions (
fdf6fde) - format-validator: Use gettext to define translated messages (
7cb5840)
- schema: Fix expected graphql type for is_hidden on options (
1fdd679)
- deps: Update dependencies (
9343a04)
- This removes support for Python < 3.12. Django 5.2 also drops support for PostgreSQL 13 which will therefore not be tested by Caluma anymore. If you're using Caluma as an app with Django 4.2 it is still expected to work. (
9343a04)
- gql: Add filter for multiple task slugs to allTasks (
347aa2a)
- history: Make history aware of potential proxy models (
f336c67)
- structure: Take form for a new row set from the fastloader (
2480a31)
- copy: Adds on_copy to datasources to alter dynamic values (
9c076e5) - Use uuid7 instead of uuid4 from now on (
915e454)
- perf: Don't load full document in memory if not needed for options (
506bec9)
- perf: Keep auth http session alive across requests (
18d4d6a)
- structure: Take form for a new row set from the fastloader (
a08f566)
- perf: Don't load full document in memory if not needed for options (
581d2d0) - A few other code cleanups (CI, small refactorings)
- structure: Correctly update structure in-place for recalculations (
8cccc7e) - structure: Fix passing of global validation context for structure (
2b1f7e4)
- forms: Extend structure fastloader to support multiple documents (
28ca840)
- Deterministic option sort (
8f2a25a) - structure: Question options should not be loaded multiple times (
cba8fbe)
- deps: Fix django-filter version range (
f7a7f7c)
- Pass correct parameter dealing in calc field recalculation (
1536ab8) - form: Error when saving an answer that does't belong to a form (
c27a045) - validators: Import exception from the correct place (
6fe8566) - jexl: Fix crashes in form validation when validating options (
a9ed291)
- structure: Introduce a fast-loading mechanism (
e82cb5e)
- structure: Correctly sort questions and table rows (
36a6080)
- Code that uses the form jexl and / or structure code most likely will need to be rewritten. The changes are small-ish, but still semantically not exactly equal. (
7c997b7) See #2356 for further details. - While not yet (technically) breaking, we do not support Python versions of 3.9 and earlier. Update your Python to 3.10 or ideally, 3.13. Support for Python versions will be according to Python's own version schedule: https://devguide.python.org/versions/
- float: Add step configuration (
a8c265a)
- workflow: Add indices to created_at and deadline of work item (
8e7b8d7)
- form: Optimize calculated question performance (#2339) (
db6468b) - build: Don't crash build step due to missing readme at this stage (
75f3c93) - Update (and pin) graphene dependency (
7572c55)
- visibilities: Don't crash in the suppressable visibility resolver (
26fd823)
- visibilities: Make visibilities suppressable on n:1 relationships (
0899cc7)
- perf: Add indexes for frequently filtered attributes on work item (
b9a2032)
- jexl: Add length transform (
b4fbd99)
- form: Speed up copying of documents (
fac7a98) - Add missing "is_hidden" to SaveOptionSerializer (
ab63598)
- deps: Update dependencies (
322dc23) - jexl: Always add root info (
7b154f8) - code of conduct: Contact mail address (
29aaf2e)
-
feat: allow calculated fields to depend on other calculated fields (
92a8c1b) -
feat(options): implement is_hidden jexl on options
This commit adds an
is_hiddenjexl to Options. This will be evaluated and enforced on saving of answers. Addiotionally, the Options got a new filtervisible_in_document. (38ca1c4)
- fix(docker): install dependencies as caluma user (
9623107)
-
feat(form): add more case info to jexl context (
ab73edd) -
feat(jexl): add main_case_form to info object
This is convenient when you'd like to write a JEXL expression in a task form attached to some work item, that depends on the main case's form. (
bcb9136)
- fix(validation): do not block __typename when introspection is disabled
The DisableIntrospection validator rejects everything that could
lead to insight into the schema. Sadly, our frontends rely on having
__typename available, thus we need our own validator that allows this
specific introspection key (but not anything else) (46f2184)
- Do not query for non-existent buckets in healthz (
7d5e8ab)
- settings: Add setting to limit query depth (
dde9c9a)
- Defer calculation of calc answers until after creating a new doc (
8111843)
-
chore: drop deprecated id filter on cases filterset BREAKING CHANGE: you now must use the
idsfilter instead (e6356fa) -
chore: update lots of dependencies Notable change: replacing
psycopg2withpsycopg, version 3BREAKING CHANGE: This drops support for PostgreSQL versions 9, 10 and 11, as well as Python 3.8.
-
feat(healthz)!: overhaul health-checks for them to be less intrusive
This commit contains no changes. Its only purpose is to mark the commit
54c545f3d484661f8c9b29b1ce20384b8df5bfc5as breaking, because this was forgotten.BREAKING CHANGE: In the healthz response, the key
database modelshas been dropped. (4a585da)
- feat: disable introspection via validation rules property (
21afd5d) - feat: implement flat_answer_map (analog to ember-caluma) (
d96d33e) - feat(filters): add EXACT_WORD lookup type to SearchAnswer (
23c0e55) - feat(healthz): overhaul health-checks for them to be less intrusive (
54c545f)
- fix(graphene): add a custom metaclass factory for interface types (
d56f131) - fix(analytics/tests): do not assume sorted output (
136f1ae) - fix: new keycloak versions omit groups in claims if no groups are set (
d88affa) - fix: only save updated fields in post_complete case logic (
8c9edae) - fix(healthz): do not warn about expected events (
b747c1f)
- Only save updated fields in post_complete case logic (
eeabb02)
- New keycloak versions omit groups in claims if no groups are set (
d88affa)
- migrations: Make app prefix migration language independent (
2f3a5d3)
- form: Add show_validation property for action buttons (
6dea57e)
- core: Add meta intersection filter (
1a54a7f)
- analytics: Fix meta field extraction (
704ffb9)
- jexl: Add flatten transform (
42144cb)
- Also catch ValueError and ZeroDivision errors on early jexl evaluation (
0fe96ea)
- jexl: Update question jexl docstring (
cdf1e73)
- auth: Only use userinfo for auth (drop introspect) (
d065ef8) - analytics: Support accessing sub-cases and their parent (
6dfc4f9)
- setting the
OIDC_INTROSPECT_*andOIDC_CLIENT_AS_USERNAMEenv vars is obsolete now. Auth now only calls the userinfo endpoint without any fallback to the introspect endpoint. This will possibly have an impact on theusernameproperty of the user object. If your extensions depend on that property, please update them if necessary. Additionally, all requests sent to Caluma must include theopenid-scope. (d065ef8)
- workflow: Provide context to WorkItemValidator (
2fb5308)
This is the long overdue stable release of Caluma v8. For a detailed description of the changes to v7, please refer to the changelogs of the v8 beta versions.
- analytics: Fix aliases exceeding 63 bytes (
cdca090)
- filters: Add filters for modified_at (
16fdb73)
- filters: Add useful deadline filters to workitems (
f74d641)
- filters: Support word combinations in SearchAnswersFilter (
4c3e910) - workflow: Add case_document_forms filter to work item (
e351de3)
- form: Fix validation in document validity graph (
6b859fa)
This release provides a management command for recalculating calculated Answers that
contain values from TableQuestions. Due to a bug, answers to calculated questions
were wrong under certain conditions, if they contained values from table rows. This
command recalculates all of them.
If you use CalculatedFloatQuestions in your forms, it is advised to run this command:
python manage.py recalculate_calc_answers- Replace faulty migration for calc answers with a command (
4a3e85c)
- analytics: Add support for calculated questions (
196ab05)
- Fix calc answer evaluation when adding new table rows (
cb668ba) - workflow: Emit post_create_work_item when redo is set to ready (
5e9744a) - analytics: Handle missing dates (
a06181a) - analytics: Properly quote expressions (
3ff7f36)
- analytics: Fix form identifier; disable subform form (
94542ac) - Properly quote aliases - small additional fixes (
535c703)
- analytics: Add support for form name extraction (
1df3f53) - Allow using client id as user for client-secret auth (
3e45c61)
- Do not crash when django-extensions is missing (
6028be3) - analytics: Fix commandline output crash with certain aliases (
1839423) - analytics: Do not crash with more complex visibility layers (
71be082) - analytics: Do not output summary for simple tables (
34205cf)
- data_source: Add question and context arguments for data sources (
cb2739e)
- The method
get_dataon data sources receives two new argumentsquestion(caluma question model) andcontext(dict). The methodvalidate_answer_valueon data sources receives a new argumentcontext(dict). (cb2739e)
- workflow: Include family field on case schema model (
aea98f9) - filters: Add
visibleInDocument-filter for questions (9f5caa2) - analytics: Enable reordering of analytics fields (
59eadbc)
- Fix breaking change introduced in 59eadbc (
34be9bf) - Remove order_by in field_ordering, refactor test (
121a433)
- deps: Pin graphene-django to v3.0.0b7 (
3efc320)
- events: Don't emit create work item events when updating (
4f2f491)
- The
saveWorkItemmutation doesn't emitpre_create_work_itempost_create_work_itemanymore since this is not the expected behaviour. (4f2f491)
- redo: Recalculate deadline after updating a redo work item to ready (
f803fbe) - permissions: Make sure user permission classes call super (
6e1945b)
- flow: Allow flows to not have tasks in next if redoable is given (
867b796) - reopen case: Allow reopening child cases of ready work items (
e073cad) - workflow: Add is_redoable property to work item schema (
709965d) - workflow: Add search answer filter to work item filters (
0ceb2c6) - caluma: Add new work item order key (
a794211)
- redo: Fix workflow of work items in status redo (
abbdb92) - analytics: Handle None and ignore 0 in summary (
d5c9669)
- This removes the deprecated properties
userinfoandintrospectionon the base user class which have been deprecated for a long time. (b4fd9e2) - This drops the
saveCasemutation which has been deprecated for a long time. (6cf701d)
- Exclude not supported questions from answer search
(
a27681c) - Fix multifile migration again
(
d812956) - Handle files from history that don't exist anymore in migration
(
21611c3)
- historical-schema: Fetch the correct historical files
(
2580e80) - form: Migration problem with historicalanswer
(
a8633b6) - Multiple fixes for analytics
(
e78b8d2)
- workflow: Add ids filter to case
(
89b70ec) - form: Multiple files in file questions
(
4600ed0) - core: Allow input type override
(
215cdb7) - Searchanswers in forms
(
6a75f17)
- form: Fix and test search_answers
(
371a4f0) - analytics: Provide more correct supported functions in analytics
(
2130f34) - log: Minio stat errors shouldn't be errors
(
701bafc) - workflow: Remove and fix ordering keys
(
409e54f) - schema: Reopen case schema clarification
(
6153b45)
- This renames the question type constant for file questions, and changes the
semantics of the answer value for file questions as well: It is now a list of
dicts instead of a single string. The response type for querying file(s) answers
now also is a list instead of a single dict.
(
4600ed0)
- core: Allow input type override (
ec4c899)
- form: Use potentially prefetched answer document set for table rows (
58e0a7c) - schema: Reopen case schema clarification (
a394273)
- document: Fix label of copied dynamic options (
00383fc)
- document: Copy dynamic options when copying documents (
67910d9) - ReopenCase should disregard WorkItems in status REDO (
dded3a8) - deps: Update dependencies of dependencies (
e3a5de3) - form: Set questions of searchAnswers as required (
fb7ad5f)
- searchAnswers questions list is now required (
fb7ad5f)
- default answer: Don't set document when copying default answers (
7b5ce74)
- pivot_table: Pass context to child query (
34f59a2) - build: Conftest should be in generated package (
b82b6b3)
- ordering: Remove unused ordering attributes and add missing (
9cbdd7d) - events: Cleanup deprecated events (
1bf5792) - filters: Clean up all the old filter syntax (
ad008cd)
Remove unused ordering attributes and add missing (9cbdd7d)
This removes various orderings that do not make sense and were not used:
- On all connections:
created_by_usercreated_by_groupmodified_by_usermodified_by_group
Answerdocumentfile
Documentsource
The following ordering attributes were added because they make sense:
Casecreated_atmodified_at
Flowcreated_atmodified_at
Taskcreated_atmodified_at
Workflowcreated_atmodified_at
AnalyticsFieldcreated_atmodified_atalias
DynamicOptioncreated_atmodified_atsluglabelquestion
Flowcreated_atmodified_attask
Cleanup deprecated events (1bf5792)
The following deprecated events were removed:
created_work_itemcompleted_work_itemskipped_work_itemsuspended_work_itemresumed_work_itemcompleted_casecreated_casesuspended_caseresumed_casecanceled_work_itemcancelled_work_itemcanceled_casecancelled_case
Clean up all the old filter syntax (ad008cd)
We have for a long time had two syntaxes for filtering, one of which was deprecated for over a year now and only kept for backwards compatibility. Finally, the old form has to go.
Old:
query foo {
allWorkItems(status: $status) {...}
}New:
query foo {
allWorkItems(filter: [{status: $status}]) {...}
}The new syntax also allows reusing the same filter type twice to narrow down the result set even more. It also supports inverting the filters to implement explicit exclusion. It is now time to get rid of the old syntax.
The following changes are breaking:
- Removed deprecated
slugfilters in favor orslugsfilters - Removed top level filters
- Removed
orderByQuestionAnswerValuefilter in favor ofdocumentAnswerin the top level orderset - Removed
orderByin filtersets in favor of top levelorderorderset - Removed ordering by static meta attributes (configured with
META_FIELDSin favor ofmetain the top level orderset
- deps: Lock graphql-core to 3.1.x to avoid import error (
04f35c8)
- deps: Bump django from 3.2.12 to 3.2.13 (
76b9e0a) - docs: Fix incorrect documentation of createdAfter and createdBefore filters (
a8ba2bb)
- analytics: Support for additional starting objects (
4f24b5b) - test: Fixture for running a block of code at a given faked time (
8e3ab7a) - Reopen case and ready work items (
ed7ff26) - analytics: Summary row (
4e7bd5c) - analytics: Pivot table implementation (
ccc6bab) - test: Add at_date fixture (
649f657)
- docker: Fix standalone docker image command (
93f2158) - filter: Do not crash on empty query param in filter (
c9bb93c) - graphene: Write a failing test for the getRootForms query (
d2dd1af)
- relay: Make extraction of global ids more defensive (
392b4f7)
- workflow: Fix creating work items when completed ones exist (
b2cc0a8) - document: Remove duplicate filtering on answer (
c92f3ed)
- workflow: Allow multiple instance work items to continue async (
510ce48) - workflow: Only create work item if they don't exist yet (
7e32891) - analytics: Introduce analytics table (#1572) (
94db1d3) - workflow: Implement WorkItem redo pattern (#1656) (
d01e284)
- graphene: Avoid default connection limit (
edaf287) - validation: Only skip validation for none or empty strings (
9603db4) - format-validators: Don't run format validation on empty values (
ce2f5ca) - analytic: Add default ordering for fields and available fields (
513de29) - analytics: Parse date parts to integer for consistency (
28c3387) - options: Keep order of selected options the same as the value (
d57cd12) - deps: Fix deprecation warning for collections module (
4476805) - Restrict valid filters for choice questions (#1680) (
549d24d) - form: Update or create answers when copying to a new document (
ca0d17e)
- If you run Caluma as a Python module and still run 3.7, this will break (
94db1d3)
- Fix links in README.md (
43afdf5)
- document: Remove duplicate filtering on answer (
c92f3ed)
- graphene: Avoid default connection limit (
23969ee)
- workflow: Implement WorkItem redo pattern (#1656) (
d01e284) - form: Enable hint messages on questions (#1655) (
7adf401)
- document: Remove duplicate filtering on answer (
c92f3ed)
- validation: Only skip validation for none or empty strings (
b030904) - format-validators: Don't run format validation on empty values (
dcea2b5)
- form: Update or create answers when copying to a new document (
9f436af)
- config: Validate permission decorators (#1615) (
a63a6d3) - Expose more CORS related configurations via environment variables (
d88165c) - form: Add new action button question type (
2b3086f) - workflow: Extend group jexl context object (
ce3f4fe) - events: Allow the
senderto be used in filter_events (6104cbd) - signals: Introduce event filter (
e597a99)
- selected_options: Handle selected options if value is empty array (#1621) (
f097912) - schema: Define interface for dynamic questions (
d607544) - Set created_by fields on FormQuestions (
89ba971)
- Fix custom visibility code snippet (
d4abb69) - guide: Update guide to use ember-caluma v9 addons (
4d3c9fc)
- config: Introduce configurable user factory (
8a49aaf)
- documentation: Updated readme to reflect that GraphiQL is not available anymore (
b6204e8) - serializers: Do not implicitly monkeypatch rest framework (
86b8a05) - Prettier choice question error message (
acbc25c)
- jexl: Allow optional answer transforms with default value (
72dfa5b)
Minor release only containing dependency updates. The release is done mainly because if this commit:
- chore: update pyjexl [
03546ce]
The bugfix mozilla/pyjexl#23 (short-circuit evaluation) is critical for us, so we're pulling it in explicitly until there is a new pyjexl release.
- Extend uwsgi buffer (
324d9d3) - form: Fetch selected_options of corresp. question and document (
df97a5d)
- validation: Exclude hidden cells in answer transforms for tables (
36b0972)
- Make selected option(s) accessible from answers
(
824d9a8) - forms: Add question filter for forms
(
142e18b) - question: Add filters for sub and row form on questions
(
3b14abf)
- Add IN lookup for json fields (#1472) (95bc2c3c88cab3d68137996a3daafdf3a1dd6c42)
- Fix regression for union visibilities (e9a948c851e1bb9266e3e64205c9f21d0b3dca72)
- document: Pass current user to copy document function (
178602f)
- form: Modified_content on row documents (
75822ef) - file: Ignore errors due to missing file (#1440) (
63d9f94)
- Improve mapby and add stringify transform (
5fc1c73) - Modified_content properties on document (
e333af0) - Add modified_by_user and modified_by_group fields (
2868866) - Allow disabling ssl verification (#1408) (
e0d6652)
- Minio client requires different call signature for copy (
f878bf1) - Remove unneeded default_answer field on serializer (
3104840) - New minio has different metadata structure (#1412) (
4f021af) - Update minio client to adjust for changed exceptions (
0783629) - Use fixed maxsize from newest version (
a0ac175) - Fix search filter when used in collection (#1392) (
d99db68)
- form: Add python API and command for copying forms (
7620eec) - jexl: Add min, max, sum, round transforms (
beb714a) - Dump_caluma command for entire forms (#1367) (
20b2a79)
- Use homebrew jexl analyzer for question extraction (
a81c089) - form: Don't validate calculated answer (
014a804)
- Add argument to on decorator to raise exceptions in the receiver (
c3a3a90)
- Calc questions not present in document (
e111741)
- Prevent recalculation of calculated answers for default answer changes (
62f507c)
- Allow usage of form meta in question jexl (
f3f1223)
- Validate inexisting references in calc questions (
f4de05a) - Separate extractor for mapby arguments (
34c6d2b)
- Calculated float question (
6a7c7ca)
- str() should return string (
df5ba3b) - Use mapby args if literal, fix calculated test (
cb49617) - Support validation of nested table answers (
7937220) - Use "mapby" arg if subject is answer transform (
3a595a8)
- Fix validation of table questions (
6e1cf82)
- Support multiple choice and improve choice search (
456bf08)
- Validate empty table answers correctly (
8b00505)
- Fix custom validation for save answer mutations (
5e91341)
- Introduce API for managing default_answers (
995138a) - Pass user to copy method on answer and doc (
38941b0)
- Fix empty answers (
fc6300b)
- Don't use default on row_question if default table_answer exists (
30ce974) - Fix setting default answers for sub forms (
24d2899) - Use domain_logic for saving answers in form app (
6b71559)
- Consequently use domain_logic for saveDocument (
fe30966)
- Move deps to setup.py (
39e46f3)
- Pass user instead of info object to data source (
213d84a)
- Pass the
userto theget_datamethod of a data source instead of the wholeinfoobject since we don't have an info object when calling the python API. (213d84a)
- Handle table_questions (
33d303c) - Set default answers when creating new documents (
d9c2b2e) - Implement default_answers (
e3dae80) - Implement save_document form api (
ffb422d) - Debug transforms (
fbc5cd6) - Useful repr for most models (
e6186cc) - Add api for save_answer (
4457413) - Create caluma_logging app for access logging (
2602aa2)
- Do not use actual model in migration (
073f01c) - Fix flaky ordering (
1170242) - Flaky snapshort ordering (
73e57ea) - Sort addressed_ and controlling_groups (
e8eaae9) - Do not crash during migrations (
d6887d0) - Call cursor.execute with params=None (
151394a) - Migrate db sequences with prefix "caluma_" (
baf303c) - Do not hang in migrations on broken data (
bfc4304)
- add ID filter for case and work item (b6d89f315c1d79e914de575edf10945cf08d0ef2)
- Emit "pre_" events (dbda0a3e97e0a0ef977259d8a4e41b2912619225)
- Don't send complete_work_item event when skip (8236481d7da4a91b66f6102592d4b9de38bf5324)
- Always send post_complete_work_item event (6b2361593bd1a1df50c49c8f7b00779a1c75cc07)
- suspend and resume cases and work items (5d00a44d150bee2fc58890751c2cb2bbf72ae64d)
- rootCaseMetaValue filter on allWorkItems (5aed4208fbe590ec6528ed730c35a57ecedd3379)
- add missing transactions on serializers (9a129d1185e46329361dd4914b5c67e07f92712a)
- fix cancelling and skipping of work items with child case (07602dbf8cc9e44a50eda0b05dff1f9b8b9d63d5)
- Add test (31f45985d320966d266d628eaaaf848fa5bead9b)
- Make sure that one work item is always created (defc79770b7e76840e29d543bb98e5ef65fb3f89)
- Import djangomodelfactory from actual module path (341148f74429a4f2d032731778edce819598dce3)
- fix the return object of api methods (90a9102e3a9e4d9c59b49d11e5e0ec755a84c32d)
- add context for all case and workitem mutations (bb45477eecdc478521feac1cd746d32a79bd7cdd)
- add filter for case family (2b7271ff7ad4d3ee7f657caf20ef8d8c7a67593d)
- add filters for work item deadlines (e7eb1044c6a67e7a955229781d2ff8d98af80d48)
- emit completed_work_item event before closing the case (2d9d236eaa0ce37f2bc8b366bbd11b447090bf42)
- enable context for skipping work items (a4f3b535514ad519f74465e743f785e0aa05994c)
- Add filter for filtering work items by multiple tasks (32508e587d2183e78265d32f5bff84f783430724)
- Add support for dynamic tasks (689f6a9940f13f7482f62a78e53ea5cc5822cffa)
- Context for DynamicGroups (9ecc69a243ea1ed21d14c17fff8ec4bf9e205169)
- Add mutation and api function for canceling work items (0b04defaccb8e78746ec1f78826febd2c247aeb7)
- Save the previous work item on the model (84cd768f99607e99cd966b95ba2aa6d6211c030e)
- Fix flakiness by sorting the list during snapshotting (825492a27a8ce156395fbd19b99acd4f85e5e836)
- Extend test_start_case (b70b6ea1e725a935207a690016030010646c5308)
- Fix history by not using djangos update function (59ca6f5732d2fdc3ecb0191563c169066581e625)
- Remove duplicated intro section (175285142c6b623bf8c2132a4c73189bde5dc66e)
- Always send the current user to event receivers (5f0e8691b3bc98174c055d6507167ef5fe10bed8)
- Remove --keep from cleanup_history command (420c0cbaee0ff4fb7958c167c3b7b5bd353c4999)
- Extend cleanup-command for cleaning up dangling models (489bb41acb16772f258c6a5aee42def99699c489)
- Sort the groups jexl (be5487cb4cf7864130123dff74fc4aed55d80d5d)
- Use fstring to log fstring message (538659138777c11022ebf15e90d7993d039db13e)
- remove --keep from cleanup_history command (420c0cbaee0ff4fb7958c167c3b7b5bd353c4999)
- Allow dynamic groups for group JEXL transform (15491285b4fb4fbd50c791c424ef5337f043cf46) (Docs)
- Follow-up historicalanswer migration using SQL (2fad5bc5503497eacc4a1f264756d0f05680afe4)
- Add history_question_type to HistoricalAnswer (cb93e3853f9a7d50fe9720f98b86193d427fef34)
- Extract code for cancelling cases and add a python API (ce74d06bdc9b0edb7080d6408f814ba434da31b4)
- Consider workflow when completing work items (c024660d73103297dc6f96b2cdf7634190da3776)
- Make validation and visibility decorators chainable (b8ed8c923296ca9100f76322b0d22ea66a1cfaba)
- Add documentForms filter for allCases graph (ab14f8b96c1af838293688fd360d17c6b0466fa1)
- Expose complete and skip work item to public API (32136bdfa2f894278f1d3c5b5f660774be5761a1)
- Expose start case logic in public python api module (c78bbb72fe295fe54f81f4d49253aab6d6530c6f)
- Remove DeprecationWarnings (262682e64cc3c6d7ca380ae6eb2fe1723ab05841)
- Fix case status when completing parallel work items (2502b309260272a525abb56a461507999ea6c3ea)
- Make tasks reusable in workflow flows (613386d7e8c9adb7fbf1e7d675b6840dccac99f8)
- Use matching question for historicalanswer (097cdcbda1e05ffb22c38630ba9dae3efd31ce37)
- Switch to 'id -u' when creating a pipenv (06983b664e85a7259a25ce1a543c1851a015b72c)
- Add docs for the new API functions (c5411b0cd9c51c1251925fe7db89c87a259b029c)
- Add filters for object creation dates (310139c03b407efa4d473c1933a48906e9007a13)
- Make created_by_group settable (ac3cb58959adcfaf386d8707416889f53ec248b8)
- The requiredness check needs local context (2412577738dc708b1020105dd0e2eac656a332f9)
- Return table rows in sorted fashion (aa0f72539e63d9103fe138180d81d3e99f4898af)
- Ensure jexl evaluation is local to the relevant question (121bdb6ed075f6e968c7a4a250d045edec436f86)
- Properly cache is_hidden/is_required (c09a13316e2a742964c9558c10f2a9327db0c933)
- Fix evaluating requiredness from branch forms (062e350236f18031a4158cffe8b752192b7d2661)
- Only accepts integer or string as id (562b4c0594336392abf5a3d3f83878d37e434e42)
- fix WorkItem migration (870bd94a2a9f08d4268093649bb28f85e86811ac)
- add name filter (a804572ad6979cf26c711a7f29cd44e37cb71c6e)
- name and description (18a987370d9d6f2ec8db84ce225bd32af7de00f8)
- fix answer transform for questions with multiple values (d0189cbac7d43ef479ff23ff0123dae23c98ca5d)
- add documentation about the GroupJexl (a3e5bd1e295606d64392a1205326fcad2b908092)
- Add
controllinggroupsfilter to workitemfilterset (2d4b43790a3f3ea9836a87b7177f71f8b2295d7c) - "controlling" for tasks and workitems (1ba66084d6e87de58894ed021ef99f26bfed0c90)
- Implement caluma events (3efeba0f2495a3425226bdad92a786d511852299)
- Cleanup context data for jexl expressions (4cc9a3d8b7bad18bc8378fe3611beed5b34ada18)
- Structure objects can now be accessed via dot notation (8401af5bb1eafb0a966337db294e9646b2ea3907)
- Fixture that can generate a full form and document (1e7dc050fb422274571fb8f3706c19960fa29e6b)
- Add
family_work_itemstocasetype (41b2fb764d3ef104e9d3b29cd13cd09f69f54b1a) - Add rootcase filter (2c5145d7a2105159d244d3203b6602b5784a21e3)
- Automatically set case family (2345af3903b06b4ac66f4004ea6a28a439a05d14)
- Add case families (d7c0a662dff2f21b2226d6857b2837be35c6462e)
- Answer transform shouldn't return value for hidden questions (984e2f9a0880eb4659917662d70ba40fdbb8d4c3)
- Remove
address_groupfromtaskorderset(92dbb5b51c99c12ecfc2d568cfb06046388766ff) - The word "form" should always be the root form (787c30ca43578ec77ffa565e0ef0333237962d99)
- Slug fields should be 127 chars (f6c3483e19dcf549238b7408a28fb5fd9f45bb9a)
- Extend validation with information about jexl expressions (2d8b1d3924001302268c3b6fe04b9b8ba102347c)
- Fix loading of caluma settings (b001d6fd0eed601aea9b5e170c3f66b5dceca46d)
- Implement copydocumentmutation (613ccd3b5962d5068a49ee44090e265786feee01) It is now possible to copy documents
- Split settings file (c80cb4f3523fe8defc4befbe563905f9e0eb285d) Useful for integrating caluma as a django app
- Increase max-length of slugs to 150 (5dbfff523d6486166c8e115071ca526bbd7c60e4)
- Add support for minlength validation (4d67bcefc9659932f8edfd28f4864074c969cc95)
- Do not validate row documents when attaching them (fee356ae9549ca0bf4df4a18f9d260f8dd544569)
- Do not crash when lamenting invalid form slug (42ce73cf3049c0305efae4d35807cc5f7a982deb)
- Handle is_required correctly in nested questions (cb78c0836d6d354aa78a6458a70ca660f6d7b32b)
- Add docs about usage of django apps and interfaces (c164ed340db0b7e1a2f8ca49bdc973ff8b8b8f90)
- Add hint about snapshot updates and xdist (c0269950f1261884786306c013bd01945fee6498)
- add unique_together to DynamicOption (c7460c01a4c764f580adc5c76cdca3cbe208b081)
- new filter on cases to check for answers in work items (827399264e275784ec45643143a4ceb7a05751b2)
- add indexes on timestamps and user fields (0ad0c41d79d6dddd08662a4e547094b2e5c82c3f)
- file answers need special treatment (65e1a3787d5dcefa171694f538f69019e7d6b02d)
- fix user object creation (6ed82c6ef865e5fc203733ec35eab209ca8781fd)
- fix validation of dynamic answers (88431eaf61cf3f2c689c1417408873a1d7de055c)
- add guide on workflow implementation (WIP) (515add093009f9abb668e26eef00da434f176c57)
- add hierarchical inspection classes (0d746594d9d14e23b7d90b359c8869b8d3ab7afc) Useful for extension points and caluma-as-django-app
- validation performance vastly improved (25570a9b220d773b5a1517bb4e0b40d27ed306f1) form validation query count is roughly 10% of what it used to be
- add assigned users filter (93badb4a55e91f7ffc6a3fc5828b18765cae9564)
- prefix all apps with "caluma_" (928146577f3cb2f76a4e715ba29ae4e1eb547907) (BREAKING CHANGE: Extension code must be updated)
- correctly handle indirectly hidden questions (cfe616684980d732fe667099a74461d6dbfaa732)
- version bump (d2a4755c4e06d7f683165e582780ec3e5121c835)
- add maintainer's handbook (9f64fc4837bb5974fb7cd3caa67bb6c32bf2661e)
- make caluma installable as django app (573e87a76ca3a2b70816ce98fd08c2cc71fc5c74)
- helper to extract mutation parameters from request (197a775d332576b03853ded00c80c3abf46f4f25)
- run pytest in parallel with xdist (9a435d9d0714aef64b955c2942803a17e561a721)
- allow filtering answers to limit only visible answers (0eb037f8d1a09a7a752ac6bec58e9f4a70a17bdc)
- add pipenv setup command to setup.py (448b821ab557e0af59fcab3a976c0e00a5e98e82)
- use root form as form property in QuestionJexl context (5f422c01cb42d0d2833f79774eb34cd4fbbdb85a)
- remove insignificant performance hack (db3d84234fa2d803f51ac3c892abba17d7c91614)
- use "development" instead of "dev" as documented (1645ed996d4f310a91fb893627158945fbbedcc3)
- add info about the
UIDvariable (f9a8d3ffee95b39474f31dd8d79d126ff6fde006) - add more detailed example for the pipenv workflow (16a94a81582b4164280157f559236d009ed4461d)
- make permission decorators chainable (3052cbff33cb98ee22a7ed34c3133820121794bf)
- validate dependencies correctly (854f6fa77048edeb9bc84d24036fff4fde2f05de)
- add created_at, closed_at, modified_at filters to work items (b83ce9c6b0b8248b82216e30c65ecb400660fdc4)
- optimize
historical_qs_as_of(95e5fb9865d523e0acf96c54743cebf70b6344a9) - fix duplicate documents (68934392c56e2d1734a5046e7e5182e07ce3fd0e)
- use LocalizedValue for translations (3cf3720f94ed64367c55b700be97a955472b00e4)
- correctly handle is_hidden regarding dependencies (a068c2c04b94f94b25087c769a931ce8f549251f)
- allow Answers with empty value (81cbe9aae553ed91a86c1813a47085fb3b386713)
- explain how to use pipenv (745380f39b45fdf1d936aad87a368c2b37e75109)
Version 3.0.0. Main changes:
- License changed to GPL 3.0 (or later)
- Dynamic data source improvements (Answers now store values for the case where the value won't be available in the future anymore)
- Allow skipping of work items
- allow skipping of work items (e84f9360cb245587dab7e75d84134b7999bfa2e5)
- add
status_skippedto possibleworkitemstates (c3d99bc9d911a103796821e09f3f65bb543457ca) - switch main license to GPL-3.0-or-later (978f18aaa725ad779bd0238b82528401f36147bb)
- implement dynamic data source (63ffe863bd17cc75c75d7834e7f38e45268022da)
- question id/slug should be of type id (69511c17cccba36775840976d384010867256499)
- add user and group to dynamic option (ba89f88b7cec45b17e0c6036884998cdad873f0f)
- raise a 401 if user is not logged in (1b5851c2025d1e3b95353f71d2678f640847955e)
- add question to validate_answer_value method (3667e3d3aaf45459135718c401e40c02535adc01)
- fix DynamicOption model (35935ddd04861a7c2c9cc0ec8aa92de983f1c334)
- do not return questions multiple times (ec285957c661b04ed10f305fbae7b6824cfd4b97)
- remove dynamicoptionSet form schema (0391c04481097792ef608afdebb6f39d10077959)
- reintroduce ordering by deadline on work items (fed67da288aebff593cc77855b1b5c39f44d0b91)
- fix ordering by question value (1dcec885518d6f654773e07677cb58649613ede2)
- revert dynamic data source (85fab681039f5f11c484a3c525631af6e0eddd25)
- validate requiredness recursively for subforms (844b914f98f1ed002f9dbbabffaf445753a18728)
- do not validate hidden questions (1fb7bd5b93368c0c5c55bbc6e941f8208aeb2929)
- Add the parameter
questionto thevalidate_answer_valuemethod and add a new lookup to check if adynamic_optionalready exists. (3667e3d3aaf45459135718c401e40c02535adc01) - The
valuefield on theDynamicOptionmodel is renamed toslugand not optional anymore. (35935ddd04861a7c2c9cc0ec8aa92de983f1c334) - The optional
answer_valueparameter for theDataSource.get_data()method was reverted. (85fab681039f5f11c484a3c525631af6e0eddd25)
- explain license choice (4d59af520da53b44c3771eb53c451d209c1aafa5)
- allow skipping of work items (e84f9360cb245587dab7e75d84134b7999bfa2e5)
- add
status_skippedto possibleworkitemstates (c3d99bc9d911a103796821e09f3f65bb543457ca) - switch main license to GPL-3.0-or-later (978f18aaa725ad779bd0238b82528401f36147bb)
- implement dynamic data source (63ffe863bd17cc75c75d7834e7f38e45268022da)
- add user and group to dynamic option (ba89f88b7cec45b17e0c6036884998cdad873f0f)
- raise a 401 if user is not logged in (1b5851c2025d1e3b95353f71d2678f640847955e)
- add question to validate_answer_value method (3667e3d3aaf45459135718c401e40c02535adc01)
- fix DynamicOption model (35935ddd04861a7c2c9cc0ec8aa92de983f1c334)
- do not return questions multiple times (ec285957c661b04ed10f305fbae7b6824cfd4b97)
- remove dynamicoptionSet form schema (0391c04481097792ef608afdebb6f39d10077959)
- reintroduce ordering by deadline on work items (fed67da288aebff593cc77855b1b5c39f44d0b91)
- fix ordering by question value (1dcec885518d6f654773e07677cb58649613ede2)
- revert dynamic data source (85fab681039f5f11c484a3c525631af6e0eddd25)
- validate requiredness recursively for subforms (844b914f98f1ed002f9dbbabffaf445753a18728)
- do not validate hidden questions (1fb7bd5b93368c0c5c55bbc6e941f8208aeb2929)
- Add the parameter
questionto thevalidate_answer_valuemethod and add a new lookup to check if adynamic_optionalready exists. (3667e3d3aaf45459135718c401e40c02535adc01) - The
valuefield on theDynamicOptionmodel is renamed toslugand not optional anymore. (35935ddd04861a7c2c9cc0ec8aa92de983f1c334) - The optional
answer_valueparameter for theDataSource.get_data()method was reverted. (85fab681039f5f11c484a3c525631af6e0eddd25)
- explain license choice (4d59af520da53b44c3771eb53c451d209c1aafa5)
This is the second major release of Caluma.
Apart from a couple of new features, we changed the license from MIT to AGPL. The reasons for this are documented in a followup (see #749).
There's another backwards-incompatible change regarding the data sources for dynamic (multiple) choice questions, prompting the version bump.
New in this version is also the separation between ordering and filtering in the queries, and a cleanup command for historical data.
- pass actual answer value to data source (3b26162db5bfd0b48b908ef7609abeddcf24af8b)
- add order filter for workflow models too (b2fb9c73d451d2292e2bdafa25b9da1151d0915b)
- add test for new order filters (344bc9d502469acc5597355d1b832e68b5893e11)
- introduce new-style ordering for form nodes (f73f8e5a6c3d287804dca88da636c515c26b2026)
- implement new order filter (012d1f19089dff4bb0125d982cc6688374e4f68a)
- start using the collection filterset factory (97394c7e523f40af102828c94dd01de7c3a97f7a)
- factory for unionized filters (686484d1e732828db2e55b7056a83925104da676)
- expose original document id (051cf01ed283dbc8b3c00a91f9a124a764f9d755)
- add cleanup command (a66582a4945c3562828cdca284e3fff8da11af98)
- typo (9cd21c195383ec3642a0e1bc5ef2cc46c1f269ef)
- link guide (57df4a6dc35c54aa32bfb1eccef64465191f2b4a)
- don't pass self to super().init() call (748c99d6315d99551f9e950b3888cafd321b8b58)
- correct svg font (576e2fe71a5562f1c41fdce83ab926be0ecbab45)
- cleanup_history - add force argument (9191b4e3638f866d256ac3b40a59b6839a6d4ef5)
DataSource.get_data()methods must accept an optionalanswer_valueparameter. (3b26162db5bfd0b48b908ef7609abeddcf24af8b)- License change: Move to AGPL (bfb66199)
- update ordering documentation (85a1143b02884f75fd3c24fccfa842c5f783adf6)
- add note on deprecation of old-style filters (b93e27c49f5b57d0acbdd560766ddff2baefc041)
- extend the guide with form-builder steps (bdd183d111e844e739c74d0536d2c4e29aec7b39)
- add guide (WIP) (822f4c1c31ee3f404b5c4b9cc76d96e2a1be1a5f)
- document cleanup commands in README (dc58593af1d147bd06cb62b02f2d27459cc7f01e)
Initial release