예제 #1
0
def users(request):
    result = []
    for user in User.objects.all():
        if get_user_role(user) is None:
            result.append((user, None, None))
        else:
            result.append(
                (user, get_user_role(user), available_perm_status(user)))
    return render(request, 'users.html', {'result': result})
    def test_get_user_role_after_role_change(self):
        user = self.user

        user_role = ShoRole1.assign_role_to_user(user)
        user_role = ShoRole3.assign_role_to_user(user)

        self.assertEquals(get_user_role(user), ShoRole3)
예제 #3
0
def index(request):
    template = loader.get_template('website/index.html')
    context = {}
    if request.user.is_authenticated():
        context['role'] = get_user_role(request.user).get_name()
        context['permissions'] = available_perm_status(request.user)
    return HttpResponse(template.render(context, request))
예제 #4
0
    def test_user_has_no_role(self):
        user = self.user

        assign_role(user, 'sho_role1')
        remove_role(user)

        self.assertEquals(get_user_role(user), None)
예제 #5
0
    def test_get_user_role_after_role_change(self):
        user = self.user

        ShoRole1.assign_role_to_user(user)
        ShoRole3.assign_role_to_user(user)

        self.assertEquals(get_user_role(user), ShoRole3)
    def test_user_has_no_role(self):
        user = self.user

        assign_role(user, 'sho_role1')
        remove_role(user)

        self.assertEquals(get_user_role(user), None)
def has_object_permission(checker_name, user, obj):
    if user.is_superuser:
        return True

    checker = PermissionsManager.retrieve_checker(checker_name)
    role = get_user_role(user)

    return checker(role, user, obj)
예제 #8
0
def has_object_permission(checker_name, user, obj):
    if user.is_superuser:
        return True

    checker = PermissionsManager.retrieve_checker(checker_name)
    role = get_user_role(user)

    return checker(role, user, obj)
예제 #9
0
def edit_product(request, id=None):
	stuff = request.user
	if not has_permission(stuff, 'edit_product') and not has_permission(stuff, 'change_status'):
		messages.warning(request, 'You have no permission to edit product')
		return HttpResponseRedirect(reverse("products:about", kwargs={'id':id}))

	product = get_object_or_404(Product, id=id)
	
	role = get_user_role(stuff)
	if role.title == 'zavsklad':
		form = ProductForm(request.POST or None, request.FILES or None, instance=product)
	elif product.status == 'out of stock':
		form = ProductFormStatus(request.POST or None, instance=product)
	else:
		messages.warning(request, 'You can change product status only if it is "out of stock"')
		return HttpResponseRedirect(reverse("products:about", kwargs={'id':id}))
	
	context = {
		"form": form,
	}

	if form.is_valid():
		status = form.cleaned_data.get('status')
		if role.title == 'postavshik' and status != 'comming soon' and status != 'out of stock':
			messages.warning(request, 'You can change only to comming soon')
			return render(request, 'add_product.html', context)
			

		old_product = product
		product = form.save(commit=False)
		log = ProductHistory(
			changed_by=request.user,
			product_id=product.id,
			product_title = product.title,

			old_title = old_product.title,
			old_content = old_product.content,
			old_image = old_product.image,
			old_quantity = old_product.quantity,
			old_price = old_product.price,
			old_status = old_product.status,

			new_title = product.title,
			new_content = product.content,
			new_image = product.image,
			new_quantity = product.quantity,
			new_price = product.price,
			new_status = product.status,)

		product.save()
		log.save()
		# print log.product_changes
		messages.info(request, "Successfully changed!")
		# return HttpResponseRedirect(product.get_absolute_url())
		return redirect(reverse("products:about", kwargs={"id":product.id}))


	return render(request, 'add_product.html', context)
예제 #10
0
파일: views.py 프로젝트: joseomar94/DrPet
def index(request):
    if request.method == "POST":
        login_form = LoginForm(request.POST)
        if login_form.is_valid():
            LogIn(request, login_form.cleaned_data["username"], login_form.cleaned_data["password"])

        else:
            print "45"
            return render(request, "login.html", {"login_form": login_form}, context_instance=RequestContext(request))
    if request.user.is_authenticated():
        if Paciente.objects.filter(usuario__id=request.user.id):
            role = get_user_role(request.user)
            print role
            return redirect("home")
        elif Medico.objects.filter(usuario__id=request.user.id):
            role = get_user_role(request.user)
            print role
            return redirect("dashboard")
    login_form = LoginForm()
    return render(request, "login.html", {"login_form": login_form})
예제 #11
0
def has_permission(user, permission_name):
    if user and user.is_superuser:
        return True

    role = get_user_role(user)

    if role and permission_name in role.permission_names_list():
        permission = get_permission(permission_name)
        if permission in user.user_permissions.all() or permission.codename in [p.codename for p in Permission.objects.filter(group__user=user)]:
            return True

    return False
예제 #12
0
def index(request):
	if request.method =="POST":
		login_form=LoginForm(request.POST)
		if login_form.is_valid():
			LogIn(request,login_form.cleaned_data['username'],
				login_form.cleaned_data['password'])
			
		else:
			print "45"
			return render(request,'login.html',{'login_form':login_form},context_instance=RequestContext(request))
	if request.user.is_authenticated():
		if Paciente.objects.filter(usuario__id=request.user.id):
			role = get_user_role(request.user)
			print role
			return redirect('home')
		elif Medico.objects.filter(usuario__id=request.user.id):
			role = get_user_role(request.user)
			print role
			return redirect('dashboard')
	login_form=LoginForm()
	return render(request,'login.html',{'login_form':login_form})
def has_permission(user, permission_name):
    if user and user.is_superuser:
        return True

    role = get_user_role(user)

    if role and permission_name in role.permission_names_list():
        permission = get_permission(permission_name)

        if permission in user.user_permissions.all():
            return True

    return False
예제 #14
0
def has_permission(user, permission_name):
    if user and user.is_superuser:
        return True

    role = get_user_role(user)

    if role and permission_name in role.permission_names_list():
        permission = get_permission(permission_name)

        if permission in user.user_permissions.all():
            return True

    return False
예제 #15
0
def registro_usuarios(request):
    
    usuario_log = request.user
    role = get_user_role(usuario_log)
    if (role == Estudiante or usuario_log.is_authenticated() == False):
        return HttpResponseRedirect('/index')
    
    if request.method == 'POST':
        user_form = RegistroForm(request.POST)
        if user_form.is_valid():
            if request.POST.get('permisos') == 'Estudiante':
                usuario = user_form.save(commit=False)
                usuario = User(username=request.POST['username'], email=request.POST['email'], first_name=request.POST['first_name'], last_name=request.POST['last_name'])
                usuario.set_password(request.POST['password1'])
                usuario.save()
                user = User.objects.get(username= request.POST['username'])
                assign_role(user,'estudiante')
                return HttpResponseRedirect('/index')
            elif request.POST.get('permisos') == 'Administrador':
                usuario = user_form.save(commit=False)
                usuario = User(username=request.POST['username'], email=request.POST['email'], first_name=request.POST['first_name'], last_name=request.POST['last_name'])
                usuario.set_password(request.POST['password1'])
                usuario.save()
                user = User.objects.get(username= request.POST['username'])
                assign_role(user,'administrador')
                return HttpResponseRedirect('/index')
            elif request.POST.get('permisos') == 'Calificador':
                usuario = user_form.save(commit=False)
                usuario = User(username=request.POST['username'], email=request.POST['email'], first_name=request.POST['first_name'], last_name=request.POST['last_name'])
                usuario.set_password(request.POST['password1'])
                usuario.save()
                user = User.objects.get(username= request.POST['username'])
                assign_role(user,'calificador')
            else:
                user_form = RegistroForm(request.POST)
                roles = Usuario_permisos.objects.all().order_by('id')
        else:
            user_form = RegistroForm(request.POST)
            roles = Usuario_permisos.objects.all().order_by('id')
    else:
        user_form = RegistroForm()
        roles = Usuario_permisos.objects.all().order_by('id')
    
    roles = Usuario_permisos.objects.all().order_by('id')
        
    contexto = {
        'formulario':user_form,'roles':roles
    }
    return render(request,'usuario/registrar.html',contexto)
예제 #16
0
def create_user(request):
	stuff = request.user
	if not has_permission(stuff, 'create_user'):
		messages.warning(request, 'You have no permission to create user')
		return HttpResponseRedirect(reverse("hr:list"))
	form = CreateUserForm(request.POST or None)
	print request.POST
	print 'pass', request.POST.get('password')
	print 'pass2', request.POST.get('verification')
	
	if form.is_valid():
		username = form.cleaned_data.get('username')
		password = form.cleaned_data.get('password')
		verification = form.cleaned_data.get('verification')
		image = request.FILES.get('image')
		role = form.cleaned_data.get('role')
		print username, password, verification
		print 'here is ', image
		user = User.objects.create_user(username=username, password=password)
		
		profile = UserProfile(
			user=user,
			role=role,
			image=image,
			)
		profile.save()

		if role == 'zavsklad':
			Zavsklad.assign_role_to_user(user)
		if role == 'postavshik':
			Postavshik.assign_role_to_user(user)
		if role == 'sotrudnik':
			Sotrudnik.assign_role_to_user(user)
		
		role = get_user_role(user)
		user.role = role.title

		print has_permission(user, 'create_product')
		print form.cleaned_data.get('role')
		print role.title
		print 'user.role', user.role
		return HttpResponseRedirect(reverse("hr:about", kwargs={'id': user.id}))

	context = {
		'form': form,
	}
	
	return render(request, 'create_user.html', context)		
예제 #17
0
def nueva_citacion(request):
    #Validacion, para que el usuario que este registrado no pueda ingresar al formulario de inscripcion
    role = get_user_role(request.user)
    if request.user.is_anonymous() or role == Estudiante:
        #Redireccion a Raiz
        return HttpResponseRedirect('/index')
    if request.method == 'POST':
        #recibir los datos
        form = CitacionForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('inscripcion:agendar_citas')
        else:
            form = CitacionForm()
            form.fields['responsable'].queryset = User.objects.filter(
                groups__name='calificador')
    else:
        form = CitacionForm()
        form.fields["responsable"].queryset = User.objects.filter(
            groups__name='calificador')
    return render(request, 'inscripcion/admin/citacion_form.html',
                  {'form': form})
예제 #18
0
def has_role(user, roles):
    if user and user.is_superuser:
        return True

    if not isinstance(roles, list):
        roles = [roles]

    normalized_roles = []
    for role in roles:
        if not inspect.isclass(role):
            role = RolesManager.retrieve_role(role)

        normalized_roles.append(role)

    try:
        user_role = get_user_role(user)
    except ObjectDoesNotExist:
        return False

    if not user_role:
        return False

    return user_role in normalized_roles
def has_role(user, roles):
    if user and user.is_superuser:
        return True

    if not isinstance(roles, list):
        roles = [roles]

    normalized_roles = []
    for role in roles:
        if not inspect.isclass(role):
            role = RolesManager.retrieve_role(role)

        normalized_roles.append(role)

    try:
        user_role = get_user_role(user)
    except ObjectDoesNotExist:
        return False

    if not user_role:
        return False

    return user_role in normalized_roles
    def test_assign_role(self):
        user = self.user

        assign_role(user, 'sho_role1')

        self.assertEquals(get_user_role(user), ShoRole1)
    def test_get_user_role(self):
        user = self.user

        user_role = Role1.assign_role_to_user(user)

        self.assertEquals(get_user_role(user), Role1)
예제 #22
0
    def test_user_without_role(self):
        user = self.user

        self.assertIsNone(get_user_role(user))
예제 #23
0
    def test_get_user_role(self):
        user = self.user

        user_role = ShoRole1.assign_role_to_user(user)

        self.assertEquals(get_user_role(user), ShoRole1)
예제 #24
0
 def get_role(self):
     if self.user.is_superuser:
         return 'Superuser'
     return get_user_role(self.user).__str__(self)
예제 #25
0
    def test_assign_role(self):
        user = self.user

        assign_role(user, 'sho_role1')

        self.assertEquals(get_user_role(user), ShoRole1)
def nueva_inscripcion(request):
    #Validacion, para que el usuario que este registrado no pueda ingresar al formulario de inscripcion
    role = get_user_role(request.user)
    if role == Estudiante:
        return HttpResponseRedirect('/index')
    if request.method == 'POST':
        #recibir los datos
        form = PersonaForm(request.POST)
        form2 = InscripcionForm(request.POST)
        if (form.is_valid() and form2.is_valid()):
            try:
                data_persona = form.cleaned_data
                data_inscripcion = form2.cleaned_data
                edad_inscripcion = data_persona['edad']
                diferencia = int(
                    ((datetime.date.today() - edad_inscripcion).days) / 365)
                existe = Persona.objects.filter(
                    num_identificacion=data_persona['num_identificacion']
                ).count()

                if (existe != 0):
                    messages.error(
                        request,
                        "Su Identificacion ya se encuentra registrada")
                    form = PersonaForm(request.POST)
                    form2 = InscripcionForm(request.POST)

                elif (data_persona['email'] == data_persona['email_acudiente']
                      ):
                    messages.error(
                        request,
                        "El email de contacto debe ser diferentes al del usuario"
                    )
                    form = PersonaForm(request.POST)
                    form2 = InscripcionForm(request.POST)

                elif (data_persona['num_identificacion'] <= 0
                      or data_persona['tel_contacto'] <= 0
                      or data_persona['telefono_acudiente'] <= 0):
                    messages.error(
                        request,
                        "Por favor revise la información diligenciada.")
                    form = PersonaForm(request.POST)
                    form2 = InscripcionForm(request.POST)

                elif (data_persona['tel_contacto'] ==
                      data_persona['telefono_acudiente']):
                    messages.error(
                        request,
                        "El número de contacto debe ser diferentes al del usuario"
                    )
                    form = PersonaForm(request.POST)
                    form2 = InscripcionForm(request.POST)

                elif (diferencia < 18
                      and data_persona['tipo_identificacion'] != 2):
                    messages.error(request,
                                   "Su tipo de documento es incorrecto")
                    form = PersonaForm(request.POST)
                    form2 = InscripcionForm(request.POST)

                else:
                    persona = form.save(commit=False)
                    inscripcion = form2.save(commit=False)
                    if (diferencia < 17):
                        persona.mayor_de_edad = False
                    else:
                        persona.mayor_de_edad = True

                    persona.telefono_acudiente = 0
                    if request.POST.get(
                            'solicitud_examen') == 'Deseo presentar examen':
                        inscripcion.sol_examen = True
                    else:
                        inscripcion.sol_examen = False

                    inscripcion.estado_inscripcion = False
                    inscripcion.cita_examen_creada = False
                    user = User.objects.create_user(
                        username=persona.num_identificacion,
                        email=persona.email,
                        password=persona.num_identificacion)
                    persona.usuario = user

                    assign_role(user, 'estudiante')
                    form.save()
                    persona_almacenada = Persona.objects.get(
                        num_identificacion=persona.num_identificacion)
                    inscripcion.persona = persona_almacenada
                    inscripcion.save()

                    alamacenamiento = agendar_inscripcion(inscripcion)

                    return redirect('index')
            except:
                messages.error(
                    request, "Por favor revise la información diligenciada.")
                form = PersonaForm(request.POST)
                form2 = InscripcionForm(request.POST)
        else:
            messages.error(request,
                           "Por favor revise la información diligenciada.")
            form = PersonaForm(request.POST)
            form2 = InscripcionForm(request.POST)
    else:
        form = PersonaForm(request.POST)
        form2 = InscripcionForm(request.POST)

    return render(request, 'inscripcion/user/inscripcion_form.html', {
        'form': form,
        'form2': form2
    })
예제 #27
0
def agendar_citas(request):

    #Si usario no es anonimo? (ya esta log)
    role = get_user_role(request.user)
    if request.user.is_anonymous() or role == Estudiante:
        #Redireccion a Raiz
        return HttpResponseRedirect('/index')

    contexto = {}
    if request.method == 'POST':
        tipo = str(request.POST.get('id_citacion_save'))
        idioma = request.POST.get('id_idioma_save')
        tap = idioma
        if tipo == "nuevo":
            form = CitacionForm(request.POST)
            if form.is_valid():
                idioma = Idioma.objects.get(nombre=idioma)
                citacion = form.save(commit=False)
                citacion.idioma = idioma
                citacion.save()
                ## agendamiento de citas
                inscripciones_pendientes = Inscripcion.objects.filter(
                    cita_examen_creada=False,
                    estado_inscripcion=True,
                    idioma=idioma)
                for inscripcion in inscripciones_pendientes:
                    val = agendar_inscripcion(inscripcion)
            else:
                messages.error(request,
                               "Esta intentando ingresar valores invalidos")
        else:
            cita = Citacion.objects.get(pk=tipo)
            cupos = cupos_asignados(tipo)
            form = CitacionForm(request.POST, instance=cita)
            if form.is_valid():
                idioma = Idioma.objects.get(nombre=idioma)
                citacion = form.save(commit=False)
                if (citacion.numero_estudiantes - cupos) < 0:
                    messages.error(
                        request,
                        "Esta intentando ingresar una cantidad de cupos inferior a los cuales ya hay asignados"
                    )
                else:
                    citacion.idioma = idioma
                    citacion.save()
                    inscripciones_pendientes = Inscripcion.objects.filter(
                        cita_examen_creada=False,
                        estado_inscripcion=True,
                        idioma=idioma)
                    for inscripcion in inscripciones_pendientes:
                        val = agendar_inscripcion(inscripcion)
            else:
                messages.error(request,
                               "Esta intentando ingresar valores invalidos")
    else:
        tap = request.GET.get('tap')

    if (tap == "Frances"):
        #Set variables necesarias para este proceso
        idioma = Idioma.objects.get(nombre="Frances")
        preinscripciones = Inscripcion.objects.filter(idioma_id=idioma.id,
                                                      cita_examen_creada=False,
                                                      sol_examen=True,
                                                      estado_inscripcion=False)
        preinscripciones_adultos = []
        preinscripciones_ninos = []
        for preinscripcion in preinscripciones:
            if preinscripcion.persona.mayor_de_edad == True:
                preinscripciones_adultos.append(preinscripcion)
            else:
                preinscripciones_ninos.append(preinscripcion)

        citaciones = Citacion.objects.filter(
            idioma_id=idioma.id).order_by('id')
        cantidad_citas_disponibles_adultos = 0
        cantidad_citas_disponibles_ninos = 0
        forms = []
        #Conformacion de Formularios para envio y posterior edicion en tabla del template
        for citacion in citaciones:
            if citacion.edad.id == 1:
                cantidad_citas_disponibles_adultos += cupos_disponbiles(
                    citacion.id)
            else:
                cantidad_citas_disponibles_ninos += cupos_disponbiles(
                    citacion.id)
            form = CitacionForm(instance=citacion)
            form.fields["responsable"].queryset = User.objects.filter(
                groups__name='calificador')
            obj = {
                'id': citacion.id,
                'idioma': "Frances",
                'form': form,
                'cupos': cupos_disponbiles(citacion.id)
            }
            forms.append(obj)

        empty_form = CitacionForm()
        empty_form.fields["responsable"].queryset = User.objects.filter(
            groups__name='calificador')
        obj2 = {'idioma': "Frances", 'form': empty_form, 'nuevo': "nuevo"}
        forms.append(obj2)
        contexto['tap'] = "Frances"
        contexto['citaciones'] = forms

        contexto[
            'citaciones_no_disponibles_adultos'] = preinscripciones_adultos
        contexto['citaciones_no_disponibles_ninos'] = preinscripciones_ninos

        return render(request, 'inscripcion/admin/agendar_citas.html',
                      contexto)

    elif (tap == "Italiano"):
        idioma = Idioma.objects.get(nombre="Italiano")
        preinscripciones = Inscripcion.objects.filter(idioma_id=idioma.id,
                                                      cita_examen_creada=False,
                                                      sol_examen=True)
        preinscripciones_adultos = []
        preinscripciones_ninos = []
        for preinscripcion in preinscripciones:
            if preinscripcion.persona.mayor_de_edad == True:
                preinscripciones_adultos.append(preinscripcion)
            else:
                preinscripciones_ninos.append(preinscripcion)

        citaciones = Citacion.objects.filter(
            idioma_id=idioma.id).order_by('id')
        cantidad_citas_disponibles_adultos = 0
        cantidad_citas_disponibles_ninos = 0
        forms = []
        #Conformacion de Formularios para envio y posterior edicion en tabla del template
        for citacion in citaciones:
            if citacion.edad.id == 1:
                cantidad_citas_disponibles_adultos += cupos_disponbiles(
                    citacion.id)
            else:
                cantidad_citas_disponibles_ninos += cupos_disponbiles(
                    citacion.id)
            form = CitacionForm(instance=citacion)
            form.fields["responsable"].queryset = User.objects.filter(
                groups__name='calificador')
            obj = {
                'id': citacion.id,
                'idioma': "Italiano",
                'form': form,
                'cupos': cupos_disponbiles(citacion.id)
            }
            forms.append(obj)

        empty_form = CitacionForm()
        empty_form.fields["responsable"].queryset = User.objects.filter(
            groups__name='calificador')
        obj2 = {'idioma': "Italiano", 'form': empty_form, 'nuevo': "nuevo"}
        forms.append(obj2)
        contexto['tap'] = "Italiano"
        contexto['citaciones'] = forms

        contexto[
            'citaciones_no_disponibles_adultos'] = preinscripciones_adultos
        contexto['citaciones_no_disponibles_ninos'] = preinscripciones_ninos

        return render(request, 'inscripcion/admin/agendar_citas.html',
                      contexto)

    elif (tap == "Portugues"):
        idioma = Idioma.objects.get(nombre="Portugues")
        preinscripciones = Inscripcion.objects.filter(idioma_id=idioma.id,
                                                      cita_examen_creada=False,
                                                      sol_examen=True)
        preinscripciones_adultos = []
        preinscripciones_ninos = []
        for preinscripcion in preinscripciones:
            if preinscripcion.persona.mayor_de_edad == True:
                preinscripciones_adultos.append(preinscripcion)
            else:
                preinscripciones_ninos.append(preinscripcion)

        citaciones = Citacion.objects.filter(
            idioma_id=idioma.id).order_by('id')
        cantidad_citas_disponibles_adultos = 0
        cantidad_citas_disponibles_ninos = 0
        forms = []
        #Conformacion de Formularios para envio y posterior edicion en tabla del template
        for citacion in citaciones:
            if citacion.edad.id == 1:
                cantidad_citas_disponibles_adultos += cupos_disponbiles(
                    citacion.id)
            else:
                cantidad_citas_disponibles_ninos += cupos_disponbiles(
                    citacion.id)
            form = CitacionForm(instance=citacion)
            form.fields["responsable"].queryset = User.objects.filter(
                groups__name='calificador')
            obj = {
                'id': citacion.id,
                'idioma': "Portugues",
                'form': form,
                'cupos': cupos_disponbiles(citacion.id)
            }
            forms.append(obj)

        empty_form = CitacionForm()
        empty_form.fields["responsable"].queryset = User.objects.filter(
            groups__name='calificador')
        obj2 = {'idioma': "Portugues", 'form': empty_form, 'nuevo': "nuevo"}
        forms.append(obj2)
        contexto['tap'] = "Portugues"
        contexto['citaciones'] = forms

        contexto[
            'citaciones_no_disponibles_adultos'] = preinscripciones_adultos
        contexto['citaciones_no_disponibles_ninos'] = preinscripciones_ninos

        return render(request, 'inscripcion/admin/agendar_citas.html',
                      contexto)

    else:
        idioma = Idioma.objects.get(nombre="Ingles")
        preinscripciones = Inscripcion.objects.filter(idioma_id=idioma.id,
                                                      cita_examen_creada=False,
                                                      sol_examen=True)
        preinscripciones_adultos = []
        preinscripciones_ninos = []
        for preinscripcion in preinscripciones:
            if preinscripcion.persona.mayor_de_edad == True:
                preinscripciones_adultos.append(preinscripcion)
            else:
                preinscripciones_ninos.append(preinscripcion)

        citaciones = Citacion.objects.filter(
            idioma_id=idioma.id).order_by('id')
        cantidad_citas_disponibles_adultos = 0
        cantidad_citas_disponibles_ninos = 0
        forms = []
        #Conformacion de Formularios para envio y posterior edicion en tabla del template
        for citacion in citaciones:
            if citacion.edad.id == 1:

                #cantidad_citas_disponibles_adultos += citacion.numero_estudiantes
                cantidad_citas_disponibles_adultos += cupos_disponbiles(
                    citacion.id)

            else:
                #cantidad_citas_disponibles_ninos += citacion.numero_estudiantes
                cantidad_citas_disponibles_ninos += cupos_disponbiles(
                    citacion.id)

            form = CitacionForm(instance=citacion)
            form.fields["responsable"].queryset = User.objects.filter(
                groups__name='calificador')
            obj = {
                'id': citacion.id,
                'idioma': "Ingles",
                'form': form,
                'cupos': cupos_disponbiles(citacion.id)
            }
            forms.append(obj)

        empty_form = CitacionForm()
        empty_form.fields["responsable"].queryset = User.objects.filter(
            groups__name='calificador')
        obj2 = {'idioma': "Ingles", 'form': empty_form, 'nuevo': "nuevo"}
        forms.append(obj2)
        contexto['tap'] = "Ingles"
        contexto['citaciones'] = forms

        contexto[
            'citaciones_no_disponibles_adultos'] = preinscripciones_adultos
        contexto['citaciones_no_disponibles_ninos'] = preinscripciones_ninos

        return render(request, 'inscripcion/admin/agendar_citas.html',
                      contexto)
예제 #28
0
def listar_citas(request):

    #Si usario no es anonimo? (ya esta log)
    role = get_user_role(request.user)
    if request.user.is_anonymous() or role == Estudiante:
        #Redireccion a Raiz
        return HttpResponseRedirect('/index')

    contexto = {}

    idioma1 = request.GET.get('tap')

    if idioma1 == None:
        idioma1 = "Ingles"

    idioma = Idioma.objects.get(nombre=idioma1)
    citaciones = Citacion.objects.filter(idioma_id=idioma.id)
    json_citaciones = serializers.serialize('json', citaciones)

    for citacion in citaciones:
        preinscripciones = Inscripcion.objects.filter(idioma_id=idioma.id,
                                                      cita_examen_creada=False,
                                                      sol_examen=True,
                                                      estado_inscripcion=True)
        citacion_mayor_edad = False

        if citacion.edad.descripcion_edad == "Adultos":
            citacion_mayor_edad = True
        else:
            citacion_mayor_edad = False

        control_loop = cupos_disponbiles(citacion.id)
        iterator = 0
        for inscripcion in preinscripciones:
            if iterator == control_loop:
                break
            if inscripcion.persona.mayor_de_edad == citacion_mayor_edad:
                inscripcion.cita_examen_creada = True
                inscripcion.save()
                solicitud = Inscripcion_Examen(inscripcion=inscripcion,
                                               citacion=citacion,
                                               citacion_enviada=False)
                solicitud.save()
                iterator += 1

    lista = []
    registros = Inscripcion_Examen.objects.filter(
        inscripcion__cita_examen_creada=True, inscripcion__idioma=idioma)
    for registro in registros:

        citaciones_disponibles = Citacion.objects.filter(
            idioma=registro.citacion.idioma,
            edad=registro.citacion.edad,
            fecha_examen__gte=datetime.date.today()).exclude(
                pk=registro.citacion.id)

        citas_disponibles = []
        for citas in citaciones_disponibles:
            cupos = cupos_disponbiles(citas.id)
            if cupos > 0:
                citas_disponibles.append(citas)

        form = ExamenForm(instance=registro)
        obj = {
            'registro': registro,
            'form': form,
            'citas_disponibles': citas_disponibles,
        }
        lista.append(obj)

    contexto['current_date'] = datetime.date.today()
    contexto['tap'] = idioma1
    contexto['citaciones'] = citaciones
    contexto['citas'] = lista
    contexto['idioma'] = idioma.nombre
    contexto['json_citaciones'] = json_citaciones

    return render(request, 'inscripcion/admin/listar_citas.html', contexto)
    def test_user_without_role(self):
        user = self.user

        self.assertIsNone(get_user_role(user))