44
55# Project
66@app .route ("/projects" , methods = ['POST' ])
7- def post_project ():
7+ def create_project ():
8+ """
9+ Create project
10+ ---
11+ tags:
12+ - Project
13+ parameters:
14+ - in: body
15+ name: Project
16+ required: true
17+ description: Project object containing data for creation
18+ schema:
19+ $ref: "#/definitions/Project"
20+ definitions:
21+ - schema:
22+ id: Project
23+ properties:
24+ id:
25+ type: integer
26+ description: Id of the project. This property will be assigned a value returned by the database
27+ name:
28+ type: string
29+ description: Name of the project
30+ description:
31+ type: string
32+ description: Description of the project
33+ languages:
34+ type: string
35+ description: List of programming languages the project uses
36+ development_status:
37+ type: integer
38+ description: Development status of the project
39+ creation_date:
40+ type: string
41+ description: Creation date of the project
42+ release_date:
43+ type: string
44+ description: Release date of the project
45+ repository:
46+ type: string
47+ description: Url of the project's repository
48+ users:
49+ type: array
50+ description: List of members of the project
51+ items:
52+ $ref: "#/definitions/User"
53+ links:
54+ type: array
55+ description: List of links
56+ items:
57+ $ref: "#/definitions/ProjectLink"
58+ feedbacks:
59+ type: array
60+ description: List of feedbacks given to the project
61+ items:
62+ $ref: "#/definitions/ProjectFeedback"
63+ responses:
64+ 201:
65+ description: Project created successfully
66+ 400:
67+ description: Failed to create project
68+ """
869 project = projectController .create_project (** request .get_json ())
970
1071 if project == None :
@@ -14,6 +75,30 @@ def post_project():
1475
1576@app .route ("/projects/<id>" , methods = ['POST' ])
1677def update_project (id ):
78+ """
79+ Update project
80+ Updates project with `id` using the data in request body
81+ ---
82+ tags:
83+ - Project
84+ parameters:
85+ - in: path
86+ name: id
87+ type: integer
88+ required: true
89+ description: Id of project to update
90+ - in: body
91+ name: Project
92+ required: true
93+ description: Project object containing data to update
94+ schema:
95+ $ref: "#/definitions/Project"
96+ responses:
97+ 200:
98+ description: Project updated successfully
99+ 400:
100+ description: Failed to update project
101+ """
17102 if 'id' in request .get_json ():
18103 return "Failed to update project. Request body can not specify project's id." , 400
19104
@@ -26,6 +111,24 @@ def update_project(id):
26111
27112@app .route ("/projects/<id>" , methods = ['GET' ])
28113def get_project (id ):
114+ """
115+ Get project
116+ Retreives project with `id`
117+ ---
118+ tags:
119+ - Project
120+ parameters:
121+ - in: path
122+ name: id
123+ type: integer
124+ required: true
125+ description: Id of the project to retrieve
126+ responses:
127+ 200:
128+ description: Project object
129+ 404:
130+ description: Project not found
131+ """
29132 project = projectController .get_project (id = id )
30133
31134 if project :
@@ -35,6 +138,16 @@ def get_project(id):
35138
36139@app .route ("/projects" , methods = ['GET' ])
37140def get_all_projects ():
141+ """
142+ Get all projects
143+ Retreives all projects
144+ ---
145+ tags:
146+ - Project
147+ responses:
148+ 200:
149+ description: List of projects
150+ """
38151 all_projects = projectController .get_all_projects ()
39152
40153 projects = [ project .as_dict () for project in all_projects ]
@@ -43,6 +156,24 @@ def get_all_projects():
43156
44157@app .route ("/projects/<id>" , methods = ['DELETE' ])
45158def delete_project (id ):
159+ """
160+ Delete project
161+ Deletes project with `id`
162+ ---
163+ tags:
164+ - Project
165+ parameters:
166+ - in: path
167+ name: id
168+ type: integer
169+ required: true
170+ description: Id of the project to delete
171+ responses:
172+ 200:
173+ description: Project deleted successfully
174+ 400:
175+ description: Project not found
176+ """
46177 project = projectController .delete_project (id )
47178
48179 if project :
@@ -53,6 +184,40 @@ def delete_project(id):
53184# Project Link
54185@app .route ("/projects/<project_id>/links" , methods = ['POST' ])
55186def create_project_link (project_id ):
187+ """
188+ Create project link
189+ ---
190+ tags:
191+ - ProjectLink
192+ parameters:
193+ - in: body
194+ name: ProjectLink
195+ required: true
196+ description: Project link object containing data to update
197+ schema:
198+ $ref: "#/definitions/ProjectLink"
199+ definitions:
200+ - schema:
201+ id: ProjectLink
202+ properties:
203+ id:
204+ type: integer
205+ description: Id of the project link. This property will be assigned a value returned by the database
206+ name:
207+ type: string
208+ description: Name of the project link
209+ url:
210+ type: string
211+ description: Url of the project link
212+ project_id:
213+ type: integer
214+ description: Id of the project
215+ responses:
216+ 201:
217+ description: Project link created successfully
218+ 400:
219+ description: Failed to create project link
220+ """
56221 if 'project_id' in request .get_json ():
57222 return "Failed to create project link. Request body can not specify link's project_id." , 400
58223
@@ -65,6 +230,35 @@ def create_project_link(project_id):
65230
66231@app .route ("/projects/<project_id>/links/<link_id>" , methods = ['POST' ])
67232def update_project_link (project_id , link_id ):
233+ """
234+ Update project link
235+ Updates project link with `project_id` and `link_id` using the data in request body
236+ ---
237+ tags:
238+ - ProjectLink
239+ parameters:
240+ - in: path
241+ name: project_id
242+ type: integer
243+ required: true
244+ description: Id of the project
245+ - in: path
246+ name: link_id
247+ type: integer
248+ required: true
249+ description: Id of the project link to update
250+ - in: body
251+ name: ProjectLink
252+ required: true
253+ description: Project link object containing data to update
254+ schema:
255+ $ref: "#/definitions/ProjectLink"
256+ responses:
257+ 200:
258+ description: Project link updated successfully
259+ 400:
260+ description: Failed to update project link
261+ """
68262 if 'project_id' in request .get_json ():
69263 return "Failed to update project link. Request body can not specify link's project_id." , 400
70264 elif 'link_id' in request .get_json ():
@@ -79,6 +273,22 @@ def update_project_link(project_id, link_id):
79273
80274@app .route ("/projects/<project_id>/links" , methods = ['GET' ])
81275def get_all_project_links (project_id ):
276+ """
277+ Get all project links
278+ Retreives all project links with `project_id`
279+ ---
280+ tags:
281+ - ProjectLink
282+ parameters:
283+ - in: path
284+ name: project_id
285+ type: integer
286+ required: true
287+ description: Id of the project
288+ responses:
289+ 200:
290+ description: List of project links
291+ """
82292 all_links = projectController .get_all_links (project_id )
83293
84294 links = [ link .as_dict () for link in all_links ]
@@ -87,6 +297,29 @@ def get_all_project_links(project_id):
87297
88298@app .route ("/projects/<project_id>/links/<link_id>" , methods = ['DELETE' ])
89299def delete_project_link (project_id , link_id ):
300+ """
301+ Delete project link
302+ Deletes project link with `project_id` and `link_id`
303+ ---
304+ tags:
305+ - ProjectLink
306+ parameters:
307+ - in: path
308+ name: project_id
309+ type: integer
310+ required: true
311+ description: Id of the project
312+ - in: path
313+ name: link_id
314+ type: integer
315+ required: true
316+ description: Id of the project link to delete
317+ responses:
318+ 200:
319+ description: Project link deleted successfully
320+ 404:
321+ description: Project link not found
322+ """
90323 link = projectController .delete_link (project_id , link_id )
91324
92325 if link == None :
@@ -97,6 +330,43 @@ def delete_project_link(project_id, link_id):
97330# Project Feedback
98331@app .route ("/projects/<project_id>/feedbacks" , methods = ['POST' ])
99332def create_project_feedback (project_id ):
333+ """
334+ Create project feedback
335+ ---
336+ tags:
337+ - ProjectFeedback
338+ parameters:
339+ - in: body
340+ name: ProjectFeedback
341+ required: true
342+ description: Project feedback object containing data to update
343+ schema:
344+ $ref: "#/definitions/ProjectFeedback"
345+ definitions:
346+ - schema:
347+ id: ProjectFeedback
348+ properties:
349+ id:
350+ type: integer
351+ description: Id of the project feedback. This property will be assigned a value returned by the database
352+ user_id:
353+ type: integer
354+ description: Id of the user
355+ project_id:
356+ type: integer
357+ description: Id of the project
358+ rating:
359+ type: string
360+ description: The rating of the project feedback
361+ description:
362+ type: string
363+ description: The body of the project feedback
364+ responses:
365+ 201:
366+ description: Project feedback created successfully
367+ 400:
368+ description: Failed to create project feedback
369+ """
100370 if 'project_id' in request .get_json ():
101371 return "Failed to create feedback. Request body can not specify feedback's project_id." , 400
102372
@@ -109,6 +379,22 @@ def create_project_feedback(project_id):
109379
110380@app .route ("/projects/<project_id>/feedbacks" , methods = ['GET' ])
111381def get_all_project_feedbacks (project_id ):
382+ """
383+ Get all project feedbacks
384+ Retreives all project feedbacks with `project_id`
385+ ---
386+ tags:
387+ - ProjectFeedback
388+ parameters:
389+ - in: path
390+ name: project_id
391+ type: integer
392+ required: true
393+ description: Id of the project
394+ responses:
395+ 200:
396+ description: List of project feedbacks
397+ """
112398 all_feedbacks = projectController .get_all_feedbacks (project_id )
113399
114400 feedbacks = [ feedback .as_dict () for feedback in all_feedbacks ]
@@ -117,6 +403,29 @@ def get_all_project_feedbacks(project_id):
117403
118404@app .route ("/projects/<project_id>/feedbacks/<feedback_id>" , methods = ['DELETE' ])
119405def delete_project_feedback (project_id , feedback_id ):
406+ """
407+ Delete project feedback
408+ Deletes project feedback with `project_id` and `feedback_id`
409+ ---
410+ tags:
411+ - ProjectFeedback
412+ parameters:
413+ - in: path
414+ name: project_id
415+ type: integer
416+ required: true
417+ description: Id of the project
418+ - in: path
419+ name: feedback_id
420+ type: integer
421+ required: true
422+ description: Id of the project feedback to delete
423+ responses:
424+ 200:
425+ description: Project feedback deleted successfully
426+ 404:
427+ description: Project feedback not found
428+ """
120429 feedback = projectController .delete_feedback (project_id , feedback_id )
121430
122431 if feedback == None :
0 commit comments