Esempio n. 1
0
File: views.py Progetto: legus/siova
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 editObjeto(request,id_objeto):
    """
    Vista de acceso al usuario con rol de Docente, de esta manera se le permitirá modificar objetos
    """
    obj=get_object_or_404(Objeto, pk=int(id_objeto))
    kws=obj.palabras_claves.all()#palabras claves del objeto
    if request.user.profile.rol == 'rdoc':
        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)
                if not error1:
                    if formularioEsp.is_valid() & formularioObj.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
                        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 recorretodo 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 recorretodo 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.save()
                        #messages.add_message(request, messages.SUCCESS, 'Cambios Actualizados Exitosamente')# no funciona al redireccionar
                        return HttpResponseRedirect('/objeto/'+str(obj.pk))
                    else:
                        errores=True
            else:
                formularioEsp = EspecificacionForm(instance=esp)
                formularioObj = cObjetosForm(request.user, obj, instance=obj)
            return render_to_response('editObjeto.html',{'objeto':obj,'usuario':request.user,'formObj':formularioObj,'formEsp':formularioEsp,'autores':autores,'errores':errores,'l_errores':l_errores},context_instance=RequestContext(request))
        else:
            return HttpResponseRedirect('/')
    else:
        return HttpResponseRedirect('/')
Esempio n. 3
0
File: views.py Progetto: legus/siova
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 docObjeto(request):
    """
    Vista de acceso al usuario con rol de Docente, de esta manera se le permitirá crearobjetos
    """
    if request.user.profile.rol == 'rdoc':
        objetos = Objeto.objects.filter(creador=request.user.id)
        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)
            formularioObj = ObjetosForm(gruposu, request.POST, request.FILES)
            if not error1:
                if formularioEsp.is_valid():#si es válido el formularo de especificaciónLOM
                    if formularioObj.is_valid():#si el válido el objeto
                        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
                        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
                        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()
                    else:
                        errores=True
                else:
                    errores = True
        else:
            formularioObj=ObjetosForm(gruposu)
            formularioEsp=EspecificacionForm()

        return render_to_response('docente.html',{'usuario':request.user,'objetos':objetos,'formObj':formularioObj,'formEsp':formularioEsp,'errores':errores,'l_errores':l_errores},context_instance=RequestContext(request))
    else:
        return HttpResponseRedirect('/')