__author__ = 'Aran' from flask import Blueprint import json from GithubAPI.GithubAPI import GitHubAPI_Keys from google.appengine.ext import db import requests import datetime from flask import Flask, request, render_template, redirect, abort, Response from flask.ext.github import GitHub from flask.ext.cors import CORS, cross_origin from flask.ext.autodoc import Autodoc # DB Models from models.Campus import Campus #Validation Utils Libs from SE_API.Validation_Utils import * from SE_API.Respones_Utils import * from SE_API.Email_Utils import * campus_routes = Blueprint("campus_routes", __name__) auto = Autodoc() @campus_routes.route('/api/campuses/create/', methods=['POST']) @auto.doc() def create_campus(token): """ This call will create a new campus in the DB
Route Parameters
- seToken: 'seToken'

Payload
- JSON Object, Example:
{
'title': 'Campus name',
'email_ending': '@campus.ac.com',
'avatar_url': 'http://location.domain.com/image.jpg'
}


Response
201 - Created
403 - Invalid Token/Forbidden """ if not request.data: return bad_request() if not is_lecturer(token): #todo: change to lecturer id return forbidden("Invalid token or not a lecturer!") #try to parse payload try: payload = json.loads(request.data) except Exception as e: return bad_request(e) #check if name already exists try: query = Campus.all() query.filter("title =", payload['title']) for c in query.run(limit=1): return forbidden("Campus with same name already exists") except Exception as e: print e user = get_user_by_token(token) 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 bad_request() send_create_campus_request(user.email, user.name, campus.title) notify_se_hub_campus_request(campus, campus.title) return ok() @campus_routes.route('/api/campuses/getAll/', methods=['GET']) @auto.doc() def get_campuses(token): """ This Call will return an array of all Campuses available
Route Parameters
- seToken: 'seToken'

Payload
- NONE


Response
200 - JSON Array, Example:
[
{ 'title': 'JCE',
'email_ending': '@post.jce.ac.il',
'master_user_id': 123453433341, (User that created the campus)
'avatar_url': 'http://some.domain.com/imagefile.jpg'
},
....
{
...
}req
]

403 - Invalid Token
""" if is_user_token_valid(token): arr = [] query = Campus.all() for c in query.run(): arr.append(dict(json.loads(c.to_JSON()))) print arr if len(arr) != 0: return Response(response=json.dumps(arr), status=200, mimetype="application/json") else: return Response(response=[], status=200, mimetype="application/json") else: return forbidden("Invalid Token") @campus_routes.route('/api/campuses/help') def documentation(): return auto.html()