pyl
This commit is contained in:
parent
314f7de40a
commit
aa8985f3aa
|
@ -35,9 +35,9 @@ class HumanTaskModel(SpiffworkflowBaseDBModel):
|
||||||
ForeignKey(ProcessInstanceModel.id), nullable=False # type: ignore
|
ForeignKey(ProcessInstanceModel.id), nullable=False # type: ignore
|
||||||
)
|
)
|
||||||
lane_assignment_id: int | None = db.Column(ForeignKey(GroupModel.id))
|
lane_assignment_id: int | None = db.Column(ForeignKey(GroupModel.id))
|
||||||
completed_by_user_id: int = db.Column(ForeignKey(UserModel.id), nullable=True)
|
completed_by_user_id: int = db.Column(ForeignKey(UserModel.id), nullable=True) # type: ignore
|
||||||
|
|
||||||
actual_owner_id: int = db.Column(ForeignKey(UserModel.id))
|
actual_owner_id: int = db.Column(ForeignKey(UserModel.id)) # type: ignore
|
||||||
# actual_owner: RelationshipProperty[UserModel] = relationship(UserModel)
|
# actual_owner: RelationshipProperty[UserModel] = relationship(UserModel)
|
||||||
|
|
||||||
form_file_name: str | None = db.Column(db.String(50))
|
form_file_name: str | None = db.Column(db.String(50))
|
||||||
|
|
|
@ -29,4 +29,4 @@ class HumanTaskUserModel(SpiffworkflowBaseDBModel):
|
||||||
human_task_id = db.Column(
|
human_task_id = db.Column(
|
||||||
ForeignKey(HumanTaskModel.id), nullable=False, index=True # type: ignore
|
ForeignKey(HumanTaskModel.id), nullable=False, index=True # type: ignore
|
||||||
)
|
)
|
||||||
user_id = db.Column(ForeignKey(UserModel.id), nullable=False, index=True)
|
user_id = db.Column(ForeignKey(UserModel.id), nullable=False, index=True) # type: ignore
|
||||||
|
|
|
@ -27,7 +27,7 @@ class PrincipalModel(SpiffworkflowBaseDBModel):
|
||||||
__table_args__ = (CheckConstraint("NOT(user_id IS NULL AND group_id IS NULL)"),)
|
__table_args__ = (CheckConstraint("NOT(user_id IS NULL AND group_id IS NULL)"),)
|
||||||
|
|
||||||
id = db.Column(db.Integer, primary_key=True)
|
id = db.Column(db.Integer, primary_key=True)
|
||||||
user_id = db.Column(ForeignKey(UserModel.id), nullable=True, unique=True)
|
user_id = db.Column(ForeignKey(UserModel.id), nullable=True, unique=True) # type: ignore
|
||||||
group_id = db.Column(ForeignKey(GroupModel.id), nullable=True, unique=True)
|
group_id = db.Column(ForeignKey(GroupModel.id), nullable=True, unique=True)
|
||||||
|
|
||||||
user = relationship("UserModel", viewonly=True)
|
user = relationship("UserModel", viewonly=True)
|
||||||
|
|
|
@ -57,7 +57,7 @@ class ProcessInstanceModel(SpiffworkflowBaseDBModel):
|
||||||
process_model_display_name: str = db.Column(
|
process_model_display_name: str = db.Column(
|
||||||
db.String(255), nullable=False, index=True
|
db.String(255), nullable=False, index=True
|
||||||
)
|
)
|
||||||
process_initiator_id: int = db.Column(ForeignKey(UserModel.id), nullable=False)
|
process_initiator_id: int = db.Column(ForeignKey(UserModel.id), nullable=False) # type: ignore
|
||||||
process_initiator = relationship("UserModel")
|
process_initiator = relationship("UserModel")
|
||||||
|
|
||||||
active_human_tasks = relationship(
|
active_human_tasks = relationship(
|
||||||
|
|
|
@ -70,7 +70,7 @@ class ProcessInstanceReportModel(SpiffworkflowBaseDBModel):
|
||||||
id: int = db.Column(db.Integer, primary_key=True)
|
id: int = db.Column(db.Integer, primary_key=True)
|
||||||
identifier: str = db.Column(db.String(50), nullable=False, index=True)
|
identifier: str = db.Column(db.String(50), nullable=False, index=True)
|
||||||
report_metadata: dict = deferred(db.Column(db.JSON)) # type: ignore
|
report_metadata: dict = deferred(db.Column(db.JSON)) # type: ignore
|
||||||
created_by_id = db.Column(ForeignKey(UserModel.id), nullable=False, index=True)
|
created_by_id = db.Column(ForeignKey(UserModel.id), nullable=False, index=True) # type: ignore
|
||||||
created_by = relationship("UserModel")
|
created_by = relationship("UserModel")
|
||||||
created_at_in_seconds = db.Column(db.Integer)
|
created_at_in_seconds = db.Column(db.Integer)
|
||||||
updated_at_in_seconds = db.Column(db.Integer)
|
updated_at_in_seconds = db.Column(db.Integer)
|
||||||
|
|
|
@ -17,7 +17,7 @@ class SecretModel(SpiffworkflowBaseDBModel):
|
||||||
id: int = db.Column(db.Integer, primary_key=True)
|
id: int = db.Column(db.Integer, primary_key=True)
|
||||||
key: str = db.Column(db.String(50), unique=True, nullable=False)
|
key: str = db.Column(db.String(50), unique=True, nullable=False)
|
||||||
value: str = db.Column(db.Text(), nullable=False)
|
value: str = db.Column(db.Text(), nullable=False)
|
||||||
user_id: int = db.Column(ForeignKey(UserModel.id), nullable=False)
|
user_id: int = db.Column(ForeignKey(UserModel.id), nullable=False) # type: ignore
|
||||||
updated_at_in_seconds: int = db.Column(db.Integer)
|
updated_at_in_seconds: int = db.Column(db.Integer)
|
||||||
created_at_in_seconds: int = db.Column(db.Integer)
|
created_at_in_seconds: int = db.Column(db.Integer)
|
||||||
|
|
||||||
|
|
|
@ -26,9 +26,7 @@ class UserModel(SpiffworkflowBaseDBModel):
|
||||||
__table_args__ = (db.UniqueConstraint("service", "service_id", name="service_key"),)
|
__table_args__ = (db.UniqueConstraint("service", "service_id", name="service_key"),)
|
||||||
|
|
||||||
id: int = db.Column(db.Integer, primary_key=True)
|
id: int = db.Column(db.Integer, primary_key=True)
|
||||||
username: str = db.Column(
|
username: str = db.Column(db.String(255), nullable=False, unique=True)
|
||||||
db.String(255), nullable=False, unique=True
|
|
||||||
)
|
|
||||||
|
|
||||||
service = db.Column(
|
service = db.Column(
|
||||||
db.String(255), nullable=False, unique=False
|
db.String(255), nullable=False, unique=False
|
||||||
|
|
|
@ -17,7 +17,7 @@ class UserGroupAssignmentModel(SpiffworkflowBaseDBModel):
|
||||||
)
|
)
|
||||||
|
|
||||||
id = db.Column(db.Integer, primary_key=True)
|
id = db.Column(db.Integer, primary_key=True)
|
||||||
user_id = db.Column(ForeignKey(UserModel.id), nullable=False)
|
user_id = db.Column(ForeignKey(UserModel.id), nullable=False) # type: ignore
|
||||||
group_id = db.Column(ForeignKey(GroupModel.id), nullable=False)
|
group_id = db.Column(ForeignKey(GroupModel.id), nullable=False)
|
||||||
|
|
||||||
group = relationship("GroupModel", overlaps="groups,user_group_assignments,users") # type: ignore
|
group = relationship("GroupModel", overlaps="groups,user_group_assignments,users") # type: ignore
|
||||||
|
|
|
@ -434,7 +434,7 @@ def _get_tasks(
|
||||||
ProcessInstanceModel.status.label("process_instance_status"), # type: ignore
|
ProcessInstanceModel.status.label("process_instance_status"), # type: ignore
|
||||||
ProcessInstanceModel.updated_at_in_seconds,
|
ProcessInstanceModel.updated_at_in_seconds,
|
||||||
ProcessInstanceModel.created_at_in_seconds,
|
ProcessInstanceModel.created_at_in_seconds,
|
||||||
UserModel.username.label("process_initiator_username"),
|
UserModel.username.label("process_initiator_username"), # type: ignore
|
||||||
GroupModel.identifier.label("assigned_user_group_identifier"),
|
GroupModel.identifier.label("assigned_user_group_identifier"),
|
||||||
HumanTaskModel.task_name,
|
HumanTaskModel.task_name,
|
||||||
HumanTaskModel.task_title,
|
HumanTaskModel.task_title,
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
"""users_controller."""
|
"""Users_controller."""
|
||||||
|
|
||||||
import flask
|
import flask
|
||||||
from spiffworkflow_backend.models.user import UserModel
|
|
||||||
from flask import make_response
|
|
||||||
from flask import jsonify
|
|
||||||
from flask import g
|
from flask import g
|
||||||
|
from flask import jsonify
|
||||||
|
from flask import make_response
|
||||||
|
|
||||||
|
from spiffworkflow_backend.models.user import UserModel
|
||||||
|
|
||||||
|
|
||||||
def user_search(username_prefix: str) -> flask.wrappers.Response:
|
def user_search(username_prefix: str) -> flask.wrappers.Response:
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
"""test_users_controller."""
|
"""Test_users_controller."""
|
||||||
|
|
||||||
from tests.spiffworkflow_backend.helpers.base_test import BaseTest
|
|
||||||
from spiffworkflow_backend.models.user import UserModel
|
|
||||||
from flask.testing import FlaskClient
|
|
||||||
from flask.app import Flask
|
from flask.app import Flask
|
||||||
|
from flask.testing import FlaskClient
|
||||||
|
from tests.spiffworkflow_backend.helpers.base_test import BaseTest
|
||||||
|
|
||||||
|
from spiffworkflow_backend.models.user import UserModel
|
||||||
|
|
||||||
|
|
||||||
class TestUsersController(BaseTest):
|
class TestUsersController(BaseTest):
|
||||||
|
@ -22,13 +22,19 @@ class TestUsersController(BaseTest):
|
||||||
self.find_or_create_user(username="abc")
|
self.find_or_create_user(username="abc")
|
||||||
self.find_or_create_user(username="ac")
|
self.find_or_create_user(username="ac")
|
||||||
|
|
||||||
self._assert_search_has_count(client, with_super_admin_user, 'aa', 1)
|
self._assert_search_has_count(client, with_super_admin_user, "aa", 1)
|
||||||
self._assert_search_has_count(client, with_super_admin_user, 'ab', 2)
|
self._assert_search_has_count(client, with_super_admin_user, "ab", 2)
|
||||||
self._assert_search_has_count(client, with_super_admin_user, 'ac', 1)
|
self._assert_search_has_count(client, with_super_admin_user, "ac", 1)
|
||||||
self._assert_search_has_count(client, with_super_admin_user, 'ad', 0)
|
self._assert_search_has_count(client, with_super_admin_user, "ad", 0)
|
||||||
self._assert_search_has_count(client, with_super_admin_user, 'a', 4)
|
self._assert_search_has_count(client, with_super_admin_user, "a", 4)
|
||||||
|
|
||||||
def _assert_search_has_count(self, client: FlaskClient, with_super_admin_user: UserModel, username_prefix: str, expected_count: int) -> None:
|
def _assert_search_has_count(
|
||||||
|
self,
|
||||||
|
client: FlaskClient,
|
||||||
|
with_super_admin_user: UserModel,
|
||||||
|
username_prefix: str,
|
||||||
|
expected_count: int,
|
||||||
|
) -> None:
|
||||||
"""_assert_search_has_count."""
|
"""_assert_search_has_count."""
|
||||||
response = client.get(
|
response = client.get(
|
||||||
f"/v1.0/users/search?username_prefix={username_prefix}",
|
f"/v1.0/users/search?username_prefix={username_prefix}",
|
||||||
|
@ -36,6 +42,6 @@ class TestUsersController(BaseTest):
|
||||||
)
|
)
|
||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
assert response.json
|
assert response.json
|
||||||
assert response.json['users'] is not None
|
assert response.json["users"] is not None
|
||||||
assert response.json['username_prefix'] == username_prefix
|
assert response.json["username_prefix"] == username_prefix
|
||||||
assert len(response.json['users']) == expected_count
|
assert len(response.json["users"]) == expected_count
|
||||||
|
|
Loading…
Reference in New Issue