示例#1
0
文件: API.py 项目: jce-il/SE-Hub
 def createUser(gitHubUserName):
     """
     <span class="card-title">Go To This URL To Set The SE-Token Cookie</span>
     <br>
     <p>This User Will Automatically be added to JCE Campus as a Lecturer</p>
     <b>Route Parameters</b><br>
         - gitHubUserName: A Username<br>
     <br>
     <b>Payload</b><br>
      - None
     <b>Response</b>
     <br>
     None.
     """
     try:
         query = Campus.all().filter('title =', 'JCE')
         for c in query.run(limit=1):
             campus = c
         user = User(name=";", username=gitHubUserName, isFirstLogin=False,
                     avatar_url='http://placekitten.com/g/200/'+str(counter), accessToken="RandomGitHubToken",
                     email='*****@*****.**', campuses_id_list=[str(campus.key().id())],
                     seToken=str(uuid.uuid4()), isLecturer=True)
         db.put(user)
         return created(gitHubUserName + 'Was Created. Token: ' + user.seToken)
     except Exception as e:
         return bad_request(str(e))
示例#2
0
def getUserCoursesByCampus(token, campusId):
    """
    <span class="card-title">This Call will return an array of all Courses of a certain User in a specific Campus</span>
    <br>
    <b>Route Parameters</b><br>
        - seToken: 'seToken'<br>
        - campusId: 1234354543<br>
    <br>
    <br>
    <b>Payload</b><br>
     - NONE <br>
    <br>
    <br>
    <b>Response</b>
    <br>
    200 - JSON Array, Example:<br>
    [<br>
    {
                'title': 'JCE',<br>
                'email_ending': '@post.jce.ac.il',<br>
                'master_user_id': 123453433341, (User that created the campus)<br>
                'avatar_url': 'http://some.domain.com/imagefile.jpg',<br>
                'id' : 1234567890<br>
    },<br>
    ....<br>
    {<br>
    ...<br>
    }req<br>
    ]<br>
    <br>
    403 - Invalid Token<br>
    """

    user = get_user_by_token(token)
    if user is None:
        return bad_request("Bad user Token")

    try:
        campus = Campus.get_by_id(int(campusId))
    except Exception as e:
        return bad_request("Bad id format")

    if campus is None:
        return bad_request("No such Campus")


    arr = []
    for i in user.courses_id_list:
        course = Course.get_by_id(int(i))
        if course.campusId == campus.key().id():
            arr.append(dict(json.loads(course.to_JSON())))

    if len(arr) != 0:
        return Response(response=json.dumps(arr),
                        status=200,
                        mimetype="application/json")
    else:
        return Response(response='[]',
                        status=200,
                        mimetype="application/json")
示例#3
0
def get_campus_by_suffix(suffix):
    query = Campus.all()
    query.filter("email_ending = ", suffix)

    for c in query.run(limit = 1):
        return c
    return None
示例#4
0
def get_campus_by_campusName(campusName):
    query = Campus.all()
    query.filter("title = ", campusName)

    for u in query.run(limit = 1):
        return u
    return None
示例#5
0
def getCampusesByUserID(token, id):
    """
    <span class="card-title">This Call will return an array of all Campuses of a certain User By ID</span>
    <br>
    <b>Route Parameters</b><br>
        - token: 'seToken' of requesting user
        - The ID of <b>Wanted</b> User Campuses
    <br>
    <br>
    <b>Payload</b><br>
     - NONE <br>
    <br>
    <br>
    <b>Response</b>
    <br>
    200 - JSON Array, Example:<br>
    [<br>
    {
                'title': 'JCE',<br>
                'email_ending': '@post.jce.ac.il',<br>
                'master_user_id': 123453433341, (User that created the campus)<br>
                'avatar_url': 'http://some.domain.com/imagefile.jpg',<br>
                'id' : 1234567890<br>
    },<br>
    ....<br>
    {<br>
    ...<br>
    }req<br>
    ]<br>
    <br>
    403 - Invalid Token<br>
    """

    user = get_user_by_token(token)
    if user is None:
        return forbidden("Invalid Token")


    try:
        user = get_user_by_id(int(id))
    except Exception as e:
        return bad_request("Bad id format")

    if user is None:
        return no_content("No User")

    arr = []
    for i in user.campuses_id_list:
        campus = Campus.get_by_id(int(i))
        arr.append(dict(json.loads(campus.to_JSON())))

    if len(arr) != 0:
        return Response(response=json.dumps(arr),
                        status=200,
                        mimetype="application/json")
    else:
        return Response(response=[],
                        status=200,
                        mimetype="application/json")
示例#6
0
def create_campus(token):
    """
    <span class="card-title">This call will create a new campus in the DB</span>
    <br>
    <b>Route Parameters</b><br>
        - seToken: 'seToken'
    <br>
    <br>
    <b>Payload</b><br>
     - JSON Object, Example: <br>
     {<br>
     'title': 'Campus name',<br>
     'email_ending': '@campus.ac.com',<br>
     'avatar_url': 'http://location.domain.com/image.jpg'<br>
    }<br>
    <br>
    <br>
    <b>Response</b>
    <br>
    200 - OK
    <br>
    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)
    arr = []
    arr.append(str(user.key().id()))
    try:
        campus = Campus(title=payload['title'], email_ending=payload['email_ending'], master_user_id=user.key().id(), avatar_url=payload['avatar_url'], membersId=arr)
    except Exception:
        return bad_request()

    send_create_campus_request(user.email, user.name, campus.title)
    db.put(campus)
    notify_se_hub_campus_request(campus, campus.title)
    db.delete(campus)
    return ok()
示例#7
0
def get_campuses(token):
    """
    <span class="card-title">This Call will return an array of all Campuses available</span>
    <br>
    <b>Route Parameters</b><br>
        - seToken: 'seToken'
    <br>
    <br>
    <b>Payload</b><br>
     - NONE <br>
    <br>
    <br>
    <b>Response</b>
    <br>
    200 - JSON Array, Example:<br>
    [<br>
    {
                'title': 'JCE',<br>
                'email_ending': '@post.jce.ac.il',<br>
                'master_user_id': 123453433341, (User that created the campus)<br>
                'avatar_url': 'http://some.domain.com/imagefile.jpg',<br>
                'id' : 1234567890<br>
    },<br>
    ....<br>
    {<br>
    ...<br>
    }req<br>
    ]<br>
    <br>
    403 - Invalid Token<br>
    """
    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:"
        print arr
        for c in arr:
            print"c:"
            print c
        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")
示例#8
0
def joinCampus(token, campusId):
    """
    <span class="card-title">This call will add the user (by token) to a specific campus</span>
    <br>
    <b>Route Parameters</b><br>
        - seToken: 'seToken'<br>
        - campusId: 123456789
    <br>
    <br>
    <b>Payload</b><br>
     - None <br>
    <br>
    <b>Response</b>
    <br>
    202 - Accepted
    <br>
    400 - Bad Request
    <br>
    403 - Invalid token or not a lecturer
    """

    if not is_lecturer(token):
        return forbidden("Invalid token or not a lecturer!")

    user = get_user_by_token(token)

    try:
        campus = Campus.get_by_id(int(campusId))
    except Exception as e:
        return bad_request("Bad id format")


    if campus is None:
        return bad_request("No such course")

    if str(user.key().id()) in campus.membersId:
        return bad_request("User is already member in Project")

    campus.membersId.append(str(user.key().id()))
    user.courses_id_list.append(str(campus.key().id()))

    db.put(campus)
    db.put(user)
    db.save

    return Response(response=campus.to_JSON(),
                        status=202,
                        mimetype="application/json")
示例#9
0
def deleteCampus(token,campusId):
    """
    <span class="card-title">This Call will delete a specific campus</span>
    <br>
    <b>Route Parameters</b><br>
        - seToken: 'seToken'
        - campusId: 1234567890
    <br>
    <br>
    <b>Payload</b><br>
     - NONE <br>
    <br>
    <br>
    <b>Response</b>
    <br>
    202 - Deleted campus
    <br>
    ....<br>
    {<br>
    ...<br>
    }req<br>

    ]<br>
    400 - no such campus
    <br>
    403 - Invalid token or not a lecturer or lecturer is not owner of campus!<br>
    """

    if not is_lecturer(token):  #todo: change to lecturer id
        return forbidden("Invalid token or not a lecturer!")

    user = get_user_by_token(token)

    try:
        camp = Campus.get_by_id(int(campusId))
    except Exception as e:
        return bad_request("Bad id format")

    if camp is None:
        return bad_request("no such campus")


    if camp.master_user_id == user.key().id():
        db.delete(camp)
        db.save
        return accepted("campus deleted")

    return forbidden("lecturer is not owner of campus")