Skip to content

Commit 42e8920

Browse files
committed
fix fps setting
1 parent a3dae48 commit 42e8920

File tree

6 files changed

+38
-8
lines changed

6 files changed

+38
-8
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ class AnnotationStatuses(StrictStr):
175175
def validate(cls, value: Union[str]) -> Union[str]:
176176
if value.lower() not in AnnotationStatus.values():
177177
raise TypeError(
178-
f"Available an``notation_statuses are {', '.join(AnnotationStatus.titles())}. "
178+
f"Available an notation_statuses are {', '.join(AnnotationStatus.titles())}. "
179179
)
180180
return value
181181

src/superannotate/lib/app/serializers.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ def _serialize(
6262
return entity.dict(by_alias=by_alias, exclude=exclude)
6363
return entity.to_dict()
6464

65-
6665
@classmethod
6766
def serialize_iterable(
6867
cls,

src/superannotate/lib/core/entities/base.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from pydantic import BaseModel
1010
from pydantic import Extra
1111
from pydantic import Field
12+
from pydantic import StrictBool
1213
from pydantic import StrictFloat
1314
from pydantic import StrictInt
1415
from pydantic import StrictStr
@@ -46,7 +47,7 @@ class SettingEntity(BaseModel):
4647
id: Optional[int]
4748
project_id: Optional[int]
4849
attribute: str
49-
value: Union[StrictStr, StrictInt, StrictFloat]
50+
value: Union[StrictStr, StrictInt, StrictFloat, StrictBool]
5051

5152
class Config:
5253
extra = Extra.ignore

src/superannotate/lib/core/usecases/projects.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from lib.core.entities import AnnotationClassEntity
1212
from lib.core.entities import FolderEntity
1313
from lib.core.entities import ProjectEntity
14+
from lib.core.entities import SettingEntity
1415
from lib.core.entities import TeamEntity
1516
from lib.core.entities import WorkflowEntity
1617
from lib.core.exceptions import AppException
@@ -190,6 +191,11 @@ def validate_settings(self):
190191
if not (0.0001 < setting.value < 120) or decimal.Decimal(
191192
str(setting.value)).as_tuple().exponent < -3:
192193
raise AppValidationException("The FrameRate value range is between 0.001 - 120")
194+
frame_mode = next(filter(lambda x: x.attribute == "FrameMode", self._project.settings), None)
195+
if not frame_mode:
196+
self._project.settings.append(SettingEntity(attribute="FrameMode", value=1))
197+
else:
198+
frame_mode.value = 1
193199
else:
194200
raise AppValidationException("The FrameRate value should be float")
195201

src/superannotate/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "4.3.3dev6"
1+
__version__ = "4.3.3dev7"

tests/integration/settings/test_settings.py

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,8 +103,8 @@ def test_frame_rate_invalid_range_value(self):
103103

104104

105105
class TestVideoSettings(BaseTestCase):
106-
PROJECT_NAME = "TestVideoSettings"
107-
SECOND_PROJECT_NAME = "TestVideoSettings"
106+
PROJECT_NAME = "TestVideoSettings12"
107+
SECOND_PROJECT_NAME = "TestVideoSettings2"
108108
PROJECT_TYPE = "Video"
109109

110110
def test_frame_rate(self):
@@ -113,11 +113,14 @@ def test_frame_rate(self):
113113
self.PROJECT_DESCRIPTION,
114114
self.PROJECT_TYPE,
115115
[{"attribute": "FrameRate", "value": 1}])
116-
settings = sa.get_project_settings(self.SECOND_PROJECT_NAME)
116+
settings = sa.get_project_settings(self.PROJECT_NAME)
117117
for setting in settings:
118118
if setting["attribute"] == "FrameRate":
119119
assert setting["value"] == 1
120120
break
121+
elif setting["attribute"] == "FrameMode":
122+
assert setting["value"]
123+
break
121124
else:
122125
raise Exception("Test failed")
123126

@@ -127,11 +130,14 @@ def test_frame_rate_float(self):
127130
self.PROJECT_DESCRIPTION,
128131
self.PROJECT_TYPE,
129132
[{"attribute": "FrameRate", "value": 1.3}])
130-
settings = sa.get_project_settings(self.SECOND_PROJECT_NAME)
133+
settings = sa.get_project_settings(self.PROJECT_NAME)
131134
for setting in settings:
132135
if setting["attribute"] == "FrameRate":
133136
assert setting["value"] == 1.3
134137
break
138+
elif setting["attribute"] == "FrameMode":
139+
assert setting["value"]
140+
break
135141
else:
136142
raise Exception("Test failed")
137143

@@ -150,3 +156,21 @@ def test_frame_rate_invalid_str_value(self):
150156
self.PROJECT_DESCRIPTION,
151157
self.PROJECT_TYPE,
152158
[{"attribute": "FrameRate", "value": "1"}])
159+
160+
def test_frames_reset(self):
161+
sa.create_project(
162+
self.PROJECT_NAME,
163+
self.PROJECT_DESCRIPTION,
164+
self.PROJECT_TYPE,
165+
[{"attribute": "FrameRate", "value": 1.3}])
166+
sa.rename_project(self.PROJECT_NAME, self.SECOND_PROJECT_NAME)
167+
settings = sa.get_project_settings(self.SECOND_PROJECT_NAME)
168+
for setting in settings:
169+
if setting["attribute"] == "FrameRate":
170+
assert setting["value"] == 1.3
171+
break
172+
elif setting["attribute"] == "FrameMode":
173+
assert setting["value"]
174+
break
175+
else:
176+
raise Exception("Test failed")

0 commit comments

Comments
 (0)