Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
6f7605c
45773 feat(fieldsets) backend init commit
pneumojoseph Apr 23, 2026
21797ab
45773 feat(fieldsets): add ordering parameter to the GET /templates/i…
pneumojoseph Apr 27, 2026
5496bf6
45773 feat(fieldsets): remove "order" field from fieldsets api
pneumojoseph Apr 27, 2026
03e6896
45773 feat(fieldsets): add an m2m relation betweet TaskTemplate, Kick…
pneumojoseph Apr 28, 2026
589f685
45773 feat(fieldsets): Passing the FieldSet.order property from the i…
pneumojoseph Apr 28, 2026
b81d55a
45773 feat(fieldsets): allow adding one same fieldset to different te…
pneumojoseph Apr 29, 2026
9ac5c6c
45773 fix(templates): correct removing fieldset from task and kickoff
pneumojoseph May 4, 2026
0fed34e
Merge branch 'master' of github.com:pneumaticapp/pneumaticworkflow in…
pneumojoseph May 4, 2026
060065e
45773 fix(migrtions): rename migrations
pneumojoseph May 5, 2026
2cc2b38
45773 fix(workflows): skip deleted fieldsets when workflow creates
pneumojoseph May 5, 2026
cd8ef70
45773 feat(templates): add fieldsets to GET /templates/id/fieldsets
pneumojoseph May 6, 2026
4fa0dec
45773 fix(templates): add fieldset order to the GET /templates API
pneumojoseph May 6, 2026
4e44624
45773 fix(templates): add fieldset to the GET /templates/public
pneumojoseph May 6, 2026
fcf7b98
45773 feat(fieldsets): not raise "sum_equal" exception for a blank an…
pneumojoseph May 8, 2026
1a7c0f3
45773 feat(workflow): GET /workflows?fields api now returns fieldset …
pneumojoseph May 8, 2026
d528e16
45773 feat(workflow): GET /workflows/fields api now returns fieldset …
pneumojoseph May 8, 2026
c53259f
45773 feat(fieldsets): update fieldsets API: add template_id to the r…
pneumojoseph May 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion backend/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ BACKEND_URL=http://localhost:8001
FRONTEND_URL=http://localhost
FORMS_URL=http://form.localhost
ENVIRONMENT=Development
ENABLE_LOGGING=yes
ENABLE_LOGGING=no
DJANGO_DEBUG=yes
DJANGO_SETTINGS_MODULE=src.settings
DJANGO_SECRET_KEY=django_secret_django_secret_django_secret
Expand Down
2 changes: 1 addition & 1 deletion backend/src/accounts/locale/de/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-04-07 11:48+0000\n"
"POT-Creation-Date: 2026-04-13 23:53+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
Expand Down
2 changes: 1 addition & 1 deletion backend/src/accounts/locale/django.pot
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-04-07 11:48+0000\n"
"POT-Creation-Date: 2026-04-13 23:53+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
Expand Down
2 changes: 1 addition & 1 deletion backend/src/accounts/locale/es/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-04-07 11:48+0000\n"
"POT-Creation-Date: 2026-04-13 23:53+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
Expand Down
2 changes: 1 addition & 1 deletion backend/src/accounts/locale/fr/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-04-07 11:48+0000\n"
"POT-Creation-Date: 2026-04-13 23:53+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
Expand Down
2 changes: 1 addition & 1 deletion backend/src/accounts/locale/ru/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-04-07 11:48+0000\n"
"POT-Creation-Date: 2026-04-13 23:53+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
Expand Down
2 changes: 1 addition & 1 deletion backend/src/analysis/locale/de/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-04-07 11:48+0000\n"
"POT-Creation-Date: 2026-04-13 23:53+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
Expand Down
2 changes: 1 addition & 1 deletion backend/src/analysis/locale/django.pot
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-04-07 11:48+0000\n"
"POT-Creation-Date: 2026-04-13 23:53+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
Expand Down
2 changes: 1 addition & 1 deletion backend/src/analysis/locale/es/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-04-07 11:48+0000\n"
"POT-Creation-Date: 2026-04-13 23:53+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
Expand Down
2 changes: 1 addition & 1 deletion backend/src/analysis/locale/fr/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-04-07 11:48+0000\n"
"POT-Creation-Date: 2026-04-13 23:53+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
Expand Down
2 changes: 1 addition & 1 deletion backend/src/analysis/locale/ru/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-04-07 11:48+0000\n"
"POT-Creation-Date: 2026-04-13 23:53+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
Expand Down
2 changes: 1 addition & 1 deletion backend/src/authentication/locale/de/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-04-07 11:48+0000\n"
"POT-Creation-Date: 2026-04-13 23:53+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
Expand Down
2 changes: 1 addition & 1 deletion backend/src/authentication/locale/django.pot
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-04-07 11:48+0000\n"
"POT-Creation-Date: 2026-04-13 23:53+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
Expand Down
2 changes: 1 addition & 1 deletion backend/src/authentication/locale/es/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-04-07 11:48+0000\n"
"POT-Creation-Date: 2026-04-13 23:53+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
Expand Down
2 changes: 1 addition & 1 deletion backend/src/authentication/locale/fr/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-04-07 11:48+0000\n"
"POT-Creation-Date: 2026-04-13 23:53+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
Expand Down
2 changes: 1 addition & 1 deletion backend/src/authentication/locale/ru/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-04-07 11:48+0000\n"
"POT-Creation-Date: 2026-04-13 23:53+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
Expand Down
2 changes: 1 addition & 1 deletion backend/src/datasets/locale/de/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-04-07 11:48+0000\n"
"POT-Creation-Date: 2026-04-13 23:53+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
Expand Down
2 changes: 1 addition & 1 deletion backend/src/datasets/locale/django.pot
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-04-07 11:48+0000\n"
"POT-Creation-Date: 2026-04-13 23:53+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
Expand Down
2 changes: 1 addition & 1 deletion backend/src/datasets/locale/es/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-04-07 11:48+0000\n"
"POT-Creation-Date: 2026-04-13 23:53+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
Expand Down
2 changes: 1 addition & 1 deletion backend/src/datasets/locale/fr/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-04-07 11:48+0000\n"
"POT-Creation-Date: 2026-04-13 23:53+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
Expand Down
2 changes: 1 addition & 1 deletion backend/src/datasets/locale/ru/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-04-07 11:48+0000\n"
"POT-Creation-Date: 2026-04-13 23:53+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
Expand Down
8 changes: 4 additions & 4 deletions backend/src/datasets/services/dataset.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from typing import Any, Dict, List, Optional
from typing import Dict, List, Optional

from django.contrib.auth import get_user_model
from django.db import IntegrityError
Expand Down Expand Up @@ -37,7 +37,7 @@ def _create_instance(

def _create_related(
self,
items: Optional[List[Dict[str, Any]]] = None,
items: Optional[List[Dict]] = None,
**kwargs,
):
if items:
Expand Down Expand Up @@ -82,7 +82,7 @@ def delete(self) -> None:

def create_items(
self,
items_data: List[Dict[str, Any]],
items_data: List[Dict],
):
service = DataSetItemService(
user=self.user,
Expand All @@ -97,7 +97,7 @@ def create_items(

def update_items(
self,
items_data: List[Dict[str, Any]],
items_data: List[Dict],
):
""" All dataset items will be updated """

Expand Down
6 changes: 0 additions & 6 deletions backend/src/datasets/services/dataset_item.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,6 @@ def _create_instance(
) from ex
return self.instance

def _create_related(self, **kwargs):
pass

def partial_update(
self,
force_save: bool = True,
Expand All @@ -54,6 +51,3 @@ def partial_update(
message=MSG_DS_0002(value=self.instance.value),
) from ex
return self.instance

def delete(self) -> None:
self.instance.delete()
4 changes: 3 additions & 1 deletion backend/src/generics/base/service.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ def __init__(
self.instance = instance
self.update_fields = set()

@abstractmethod
def _create_related(
self,
**kwargs,
Expand Down Expand Up @@ -78,3 +77,6 @@ def partial_update(
if force_save:
self.save()
return self.instance

def delete(self) -> None:
self.instance.delete()
67 changes: 61 additions & 6 deletions backend/src/generics/fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,15 @@
UserDateFormat,
)
from src.accounts.models import Account
from src.processes.models.templates.template import Template
from src.generics.messages import (
MSG_GE_0002,
MSG_GE_0007,
MSG_GE_0020,
)


class AccountPrimaryKeyRelatedField(serializers.PrimaryKeyRelatedField):
class AccountQstMixin:

def _get_account(self) -> Account:
account = self.context.get('account')
Expand All @@ -28,14 +29,31 @@ def _get_account(self) -> Account:
account = request.user.account
if not account:
raise Exception(
'Account not provided for AccountPrimaryKeyRelatedField',
'Account not provided for AccountQstMixin',
)
return account


class TemplateQstMixin:

def _get_template(self) -> Template:
template = self.context.get('template')
if not template:
raise Exception(
'Template not provided for TemplateQstMixin',
)
return template


class AccountPrimaryKeyRelatedField(
AccountQstMixin,
serializers.PrimaryKeyRelatedField,
):

def get_queryset(self):
queryset = super().get_queryset()
account = self._get_account()
if account is None or queryset is None:
if queryset is None:
raise Exception(MSG_GE_0002)
return queryset.filter(account=account)

Expand All @@ -53,6 +71,30 @@ def to_internal_value(self, data):
return super().to_internal_value(data)


class RelatedApiNameField(
AccountQstMixin,
TemplateQstMixin,
serializers.SlugRelatedField,
):

def __init__(self, **kwargs):
super().__init__(slug_field='api_name', **kwargs)

def get_queryset(self):
queryset = super().get_queryset()
account = self._get_account()
template = self._get_template()
if queryset is None:
raise Exception(MSG_GE_0002)
return queryset.filter(account=account, template=template)

def to_internal_value(self, data):

"""Convert api_name -> to object before saving """

return super().to_internal_value(data)


class AnyField(serializers.Field):

def to_internal_value(self, data):
Expand All @@ -65,15 +107,28 @@ def to_representation(self, value):
class RelatedListField(serializers.ListField):

def to_representation(self, objects):
"""
List of objects -> List of objects ids.
"""

""" List of objects -> List of objects ids """

return [
self.child.to_representation(item.id)
for item in objects.all()
]


class RelatedApiNameListField(serializers.ListField):

child = serializers.CharField()

def to_representation(self, data):

""" List of objects -> List of objects api_name's """

if hasattr(data, 'all'):
return [field.api_name for field in data.all()]
return [field.api_name for field in data if hasattr(field, 'api_name')]


class CommaSeparatedListField(serializers.ListField):

def get_value(self, dictionary):
Expand Down
2 changes: 1 addition & 1 deletion backend/src/generics/locale/de/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-04-07 11:48+0000\n"
"POT-Creation-Date: 2026-04-13 23:53+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
Expand Down
2 changes: 1 addition & 1 deletion backend/src/generics/locale/django.pot
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-04-07 11:48+0000\n"
"POT-Creation-Date: 2026-04-13 23:53+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
Expand Down
2 changes: 1 addition & 1 deletion backend/src/generics/locale/es/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-04-07 11:48+0000\n"
"POT-Creation-Date: 2026-04-13 23:53+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
Expand Down
Loading