Skip to content

Commit c00c11d

Browse files
Clone use cases from the use case store as draft (jsocol#149)
* Clone use cases from the use case store as draft * Upgrade requirements and precommits
1 parent a467841 commit c00c11d

File tree

7 files changed

+38
-46
lines changed

7 files changed

+38
-46
lines changed

.pre-commit-config.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ repos:
6060
- id: flake8
6161

6262
- repo: https://github.com/pre-commit/mirrors-mypy
63-
rev: v0.950
63+
rev: v0.960
6464
hooks:
6565
- id: mypy
6666
args: [--ignore-missing-imports]

requirements-base.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# File generated automatically. Do not update it manually.
22
# Update files in the requirements folder instead.
3-
pip==22.0.4
4-
setuptools==62.2.0
3+
pip==22.1.1
4+
setuptools==62.3.2
55
wheel==0.37.1

requirements-dev.txt

+19-19
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
# File generated automatically. Do not update it manually.
22
# Update files in the requirements folder instead.
33
alembic==1.7.7
4-
anyio==3.5.0
5-
apispec==5.2.1
4+
anyio==3.6.1
5+
apispec==5.2.2
66
apispec-webframeworks==0.5.2
7-
asgiref==3.5.1
7+
asgiref==3.5.2
88
astroid==2.11.5
99
attrs==21.4.0
1010
black==22.3.0
11-
boto3==1.22.11
12-
botocore==1.25.11
11+
boto3==1.23.10
12+
botocore==1.26.10
1313
callee==0.3.1
14-
certifi==2021.10.8
14+
certifi==2022.5.18.1
1515
cffi==1.15.0
1616
cfgv==3.3.1
1717
charset-normalizer==2.0.12
@@ -20,19 +20,19 @@ content-size-limit-asgi==0.1.5
2020
cryptography==37.0.2
2121
decopatch==1.4.10
2222
dependency-injector==4.39.1
23-
dill==0.3.4
23+
dill==0.3.5.1
2424
distlib==0.3.4
2525
factory-boy==3.2.1
26-
Faker==13.11.0
27-
fastapi==0.77.1
28-
filelock==3.6.0
26+
Faker==13.12.0
27+
fastapi==0.78.0
28+
filelock==3.7.0
2929
Flask==2.1.2
3030
freezegun==1.2.1
3131
funcy==1.17
3232
greenlet==1.1.2
3333
gunicorn==20.1.0
3434
h11==0.13.0
35-
identify==2.5.0
35+
identify==2.5.1
3636
idna==3.3
3737
iniconfig==1.1.1
3838
isort==5.10.1
@@ -43,13 +43,13 @@ lazy-object-proxy==1.7.1
4343
makefun==1.13.1
4444
Mako==1.2.0
4545
MarkupSafe==2.1.1
46-
marshmallow==3.15.0
46+
marshmallow==3.16.0
4747
marshmallow-dataclass==8.5.3
4848
marshmallow-enum==1.5.1
4949
mccabe==0.7.0
5050
more-itertools==8.13.0
51-
moto==3.1.8
52-
mypy==0.950
51+
moto==3.1.11
52+
mypy==0.960
5353
mypy-extensions==0.4.3
5454
nodeenv==1.6.0
5555
packaging==21.3
@@ -61,23 +61,23 @@ pre-commit==2.19.0
6161
psycopg2-binary==2.9.3
6262
py==1.11.0
6363
pycparser==2.21
64-
pydantic==1.9.0
65-
pylint==2.13.8
64+
pydantic==1.9.1
65+
pylint==2.13.9
6666
pyparsing==3.0.9
6767
pytest==7.1.2
68-
pytest-cases==3.6.11
68+
pytest-cases==3.6.13
6969
pytest-freezegun==0.4.2
7070
pytest-mock==3.7.0
7171
pytest-pycharm==0.7.0
7272
pytest-responses==0.5.0
7373
python-dateutil==2.8.2
7474
python-dotenv==0.20.0
75-
python-magic==0.4.25
75+
python-magic==0.4.26
7676
python-multipart==0.0.5
7777
pytz==2022.1
7878
PyYAML==6.0
7979
requests==2.27.1
80-
responses==0.20.0
80+
responses==0.21.0
8181
s3transfer==0.5.2
8282
sentry-sdk==1.5.12
8383
six==1.16.0

requirements.txt

+9-9
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
# File generated automatically. Do not update it manually.
22
# Update files in the requirements folder instead.
33
alembic==1.7.7
4-
anyio==3.5.0
5-
asgiref==3.5.1
6-
boto3==1.22.11
7-
botocore==1.25.11
8-
certifi==2021.10.8
4+
anyio==3.6.1
5+
asgiref==3.5.2
6+
boto3==1.23.10
7+
botocore==1.26.10
8+
certifi==2022.5.18.1
99
charset-normalizer==2.0.12
1010
click==8.1.3
1111
content-size-limit-asgi==0.1.5
1212
dependency-injector==4.39.1
13-
fastapi==0.77.1
13+
fastapi==0.78.0
1414
funcy==1.17
1515
greenlet==1.1.2
1616
gunicorn==20.1.0
@@ -19,19 +19,19 @@ idna==3.3
1919
jmespath==1.0.0
2020
Mako==1.2.0
2121
MarkupSafe==2.1.1
22-
marshmallow==3.15.0
22+
marshmallow==3.16.0
2323
marshmallow-dataclass==8.5.3
2424
marshmallow-enum==1.5.1
2525
more-itertools==8.13.0
2626
mypy-extensions==0.4.3
2727
packaging==21.3
2828
pika==1.2.1
2929
psycopg2-binary==2.9.3
30-
pydantic==1.9.0
30+
pydantic==1.9.1
3131
pyparsing==3.0.9
3232
python-dateutil==2.8.2
3333
python-dotenv==0.20.0
34-
python-magic==0.4.25
34+
python-magic==0.4.26
3535
python-multipart==0.0.5
3636
requests==2.27.1
3737
s3transfer==0.5.2

tests/api/namespace/use_case/test_clone_use_case.py

+7-5
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from tests.factories.use_case_factory import UseCaseFactory
1010
from tests.factories.use_case_version_factory import UseCaseVersionFactory
1111
from tests.factories.variable_factory import VariableFactory
12+
from use_case_executor.adapters.database_repository.models import UseCaseVersion
1213
from use_case_executor.adapters.database_repository.models.use_case import UseCase
1314
from use_case_executor.adapters.database_repository.models.variable import Variable
1415
from use_case_executor.domain.flow.edge_data.quick_reply_data import QuickReplyData
@@ -260,14 +261,13 @@ def test_clone_use_case_on_a_use_case_with_production_only_setting(
260261
assert new_use_case.service_record_id == payload["service_record_id"]
261262
assert new_use_case.intent_record_id == payload["intent_record_id"]
262263

264+
assert new_use_case.production_version_id is None
263265
if has_production_flow:
264266
assert len(new_use_case.versions) == 1
265267
version = new_use_case.versions[0]
266-
assert new_use_case.production_version_id == version.id
267268
assert version.flow == prod_version.flow
268269
else:
269270
assert len(new_use_case.versions) == 0
270-
assert new_use_case.production_version_id is None
271271

272272
assert response.json() == {
273273
"instance_id": payload["instance_id"],
@@ -538,10 +538,12 @@ def test_creates_new_variables_if_cloning_to_other_instance( # pylint: disable=
538538
assert new_variable.name == variable.name
539539
assert new_variable.type == variable.type
540540

541-
new_use_case = session.query(UseCase).filter(UseCase.uuid != use_case.uuid).one()
542-
new_flow = common.dict_flow_to_domain_flow(
543-
flow=new_use_case.production_version.flow
541+
new_use_case_version = (
542+
session.query(UseCaseVersion)
543+
.filter(UseCaseVersion.use_case_uuid != use_case.uuid)
544+
.one()
544545
)
546+
new_flow = common.dict_flow_to_domain_flow(flow=new_use_case_version.flow)
545547

546548
new_answer_node_data = new_flow.get_node(uuid=answer_node_uuid).data
547549
assert isinstance(new_answer_node_data, AnswerData)

use_case_executor/api/namespaces/use_cases/clone.py

-6
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,6 @@ def clone_use_case(
3939
service_record_id=clone_use_case_model_in.service_record_id,
4040
intent_record_id=clone_use_case_model_in.intent_record_id,
4141
flow=flow_to_clone,
42-
set_new_version_as_production=(
43-
clone_behavior == CloneBehavior.PRODUCTION_FLOW_ONLY
44-
),
4542
clone_variables=(clone_use_case_model_in.instance_id != use_case.instance_id),
4643
)
4744
session.commit()
@@ -90,9 +87,6 @@ def clone_use_case_as_main_menu(
9087
service_record_id=clone_use_case_as_main_menu_model_in.service_record_id,
9188
intent_record_id=clone_use_case_as_main_menu_model_in.intent_record_id,
9289
flow=flow_to_clone,
93-
set_new_version_as_production=(
94-
clone_behavior == CloneBehavior.PRODUCTION_FLOW_ONLY
95-
),
9690
clone_variables=False,
9791
)
9892
session.commit()

use_case_executor/api/namespaces/use_cases/clone_helpers.py

-4
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ def create_new_use_case_and_version(
5555
intent_record_id: int,
5656
service_record_id: int,
5757
flow: Optional[dict],
58-
set_new_version_as_production: bool,
5958
clone_variables: bool,
6059
) -> UseCase:
6160
new_use_case = UseCase(
@@ -75,9 +74,6 @@ def create_new_use_case_and_version(
7574
)
7675
new_use_case.versions.append(new_version)
7776

78-
if set_new_version_as_production:
79-
new_use_case.production_version = new_version
80-
8177
with helpers.handle_use_case_unique_violations():
8278
session.flush()
8379

0 commit comments

Comments
 (0)