Esempio n. 1
0
def feed_entries(request, form_code):
    user = request.user
    try:
        if not settings.FEEDS_ENABLED:
            return HttpResponse(404)
        if invalid_date(request.GET.get('start_date')):
            return convert_to_json_response(
                {"ERROR_CODE": 102, "ERROR_MESSAGE": 'Invalid Start Date provided'}, 400)
        if invalid_date(request.GET.get('end_date')):
            return convert_to_json_response(
                {"ERROR_CODE": 102, "ERROR_MESSAGE": 'Invalid End Date provided'}, 400)
        if lesser_end_date(request.GET.get('end_date'), request.GET.get('start_date')):
            return convert_to_json_response(
                {"ERROR_CODE": 103, "ERROR_MESSAGE": 'End Date provided is less than Start Date'}, 400)
        if _invalid_form_code(request, form_code):
            return convert_to_json_response({"ERROR_CODE": 101, "ERROR_MESSAGE": 'Invalid form code provided'}, 400)

        dbm = get_database_manager(user)
        form_model = get_form_model_by_code(dbm, form_code)
        questionnaire_id = form_model.id
        if user.is_ngo_admin() or user.is_extended_user() or \
                (user.is_project_manager() and has_permission(dbm, user.id, questionnaire_id)):
            feed_dbm = get_feeds_database(request.user)
            start_date = _parse_date(request.GET['start_date'])
            end_date = _parse_date(request.GET['end_date'])
            return HttpResponse(stream_feeds(feed_dbm, startkey=[form_code, start_date], endkey=[form_code, end_date]),
                                content_type='application/json; charset=utf-8')

        return convert_to_json_response({"ERROR_CODE": 104, "ERROR_MESSAGE": "You don't have access to this feed"}, 403)
    except Exception as e:
        logger = logging.getLogger('datawinners')
        logger.exception(e)
        return HttpResponse(content='Internal Server Error', status=500)
Esempio n. 2
0
def get_entity_list_by_type(request, entity_type):
    entity_type_list = [entity_type]
    if entity_type is None:
        return []
    manager = get_database_manager(request.user)
    entities = get_all_entities(manager, entity_type_list)
    return convert_to_json_response([entity.short_code for entity in entities])
Esempio n. 3
0
def feed_entries(request, form_code):
    try:
        if not settings.FEEDS_ENABLED:
            return HttpResponse(404)
        if invalid_date(request.GET.get('start_date')):
            return convert_to_json_response(
                {
                    "ERROR_CODE": 102,
                    "ERROR_MESSAGE": 'Invalid Start Date provided'
                }, 400)
        if invalid_date(request.GET.get('end_date')):
            return convert_to_json_response(
                {
                    "ERROR_CODE": 102,
                    "ERROR_MESSAGE": 'Invalid End Date provided'
                }, 400)
        if lesser_end_date(request.GET.get('end_date'),
                           request.GET.get('start_date')):
            return convert_to_json_response(
                {
                    "ERROR_CODE": 103,
                    "ERROR_MESSAGE":
                    'End Date provided is less than Start Date'
                }, 400)
        if _invalid_form_code(request, form_code):
            return convert_to_json_response(
                {
                    "ERROR_CODE": 101,
                    "ERROR_MESSAGE": 'Invalid form code provided'
                }, 400)

        feed_dbm = get_feeds_database(request.user)
        start_date = _parse_date(request.GET['start_date'])
        end_date = _parse_date(request.GET['end_date'])
        return HttpResponse(stream_feeds(feed_dbm,
                                         startkey=[form_code, start_date],
                                         endkey=[form_code, end_date]),
                            content_type='application/json; charset=utf-8')
    except Exception as e:
        logger = logging.getLogger('datawinners')
        logger.exception(e)
        return HttpResponse(content='Internal Server Error', status=500)