Skip to content

Commit 9b46477

Browse files
authored
Merge pull request #744 from superannotateai/custom_fields
fix cuatom_field timstamp
2 parents 2bcc01e + aae3312 commit 9b46477

File tree

4 files changed

+31
-4
lines changed

4 files changed

+31
-4
lines changed

src/superannotate/lib/app/interface/sdk_interface.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
from lib.app.serializers import SettingsSerializer
4444
from lib.app.serializers import TeamSerializer
4545
from lib.core import LIMITED_FUNCTIONS
46+
from lib.core.entities.work_managament import WMUserTypeEnum
4647
from lib.core import entities
4748
from lib.core.conditions import CONDITION_EQ as EQ
4849
from lib.core.conditions import Condition
@@ -358,9 +359,13 @@ def set_user_custom_field(
358359
value=1738671238.7
359360
)
360361
"""
361-
user_id = self.controller.work_management.get_user_metadata(pk=pk).id
362+
user = self.controller.work_management.get_user_metadata(pk=pk)
363+
if user.role == WMUserTypeEnum.TeamOwner:
364+
raise AppException(
365+
"Setting custom fields for the Team Owner is not allowed."
366+
)
362367
self.controller.work_management.set_custom_field_value(
363-
entity_id=user_id,
368+
entity_id=user.id,
364369
field_name=custom_field_name,
365370
value=value,
366371
entity=CustomFieldEntityEnum.CONTRIBUTOR,

src/superannotate/lib/infrastructure/controller.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ def set_custom_field_value(
145145
template_id, entity=entity
146146
)
147147
# timestamp: convert seconds to milliseconds
148-
if component_id == CustomFieldType.DATE_PICKER.value:
148+
if component_id == CustomFieldType.DATE_PICKER.value and value is not None:
149149
try:
150150
value = value * 1000
151151
except Exception:

src/superannotate/lib/infrastructure/query_builder.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ def _handle_special_fields(self, keys: List[str], val):
211211
component_id = self._service_provider.get_custom_field_component_id(
212212
field_id=int(keys[1]), entity=self._entity
213213
)
214-
if component_id == CustomFieldType.DATE_PICKER.value:
214+
if component_id == CustomFieldType.DATE_PICKER.value and val is not None:
215215
try:
216216
val = val * 1000
217217
except Exception:

tests/integration/work_management/test_user_custom_fields.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import time
22
from unittest import TestCase
33

4+
from lib.core.entities.work_managament import WMUserTypeEnum
45
from lib.core.exceptions import AppException
56
from src.superannotate import SAClient
67
from src.superannotate.lib.core.enums import CustomFieldEntityEnum
@@ -146,6 +147,19 @@ def test_list_users(self):
146147
)[0]
147148
assert scapegoat["custom_fields"]["SDK_test_date_picker"] == value
148149

150+
# by date_picker None case
151+
sa.set_user_custom_field(
152+
scapegoat["email"],
153+
custom_field_name="SDK_test_date_picker",
154+
value=None,
155+
)
156+
assert len(
157+
sa.list_users(
158+
include=["custom_fields"],
159+
custom_field__SDK_test_date_picker=None,
160+
)
161+
) == len(users)
162+
149163
# by email__contains
150164
assert len(sa.list_users(email__contains="@superannotate.com")) == len(
151165
[i for i in users if i["email"].endswith("@superannotate.com")]
@@ -173,7 +187,15 @@ def test_set_user_custom_field_validation(self):
173187
)
174188
error_template_select = error_template + "\nValid options are: {options}."
175189
users = sa.list_users()
190+
team_owner = [u for u in users if u["role"] == WMUserTypeEnum.TeamOwner.name][0]
176191
scapegoat = [u for u in users if u["role"] == "Contributor"][0]
192+
193+
# test for Team_Owner
194+
with self.assertRaisesRegexp(
195+
AppException, "Setting custom fields for the Team Owner is not allowed."
196+
):
197+
sa.set_user_custom_field(team_owner["email"], "SDK_test_text", 123)
198+
177199
# test for text
178200
with self.assertRaisesRegexp(AppException, error_template.format(type="str")):
179201
sa.set_user_custom_field(scapegoat["email"], "SDK_test_text", 123)

0 commit comments

Comments
 (0)