Esempio n. 1
0
    def save(self, *args, **kwargs):
        """
        Sobreescribo el metodo save para que al salvar la instancia, se cargue
        el field de propiedad con el queryset adecuado
        """
        super(FieldPropiedadForm, self).save(*args, **kwargs)

        if self.instance.propiedad is None:
            if isinstance(self.instance, Atributo):
                queryset = descubre_propiedades(self.instance.modelo.entidad)
                queryset = queryset.order_by('nombre')
                self.fields['propiedad']._set_queryset(queryset)
            else:
                tipo_modelo_rel = self.instance.modelo_relacionado.entidad
                queryset = descubre_propiedades(self.instance.modelo.entidad,
                                                False)

                padres = descubre_padres(tipo_modelo_rel)
                padres.add(tipo_modelo_rel)
                queryset = queryset.filter(tipo__in=padres)
                queryset = queryset.order_by('nombre')

                if queryset.count() == 0:
                    queryset = Propiedad.objects.none()
                self.fields['propiedad']._set_queryset(queryset)
Esempio n. 2
0
def devuelve_propiedades_default(request):
    """
    Used with ajax, return the list of properties for a concrete field
    """
    resultado = dict()

    # If exist data in request.GET
    if request.method == u'GET':
        get_data = request.GET
        if u'field' in get_data:  # Get the field
            field = get_data[u'field']

            # Check if is a attribute or a relation
            if Atributo.objects.filter(pk=field).count() > 0:
                field = Atributo.objects.get(pk=field)
                queryset = descubre_propiedades(field.modelo.entidad)
            else:
                field = Relacion.objects.get(pk=field)

                queryset = descubre_propiedades(field.modelo.entidad, False)

                padres = descubre_padres(field.modelo_relacionado.entidad)
                padres.add(field.modelo_relacionado.entidad)
                queryset = queryset.filter(tipo__in=padres)

                if queryset.count() == 0:
                    queryset = Propiedad.objects.none()

            #Create a list with the properties availables
            resultado['return'] = True
            resultado['lista'] = list()

            queryset = queryset.order_by('nombre')

            for elem in queryset:
                # check if has description
                if elem.descripcion is None or elem.descripcion == '':
                    subregistro = (str(elem.id),
                                   unicode(elem),
                                   elem.etiqueta + ': ' +
                                   'Without description')
                else:
                    subregistro = (str(elem.id),
                                   unicode(elem),
                                   elem.etiqueta + ': ' +
                                   elem.descripcion)
                resultado['lista'].append(subregistro)

    # Return the list of properties using json
    json = simplejson.dumps(resultado)
    return HttpResponse(json, mimetype='application/json')
Esempio n. 3
0
def devuelve_propiedades_default(request):
    """
    Used with ajax, return the list of properties for a concrete field
    """
    resultado = dict()

    # If exist data in request.GET
    if request.method == u'GET':
        get_data = request.GET
        if u'field' in get_data:  # Get the field
            field = get_data[u'field']

            # Check if is a attribute or a relation
            if Atributo.objects.filter(pk=field).count() > 0:
                field = Atributo.objects.get(pk=field)
                queryset = descubre_propiedades(field.modelo.entidad)
            else:
                field = Relacion.objects.get(pk=field)

                queryset = descubre_propiedades(field.modelo.entidad, False)

                padres = descubre_padres(field.modelo_relacionado.entidad)
                padres.add(field.modelo_relacionado.entidad)
                queryset = queryset.filter(tipo__in=padres)

                if queryset.count() == 0:
                    queryset = Propiedad.objects.none()

            #Create a list with the properties availables
            resultado['return'] = True
            resultado['lista'] = list()

            queryset = queryset.order_by('nombre')

            for elem in queryset:
                # check if has description
                if elem.descripcion is None or elem.descripcion == '':
                    subregistro = (str(elem.id), unicode(elem), elem.etiqueta +
                                   ': ' + 'Without description')
                else:
                    subregistro = (str(elem.id), unicode(elem),
                                   elem.etiqueta + ': ' + elem.descripcion)
                resultado['lista'].append(subregistro)

    # Return the list of properties using json
    json = simplejson.dumps(resultado)
    return HttpResponse(json, mimetype='application/json')
Esempio n. 4
0
    def test_descubre_propiedades(self):
        """
        Caso de prueba para el metodo descubre_propiedades
        """
        ent1 = Entidad.objects.get(nombre="father")
        ent2 = Entidad.objects.get(nombre="son")

        propiedades_ent1 = descubre_propiedades(ent1)
        propiedades_ent1_complex = descubre_propiedades(ent1, False)
        propiedades_ent2 = descubre_propiedades(ent2)
        propiedades_ent2_complex = descubre_propiedades(ent2, False)

        self.assertEqual(propiedades_ent1.count(), 2)
        self.assertEqual(propiedades_ent1_complex.count(), 0)
        self.assertEqual(propiedades_ent2.count(), 1)
        self.assertEqual(propiedades_ent2_complex.count(), 1)

        # Set ent1 as father of ent2
        ent2.padres.add(ent1)
        ent2.save()

        propiedades_ent2 = descubre_propiedades(ent2)
        propiedades_ent2_complex = descubre_propiedades(ent2, False)
        self.assertEqual(propiedades_ent2.count(), 3)
        self.assertEqual(propiedades_ent2_complex.count(), 1)
Esempio n. 5
0
    def __init__(self, *args, **kwargs):
        super(FieldPropiedadForm, self).__init__(*args, **kwargs)

        ent = self.instance.modelo.entidad

        if not ent is None:
            self.fields['namespace'].empty_label = ent.namespace.namespace + \
                                                   u" : " + ent.nombre

        self.fields['propiedad'].label = self.instance.nombre
        name_data = self.data.get(self.prefix + "-namespace", None)
        prop_data = self.data.get(self.prefix + "-propiedad", None)

        if not name_data is None:
            try:
                name_data = int(name_data)
            except ValueError:
                name_data = None

        if not prop_data is None:
            try:
                prop_data = int(prop_data)
            except ValueError:
                prop_data = None

        if isinstance(self.instance, Atributo):
            if name_data is None:
                queryset = descubre_propiedades(self.instance.modelo.entidad)

                if prop_data is None and \
                   not self.instance.propiedad is None and \
                   not self.instance.propiedad in queryset:
                    name = self.instance.propiedad.namespace
                    self.fields['namespace'].initial = \
                                              self.instance.propiedad.namespace
                    queryset = name.propiedades.all()
                    queryset = queryset.filter(pk=self.instance.propiedad.pk)

            else:
                namespace = NameSpace.objects.get(pk=name_data)
                queryset = namespace.propiedades.all()
                if not prop_data is None:
                    queryset = queryset.filter(pk=prop_data)
        else:  # Caso de ser una relacion
            tipo_modelo_rel = self.instance.modelo_relacionado.entidad
            if name_data is None:
                queryset = descubre_propiedades(self.instance.modelo.entidad,
                                                False)

                padres = descubre_padres(tipo_modelo_rel)
                padres.add(tipo_modelo_rel)
                queryset = queryset.filter(tipo__in=padres)
                queryset = queryset.order_by('nombre')

                if queryset.count() == 0:
                    queryset = Propiedad.objects.none()

                if prop_data is None and \
                   not self.instance.propiedad is None and \
                   not self.instance.propiedad in queryset:
                    name = self.instance.propiedad.namespace
                    self.fields['namespace'].initial = \
                                              self.instance.propiedad.namespace
                    queryset = name.propiedades.all()
                    queryset = queryset.filter(pk=self.instance.propiedad.pk)
            else:
                namespace = NameSpace.objects.get(pk=name_data)

                self.fields['namespace'].initial = namespace
                queryset = namespace.propiedades.all()
                if not prop_data is None:
                    queryset = queryset.filter(pk=prop_data)

        queryset = queryset.order_by('nombre')

        self.fields['propiedad'].queryset = queryset