Esempio n. 1
0
def categoria_producto_lista(request):
    #from api_pollo.models import Personal
    #Codigo de verificacion de asignacion de modulo
    user = Usuario.objects.get(auth_user_id=request.user.id)

    modulos = [8]
    modulo_valido = validar_modulos(user.perfil.id, user.empresa.id, modulos)
    #print(modulo_valido)
    if modulo_valido['error'] == 1:
        errors = {
            "error":
            "No tiene permisos suficientes, para realizar operaciones en este modulo"
        }
        return Response(errors, status=status.HTTP_400_BAD_REQUEST)

    bd = modulo_valido['bd']
    #print(bd)
    # termina verificaciond e modulo
    if request.method == 'GET':
        categorias = ProductoCategoria.objects.using(bd).filter(
            es_nodo_principal=True, estado=True).order_by("numero")
        texto = '<ul class="dropdown-menu inner selectpicker" style="max-height: 220px; overflow-y: auto; min-height: 81px;" role="menu">'
        texto = texto + '<li class="btn-group open"><a data-cat="-1" data-text="Sin categor&iacute;a"><span class="text">Sin categor&iacute;a</span></a></li>'
        texto = texto + '<li class="btn-group open active">' + '<a data-cat="0" data-text="Todas"><span class="text">Todas</span></a>'
        num = 1
        array = []
        arbol = crearArbolLista(categorias, bd, num, 0, array)
        texto = texto + arbol + '</li></ul>'
        respuesta = {'arbol': texto}

        return Response(respuesta)
Esempio n. 2
0
def caracteristica_listado(request):
    #from api_pollo.models import Personal
    #Codigo de verificacion de asignacion de modulo
    user = Usuario.objects.get(auth_user_id=request.user.id)

    modulos = [9]
    modulo_valido = validar_modulos(user.perfil.id, user.empresa.id, modulos)
    #print(modulo_valido)
    if modulo_valido['error'] == 1:
        errors = {
            "error":
            "No tiene permisos suficientes, para realizar operaciones en este modulo"
        }
        return Response(errors, status=status.HTTP_400_BAD_REQUEST)

    bd = modulo_valido['bd']
    #print(bd)
    # termina verificaciond e modulo
    if request.method == 'GET':
        if request.QUERY_PARAMS.get('param') is not None:

            param = request.QUERY_PARAMS.get('param')
            caracteristicas = Caracteristica.objects.using(bd).filter(
                Q(estado=True),
                (Q(nombre__icontains=param) | Q(id__icontains=param)))
        else:
            caracteristicas = Caracteristica.objects.using(bd).filter(
                estado=True)
        #print(len(personal))
        numRegistros = request.QUERY_PARAMS.get('per_page')
        paginator = Paginator(caracteristicas, numRegistros)

        page = request.QUERY_PARAMS.get('page')
        try:
            registros = paginator.page(page)
        except PageNotAnInteger:
            # If page is not an integer, deliver first page.
            registros = paginator.page(1)
        except EmptyPage:
            # If page is out of range (e.g. 9999),
            # deliver last page of results.
            registros = paginator.page(paginator.num_pages)
        serializer_context = {'request': request}
        serializer = PaginatedCaracteristicaSerializer(
            registros, context=serializer_context)
        return Response(serializer.data)

    elif request.method == 'POST':
        data = {}
        for dato in request.DATA:
            if request.DATA[dato] != '':
                data[dato] = request.DATA[dato]
            else:
                data[dato] = None
        caracteristica = Caracteristica(nombre=data['nombre'], estado=True)

        caracteristica.save(using=bd)
        respuesta = {"id": caracteristica.id}
        return Response(respuesta, status=status.HTTP_201_CREATED)
Esempio n. 3
0
def caracteristica_detalle(request, pk):
    user = Usuario.objects.get(auth_user_id=request.user.id)

    modulos = [9]
    modulo_valido = validar_modulos(user.perfil.id, user.empresa.id, modulos)
    if modulo_valido['error'] == 1:
        errors = {
            "error":
            "No tiene permisos suficientes, para realizar operaciones en este modulo"
        }
        return Response(errors, status=status.HTTP_400_BAD_REQUEST)

    bd = modulo_valido['bd']

    if request.method == 'PUT':
        data = {}
        if Caracteristica.objects.using(bd).filter(
                id=pk, estado=True).exists() is not True:
            errors = {
                "error":
                "El registro ha sido borrado, o no existe en el sistema"
            }
            return Response(errors, status=status.HTTP_400_BAD_REQUEST)
        caracteristica = Caracteristica.objects.using(bd).get(id=pk)
        #print(personal['apellidos'])
        for dato in request.DATA:
            if request.DATA[dato] != '':
                data[dato] = request.DATA[dato]
            else:
                data[dato] = None

        caracteristica.nombre = data['nombre']
        #print(data)
        if caracteristica.has_changed == True:
            caracteristica.save(using=bd)
            respuesta = {"respuesta": 1}
            return Response(respuesta, status=status.HTTP_200_OK)
        else:
            respuesta = {"respuesta": 2}
            return Response(respuesta, status=status.HTTP_200_OK)

        errors = {"error": ""}
        return Response(errors, status=status.HTTP_400_BAD_REQUEST)

    elif request.method == 'DELETE':
        if Caracteristica.objects.using(bd).filter(
                id=pk, estado=True).exists() is not True:
            errors = {
                "error":
                "El registro ha sido borrado, o no existe en el sistema"
            }
            return Response(errors, status=status.HTTP_400_BAD_REQUEST)
        caracteristica = Caracteristica.objects.using(bd).get(id=pk)
        caracteristica.estado = False
        caracteristica.save(using=bd)
        respuesta = {"": ""}
        return Response(respuesta, status=status.HTTP_200_OK)
Esempio n. 4
0
def proveedor_detalle(request,pk):
    user=Usuario.objects.get(auth_user_id=request.user.id)
    
    modulos=[10]
    modulo_valido=validar_modulos(user.perfil.id,user.empresa.id,modulos)
    print(modulo_valido)
    if modulo_valido['error']==1:
        errors={"error":"No tiene permisos suficientes, para realizar operaciones en este modulo"}
        return Response(errors, status=status.HTTP_400_BAD_REQUEST)
    
    bd=modulo_valido['bd']
    
    if request.method == 'PUT':
        data={}
        if Personal.objects.using(bd).filter(id=pk, estado=True,tipo=1).exists() is not True:
            errors={"error":"El cliente ha sido borrado, o no esta registrado en el sistema"}
            return Response(errors, status=status.HTTP_400_BAD_REQUEST)
        personal=Personal.objects.using(bd).get(id=pk)
        #print(personal['apellidos'])
        for dato in request.DATA:
            if request.DATA[dato]!='':
                if dato=='nit':
                    data[dato]=int(request.DATA[dato])
                else:
                    data[dato]=request.DATA[dato]  
            else:
                data[dato]=None        
        personal.nombres=data['nombres']
        personal.apellidos=data['apellidos']
        personal.empresa=data['empresa']
        personal.telefono=data['telefono']
        personal.direccion=data['direccion']
        personal.nit=data['nit']
        print(personal.has_changed)
        if personal.has_changed==True:
            personal.save(using=bd)
            respuesta={"respuesta":1}
            return Response(respuesta, status=status.HTTP_200_OK)
        else:
            respuesta={"respuesta":2}
            return Response(respuesta, status=status.HTTP_200_OK)
        
        errors={"error":""}
        return Response(errors, status=status.HTTP_400_BAD_REQUEST)
    
    elif request.method == 'DELETE':
        if Personal.objects.using(bd).filter(id=pk, estado=True,tipo=1).exists() is not True:
            errors={"error":"El cliente ha sido borrado, o no esta registrado en el sistema"}
            return Response(errors, status=status.HTTP_400_BAD_REQUEST)
        personal=Personal.objects.using(bd).get(id=pk)
        personal.estado=False
        personal.save(using=bd)
        respuesta={"":""}
        return Response(respuesta, status=status.HTTP_200_OK)
            
Esempio n. 5
0
def atributo_producto_detalle(request,pk):
    user=Usuario.objects.get(auth_user_id=request.user.id)
    
    modulos=[8]
    modulo_valido=validar_modulos(user.perfil.id,user.empresa.id,modulos)
    if modulo_valido['error']==1:
        errors={"error":"No tiene permisos suficientes, para realizar operaciones en este modulo"}
        return Response(errors, status=status.HTTP_400_BAD_REQUEST)
    
    bd=modulo_valido['bd']
    
    if request.method == 'PUT':
        data={}
        if ProductoAtributo.objects.using(bd).filter(id=pk, estado=True).exists() is not True:
            errors={"error":"El registro ha sido borrado, o no existe en el sistema"}
            return Response(errors, status=status.HTTP_400_BAD_REQUEST)
        atributo=ProductoAtributo.objects.using(bd).get(id=pk)
        #print(personal['apellidos'])
        for dato in request.DATA:
            if request.DATA[dato]!='':
                data[dato]=request.DATA[dato]                 
            else:
                data[dato]=None        
        
        atributo.atributo_id=data['atributo']
        atributo.tipo_control_id=data['tipo_control']
        #print(data)
        if atributo.has_changed==True:
            atributo.save(using=bd)
            respuesta={"respuesta":1,'tipo_control_lb':atributo.tipo_control.nombre,'atributo_lb':atributo.atributo.nombre}
            return Response(respuesta, status=status.HTTP_200_OK)
        else:
            respuesta={"respuesta":2}
            return Response(respuesta, status=status.HTTP_200_OK)
            
        errors={"error":""}
        return Response(errors, status=status.HTTP_400_BAD_REQUEST)
    
    elif request.method == 'DELETE':
        if ProductoAtributo.objects.using(bd).filter(id=pk, estado=True).exists() is not True:
            errors={"error":"El registro ha sido borrado, o no existe en el sistema"}
            return Response(errors, status=status.HTTP_400_BAD_REQUEST)
        atributo=ProductoAtributo.objects.using(bd).get(id=pk)
        atributo.estado=False
        atributo.save(using=bd)        
        respuesta={"":""}
        return Response(respuesta, status=status.HTTP_200_OK)
Esempio n. 6
0
def proveedor_listado(request):
    #from api_pollo.models import Personal
    #Codigo de verificacion de asignacion de modulo    
    user=Usuario.objects.get(auth_user_id=request.user.id)
    
    modulos=[10]
    modulo_valido=validar_modulos(user.perfil.id,user.empresa.id,modulos)
    #print(modulo_valido)
    if modulo_valido['error']==1:
        errors={"error":"No tiene permisos suficientes, para realizar operaciones en este modulo"}
        return Response(errors, status=status.HTTP_400_BAD_REQUEST)
    
    bd=modulo_valido['bd']
    #print(bd)
    # termina verificaciond e modulo
    if request.method=='GET':
        #print(request.QUERY_PARAMS)
        if request.QUERY_PARAMS.get('param') is not None:
            
            param=request.QUERY_PARAMS.get('param')
            personal = Personal.objects.using(bd).filter(Q(estado=True),
                                                        Q(tipo=1),
                                                        Q(cliente_proveedor=True),
                                                        Q(id__icontains=param) |
                                                        Q(nombres__icontains = param) |
                                                        Q(apellidos__icontains=param) | 
                                                        Q(empresa__icontains=param) |
                                                        Q(telefono__icontains=param))
            if len(personal)==0:
                param="%"+param+"%"
                personal = Personal.objects.using(bd).extra(where=["(CONCAT(CONCAT(nombres,' '),apellidos)) LIKE %s and cliente_proveedor=1 "], params=[param])  
                
        else:
            personal = Personal.objects.using(bd).filter(estado=True,
                                                        tipo=1,
                                                        cliente_proveedor=True)
        #print(len(personal))
        paginator = Paginator(personal, 10)
        
        page = request.QUERY_PARAMS.get('page')
        try:
            registros = paginator.page(page)
        except PageNotAnInteger:
            # If page is not an integer, deliver first page.
            registros = paginator.page(1)
        except EmptyPage:
            # If page is out of range (e.g. 9999),
            # deliver last page of results.
            registros = paginator.page(paginator.num_pages)

        serializer_context = {'request': request}
        #print(registros)
        serializer = PaginatedPersonalSerializer(registros,
                                             context=serializer_context)
        return Response(serializer.data)
    
    elif request.method=='POST':
        fecha=datetime.now().strftime("%Y-%m-%d")
        data={}
        for dato in request.DATA:
            if request.DATA[dato]!='':
                if dato=='nit':
                    data[dato]=int(request.DATA[dato])
                else:
                    data[dato]=request.DATA[dato]  
            else:
                data[dato]=None        
        personal=Personal(nombres=data['nombres'],
                        apellidos=data['apellidos'],
                        empresa=data['empresa'],
                        telefono=data['telefono'],
                        direccion=data['direccion'],
                        nit=data['nit'],
                        usuario_sistema_id=user.id,
                        estado=True,
                        tipo=1,
                        empresa_id=user.empresa.id,
                        fecha=fecha,
                        cliente_proveedor=True)
        
        personal.save(using=bd)
        respuesta={"id":personal.id}
        return Response(respuesta, status=status.HTTP_201_CREATED)
Esempio n. 7
0
def categoria_producto(request):
    #from api_pollo.models import Personal
    #Codigo de verificacion de asignacion de modulo
    user = Usuario.objects.get(auth_user_id=request.user.id)

    modulos = [9]
    modulo_valido = validar_modulos(user.perfil.id, user.empresa.id, modulos)
    #print(modulo_valido)
    if modulo_valido['error'] == 1:
        errors = {
            "error":
            "No tiene permisos suficientes, para realizar operaciones en este modulo"
        }
        return Response(errors, status=status.HTTP_400_BAD_REQUEST)

    bd = modulo_valido['bd']
    #print(bd)
    # termina verificaciond e modulo
    if request.method == 'GET':
        id_prod = 0
        if request.QUERY_PARAMS.get('id') is not None:
            id_prod = int(request.QUERY_PARAMS.get('id'))
        categorias = ProductoCategoria.objects.using(bd).filter(
            es_nodo_principal=True, estado=True).order_by("numero")
        cat = ProdCatAsig.objects.using(bd).values(
            'producto_categoria_id').filter(estado=True, producto_id=id_prod)
        cats = []
        for c in cat:
            cats.append(c['producto_categoria_id'])
        texto = '<ul>'
        texto = texto + '<li>' + '<span><i class="fa fa-folder-open"></i> Principal</span>'
        arbol = crearArbolProducto(categorias, bd, cats)
        texto = texto + arbol + '</li></ul>'
        respuesta = {'Arbol': texto}

        return Response(respuesta)

    elif request.method == 'POST':
        #print(request.DATA)
        data = {}
        resp = 0
        for dato in request.DATA:
            if request.DATA[dato] != '':
                data[dato] = request.DATA[dato]
            else:
                data[dato] = None

        if request.DATA.get('cats') != None:
            cats = ''
            if data['cats'] != None:
                cats = data['cats'].split(',')
            cats_tmp = cats
            cs = ProdCatAsig.objects.using(bd).filter(
                producto_id=data['id_prod'])
            for c in cs:
                ca = str(c.producto_categoria.id)
                if ca in cats_tmp:
                    cats.remove(ca)
                    if c.estado == False:
                        c.estado = True
                        c.save(using=bd)
                        resp = 1
                elif c.estado == True:
                    c.estado = False
                    c.save(using=bd)
                    resp = 1
            for c in cats:
                ca = ProdCatAsig(estado=True,
                                 producto_id=data['id_prod'],
                                 producto_categoria_id=c)
                ca.save(using=bd)
                resp = 1
            #if cat!=None:

            print(cats)
        respuesta = {"respuesta": resp}
        return Response(respuesta, status=status.HTTP_201_CREATED)
Esempio n. 8
0
def categoria_listado(request):
    #from api_pollo.models import Personal
    #Codigo de verificacion de asignacion de modulo
    user = Usuario.objects.get(auth_user_id=request.user.id)

    modulos = [9]
    modulo_valido = validar_modulos(user.perfil.id, user.empresa.id, modulos)
    #print(modulo_valido)
    if modulo_valido['error'] == 1:
        errors = {
            "error":
            "No tiene permisos suficientes, para realizar operaciones en este modulo"
        }
        return Response(errors, status=status.HTTP_400_BAD_REQUEST)

    bd = modulo_valido['bd']
    #print(bd)
    # termina verificaciond e modulo
    if request.method == 'GET':
        id_cat = 0
        if request.QUERY_PARAMS.get('id') is not None:
            id_cat = int(request.QUERY_PARAMS.get('id'))
        categorias = ProductoCategoria.objects.using(bd).filter(
            es_nodo_principal=True, estado=True).order_by("numero")
        texto = '<ul>'
        if id_cat == 0:
            texto = texto + '<li>' + '<input checked="checked" type="radio" name="categoria" value="0" data-radio="Principal"/>\n\
                        <span style="box-shadow: 0.2px 0.2px 6.2px #16a085;"><i class="fa fa-folder-open"></i> Principal</span>'

        else:
            texto = texto + '<li>' + '<input type="radio" name="categoria" value="0" data-radio="Principal"/>\n\
                    <span><i class="fa fa-folder-open"></i> Principal</span>'

        arbol = crearArbol(categorias, bd, id_cat)
        texto = texto + arbol + '</li></ul>'
        respuesta = {'Arbol': texto}

        return Response(respuesta)

    elif request.method == 'POST':
        #print(request.DATA)
        data = {}
        for dato in request.DATA:
            if request.DATA[dato] != '':
                if dato == 'categoria':
                    data[dato] = int(request.DATA[dato])
                else:
                    data[dato] = request.DATA[dato]
            else:
                data[dato] = None

        conn = connections[bd]
        if conn.connection is None:
            cursor = conn.cursor()
        cursor = conn.connection.cursor()
        numero = 0
        es_nodo_principal = False
        producto_categoria = None
        if data['categoria'] == 0:
            query = 'select count(producto_categoria.id) \n\
                    from producto_categoria where producto_categoria.estado=1\n\
                    and producto_categoria.es_nodo_principal=1'

            cursor.execute(query)
            row = cursor.fetchone()
            if row[0] != None:
                numero = int(row[0]) + 1
            cursor.close()
            es_nodo_principal = True
        else:
            query = 'select count(producto_categoria.id) \n\
                    from producto_categoria where producto_categoria.estado=1\n\
                    and producto_categoria.producto_categoria_id=%s'

            cursor.execute(query, [data['categoria']])
            row = cursor.fetchone()
            if row[0] != None:
                numero = int(row[0]) + 1
            cursor.close()
            producto_categoria = data['categoria']

        categoria = ProductoCategoria(nombre=data['nombre'],
                                      numero=numero,
                                      estado=True,
                                      es_nodo_principal=es_nodo_principal,
                                      producto_categoria_id=producto_categoria)

        categoria.save(using=bd)
        respuesta = {"id": categoria.id}
        return Response(respuesta, status=status.HTTP_201_CREATED)
Esempio n. 9
0
def categoria_detalle(request, pk):
    user = Usuario.objects.get(auth_user_id=request.user.id)

    modulos = [9]
    modulo_valido = validar_modulos(user.perfil.id, user.empresa.id, modulos)
    if modulo_valido['error'] == 1:
        errors = {
            "error":
            "No tiene permisos suficientes, para realizar operaciones en este modulo"
        }
        return Response(errors, status=status.HTTP_400_BAD_REQUEST)

    bd = modulo_valido['bd']

    if request.method == 'PUT':
        data = {}
        if ProductoCategoria.objects.using(bd).filter(
                id=pk, estado=True).exists() is not True:
            errors = {
                "error":
                "El registro ha sido borrado, o no existe en el sistema"
            }
            return Response(errors, status=status.HTTP_400_BAD_REQUEST)
        categoria = ProductoCategoria.objects.using(bd).get(id=pk)
        #print(personal['apellidos'])
        for dato in request.DATA:
            if request.DATA[dato] != '':
                data[dato] = request.DATA[dato]
            else:
                data[dato] = None

        if data['numero'] == 0:
            categoria.nombre = data['nombre']
            #print(data)
            if categoria.has_changed == True:
                categoria.save(using=bd)
                respuesta = {"respuesta": 1}
                return Response(respuesta, status=status.HTTP_200_OK)
            else:
                respuesta = {"respuesta": 2}
                return Response(respuesta, status=status.HTTP_200_OK)
        elif data['numero'] == 1:
            numero = categoria.numero
            if numero != 1:
                numero = numero - 1
                if categoria.producto_categoria == None:
                    cats = ProductoCategoria.objects.using(bd).filter(
                        es_nodo_principal=True, estado=True, numero=numero)
                    for cat in cats:
                        cat.numero = numero + 1
                        cat.save(using=bd)
                else:
                    cats = ProductoCategoria.objects.using(bd).filter(
                        estado=True,
                        numero=numero,
                        producto_categoria_id=categoria.producto_categoria.id)
                    for cat in cats:
                        cat.numero = numero + 1
                        cat.save(using=bd)
                        #print(cat)
                categoria.numero = numero
                categoria.save(using=bd)
                respuesta = {"respuesta": 1}
                return Response(respuesta, status=status.HTTP_200_OK)
            else:
                respuesta = {"respuesta": 2}
                return Response(respuesta, status=status.HTTP_200_OK)
        elif data['numero'] == 2:
            numero = categoria.numero
            numero = numero + 1
            cats = []
            if categoria.producto_categoria == None:
                cats = ProductoCategoria.objects.using(bd).filter(
                    es_nodo_principal=True, estado=True, numero=numero)
                for cat in cats:
                    cat.numero = numero - 1
                    cat.save(using=bd)
            else:
                cats = ProductoCategoria.objects.using(bd).filter(
                    estado=True,
                    numero=numero,
                    producto_categoria_id=categoria.producto_categoria.id)
                for cat in cats:
                    cat.numero = numero - 1
                    cat.save(using=bd)
                    #print(cat)
            if len(cats) > 0:
                categoria.numero = numero
                categoria.save(using=bd)
                respuesta = {"respuesta": 1}
            else:
                respuesta = {"respuesta": 3}
            return Response(respuesta, status=status.HTTP_200_OK)
            #return Response(respuesta, status=status.HTTP_200_OK)

        errors = {"error": ""}
        return Response(errors, status=status.HTTP_400_BAD_REQUEST)

    elif request.method == 'DELETE':
        if ProductoCategoria.objects.using(bd).filter(
                id=pk, estado=True).exists() is not True:
            errors = {
                "error":
                "El registro ha sido borrado, o no existe en el sistema"
            }
            return Response(errors, status=status.HTTP_400_BAD_REQUEST)
        categoria = ProductoCategoria.objects.using(bd).get(id=pk)
        categoria.estado = False
        categoria.save(using=bd)

        numero = categoria.numero
        cats = []
        if categoria.producto_categoria == None:
            cats = ProductoCategoria.objects.using(bd).filter(
                es_nodo_principal=True, estado=True, numero__gt=numero)
            for cat in cats:
                cat.numero = cat.numero - 1
                cat.save(using=bd)
        else:
            cats = ProductoCategoria.objects.using(bd).filter(
                estado=True,
                numero__gt=numero,
                producto_categoria_id=categoria.producto_categoria.id)
            for cat in cats:
                cat.numero = cat.numero - 1
                cat.save(using=bd)
                #print(cat)

        respuesta = {"": ""}
        return Response(respuesta, status=status.HTTP_200_OK)
Esempio n. 10
0
def atributo_producto_listado(request):
    #from api_pollo.models import Personal
    #Codigo de verificacion de asignacion de modulo    
    user=Usuario.objects.get(auth_user_id=request.user.id)
    
    modulos=[8]
    modulo_valido=validar_modulos(user.perfil.id,user.empresa.id,modulos)
    #print(modulo_valido)
    if modulo_valido['error']==1:
        errors={"error":"No tiene permisos suficientes, para realizar operaciones en este modulo"}
        return Response(errors, status=status.HTTP_400_BAD_REQUEST)
    
    bd=modulo_valido['bd']
    #print(bd)
    # termina verificaciond e modulo
    if request.method=='GET':
        id_prod=request.QUERY_PARAMS.get('id')
        if request.QUERY_PARAMS.get('param') is not None:            
            param=request.QUERY_PARAMS.get('param')
            atributos = ProductoAtributo.objects.using(bd).filter(Q(estado=True),
                                                        Q(atributo__estado=True),
                                                        Q(producto_id=id_prod),
                                                        Q(id__icontains = param)|
                                                        Q(atributo__nombre__icontains = param)|
                                                        Q(tipo_control__nombre__icontains=param))            
        else:
            atributos = ProductoAtributo.objects.using(bd).filter(estado=True,
                                                        atributo__estado=True,
                                                        producto_id=id_prod)
        #print(len(personal))
        numPages=request.QUERY_PARAMS.get('per_page')
        paginator = Paginator(atributos,numPages)
        
        page = request.QUERY_PARAMS.get('page')
        try:
            registros = paginator.page(page)
        except PageNotAnInteger:
            # If page is not an integer, deliver first page.
            registros = paginator.page(1)
        except EmptyPage:
            # If page is out of range (e.g. 9999),
            # deliver last page of results.
            registros = paginator.page(paginator.num_pages)

        serializer_context = {'request': request}
        #print(registros)
        serializer = PaginatedProductoAtributoSerializer(registros,
                                             context=serializer_context)
        
        return Response(serializer.data)
    
    elif request.method=='POST':
        data={}        
        for dato in request.DATA:
            if request.DATA[dato]!='':
                data[dato]=request.DATA[dato]
            else:
                data[dato]=None        
        atributo=ProductoAtributo(atributo_id=data['atributo'],
                        estado=True,
                        tipo_control_id=data['tipo_control'],
                        producto_id=data['producto'])        
        atributo.save(using=bd)
        respuesta={"id":atributo.id,'tipo_control_lb':atributo.tipo_control.nombre,'atributo_lb':atributo.atributo.nombre}
        return Response(respuesta, status=status.HTTP_201_CREATED)