def load_source_data_ajax_celery(request, source_id): response = AjaxResponse() try: base_source = Source.objects.get(pk=int(source_id)) source = base_source.get_subclass() descriptor = DatasetDescriptor(source=source) descriptor.save() out = {} #source.generate_fields_for_descriptor(descriptor) #descriptor.load_data() deferred_result = load_dataset_from_source.delay(source, descriptor) out['task_id'] = deferred_result.task_id out['descriptor'] = instance_dict(descriptor, recursive=True, related_names=['items'], properties=['metadata']) out['descriptor_url'] = reverse("website.views.descriptor", args=(descriptor.id, )) response.result = out except Exception, e: response.status = 500 response.error = str(e)
def export_dataset(request, descriptor_id): descriptor = DatasetDescriptor.objects.select_related().get( id=int(descriptor_id)) descriptor_dict = instance_dict(descriptor, recursive=True, related_names=['items'], properties=['metadata']) datamodel = descriptor.dymodel objs = datamodel.Dataset.objects.all() #todo: make helper if 'filters' in request.GET: raw_str = request.GET['filters'] if len(raw_str.replace(" ", '')) > 0: pieces = raw_str.split("+") kwargs = {} for p in pieces: pp = p.split("=") key_name = pp[0] value = pp[1] kwargs[key_name] = value objs = objs.filter(**kwargs) #todo: get the right exporter based on request params exporter = CSVExporter(descriptor, objs) return exporter.get_response("dataset_" + str(descriptor.id) + ".csv")
def regressor_edit(request, regressor_id): regression_model = RegressionModel.objects.select_related().get( id=int(regressor_id)) regression_model_json = json.dumps( instance_dict(regression_model, ignore_fields=['regressor'])) descriptor = regression_model.descriptor regressor_ajax_url = reverse("website.views.regressor_ajax", args=(regressor_id, )) regressor_train_ajax_url = reverse("website.views.train_regressor_ajax", args=(regressor_id, )) cv_results_regressor_ajax_url = reverse( "website.views.cv_results_regressor_ajax", args=(regressor_id, )) template = "website/regression_model.html" return render_to_response( template, { 'descriptor': descriptor, 'regression_model': regression_model, 'regression_model_json': regression_model_json, 'regressor_ajax_url': regressor_ajax_url, 'regressor_train_ajax_url': regressor_train_ajax_url, 'cv_results_regressor_ajax_url': cv_results_regressor_ajax_url, }, context_instance=RequestContext(request))
def visualization_ajax(request, visualization_id=None): response = AjaxResponse() if request.method == 'POST': try: if visualization_id: viz = Visualization.objects.get(pk=int(visualization_id)) else: descriptor_id = int(request.POST['descriptor_id']) descriptor = DatasetDescriptor.objects.select_related().get( id=int(descriptor_id)) type = request.POST['type'] viz = Visualization(descriptor=descriptor, type=type) if 'options' in request.POST: options = json.loads(request.POST['options']) viz.options = options viz.save() viz_edit_url = reverse("website.views.visualization_edit", args=(viz.id, )) out = { 'visualization': instance_dict(viz), 'visualization_edit_url': viz_edit_url } response.result = out except Exception, e: response.status = 500 response.error = str(e)
def load_dataset(descriptor): descriptor.load_data() descriptor_dict = instance_dict(descriptor, recursive=True, properties=['metadata']) return descriptor_dict
def add_shape_source_ajax(request): response = AjaxResponse() user = request.user #TODO: check if user can write if request.method == 'POST': try: name = request.POST['name'] filename = request.POST['filename'] full_path = os.path.join(settings.MEDIA_ROOT, 'ajax_uploads', filename) part_path = os.path.join('ajax_uploads', filename) #todo: check zip #todo: unzip to DEFAULT_SHAPES_PATH #todo: get new path of main shape checker = ShapeChecker() valid, msg = checker.validate(full_path) if not valid: response.status = 500 response.error = msg return response.as_http_response() new_path = checker.handle(full_path) source_instance = ShapeSource(name=name, shape=new_path) source_instance.save() base_render_context = {} """ rendered = render_to_string('worktables/attachments_list.html', base_render_context, context_instance=RequestContext(request)) """ source_dict = instance_dict(source_instance) source_url = reverse("website.views.source", args=(source_instance.id, )) load_source_data_url = reverse( "website.views.load_source_data_ajax", args=(source_instance.id, )) out = { 'source': source_dict, 'source_url': source_url, 'load_source_data_url': load_source_data_url } response.result = out except Exception, e: response.status = 500 response.error = str(e)
def visualization_edit(request, visualization_id): visualization = Visualization.objects.select_related().get( id=int(visualization_id)) visualization_json = json.dumps(instance_dict(visualization)) descriptor = visualization.descriptor visualization_ajax_url = reverse("website.views.visualization_ajax", args=(visualization_id, )) template = visualization.edit_template return render_to_response(template, { 'descriptor': descriptor, 'visualization': visualization, 'visualization_json': visualization_json, 'visualization_ajax_url': visualization_ajax_url, }, context_instance=RequestContext(request))
def descriptor(request, descriptor_id): descriptor = DatasetDescriptor.objects.get(id=int(descriptor_id)) descriptor_resource_url = reverse("website.views.descriptor_ajax", args=(descriptor_id, )) base_source = Source.objects.get(pk=descriptor.source_id) source = base_source.get_subclass() #load_data_url = reverse('website.views.load_data_ajax', args=(descriptor.id,)) load_data_url = reverse('website.views.load_data_ajax_celery', args=(descriptor.id, )) dataset_data_url = reverse('website.views.dataset_data_ajax', args=(descriptor.id, )) descriptor_drop_url = reverse("website.views.drop_descriptor_ajax", args=(descriptor_id, )) descriptoritems_order_ajax_url = reverse( "website.views.descriptoritems_order_ajax") get_task_status_url = reverse("website.views.get_task_status_url") descriptor_json = json.dumps(instance_dict(descriptor, recursive=True), cls=DjangoJSONEncoder) allowed_types = json.dumps(DESCRIPTORS_TYPES_MAP.keys(), cls=DjangoJSONEncoder) allowed_names = json.dumps(source.get_fields(), cls=DjangoJSONEncoder) visualization_choices = json.dumps(ACTIVE_VISUALIZATIONS) regression_choices = json.dumps(ACTIVE_REGRESSION_MODELS) return render_to_response('website/descriptor.html', { 'descriptor': descriptor, 'descriptor_json': descriptor_json, 'allowed_types': allowed_types, 'allowed_names': allowed_names, 'load_data_url': load_data_url, 'dataset_data_url': dataset_data_url, 'descriptor_resource_url': descriptor_resource_url, 'descriptor_drop_url': descriptor_drop_url, 'get_task_status_url': get_task_status_url, 'descriptoritems_order_ajax_url': descriptoritems_order_ajax_url, 'visualization_choices': visualization_choices, 'regression_choices': regression_choices }, context_instance=RequestContext(request))
def regressor_ajax(request, regressor_id=None): response = AjaxResponse() if request.method == 'POST': try: if regressor_id: regression_model = RegressionModel.objects.get( pk=int(regressor_id)) else: descriptor_id = int(request.POST['descriptor_id']) descriptor = DatasetDescriptor.objects.select_related().get( id=int(descriptor_id)) type = request.POST['type'] regression_model = RegressionModel(descriptor=descriptor, type=type) if 'options' in request.POST: options = json.loads(request.POST['options']) regression_model.options = options if 'x_columns' in request.POST: x_columns = json.loads(request.POST['x_columns']) regression_model.x_columns = x_columns if 'y_column' in request.POST: y_column = request.POST['y_column'] regression_model.y_column = y_column regression_model.save() regression_model_edit_url = reverse("website.views.regressor_edit", args=(regression_model.id, )) out = { 'regression_model': instance_dict(regression_model), 'regression_model_edit_url': regression_model_edit_url } response.result = out except Exception, e: response.status = 500 response.error = str(e)
def descriptor_ajax(request, descriptor_id=None): response = AjaxResponse() #post method if request.method == 'POST': if request.POST['id']: id_descriptor = int(request.POST['id']) try: descriptor = DatasetDescriptor.objects.get(pk=id_descriptor) except Exception, e: response.error = str(e) response.status = 404 return response.as_http_response() else: descriptor = DatasetDescriptor() descriptor.save() try: for d in descriptor.items.all(): d.delete() except: pass if 'items' in request.POST: descriptor_items = json.loads(request.POST['items']) for descriptor_item in descriptor_items: descr = None if descriptor_item['id']: try: descr = DatasetDescriptorItem.objects.get( pk=descriptor_item['id']) except: pass if not descr: descr = DatasetDescriptorItem(descriptor=descriptor) descr.name = descriptor_item['name'] descr.type = descriptor_item['type'] descr.save() descriptor_dict = instance_dict(descriptor, recursive=True) response.result = descriptor_dict
def add_csv_source_ajax(request): response = AjaxResponse() user = request.user #TODO: check if user can write if request.method == 'POST': try: name = request.POST['name'] filename = request.POST['filename'] full_path = os.path.join(settings.MEDIA_ROOT, 'ajax_uploads', filename) part_path = os.path.join('ajax_uploads', filename) source_instance = CsvSource(name=name) source_instance.csv.name = part_path source_instance.save() base_render_context = {} """ rendered = render_to_string('worktables/attachments_list.html', base_render_context, context_instance=RequestContext(request)) """ source_dict = instance_dict(source_instance) source_url = reverse("website.views.source", args=(source_instance.id, )) load_source_data_url = reverse( "website.views.load_source_data_ajax", args=(source_instance.id, )) out = { 'source': source_dict, 'source_url': source_url, 'load_source_data_url': load_source_data_url } response.result = out except Exception, e: response.status = 500 response.error = str(e) return response.as_http_response()
def dataset_table_view(request, descriptor_id): descriptor = DatasetDescriptor.objects.select_related().get( id=int(descriptor_id)) descriptor_dict = instance_dict(descriptor, recursive=True, related_names=['items'], properties=['metadata']) datamodel = descriptor.dymodel objs = datamodel.Dataset.objects.all() #todo: make helper if 'filters' in request.GET: raw_str = request.GET['filters'] if len(raw_str.replace(" ", '')) > 0: pieces = raw_str.split("+") kwargs = {} for p in pieces: pp = p.split("=") key_name = pp[0] value = pp[1] kwargs[key_name] = value objs = objs.filter(**kwargs) paginator = Paginator(objs, DATASET_OBJECTS_PER_PAGE) page = get_page_or_1(request) dataset_page = get_paginator_page(paginator, page) return render_to_response( 'website/dataset_table_view.html', { #'rows' : objs, 'meta': descriptor.metadata, 'descriptor': descriptor, 'paginator_page': dataset_page, 'descriptor_dict': json.dumps(descriptor_dict), 'filters_map': json.dumps(FILTERS_TYPES_MAP) }, context_instance=RequestContext(request))
def train_regressor_ajax(request, regressor_id): response = AjaxResponse() try: regression_model = RegressionModel.objects.get(pk=int(regressor_id)) regression_model.train() regression_model_edit_url = reverse("website.views.regressor_edit", args=(regression_model.id, )) out = { 'regression_model': instance_dict(regression_model, ignore_fields=['regressor']), 'regression_model_edit_url': regression_model_edit_url } response.result = out except Exception, e: response.status = 500 response.error = str(e)
if not descr: descr = DatasetDescriptorItem(descriptor=descriptor) descr.name = descriptor_item['name'] descr.type = descriptor_item['type'] descr.save() descriptor_dict = instance_dict(descriptor, recursive=True) response.result = descriptor_dict #get method else: try: descriptor = DatasetDescriptor.objects.get(pk=descriptor_id) descriptor_dict = instance_dict(descriptor, recursive=True, related_names=['items'], properties=['dirty', 'data_url']) response.result = descriptor_dict except Exception, e: response.error = str(e) response.status = 404 return response.as_http_response() def drop_descriptor_ajax(request, descriptor_id): response = AjaxResponse() try: descriptor = DatasetDescriptor.objects.get(pk=int(descriptor_id)) except Exception, e: response.status = 404