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
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')