Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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")
Ejemplo n.º 3
0
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))
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
def load_dataset(descriptor):

    descriptor.load_data()
    descriptor_dict = instance_dict(descriptor,
                                    recursive=True,
                                    properties=['metadata'])
    return descriptor_dict
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
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))
Ejemplo n.º 8
0
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))
Ejemplo n.º 9
0
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)
Ejemplo n.º 10
0
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
Ejemplo n.º 11
0
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()
Ejemplo n.º 12
0
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))
Ejemplo n.º 13
0
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)
Ejemplo n.º 14
0
                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