Project Management¶
In this section, we present the system design for project management use cases. Task management use cases, while indeed are part of project management, are discussed in the next.
Create Project¶
The function allow creating projects.
The implementation involves two database tables:
users
database table, whererole
index is checked.projects
database table, where new document is created.
When user requests to create project, the project controller checks
with quart_auth
whether the person is authenticated. The controller then
checks in users
database that if the current user is not assistant.
When both conditions are satisfied, controller returns a form for user to
create project. After user fills in the form, the controller requests updating
project
database accordingly.
If user is not authenticated, controller should inform that user has not logged in.
If user is an assistant, controller should inform that user are not allowed to create projects.
Show Project Information¶
The function allow showing project information.
The implementation involves only project
database table,
where id
, students
and supervisors
indexes are visited
When user requests to create project, the project controller checks
with quart_auth
whether the person is authenticated. The controller then
checks in project
database that if the current user is a member of project,
and if the project id is existed in database table.
When three conditions are satisfied, controller show the project information.
If quart_auth
returns user is not authenticated,
controller should inform accordingly.
If project id is not in the database, controller must show the error
If user is not in the project, controller must show the error
Edit Project Information¶
The function allow editing project information.
The implementation involves only project
database table,
where id
, students
and supervisors
indexes are visited
When user navigate to edit tab, the project controller checks whether or not
the person is authenticated. After that, it checks if the current user
is a member of project, and if the project id is existed in database table.
If all conditions are satisfied, controller shows the form for user to fill in.
When user fills the form, controller updates the project
table with
the extracted data
If user is not authenticated
If project not exists in projects
database table
If user is not a member in the project
List member¶
The function allow listing the members in the projects.
The implementation involves only projects
database table, in which we get
the member list of members. Two fields are being called is supervisors
and
students
.
When user navigate to member tab, the list of members in the project,
classified as supervisors
and students
is shown in a form.
Invite member¶
Since the project is initialized with only the creator, we need a function to invite members. Only who is in the project could introduce a new member.
The design involves the projects
database table,
where the members index is to be updated.
When user enters the invited member’s name, the project controller checks
the projects
table in the database whether the person is already in
the project, or that user is an assistant, or that user has not registered.
If all three conditions is satisfied, two databases is updated accordingly.
If added user is already in the project
If added user is an assistant
If the name is not in users
database