1- from flask_restplus import Namespace , Resource , abort , inputs
1+ from flask_restplus import Namespace , Resource , abort , inputs , fields
22from .projects_model import project_dao
33from time_tracker_api .errors import MissingResource
44
55ns = Namespace ('projects' , description = 'API for projects (clients)' )
66
7- @ns .route ('/' )
7+ # Project Model
8+ project = ns .model ('Project' , {
9+ 'id' : fields .String (
10+ readOnly = True ,
11+ required = True ,
12+ title = 'Identifier' ,
13+ description = 'The unique id of the project'
14+ ),
15+ 'tenant_id' : fields .String (
16+ required = True ,
17+ title = 'Tenant' ,
18+ max_length = 64 ,
19+ description = 'The tenant this project belongs to'
20+ ),
21+ 'name' : fields .String (
22+ required = True ,
23+ title = 'Name' ,
24+ max_length = 50 ,
25+ description = 'Name of the project'
26+ ),
27+ 'description' : fields .String (
28+ title = 'Description' ,
29+ description = 'Description about the project'
30+ ),
31+ 'type' : fields .String (
32+ required = True ,
33+ title = 'Type' ,
34+ max_length = 30 ,
35+ description = 'If it is `Costumer`, `Training` or other type' ,
36+ ),
37+ })
38+
39+
40+ @ns .route ('' )
841class Projects (Resource ):
942 @ns .doc ('list_projects' )
43+ @ns .marshal_list_with (project , code = 200 )
1044 def get (self ):
1145 """List all projects"""
1246 return project_dao .get_all (), 200
1347
1448 @ns .doc ('create_project' )
49+ @ns .expect (project )
50+ @ns .marshal_with (project , code = 201 )
1551 def post (self ):
1652 """Create a project"""
1753 return project_dao .create (ns .payload ), 201
1854
55+ # TODO : fix, this parser is for a field that is not being used.
1956project_update_parser = ns .parser ()
2057project_update_parser .add_argument ('active' ,
2158 type = inputs .boolean ,
@@ -29,24 +66,14 @@ def post(self):
2966@ns .param ('uid' , 'The project identifier' )
3067class Project (Resource ):
3168 @ns .doc ('get_project' )
69+ @ns .marshal_with (project )
3270 def get (self , uid ):
3371 """Retrieve a project"""
3472 return project_dao .get (uid )
3573
36- @ns .doc ('delete_project' )
37- @ns .response (204 , 'Project deleted' )
38- def delete (self , uid ):
39- """Deletes a project"""
40- project_dao .delete (uid )
41- return None , 204
42-
43- @ns .doc ('put_project' )
44- def put (self , uid ):
45- """Create or replace a project"""
46- return project_dao .update (uid , ns .payload )
47-
4874 @ns .doc ('update_project_status' )
4975 @ns .param ('uid' , 'The project identifier' )
76+ @ns .expect (project )
5077 @ns .response (204 , 'State of the project successfully updated' )
5178 def post (self , uid ):
5279 """Updates a project using form data"""
@@ -57,3 +84,18 @@ def post(self, uid):
5784 abort (code = 400 )
5885 except MissingResource as e :
5986 abort (message = str (e ), code = 404 )
87+
88+ @ns .doc ('put_project' )
89+ @ns .expect (project )
90+ @ns .marshal_with (project )
91+ def put (self , uid ):
92+ """Create or replace a project"""
93+ return project_dao .update (uid , ns .payload )
94+
95+ @ns .doc ('delete_project' )
96+ @ns .response (204 , 'Project deleted successfully' )
97+ def delete (self , uid ):
98+ """Deletes a project"""
99+ project_dao .delete (uid )
100+ return None , 204
101+
0 commit comments