def Proyecto(request): """ Vista de acceso al usuario con rol de Catalogador, de esta manera se le permitirá crearProyectos """ if request.user.profile.rol == 'rcat': proyectoObj= Objeto.objects.filter(proyecto__isnull=False) gruposu = request.user.groups.all() errores = False error1 = False l_errores=[] if request.method == 'POST': if not request.POST.get('autores1'): l_errores.append('No incluyó autores al objeto.') error1=True if not request.POST.get('palabras_claves'): l_errores.append('No incluyó palabras claves al objeto.') error1=True if not request.POST.get('repositorio'): l_errores.append('No seleccionó repositorio. Si no hay repositorios asociados, consulte a un administrador del sistema para agregar alguno.') error1=True l_autores = request.POST.getlist('autores1') formularioEsp = EspecificacionForm(request.POST) formularioPro = ProyectoForm(request.POST) formularioObj = ObjetosForm(gruposu, request.POST, request.FILES) if not error1: if formularioEsp.is_valid(): if formularioObj.is_valid():#si el válido el objeto if formularioPro.is_valid():#si el válido el proyecto esp=formularioEsp.save()#se guarda la especificaciónLOM primero pc = formularioObj.cleaned_data['palabras_claves']#se toman las palabras claves digitadas re = formularioObj.cleaned_data['repositorio']#se toma el repositorio pro=formularioPro.save(commit=False)#se guarda una instancia temporal ti = formularioEsp.cleaned_data['lc1_titulo'] pro.titulo = ti #se asocia el proyecto con su titulo pro.nota=Decimal('0.0') pro.save() f=formularioObj.save(commit=False)#se guarda un instancia temporañ f.espec_lom = esp # se asocia el objeto con su especificaciónLOM f.creador=request.user # Se asocia el objeto con el usuario que lo crea f.repositorio=re # se asoicia el objeto con su repositorio f.proyecto=pro #se asocia el proyecto con el usuario que lo crea f.save() # se guarda el objeto en la base de datos. if ',' in pc: #si hay comas en las palabras claves lpc=[x.strip() for x in pc.split(',')] # se utilizan las palabras claves como una lista de palabras separadas sin comas ni espacios else: lpc=[x.strip() for x in pc.split(' ')] # se utilizan las palabras claves como una lista de palabras separadas sin espacios for l in lpc: p,b=PalabraClave.objects.get_or_create(palabra_clave=l) # Se crea una palabra clave por cada palabra en la lista if not b: #Si ya existe la palabra entonces se obvia el proceso de crearla p.save() #se guarda la palabra clave en la bd f.palabras_claves.add(p) # se añade cada palabra clave al objeto for l in l_autores: #como el objeto llega como una lista... se debe recorrer per en realidad siempre tiene un solo objeto stri=l.split(',') #se divide la lista por comas que representa cada string de campos del autor for st in stri: # se recorre cada autor s=st.split(' ') # se divide los campos nombres, apellidos y rol en una lista aut,cr=Autor.objects.get_or_create(nombres=s[0].replace('-',' '), apellidos=s[1].replace('-',' '), rol=s[2].replace('-',' ')) if not cr: #Si ya existe el autor entonces se obvia el proceso de crearlo aut.save() #se guarda el autor en la bd f.autores.add(aut) # se añade al campo manytomany con Autores. messages.add_message(request, messages.SUCCESS, 'Objeto Agregado Exitosamente') formularioObj=ObjetosForm(gruposu) formularioEsp=EspecificacionForm() formularioPro=ProyectoForm() else: errores=True else: errores = True else: errores = True else: formularioObj=ObjetosForm(gruposu) formularioEsp=EspecificacionForm() formularioPro=ProyectoForm() return render_to_response('proyecto.html', {'usuario':request.user, 'proyecto':proyectoObj, 'formObj':formularioObj, 'formPro':formularioPro, 'formEsp':formularioEsp,'errores':errores,'l_errores':l_errores}, context_instance=RequestContext(request))
def editProyecto(request, id_objeto): """ Vista de acceso al usuario con rol de Catalogador, de esta manera se le permitirá modificar objetos """ obj = Objeto.objects.get(pk=id_objeto) # objeto que se está modificando pro = obj.proyecto kws = obj.palabras_claves.all() # palabras claves del objeto if request.user.profile.rol == 'rcat': if obj.creador == request.user: error1 = False errores = False l_errores = [] gruposu = request.user.groups.all() esp = obj.espec_lom l_autores = request.POST.getlist('autores1') autores = obj.autores.all() lista_autores = [ ] # lista para guardar los autores incluidos en el formulario, ya sea para añadir o eliminar. lista_temporal = [ ] # lista temporal con los datos de los autores sin el caracter - para guardar los autores incluidos en el formulario, ya sea para añadir o eliminar. if request.method == 'POST': if not request.POST.getlist('autores1'): l_errores.append('No incluyó autores al objeto.') error1 = True if len(l_autores[0]) == 0: l_errores.append('No incluyó autores al objeto.') error1 = True if not request.POST.get('palabras_claves'): l_errores.append('No incluyó palabras claves al objeto.') error1 = True formularioEsp = EspecificacionForm(request.POST, instance=esp) formularioObj = cObjetosForm(request.user, obj, request.POST, request.FILES, instance=obj) formularioPro = ProyectoForm(request.POST, instance=pro) if not error1: if formularioEsp.is_valid() & formularioObj.is_valid( ) & formularioPro.is_valid(): formularioEsp.save() pc = formularioObj.cleaned_data[ 'palabras_claves'] # se toman las palabras claves digitadas re = formularioObj.cleaned_data[ 'repositorio'] # se toma el repositorio pro = formularioPro.save( commit=False) # se guarda una instancia temporal ti = formularioEsp.cleaned_data['lc1_titulo'] pro.titulo = ti # se asocia el proyecto con su titulo pro.save() f = formularioObj.save( commit=False) # se guarda un instancia temporal lpc = [ x.strip() for x in pc.split(' ') ] # se utilizan las palabras claves como una lista de palabras separadas sin espacios for l in lpc: p, b = PalabraClave.objects.get_or_create( palabra_clave=l ) # Se crea una palabra clave por cada palabra en la lista if not b: # Si ya existe la palabra entonces se obvia el proceso de crearla p.save() # se guarda la palabra clave en la bd f.palabras_claves.add( p) # se añade cada palabra clave al objeto for kw in kws: # Se recorre todo el conjunto de palabras claves del objeto if kw.palabra_clave not in lpc: # se valida si cada palabra clave todavía se mantiene en lo que el usuario digitó f.palabras_claves.remove( kw ) # de no encontrarse la palabra clave debe desasociarse aunque no eliminarse. for l in l_autores: # como el objeto llega como una lista... se debe recorrer per en realidad siempre tiene un solo objeto lista_autores = l.split( ',' ) # se divide la lista por comas que representa cada string de campos del autor for st in lista_autores: # se recorre cada autor lista_temporal.append(st.replace('-', ' ')) s = st.split( ' ' ) # se divide los campos nombres, apellidos y rol en una lista aut, cr = Autor.objects.get_or_create( nombres=s[0].replace('-', ' '), apellidos=s[1].replace('-', ' '), rol=s[2].replace('-', ' ')) if not cr: # Si ya existe el autor entonces se obvia el proceso de crearlo aut.save() # se guarda el autor en la bd f.autores.add( aut ) # se añade al campo manytomany con Autores. for autor in autores: # Se recorre todo el conjunto de autores del objeto cadena_temporal = autor.nombres + ' ' + autor.apellidos + ' ' + autor.rol # cadena que concatena los datos del autor para compararlos con la lista que el usuario digita if cadena_temporal not in lista_temporal: # se valida si cada autor todavía se mantiene en lo que el usuario digitó f.autores.remove( autor ) # de no encontrarse el autor, debe desasociarse aunque no eliminarse. f.repositorio = re f.proyecto = pro f.save() # messages.add_message(request, messages.SUCCESS, 'Cambios Actualizados Exitosamente')# no funciona al redireccionar return HttpResponseRedirect('/proyecto/' + str(obj.pk)) else: errores = True else: formularioEsp = EspecificacionForm(instance=esp) formularioObj = cObjetosForm(request.user, obj, instance=obj) formularioPro = ProyectoForm(instance=pro) return render_to_response('editProyecto.html', { 'objeto': obj, 'usuario': request.user, 'formObj': formularioObj, 'formEsp': formularioEsp, 'formPro': formularioPro, 'proyecto': obj.proyecto, 'autores': autores, 'errores': errores, 'l_errores': l_errores }, context_instance=RequestContext(request)) else: return HttpResponseRedirect('/') else: return HttpResponseRedirect('/')
def editProyecto(request,id_objeto): """ Vista de acceso al usuario con rol de Catalogador, de esta manera se le permitirá modificar objetos """ obj=Objeto.objects.get(pk=id_objeto)#objeto que se está modificando pro=obj.proyecto kws=obj.palabras_claves.all()#palabras claves del objeto if request.user.profile.rol == 'rcat': if obj.creador == request.user: error1 = False errores = False l_errores=[] gruposu = request.user.groups.all() esp=obj.espec_lom l_autores = request.POST.getlist('autores1') autores = obj.autores.all() lista_autores=[]#lista para guardar los autores incluidos en el formulario, ya sea para añadir o eliminar. lista_temporal=[]#lista temporal con los datos de los autores sin el caracter - para guardar los autores incluidos en el formulario, ya sea para añadir o eliminar. if request.method == 'POST': if not request.POST.getlist('autores1'): l_errores.append('No incluyó autores al objeto.') error1=True if len(l_autores[0])==0: l_errores.append('No incluyó autores al objeto.') error1=True if not request.POST.get('palabras_claves'): l_errores.append('No incluyó palabras claves al objeto.') error1=True formularioEsp = EspecificacionForm(request.POST, instance=esp) formularioObj = cObjetosForm(request.user, obj, request.POST, request.FILES, instance=obj) formularioPro = ProyectoForm(request.POST, instance=pro) if not error1: if formularioEsp.is_valid() & formularioObj.is_valid() & formularioPro.is_valid(): formularioEsp.save() pc = formularioObj.cleaned_data['palabras_claves']#se toman las palabras claves digitadas re = formularioObj.cleaned_data['repositorio']#se toma el repositorio pro=formularioPro.save(commit=False)#se guarda una instancia temporal ti = formularioEsp.cleaned_data['lc1_titulo'] pro.titulo = ti #se asocia el proyecto con su titulo pro.save() f=formularioObj.save(commit=False)#se guarda un instancia temporal lpc=[x.strip() for x in pc.split(' ')] # se utilizan las palabras claves como una lista de palabras separadas sin espacios for l in lpc: p,b=PalabraClave.objects.get_or_create(palabra_clave=l) # Se crea una palabra clave por cada palabra en la lista if not b: #Si ya existe la palabra entonces se obvia el proceso de crearla p.save() #se guarda la palabra clave en la bd f.palabras_claves.add(p) # se añade cada palabra clave al objeto for kw in kws: #Se recorre todo el conjunto de palabras claves del objeto if kw.palabra_clave not in lpc: #se valida si cada palabra clave todavía se mantiene en lo que el usuario digitó f.palabras_claves.remove(kw) #de no encontrarse la palabra clave debe desasociarse aunque no eliminarse. for l in l_autores: #como el objeto llega como una lista... se debe recorrer per en realidad siempre tiene un solo objeto lista_autores=l.split(',') #se divide la lista por comas que representa cada string de campos del autor for st in lista_autores: # se recorre cada autor lista_temporal.append(st.replace('-',' ')) s=st.split(' ') # se divide los campos nombres, apellidos y rol en una lista aut,cr=Autor.objects.get_or_create(nombres=s[0].replace('-',' '), apellidos=s[1].replace('-',' '), rol=s[2].replace('-',' ')) if not cr: #Si ya existe el autor entonces se obvia el proceso de crearlo aut.save() #se guarda el autor en la bd f.autores.add(aut) # se añade al campo manytomany con Autores. for autor in autores: #Se recorre todo el conjunto de autores del objeto cadena_temporal=autor.nombres+' '+autor.apellidos+' '+autor.rol #cadena que concatena los datos del autor para compararlos con la lista que el usuario digita if cadena_temporal not in lista_temporal: #se valida si cada autor todavía se mantiene en lo que el usuario digitó f.autores.remove(autor) #de no encontrarse el autor, debe desasociarse aunque no eliminarse. f.repositorio=re f.proyecto=pro f.save() #messages.add_message(request, messages.SUCCESS, 'Cambios Actualizados Exitosamente')# no funciona al redireccionar return HttpResponseRedirect('/proyecto/'+str(obj.pk)) else: errores=True else: formularioEsp = EspecificacionForm(instance=esp) formularioObj = cObjetosForm(request.user, obj, instance=obj) formularioPro = ProyectoForm(instance=pro) return render_to_response('editProyecto.html',{'objeto':obj, 'usuario':request.user,'formObj':formularioObj,'formEsp':formularioEsp,'formPro':formularioPro, 'proyecto':obj.proyecto, 'autores':autores,'errores':errores,'l_errores':l_errores},context_instance=RequestContext(request)) else: return HttpResponseRedirect('/') else: return HttpResponseRedirect('/')
def Proyecto(request): """ Vista de acceso al usuario con rol de Catalogador, de esta manera se le permitirá crearProyectos """ if request.user.profile.rol == 'rcat': proyectoObj = Objeto.objects.filter(proyecto__isnull=False) gruposu = request.user.groups.all() errores = False error1 = False l_errores = [] if request.method == 'POST': if not request.POST.get('autores1'): l_errores.append('No incluyó autores al objeto.') error1 = True if not request.POST.get('palabras_claves'): l_errores.append('No incluyó palabras claves al objeto.') error1 = True if not request.POST.get('repositorio'): l_errores.append( 'No seleccionó repositorio. Si no hay repositorios asociados, consulte a un administrador del sistema para agregar alguno.' ) error1 = True l_autores = request.POST.getlist('autores1') formularioEsp = EspecificacionForm(request.POST) formularioPro = ProyectoForm(request.POST) formularioObj = ObjetosForm(gruposu, request.POST, request.FILES) if not error1: if formularioEsp.is_valid(): if formularioObj.is_valid(): # si el válido el objeto if formularioPro.is_valid( ): # si el válido el proyecto esp = formularioEsp.save( ) # se guarda la especificaciónLOM primero pc = formularioObj.cleaned_data[ 'palabras_claves'] # se toman las palabras claves digitadas re = formularioObj.cleaned_data[ 'repositorio'] # se toma el repositorio pro = formularioPro.save( commit=False ) # se guarda una instancia temporal ti = formularioEsp.cleaned_data['lc1_titulo'] pro.titulo = ti # se asocia el proyecto con su titulo pro.nota = Decimal('0.0') pro.save() f = formularioObj.save( commit=False ) # se guarda un instancia temporañ f.espec_lom = esp # se asocia el objeto con su especificaciónLOM f.creador = request.user # Se asocia el objeto con el usuario que lo crea f.repositorio = re # se asoicia el objeto con su repositorio f.proyecto = pro # se asocia el proyecto con el usuario que lo crea f.save( ) # se guarda el objeto en la base de datos. if ',' in pc: # si hay comas en las palabras claves lpc = [ x.strip() for x in pc.split(',') ] # se utilizan las palabras claves como una lista de palabras separadas sin comas ni espacios else: lpc = [ x.strip() for x in pc.split(' ') ] # se utilizan las palabras claves como una lista de palabras separadas sin espacios for l in lpc: p, b = PalabraClave.objects.get_or_create( palabra_clave=l ) # Se crea una palabra clave por cada palabra en la lista if not b: # Si ya existe la palabra entonces se obvia el proceso de crearla p.save( ) # se guarda la palabra clave en la bd f.palabras_claves.add( p) # se añade cada palabra clave al objeto for l in l_autores: # como el objeto llega como una lista... se debe recorrer per en realidad siempre tiene un solo objeto stri = l.split( ',' ) # se divide la lista por comas que representa cada string de campos del autor for st in stri: # se recorre cada autor s = st.split( ' ' ) # se divide los campos nombres, apellidos y rol en una lista aut, cr = Autor.objects.get_or_create( nombres=s[0].replace('-', ' '), apellidos=s[1].replace('-', ' '), rol=s[2].replace('-', ' ')) if not cr: # Si ya existe el autor entonces se obvia el proceso de crearlo aut.save( ) # se guarda el autor en la bd f.autores.add( aut ) # se añade al campo manytomany con Autores. messages.add_message( request, messages.SUCCESS, 'Objeto Agregado Exitosamente') formularioObj = ObjetosForm(gruposu) formularioEsp = EspecificacionForm() formularioPro = ProyectoForm() else: errores = True else: errores = True else: errores = True else: formularioObj = ObjetosForm(gruposu) formularioEsp = EspecificacionForm() formularioPro = ProyectoForm() return render_to_response('proyecto.html', { 'usuario': request.user, 'proyecto': proyectoObj, 'formObj': formularioObj, 'formPro': formularioPro, 'formEsp': formularioEsp, 'errores': errores, 'l_errores': l_errores }, context_instance=RequestContext(request))