示例#1
0
    def save(self, commit=True, *args, **kwargs):
        documento = kwargs.pop('documento')

        results = []

        is_external = self.data.get('is_external')

        if self.data.get('restringido') == '0':
            restringido = False
        else:
            restringido = True

        nuevo_documento = Documento(
            formato=documento.formato,
            formato_default=documento.formato_default,
            proceso=documento.proceso,
            elaboro=kwargs.pop('empleado'),
            codigo=documento.codigo,
            tipo_documento=documento.tipo_documento,
            fecha_emision=self.data.get('fecha_emision'),
            paginas=int(self.data.get('paginas')),
            restringido=restringido,
            ubicacion_original=self.data.get('ubicacion_original'),
            version=documento.version+1,
            desc_cambios=self.data.get('desc_cambios'),
        )

        if 'external_link' in self.data and is_external == '1':
            ext_link = self.data['external_link']
            nuevo_documento.is_external = True
            nuevo_documento.external_link=ext_link

        nuevo_documento.save()

        if nuevo_documento.formato is not None:
            form = nuevo_documento.formato.formulario
            campos = Campo.objects.filter(active=True, formulario=form)
            for campo in campos:
                print self.data
                if campo.id_campo in self.data:
                    if campo.tipo == 'radio' or campo.tipo == 'checkbox':
                        valor = 'si'
                    else:
                        valor = self.data.get(campo.id_campo, default=None)
                else:
                    valor='no'
                registro = Registro(documento=nuevo_documento, campo=campo, valor=valor)
                registro.save()

        documento.is_history_log = True
        documento.save()

        return nuevo_documento
示例#2
0
def nuevo_documento_by_formato(request, proceso=None, id=None):

    if request.method == 'GET':

        empleado= get_object_or_404(Empleado, usuario__user=request.user)
        perfil=empleado.perfil
        empresa=empleado.perfil.empresa
        proceso=get_object_or_404(Proceso, id=proceso, active=True)
        formatos =  perfil.formatos_asignados
        formato=get_object_or_404(Formato, id=id, active=True)
        formND = NuevoDocumentoForm(empresa=empresa, proceso=proceso, perfil=perfil)
        campos=Campo.objects.filter(formulario=formato.formulario).order_by('id')
        tipo_doc=TipoDocumento.objects.filter(active=True)
        form = InputForm(fields=campos)
        return render(request, 'nuevo_documento.html', {'proceso':proceso, 'formatos': formatos, 'formato': formato, 'formulario': form, 'tipo_doc': tipo_doc, 'form_default': formND})
    else:
        empleado= Empleado.objects.get(usuario__user=request.user)
        perfil=empleado.perfil
        empresa = empleado.perfil.empresa
        proceso=get_object_or_404(Proceso, id=proceso, active=True)
        formato=get_object_or_404(Formato, id=id, active=True)
        form = NuevoDocumentoForm(request.POST, empresa=empresa, proceso=proceso, perfil=perfil)

        if form.is_valid():
            documento = form.save(empleado=empleado, formato=formato)

            for f in request.FILES:
                file = request.FILES.get(f)
                date =  time.strftime("%Y-%m-%d-%H%M%S")
                from django.conf import settings
                new_path = settings.MEDIA_ROOT+"docs/"
                ext = file.name.split('.')[-1]
                filename = "%s_%s_%s_%s.%s" % (documento.formato.nombre, documento.proceso.nombre, documento.codigo, date, ext)

                from django.conf import settings
                new_path = settings.MEDIA_ROOT+"docs/"
                destination = open(new_path+filename, 'wb+')
                for chunk in file.chunks():
                    destination.write(chunk)
                destination.close()
                if f == 'archivo':
                    documento.archivo=file
                    documento.save()
                else:
                    campo = Campo.objects.get(id_campo=f)
                    registro = Registro(documento=documento, campo=campo, valor=new_path+file.name)
                    registro.save()
            return redirect('empresas:mostrar_documento', id=documento.codigo)
        else:
            formatos = perfil.formatos_asignados
            formato = get_object_or_404(Formato, id=id, active=True)
            campos = Campo.objects.filter(formulario=formato.formulario).order_by('id')
            tipo_doc = TipoDocumento.objects.filter(active=True)
            formulario = InputForm(fields=campos)
            print form.errors

            return render(request, 'nuevo_documento.html',
                          {'proceso': proceso, 'formatos': formatos, 'formato': formato, 'formulario': formulario,
                           'tipo_doc': tipo_doc,
                           'form_default': form}
                          )

        return redirect('index')