Ejemplo n.º 1
0
def activity_profile_get(req_dict):
    log_dict = req_dict['initial_user_action']    
    log_info_processing(log_dict, 'GET', __name__)

    #TODO:need eTag for returning list of IDs?
    # Instantiate ActivityProfile
    ap = ActivityProfile.ActivityProfile(log_dict=log_dict)
    # Get profileId and activityId
    profileId = req_dict.get('profileId', None)
    activityId = req_dict.get('activityId', None)

    #If the profileId exists, get the profile and return it in the response
    if profileId:
        resource = ap.get_profile(profileId, activityId)
        response = HttpResponse(resource.profile.read(), content_type=resource.content_type)
        response['ETag'] = '"%s"' % resource.etag
        update_parent_log_status(log_dict, 200)
        return response

    #Return IDs of profiles stored since profileId was not submitted
    since = req_dict.get('since', None)
    resource = ap.get_profile_ids(since, activityId)
    response = HttpResponse(json.dumps([k for k in resource]), content_type="application/json")
    response['since'] = since
    #response['ETag'] = '"%s"' % resource.etag
    update_parent_log_status(log_dict, 200)
    return response
Ejemplo n.º 2
0
def statements_post(req_dict):
    stmt_responses = []

    log_dict = req_dict['initial_user_action'] 
    log_info_processing(log_dict, 'POST', __name__)

    define = True
    if 'oauth_define' in req_dict:
        define = req_dict['oauth_define']    

    # Handle batch POST
    if type(req_dict['body']) is list:
        try:
            for st in req_dict['body']:
                stmt = Statement.Statement(st, auth=req_dict['auth'], log_dict=log_dict,
                    define=define).model_object
                stmt_responses.append(str(stmt.statement_id))
        except Exception, e:
            for stmt_id in stmt_responses:
                try:
                    models.statement.objects.get(statement_id=stmt_id).delete()
                except models.statement.DoesNotExist:
                    pass # stmt already deleted 
            log_exception(log_dict, e.message, statements_post.__name__)
            update_parent_log_status(log_dict, 500)
            raise e
Ejemplo n.º 3
0
def statements_get(req_dict):
    log_dict = req_dict['initial_user_action']    
    log_info_processing(log_dict, 'GET', __name__)
    
    if 'statements_mine_only' in req_dict:
        mine_only = True
    else:
        mine_only = False

    stmt_result = {}
    # If statementId is in req_dict then it is a single get
    if 'statementId' in req_dict:
        statementId = req_dict['statementId']
        # Try to retrieve stmt, if DNE then return empty else return stmt info                
        try:
            st = models.statement.objects.get(statement_id=statementId)
        except models.statement.DoesNotExist:
            err_msg = 'There is no statement associated with the id: %s' % statementId
            log_exception(log_dict, err_msg, statements_get.__name__)
            update_parent_log_status(log_dict, 404)
            raise exceptions.IDNotFoundError(err_msg)
        
        # check if stmt authority is in oauth group
        if mine_only and not (st.authority.id == req_dict['auth'].id):
            raise exceptions.Forbidden("Incorrect permissions to view statements that do not have auth %s" % str(req_dict['auth']))

        stmt_result = st.object_return()
    else:
        stmt_list = retrieve_statement.complex_get(req_dict)
        stmt_result = retrieve_statement.build_statement_result(req_dict, stmt_list)
    
    update_parent_log_status(log_dict, 200)

    return HttpResponse(stream_response_generator(stmt_result), mimetype="application/json", status=200)
Ejemplo n.º 4
0
def agents_get(req_dict):
    log_dict = req_dict['initial_user_action']    
    log_info_processing(log_dict, 'GET', __name__)

    agent = req_dict['agent']
    a = Agent.Agent(agent,log_dict=log_dict)
    resp = HttpResponse(a.get_person_json(), mimetype="application/json")
    update_parent_log_status(log_dict, 200)
    return resp
Ejemplo n.º 5
0
def activity_state_put(req_dict):
    log_dict = req_dict['initial_user_action']    
    log_info_processing(log_dict, 'PUT', __name__)

    # test ETag for concurrency
    actstate = ActivityState.ActivityState(req_dict, log_dict=log_dict)
    actstate.put()

    update_parent_log_status(log_dict, 204)
    return HttpResponse("", status=204)
Ejemplo n.º 6
0
def statements_put(req_dict):
    log_dict = req_dict['initial_user_action']    
    log_info_processing(log_dict, 'PUT', __name__)
    
    # Set statement ID in body so all data is together
    req_dict['body']['statement_id'] = req_dict['statementId']
    stmt = Statement.Statement(req_dict['body'], auth=req_dict['auth'], log_dict=log_dict).model_object
    
    update_parent_log_status(log_dict, 204)
    return HttpResponse("No Content", status=204)
Ejemplo n.º 7
0
def activity_state_delete(req_dict):
    log_dict = req_dict['initial_user_action']    
    log_info_processing(log_dict, 'DELETE', __name__)

    actstate = ActivityState.ActivityState(req_dict, log_dict=log_dict)
    # Delete state
    actstate.delete(req_dict['auth'])

    update_parent_log_status(log_dict, 204)
    return HttpResponse('', status=204)
Ejemplo n.º 8
0
def agent_profile_delete(req_dict):
    log_dict = req_dict['initial_user_action']    
    log_info_processing(log_dict, 'DELETE', __name__)

    agent = req_dict['agent']
    a = Agent.Agent(agent, log_dict=log_dict)
    profileId = req_dict['profileId']
    a.delete_profile(profileId)

    update_parent_log_status(log_dict, 204)
    return HttpResponse('', status=204)
Ejemplo n.º 9
0
def agent_profile_put(req_dict):
    log_dict = req_dict['initial_user_action']    
    log_info_processing(log_dict, 'PUT', __name__)

    # test ETag for concurrency
    agent = req_dict['agent']
    a = Agent.Agent(agent, create=True, log_dict=log_dict)
    a.put_profile(req_dict)

    update_parent_log_status(log_dict, 204)
    return HttpResponse("", status=204)
Ejemplo n.º 10
0
def activity_profile_delete(req_dict):
    log_dict = req_dict['initial_user_action']    
    log_info_processing(log_dict, 'DELETE', __name__)

    #Instantiate activity profile
    ap = ActivityProfile.ActivityProfile(log_dict=log_dict)
    # Delete profile and return success
    ap.delete_profile(req_dict)

    update_parent_log_status(log_dict, 200)
    return HttpResponse('Success -- activity profile - method = DELETE - profileId = %s' % req_dict['profileId'], status=200)
Ejemplo n.º 11
0
def activity_profile_put(req_dict):
    log_dict = req_dict['initial_user_action']    
    log_info_processing(log_dict, 'PUT', __name__)

    #Instantiate ActivityProfile
    ap = ActivityProfile.ActivityProfile(log_dict=log_dict)
    #Put profile and return 204 response
    ap.put_profile(req_dict)

    update_parent_log_status(log_dict, 200)
    return HttpResponse('Success -- activity profile - method = PUT - profileId = %s' % req_dict['profileId'], status=200)
Ejemplo n.º 12
0
def activity_state_get(req_dict):
    log_dict = req_dict['initial_user_action']    
    log_info_processing(log_dict, 'GET', __name__)

    # add ETag for concurrency
    actstate = ActivityState.ActivityState(req_dict, log_dict=log_dict)
    stateId = req_dict.get('stateId', None)
    if stateId: # state id means we want only 1 item
        resource = actstate.get(req_dict['auth'])
        response = HttpResponse(resource.state.read())
        response['ETag'] = '"%s"' %resource.etag
    else: # no state id means we want an array of state ids
        resource = actstate.get_ids(req_dict['auth'])
        response = HttpResponse(json.dumps([k for k in resource]), content_type="application/json")
    update_parent_log_status(log_dict, 200)
    return response
Ejemplo n.º 13
0
def activities_get(req_dict):
    log_dict = req_dict['initial_user_action']    
    log_info_processing(log_dict, 'GET', __name__)

    activityId = req_dict['activityId']
    # Try to retrieve activity, if DNE then return empty else return activity info
    act_list = models.activity.objects.filter(activity_id=activityId)
    if not act_list:
        err_msg = "No activities found with ID %s" % activityId
        log_exception(log_dict, err_msg, activities_get.__name__)
        update_parent_log_status(log_dict, 404)
        raise exceptions.IDNotFoundError(err_msg)
    
    full_act_list = []
    for act in act_list:
        full_act_list.append(act.object_return())

    update_parent_log_status(log_dict, 200)
    return HttpResponse(json.dumps([k for k in full_act_list]), mimetype="application/json", status=200)
Ejemplo n.º 14
0
def agent_profile_get(req_dict):
    log_dict = req_dict['initial_user_action']    
    log_info_processing(log_dict, 'GET', __name__)

    # add ETag for concurrency
    agent = req_dict['agent']
    a = Agent.Agent(agent, log_dict=log_dict)
    
    profileId = req_dict.get('profileId', None)
    if profileId:
        resource = a.get_profile(profileId)
        response = HttpResponse(resource.profile.read(), content_type=resource.content_type)
        response['ETag'] = '"%s"' % resource.etag
        update_parent_log_status(log_dict, 200)
        return response

    since = req_dict.get('since', None)
    resource = a.get_profile_ids(since)
    response = HttpResponse(json.dumps([k for k in resource]), content_type="application/json")
    update_parent_log_status(log_dict, 200)
    return response
Ejemplo n.º 15
0
def statements_get(req_dict):
    log_dict = req_dict['initial_user_action']    
    log_info_processing(log_dict, 'GET', __name__)

    stmt_result = {}
    # If statementId is in req_dict then it is a single get
    if 'statementId' in req_dict:
        statementId = req_dict['statementId']
        # Try to retrieve stmt, if DNE then return empty else return stmt info                
        try:
            st = models.statement.objects.get(statement_id=statementId)
        except models.statement.DoesNotExist:
            err_msg = 'There is no statement associated with the id: %s' % statementId
            log_exception(log_dict, err_msg, statements_get.__name__)
            update_parent_log_status(log_dict, 404)
            raise exceptions.IDNotFoundError(err_msg)
        stmt_result = st.object_return()
    else:
        stmt_list = retrieve_statement.complex_get(req_dict)
        stmt_result = retrieve_statement.build_statement_result(req_dict.copy(), stmt_list)
    
    update_parent_log_status(log_dict, 200)
    return HttpResponse(stream_response_generator(stmt_result), mimetype="application/json", status=200)