From 1574b7e19e072f36ffc5106f53ce5bf791120817 Mon Sep 17 00:00:00 2001 From: aranzaiger Date: Sun, 28 Jun 2015 16:48:01 +0300 Subject: [PATCH] IMPORTANT: alot of function name changes and new Doc --- SE_API/CourseRoutes.py | 134 ++++++++++++++++++++-------------------- SE_API/ProjectRoutes.py | 18 +++--- models/Course.py | 4 +- models/Project.py | 4 +- 4 files changed, 78 insertions(+), 82 deletions(-) diff --git a/SE_API/CourseRoutes.py b/SE_API/CourseRoutes.py index 578b36c..e4e1c8c 100644 --- a/SE_API/CourseRoutes.py +++ b/SE_API/CourseRoutes.py @@ -49,7 +49,7 @@ def create_course(token): - JSON Object, Example:
{
'courseName': 'Advance Math',
- 'campusName': 'JCE',
+ 'campusId': 1234567890,
'startDate': {'year': 2015, 'month' : 4, 'day' : 3},
'endDate': {'year': 2016, 'month' : 5, 'day' : 14}
}
@@ -83,7 +83,7 @@ def create_course(token): if end_date <= start_date: return bad_request("end date cant be before (or same day) start date") - course = Course(courseName=payload['courseName'], campusName=payload['campusName'], master_id=user.key().id(), + course = Course(courseName=payload['courseName'], campusId=payload['campusId'], master_id=user.key().id(), startDate=start_date, endDate=end_date) #check if name already exists try: @@ -168,14 +168,14 @@ def joinCourse(token, courseId): #---------------------------------------------------------- -@course_routes.route('/api/courses/getCourseByCampusName/', methods=["GET"]) +@course_routes.route('/api/courses/getCoursesByCampus/', methods=["GET"]) @auto.doc() -def getCourseByCampusName(name): +def getCourseByCampus(campusId): """ >This Call will return an array of all courses in a given campus
Route Parameters
- - name: 'campus name' + - campusId: 1234567890

Payload
@@ -188,7 +188,7 @@ def getCourseByCampusName(name): {
'courseName': 'Advance Math',
- 'campusName': 'JCE',
+ 'campusId': 1234567890,
'startDate': '2015-14-3'
'endDate': '2015-29-6'
'taskFlag': 'False'
@@ -200,7 +200,7 @@ def getCourseByCampusName(name): """ arr = [] query = Course.all() - query.filter("campusName=", name) + query.filter("campusId = ", int(campusId)) for c in query.run(): arr.append(dict(json.loads(c.to_JSON()))) @@ -261,7 +261,7 @@ def getCampusesByUser(token, campusId): arr = [] for i in user['courses_id_list']: course = Course.get_by_id(int(i)) - if course.courseName == campus.title: + if course.campusId == campus.key().id(): arr.append(dict(json.loads(course.to_JSON()))) if len(arr) != 0: @@ -289,7 +289,7 @@ def getCampusesByUser(token, campusId): @course_routes.route('/api/courses/deleteCourse//', methods=['DELETE']) @auto.doc() -def deleteCourse(token,courseid): +def deleteCourse(token, courseid): """ This Call will delete a specific Course
@@ -335,64 +335,64 @@ def deleteCourse(token,courseid): return forbidden("lecturer is not owner of course") -@course_routes.route('/api/courses/deleteCoursesByCampus//', methods=['DELETE']) -@auto.doc() -def deleteCoursesByCampus(token,campusName): - """ - This Call will delete a specific campus's courses -
- Route Parameters
- - seToken: 'seToken' - - title: 'campusName' -
-
- Payload
- - NONE
-
-
- Response -
- 202 - Deleted campus -
- 204 - No Matching Campus Found -
- ....
- {
- ...
- }req
- - ]
- 400 - Bad Request -
- 403 - Invalid token or not a lecturer!
- """ - - if not is_lecturer(token): #todo: change to lecturer id - return forbidden("Invalid token or not a lecturer!") - - - user = get_user_by_token(token) - campus = get_campus_by_campusName(campusName) - if campus is None: - return bad_request("Not a campus!") - - #check user is owner of campus - if campus.master_user_id != user.key().id(): - return forbidden("lecturer is not owner of campus!") - - query = Course.all() - - try: - query.filter('campusName =', campusName) - except Exception as e: - print e - return bad_request("invalid course title attribute") - - for c in query.run(): - db.delete(c) - db.save - - return no_content() +# @course_routes.route('/api/courses/deleteCoursesByCampus//', methods=['DELETE']) +# @auto.doc() +# def deleteCoursesByCampus(token,campusName): +# """ +# This Call will delete a specific campus's courses +#
+# Route Parameters
+# - seToken: 'seToken' +# - title: 'campusName' +#
+#
+# Payload
+# - NONE
+#
+#
+# Response +#
+# 202 - Deleted campus +#
+# 204 - No Matching Campus Found +#
+# ....
+# {
+# ...
+# }req
+# +# ]
+# 400 - Bad Request +#
+# 403 - Invalid token or not a lecturer!
+# """ +# +# if not is_lecturer(token): #todo: change to lecturer id +# return forbidden("Invalid token or not a lecturer!") +# +# +# user = get_user_by_token(token) +# campus = get_campus_by_campusName(campusName) +# if campus is None: +# return bad_request("Not a campus!") +# +# #check user is owner of campus +# if campus.master_user_id != user.key().id(): +# return forbidden("lecturer is not owner of campus!") +# +# query = Course.all() +# +# try: +# query.filter('campusName =', campusName) +# except Exception as e: +# print e +# return bad_request("invalid course title attribute") +# +# for c in query.run(): +# db.delete(c) +# db.save +# +# return no_content() diff --git a/SE_API/ProjectRoutes.py b/SE_API/ProjectRoutes.py index 80d1d02..80a7839 100644 --- a/SE_API/ProjectRoutes.py +++ b/SE_API/ProjectRoutes.py @@ -42,7 +42,7 @@ def create_project(token): - JSON Object, Example:
{
'projectName': 'Advance Math',
- 'courseName': 'JCE',
+ 'courseId': 1234567890,
'logo_url': 'http://location.domain.com/image.jpg',
'gitRepository': 'http://location.git.com/somthing'
}
@@ -62,18 +62,14 @@ def create_project(token): payload = json.loads(request.data) except Exception as e: return bad_request("invalid JSON format") - #if not is_lecturer(token): #todo: change to lecturer id - # return forbidden("Invalid token or not a lecturer!") user = get_user_by_token(token) if user is None: return bad_request("Wrong user Token") - #todo: check legality - try: - project = Project(projectName=payload['projectName'], courseName=payload['courseName'], master_id=user.key().id(), gitRepository=payload['gitRepository'], membersId=[token]) + project = Project(projectName=payload['projectName'], courseId=payload['courseId'], master_id=user.key().id(), gitRepository=payload['gitRepository'], membersId=[token]) except Exception as e: print e return bad_request() @@ -142,14 +138,14 @@ def joinProject(token, projectId): # GET #---------------------------------------------------------- -@project_routes.route('/api/projects/getProjectsByCourse/', methods=["GET"]) +@project_routes.route('/api/projects/getProjectsByCourse/', methods=["GET"]) @auto.doc() -def getProjectsByCourse(name): +def getProjectsByCourse(courseId): """ >This Call will return an array of all projects in a given course
Route Parameters
- - name: 'course name' + - courseId: 1234567890

Payload
@@ -162,7 +158,7 @@ def getProjectsByCourse(name): {
'projectName': 'Advance Math',
- 'courseName': 'JCE',
+ 'courseId': 123456789,
'grade': 98,
'logo_url': 'http://location.domain.com/image.jpg',
'gitRepository': 'http://location.git.com/somthing',
@@ -175,7 +171,7 @@ def getProjectsByCourse(name): arr = [] query = Project.all() - query.filter("courseName = ", name) + query.filter("courseId = ", int(courseId)) for p in query.run(): arr.append(dict(json.loads(p.to_JSON()))) diff --git a/models/Course.py b/models/Course.py index a96503a..444ed04 100644 --- a/models/Course.py +++ b/models/Course.py @@ -5,7 +5,7 @@ from google.appengine.ext import db class Course(db.Model): courseName = db.StringProperty(required=True) - campusName = db.StringProperty(required=True) + campusId = db.IntegerProperty(required=True) master_id = db.IntegerProperty(required=True) # projects = db.StringListProperty(required=True,default=[]) startDate = db.DateProperty(required=True) @@ -14,7 +14,7 @@ class Course(db.Model): def to_JSON(self): data = {'courseName' : self.courseName, - 'campusName' : self.campusName, + 'campusId' : self.campusName, 'master_id' : self.master_id, # 'projects' : self.projects, 'startDate' : { diff --git a/models/Project.py b/models/Project.py index 4e6cacb..042c082 100644 --- a/models/Project.py +++ b/models/Project.py @@ -5,7 +5,7 @@ from google.appengine.ext import db class Project(db.Model): projectName = db.StringProperty(required=True) - courseName = db.StringProperty(required=True) + courseId = db.IntegerProperty(required=True) master_id = db.IntegerProperty(required=True) grade = db.IntegerProperty(required=True, default=0) logo_url = db.StringProperty(required=False) @@ -14,7 +14,7 @@ class Project(db.Model): def to_JSON(self): data = {'projectName' : self.projectName, - 'courseName' : self.courseName, + 'courseId' : self.courseId, 'master_id' : self.master_id, 'grade' : self.grade, 'logo_url' : self.logo_url,