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)
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)
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)
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)
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)