summaryrefslogtreecommitdiff
path: root/django/factwise-python/factwise_submission/plannerapp/base/team_base.py
diff options
context:
space:
mode:
Diffstat (limited to 'django/factwise-python/factwise_submission/plannerapp/base/team_base.py')
-rw-r--r--django/factwise-python/factwise_submission/plannerapp/base/team_base.py133
1 files changed, 133 insertions, 0 deletions
diff --git a/django/factwise-python/factwise_submission/plannerapp/base/team_base.py b/django/factwise-python/factwise_submission/plannerapp/base/team_base.py
new file mode 100644
index 0000000..29b1a5d
--- /dev/null
+++ b/django/factwise-python/factwise_submission/plannerapp/base/team_base.py
@@ -0,0 +1,133 @@
+class TeamBase:
+ """
+ Base interface implementation for API's to manage teams.
+ For simplicity a single team manages a single project. And there is a separate team per project.
+ Users can be
+ """
+
+ # create a team
+ def create_team(self, request: str) -> str:
+ """
+ :param request: A json string with the team details
+ {
+ "name" : "<team_name>",
+ "description" : "<some description>",
+ "admin": "<id of a user>"
+ }
+ :return: A json string with the response {"id" : "<team_id>"}
+
+ Constraint:
+ * Team name must be unique
+ * Name can be max 64 characters
+ * Description can be max 128 characters
+ """
+ pass
+
+ # list all teams
+ def list_teams(self) -> str:
+ """
+ :return: A json list with the response.
+ [
+ {
+ "name" : "<team_name>",
+ "description" : "<some description>",
+ "creation_time" : "<some date:time format>",
+ "admin": "<id of a user>"
+ }
+ ]
+ """
+ pass
+
+ # describe team
+ def describe_team(self, request: str) -> str:
+ """
+ :param request: A json string with the team details
+ {
+ "id" : "<team_id>"
+ }
+
+ :return: A json string with the response
+
+ {
+ "name" : "<team_name>",
+ "description" : "<some description>",
+ "creation_time" : "<some date:time format>",
+ "admin": "<id of a user>"
+ }
+
+ """
+ pass
+
+ # update team
+ def update_team(self, request: str) -> str:
+ """
+ :param request: A json string with the team details
+ {
+ "id" : "<team_id>",
+ "team" : {
+ "name" : "<team_name>",
+ "description" : "<team_description>",
+ "admin": "<id of a user>"
+ }
+ }
+
+ :return:
+
+ Constraint:
+ * Team name must be unique
+ * Name can be max 64 characters
+ * Description can be max 128 characters
+ """
+ pass
+
+ # add users to team
+ def add_users_to_team(self, request: str):
+ """
+ :param request: A json string with the team details
+ {
+ "id" : "<team_id>",
+ "users" : ["user_id 1", "user_id2"]
+ }
+
+ :return:
+
+ Constraint:
+ * Cap the max users that can be added to 50
+ """
+ pass
+
+ # add users to team
+ def remove_users_from_team(self, request: str):
+ """
+ :param request: A json string with the team details
+ {
+ "id" : "<team_id>",
+ "users" : ["user_id 1", "user_id2"]
+ }
+
+ :return:
+
+ Constraint:
+ * Cap the max users that can be added to 50
+ """
+ pass
+
+ # list users of a team
+ def list_team_users(self, request: str):
+ """
+ :param request: A json string with the team identifier
+ {
+ "id" : "<team_id>"
+ }
+
+ :return:
+ [
+ {
+ "id" : "<user_id>",
+ "name" : "<user_name>",
+ "display_name" : "<display name>"
+ }
+ ]
+ """
+ pass
+