Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
12 changes: 12 additions & 0 deletions source/app/blueprints/rest/v2/cases.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
from app.business.cases import cases_filter
from app.schema.marshables import CaseSchemaForAPIV2
from app.schema.marshables import CaseDetailsSchema
from app.datamgmt.manage.manage_users_db import get_users_list_restricted_from_case
from app.blueprints.access_controls import ac_api_requires
from app.blueprints.access_controls import ac_current_user_has_customer_access
from app.blueprints.access_controls import ac_fast_check_current_user_has_case_access
Expand Down Expand Up @@ -365,3 +366,14 @@ def rest_v2_cases_update(identifier):
@ac_api_requires(Permissions.standard_user)
def case_routes_delete(identifier):
return cases_operations.delete(identifier)


@cases_blueprint.get('/<int:case_identifier>/users')
@ac_api_requires()
def case_get_users(case_identifier):
if not ac_fast_check_current_user_has_case_access(case_identifier,
[CaseAccessLevel.read_only, CaseAccessLevel.full_access]):
return ac_api_return_access_denied(caseid=case_identifier)

users = get_users_list_restricted_from_case(case_identifier)
return response_api_success(users)
1 change: 1 addition & 0 deletions source/app/models/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -416,6 +416,7 @@ class CaseTasks(db.Model):
user_close = relationship('User', foreign_keys=[task_userid_close])
user_update = relationship('User', foreign_keys=[task_userid_update])
status = relationship('TaskStatus', foreign_keys=[task_status_id])
task_assignees = relationship('TaskAssignee', foreign_keys='TaskAssignee.task_id', overlaps='task', viewonly=True)


class Tags(db.Model):
Expand Down
13 changes: 11 additions & 2 deletions source/app/schema/marshables.py
Original file line number Diff line number Diff line change
Expand Up @@ -1894,6 +1894,12 @@ class Meta:
unknown = EXCLUDE


class TaskAssigneeForTaskSchema(ma.Schema):
id = fields.Integer(attribute='user.id')
user = fields.String(attribute='user.user')
name = fields.String(attribute='user.name')


class CaseTaskSchema(ma.SQLAlchemyAutoSchema):
"""Schema for serializing and deserializing CaseTask objects.

Expand All @@ -1903,11 +1909,14 @@ class CaseTaskSchema(ma.SQLAlchemyAutoSchema):
"""
task_title: str = auto_field('task_title', required=True, validate=Length(min=2), allow_none=False)
task_status_id: int = auto_field('task_status_id', required=True)
task_assignees_id: Optional[List[int]] = fields.List(fields.Integer, required=False, allow_none=True)
task_assignees: Optional[List[Dict[str, Any]]] = fields.List(fields.Dict, required=False, allow_none=True)
task_assignees_id = fields.Method('get_task_assignees_id', dump_only=True)
task_assignees = ma.Nested(TaskAssigneeForTaskSchema, many=True, dump_only=True)
status = ma.Nested(TaskStatusSchema)
case = ma.Nested(CaseSchema, only=['case_name', 'case_id'])

def get_task_assignees_id(self, obj):
return [ta.user_id for ta in (obj.task_assignees or [])]

class Meta:
model = CaseTasks
load_instance = True
Expand Down