Exemplo n.º 1
0
def time_step_view(request, upload_session):
    import_session = upload_session.import_session

    if request.method == 'GET':
        # check for invalid attribute names
        store_type = import_session.tasks[0].target.store_type
        if store_type == 'dataStore':
            layer = import_session.tasks[0].layer
            invalid = filter(
                lambda a: str(
                    a.name).find(' ') >= 0,
                layer.attributes)
            if invalid:
                att_list = "<pre>%s</pre>" % '. '.join(
                    [a.name for a in invalid])
                msg = "Attributes with spaces are not supported : %s" % att_list
                return render_to_response(
                    'upload/layer_upload_error.html', RequestContext(request, {'error_msg': msg}))
        context = {
            'time_form': _create_time_form(import_session, None),
            'layer_name': import_session.tasks[0].layer.name,
            'async_upload': _is_async_step(upload_session)
        }
        return render_to_response('upload/layer_upload_time.html',
                                  RequestContext(request, context))
    elif request.method != 'POST':
        raise Exception()

    form = _create_time_form(import_session, request.POST)

    if not form.is_valid():
        logger.warning('Invalid upload form: %s', form.errors)
        return _error_response(request, errors=["Invalid Submission"])

    cleaned = form.cleaned_data

    start_attribute_and_type = cleaned.get('start_attribute', None)

    if start_attribute_and_type:

        def tx(type_name):

            return None if type_name is None or type_name == 'Date' \
                else 'DateFormatTransform'

        end_attribute, end_type = cleaned.get('end_attribute', (None, None))
        upload.time_step(
            upload_session,
            time_attribute=start_attribute_and_type[0],
            time_transform_type=tx(start_attribute_and_type[1]),
            time_format=cleaned.get('attribute_format', None),
            end_time_attribute=end_attribute,
            end_time_transform_type=tx(end_type),
            end_time_format=cleaned.get('end_attribute_format', None),
            presentation_strategy=cleaned['presentation_strategy'],
            precision_value=cleaned['precision_value'],
            precision_step=cleaned['precision_step'],
        )

    return _next_step_response(request, upload_session)
Exemplo n.º 2
0
def time_step_view(request, upload_session):
    import_session = upload_session.import_session

    if request.method == 'GET':
        # check for invalid attribute names
        store_type = import_session.tasks[0].target.store_type
        if store_type == 'dataStore':
            layer = import_session.tasks[0].layer
            invalid = filter(
                lambda a: str(
                    a.name).find(' ') >= 0,
                layer.attributes)
            if invalid:
                att_list = "<pre>%s</pre>" % '. '.join(
                    [a.name for a in invalid])
                msg = "Attributes with spaces are not supported : %s" % att_list
                return render_to_response(
                    'upload/layer_upload_error.html', RequestContext(request, {'error_msg': msg}))
        context = {
            'time_form': _create_time_form(import_session, None),
            'layer_name': import_session.tasks[0].layer.name,
            'async_upload': _is_async_step(upload_session)
        }
        return render_to_response('upload/layer_upload_time.html',
                                  RequestContext(request, context))
    elif request.method != 'POST':
        raise Exception()

    form = _create_time_form(import_session, request.POST)

    if not form.is_valid():
        logger.warning('Invalid upload form: %s', form.errors)
        return _error_response(request, errors=["Invalid Submission"])

    cleaned = form.cleaned_data

    start_attribute_and_type = cleaned.get('start_attribute', None)

    if start_attribute_and_type:

        def tx(type_name):

            return None if type_name is None or type_name == 'Date' \
                else 'DateFormatTransform'

        end_attribute, end_type = cleaned.get('end_attribute', (None, None))
        upload.time_step(
            upload_session,
            time_attribute=start_attribute_and_type[0],
            time_transform_type=tx(start_attribute_and_type[1]),
            time_format=cleaned.get('attribute_format', None),
            end_time_attribute=end_attribute,
            end_time_transform_type=tx(end_type),
            end_time_format=cleaned.get('end_attribute_format', None),
            presentation_strategy=cleaned['presentation_strategy'],
            precision_value=cleaned['precision_value'],
            precision_step=cleaned['precision_step'],
        )

    return _next_step_response(request, upload_session)
Exemplo n.º 3
0
def time_step_view(request, upload_session):
    import_session = upload_session.import_session

    if request.method == "GET":
        # check for invalid attribute names
        store_type = import_session.tasks[0].target.store_type
        if store_type == "dataStore":
            layer = import_session.tasks[0].layer
            invalid = filter(lambda a: str(a.name).find(" ") >= 0, layer.attributes)
            if invalid:
                att_list = "<pre>%s</pre>" % ". ".join([a.name for a in invalid])
                msg = "Attributes with spaces are not supported : %s" % att_list
                return render_to_response("upload/layer_upload_error.html", RequestContext(request, {"error_msg": msg}))
        context = {
            "time_form": _create_time_form(import_session, None),
            "layer_name": import_session.tasks[0].layer.name,
            "async_upload": _is_async_step(upload_session),
        }
        return render_to_response("upload/layer_upload_time.html", RequestContext(request, context))
    elif request.method != "POST":
        raise Exception()

    request_data = request.POST

    if "application/json" in request.META["CONTENT_TYPE"]:
        request_data = json.loads(request.body)

    form = _create_time_form(import_session, request_data)

    if not form.is_valid():
        logger.warning("Invalid upload form: %s", form.errors)
        return _error_response(request, errors=["Invalid Submission", form.errors])

    cleaned = form.cleaned_data

    start_attribute_and_type = cleaned.get("start_attribute", None)

    if start_attribute_and_type:

        def tx(type_name):

            return None if type_name is None or type_name == "Date" else "DateFormatTransform"

        end_attribute, end_type = cleaned.get("end_attribute", (None, None))
        upload.time_step(
            upload_session,
            time_attribute=start_attribute_and_type[0],
            time_transform_type=tx(start_attribute_and_type[1]),
            time_format=cleaned.get("text_attribute_format", None),
            end_time_attribute=end_attribute,
            end_time_transform_type=tx(end_type),
            end_time_format=cleaned.get("end_attribute_format", None),
            presentation_strategy=cleaned["presentation_strategy"],
            precision_value=cleaned["precision_value"],
            precision_step=cleaned["precision_step"],
        )

    return _next_step_response(request, upload_session)
Exemplo n.º 4
0
def time_step_view(request, upload_session):
    import_session = upload_session.import_session

    if request.method == 'GET':
        # check for invalid attribute names
        store_type = import_session.tasks[0].target.store_type
        if store_type == 'dataStore':
            layer = import_session.tasks[0].layer
            invalid = filter(
                lambda a: str(
                    a.name).find(' ') >= 0,
                layer.attributes)
            if invalid:
                att_list = "<pre>%s</pre>" % '. '.join(
                    [a.name for a in invalid])
                msg = "Attributes with spaces are not supported : %s" % att_list
                return render_to_response(
                    'upload/layer_upload_error.html', RequestContext(request, {'error_msg': msg}))
        context = {
            'time_form': _create_time_form(import_session, None),
            'layer_name': import_session.tasks[0].layer.name,
            'async_upload': _is_async_step(upload_session)
        }
        return render_to_response('upload/layer_upload_time.html',
                                  RequestContext(request, context))
    elif request.method != 'POST':
        raise Exception()

    form = _create_time_form(import_session, request.POST)

    if not form.is_valid():
        logger.warning('Invalid upload form: %s', form.errors)
        return _error_response(request, errors=["Invalid Submission"])

    cleaned = form.cleaned_data

    time_attribute_name, time_transform_type = None, None
    end_time_attribute_name, end_time_transform_type = None, None

    time_attribute = cleaned.get('attribute', None)
    end_time_attribute = cleaned.get('end_attribute', None)

    # submitted values will be in the form of '<name> [<type>]'
    name_pat = re.compile('^\S+')
    type_pat = re.compile('\[(.*)\]')

    if time_attribute:
        time_attribute_name = name_pat.search(time_attribute).group(0)
        time_attribute_type = type_pat.search(time_attribute).group(1)
        time_transform_type = None if time_attribute_type == 'Date' else 'DateFormatTransform'
    if end_time_attribute:
        end_time_attribute_name = name_pat.search(end_time_attribute).group(0)
        end_time_attribute_type = type_pat.search(end_time_attribute).group(1)
        end_time_transform_type = None if end_time_attribute_type == 'Date' else 'DateFormatTransform'

    if time_attribute:
        upload.time_step(
            upload_session,
            time_attribute=time_attribute_name,
            time_transform_type=time_transform_type,
            time_format=cleaned.get('attribute_format', None),
            end_time_attribute=end_time_attribute_name,
            end_time_transform_type=end_time_transform_type,
            end_time_format=cleaned.get('end_attribute_format', None),
            presentation_strategy=cleaned['presentation_strategy'],
            precision_value=cleaned['precision_value'],
            precision_step=cleaned['precision_step'],
        )

    return _next_step_response(request, upload_session)
Exemplo n.º 5
0
def time_step_view(request, upload_session):
    import_session = upload_session.import_session

    if request.method == 'GET':
        # check for invalid attribute names
        store_type = import_session.tasks[0].target.store_type
        if store_type == 'dataStore':
            layer = import_session.tasks[0].layer
            invalid = filter(lambda a: str(a.name).find(' ') >= 0,
                             layer.attributes)
            if invalid:
                att_list = "<pre>%s</pre>" % '. '.join(
                    [a.name for a in invalid])
                msg = "Attributes with spaces are not supported : %s" % att_list
                return render_to_response(
                    'upload/layer_upload_error.html',
                    RequestContext(request, {'error_msg': msg}))
        context = {
            'time_form': _create_time_form(import_session, None),
            'layer_name': import_session.tasks[0].layer.name,
            'async_upload': _is_async_step(upload_session)
        }
        return render_to_response('upload/layer_upload_time.html',
                                  RequestContext(request, context))
    elif request.method != 'POST':
        raise Exception()

    form = _create_time_form(import_session, request.POST)

    if not form.is_valid():
        logger.warning('Invalid upload form: %s', form.errors)
        return _error_response(request, errors=["Invalid Submission"])

    cleaned = form.cleaned_data

    time_attribute_name, time_transform_type = None, None
    end_time_attribute_name, end_time_transform_type = None, None

    time_attribute = cleaned.get('attribute', None)
    end_time_attribute = cleaned.get('end_attribute', None)

    # submitted values will be in the form of '<name> [<type>]'
    name_pat = re.compile('^\S+')
    type_pat = re.compile('\[(.*)\]')

    if time_attribute:
        time_attribute_name = name_pat.search(time_attribute).group(0)
        time_attribute_type = type_pat.search(time_attribute).group(1)
        time_transform_type = None if time_attribute_type == 'Date' else 'DateFormatTransform'
    if end_time_attribute:
        end_time_attribute_name = name_pat.search(end_time_attribute).group(0)
        end_time_attribute_type = type_pat.search(end_time_attribute).group(1)
        end_time_transform_type = None if end_time_attribute_type == 'Date' else 'DateFormatTransform'

    if time_attribute:
        upload.time_step(
            upload_session,
            time_attribute=time_attribute_name,
            time_transform_type=time_transform_type,
            time_format=cleaned.get('attribute_format', None),
            end_time_attribute=end_time_attribute_name,
            end_time_transform_type=end_time_transform_type,
            end_time_format=cleaned.get('end_attribute_format', None),
            presentation_strategy=cleaned['presentation_strategy'],
            precision_value=cleaned['precision_value'],
            precision_step=cleaned['precision_step'],
        )

    return _next_step_response(request, upload_session)
Exemplo n.º 6
0
def time_step_view(request, upload_session):
    import_session = upload_session.import_session
    
    if request.GET.__contains__('force_ajax') and request.GET['force_ajax']:
        url = reverse('data_upload') + "?id=%s" % import_session.id
        return json_response(
            {'url': url,
            'status': 'incomplete',
            'success': True,
            'redirect_to': '/upload/time',
            'input_required': True,
            }
        )


    if request.method == 'GET':
        # check for invalid attribute names
        feature_type = import_session.tasks[0].items[0].resource
        if feature_type.resource_type == 'featureType':
            invalid = filter(lambda a: a.name.find(' ') >= 0, feature_type.attributes)
            if invalid:
                att_list = "<pre>%s</pre>" % '. '.join([a.name for a in invalid])
                msg = "Attributes with spaces are not supported : %s" % att_list
                return render_to_response('upload/layer_upload_error.html', RequestContext(request,{
                    'error_msg' : msg
                }))
        context = {
            'time_form': _create_time_form(import_session, None),
            'layer_name': import_session.tasks[0].items[0].layer.name,
            'async_upload' : _is_async_step(upload_session)
        }
        return render_to_response('upload/layer_upload_time.html',
                                  RequestContext(request, context))

    elif request.method != 'POST':
        raise Exception()

    form = _create_time_form(import_session, request.POST)
    #@todo validation feedback, though we shouldn't get here
    #if not form.is_valid():
    #    logger.warning('Invalid upload form: %s', form.errors)
    #    return _error_response(request, errors=["Invalid Submission"])

    cleaned = form.data

    time_attribute, time_transform_type = None, None
    end_time_attribute, end_time_transform_type = None, None

    field_collectors = [
        ('time_attribute', None),
        ('text_attribute', 'DateFormatTransform'),
        ('year_attribute', 'IntegerFieldToDateTransform')
    ]

    for field, transform_type in field_collectors:
        time_attribute = cleaned.get(field, None)
        if time_attribute:
            time_transform_type = transform_type
            break
    for field, transform_type in field_collectors:
        end_time_attribute = cleaned.get('end_' + field, None)
        if end_time_attribute:
            end_time_transform_type = transform_type
            break

    if time_attribute:
        upload.time_step(
            upload_session,
            time_attribute=time_attribute,
            time_transform_type=time_transform_type,
            time_format=cleaned.get('text_attribute_format', None),
            end_time_attribute=end_time_attribute,
            end_time_transform_type=end_time_transform_type,
            end_time_format=cleaned.get('end_text_attribute_format', None),
            presentation_strategy=cleaned['presentation_strategy'],
            precision_value=cleaned['precision_value'],
            precision_step=cleaned['precision_step'],
        )

    return _next_step_response(request, upload_session)
Exemplo n.º 7
0
def time_step_view(request, upload_session):
    import_session = upload_session.import_session
    
    if request.GET.__contains__('force_ajax') and request.GET['force_ajax']:
        url = reverse('data_upload') + "?id=%s" % import_session.id
        return json_response(
            {'url': url,
            'status': 'incomplete',
            'success': True,
            'redirect_to': '/upload/time',
            'input_required': True,
            }
        )


    if request.method == 'GET':
        # check for invalid attribute names
        feature_type = import_session.tasks[0].items[0].resource
        if feature_type.resource_type == 'featureType':
            invalid = filter(lambda a: a.name.find(' ') >= 0, feature_type.attributes)
            if invalid:
                att_list = "<pre>%s</pre>" % '. '.join([a.name for a in invalid])
                msg = "Attributes with spaces are not supported : %s" % att_list
                return render_to_response('upload/layer_upload_error.html', RequestContext(request,{
                    'error_msg' : msg
                }))
        context = {
            'time_form': _create_time_form(import_session, None),
            'layer_name': import_session.tasks[0].items[0].layer.name,
            'async_upload' : _is_async_step(upload_session)
        }
        return render_to_response('upload/layer_upload_time.html',
                                  RequestContext(request, context))

    elif request.method != 'POST':
        raise Exception()

    form = _create_time_form(import_session, request.POST)
    #@todo validation feedback, though we shouldn't get here
    #if not form.is_valid():
    #    logger.warning('Invalid upload form: %s', form.errors)
    #    return _error_response(request, errors=["Invalid Submission"])

    cleaned = form.data

    time_attribute, time_transform_type = None, None
    end_time_attribute, end_time_transform_type = None, None

    field_collectors = [
        ('time_attribute', None),
        ('text_attribute', 'DateFormatTransform'),
        ('year_attribute', 'IntegerFieldToDateTransform')
    ]

    for field, transform_type in field_collectors:
        time_attribute = cleaned.get(field, None)
        if time_attribute:
            time_transform_type = transform_type
            break
    for field, transform_type in field_collectors:
        end_time_attribute = cleaned.get('end_' + field, None)
        if end_time_attribute:
            end_time_transform_type = transform_type
            break

    if time_attribute:
        upload.time_step(
            upload_session,
            time_attribute=time_attribute,
            time_transform_type=time_transform_type,
            time_format=cleaned.get('text_attribute_format', None),
            end_time_attribute=end_time_attribute,
            end_time_transform_type=end_time_transform_type,
            end_time_format=cleaned.get('end_text_attribute_format', None),
            presentation_strategy=cleaned['presentation_strategy'],
            precision_value=cleaned['precision_value'],
            precision_step=cleaned['precision_step'],
        )

    return _next_step_response(request, upload_session)