Merge pull request #16 from sagidayan/API_Dev

Api dev
This commit is contained in:
Sagi Dayan 2015-06-11 22:10:55 +03:00
commit bb2b1e4e20
5 changed files with 84 additions and 8 deletions

View file

@ -1,3 +1,4 @@
__author__ = 'sagi'
import json
from GithubAPI.GithubAPI import GitHubAPI_Keys
@ -20,6 +21,7 @@ from models.Campus import Campus
#Validation Utils Libs
from SE_API.Validation_Utils import *
from SE_API.Respones_Utils import *
@ -130,7 +132,7 @@ def oauth(oauth_token):
print user_data["login"]
for u in resault.run(limit=5):
for u in resault.run():
print "Exists!!!"
u.seToken = str(uuid.uuid4())
u.accessToken = oauth_token
@ -146,12 +148,58 @@ def oauth(oauth_token):
else:
tempEmail = user_data["email"]
user = User(username=user_data["login"], name=tempName, avatar_url=user_data["avatar_url"], email=tempEmail, isLecturer=False, accsessToken=oauth_token, seToken=str(uuid.uuid4()))
user = User(username=user_data["login"], name=tempName, avatar_url=user_data["avatar_url"], email=tempEmail, isLecturer=False, accessToken=oauth_token, seToken=str(uuid.uuid4()))
db.put(user)
db.save
return cookieMonster(user.seToken)
@app.route('/api/Campuses/create/<string:token>', methods=['POST'])
@auto.doc()
def create_campus(token):
"""
This call will create a new campus in the DB
:param token: user seToken
Payload
{'title': self.title,
'email_ending': self.email_ending,
'avatar_url': self.avatar_url
}
:return:
code 200
"""
print "1\n"
if not request.data:
return Response(response=json.dumps({'message': 'Bad Request0'}),
status=400,
mimetype="application/json")
payload = json.loads(request.data)
if not is_lecturer(token): #todo: change to lecturer id
return Response(response=json.dumps({'message': 'Invalid token or not a lecturer!'}),
status=403,
mimetype="application/json")
user = get_user_by_token(token)
#todo: check legality
try:
campus = Campus(title=payload['title'], email_ending=payload['email_ending'], master_user_id=user.key().id(), avatar_url=payload['avatar_url'])
except Exception:
return Response(response=json.dumps({'message': 'Bad Request1'}),
status=400,
mimetype="application/json")
db.put(campus)
db.save
return Response(response=json.dumps(campus.to_JSON()),
status=200,
mimetype="application/json")
@app.route('/api/Campuses/<string:token>', methods=['GET'])
@auto.doc()
def get_campuses(token):

15
SE_API/Respones_Utils.py Normal file
View file

@ -0,0 +1,15 @@
__author__ = 'Aran'
from flask import Response
import json
def bad_request():
return Response(response=json.dumps({'message': 'Bad Request'}),
status=400,
mimetype="application/json")
def forbidden(message={'message': 'Forbidden'}):
return Response(response=json.dumps(message),
status=403,
mimetype="application/json")

View file

@ -4,14 +4,27 @@ from models.User import User
from google.appengine.api import mail
def is_user_token_valid(token):
def get_user_by_token(token):
query = User.all()
query.filter("seToken = ", token)
for u in query.run():
for u in query.run(limit = 1):
return u
return None
def is_user_token_valid(token):
user = get_user_by_token(token)
if user is not None:
return True
return False
def is_lecturer(token):
user = get_user_by_token(token)
if user is None:
return False
return user.isLecturer
def send_validation_email(token, email, name):
message = mail.EmailMessage(sender="SE-Hub Support <se-hub@appspot.gserviceaccount.com>",
subject="SE-Hub Activate Account")

View file

@ -11,12 +11,12 @@ class Campus(db.Model):
master_user_id = db.IntegerProperty(required=True)
def to_JSON(self):
dick = {'title': self.title,
data = {'title': self.title,
'email_ending': self.email_ending,
'master_user_id': self.master_user_id,
'avatar_url': self.avatar_url
}
return json.dumps(dick)
return json.dumps(data)
"""

View file

@ -12,8 +12,8 @@ class User(db.Model):
seToken = db.StringProperty(required=True)
avatar_url = db.StringProperty(required=True)
isFirstLogin = db.BooleanProperty(default=True)
campuses_id_list = db.StringListProperty()
classes_id_list = db.StringListProperty()
campuses_id_list = db.StringListProperty(default=[])
classes_id_list = db.StringListProperty(default=[])
def to_JSON(self):
data = {'username' : self.username,