Example #1
0
def login(request, template_name):
    if (request.method == 'POST'):
        # Default error_message
        error_message = "Password not valid"
        try:
            username = request.POST.get('username', '').strip()
            # Check if user entered email to login
            if email_re.search(username):
                # "username" is an email. Get his/her username.
                user = User.objects.get(email=username)
            else:
                # Get real username in case user entered ignore-case username
                user = User.objects.get(username__iexact=username)

            post_copy = request.POST.copy()
            post_copy['username'] = user.username
            request.POST = post_copy
        except User.DoesNotExist:
            error_message = "Username doesn't exist"
        response = auth_views.login(request, template_name)
        ip_address = request.META.get('REMOTE_ADDR')
        if (type(response) == HttpResponseRedirect):
            UserSession.objects.create(user=user, ip_address=ip_address)
            logger.info("%s - account-login: user '%s'" %
                        (ip_address, username))
        else:
            logger.error("%s - account-login: user '%s', error: '%s'" %
                         (ip_address, username, error_message))
    else:
        response = auth_views.login(request, template_name)
    return response
Example #2
0
def password_change(request, pwdreset_key):
    user = PasswordReset.objects.is_valid(pwdreset_key)
    if not user:
        logger.error(
            "%s - account-pwdchange: key '%s', error: '%s'" %
            (request.META.get('REMOTE_ADDR'), pwdreset_key, 'Key not found'))
        return render_to_response('account/password_change_form.html',
                                  context_instance=RequestContext(request))
    if request.method == 'POST':
        form = PasswordChangeForm(request.POST)
        if form.is_valid():
            user.set_password(form.cleaned_data['new_password1'])
            user.save()
            PasswordReset.objects.expire_key(pwdreset_key)
            logger.info(
                "%s - account-pwdchange: key '%s', user '%s'" %
                (request.META.get('REMOTE_ADDR'), pwdreset_key, user.username))
            return render_to_response('account/password_change_done.html',
                                      context_instance=RequestContext(request))
        else:
            logger.error(
                "%s - account-pwdchange: key '%s', user '%s', error: '%s'" %
                (request.META.get('REMOTE_ADDR'), pwdreset_key, user.username,
                 'Password not valid'))
    else:
        form = PasswordChangeForm()
    return render_to_response('account/password_change_form.html', {
        'form': form,
        'user_cache': user
    },
                              context_instance=RequestContext(request))
Example #3
0
def password_change(request, pwdreset_key):
    user = PasswordReset.objects.is_valid(pwdreset_key)
    if not user:
        logger.error(
            "%s - account-pwdchange: key '%s', error: '%s'"
            % (request.META.get("REMOTE_ADDR"), pwdreset_key, "Key not found")
        )
        return render_to_response("account/password_change_form.html", context_instance=RequestContext(request))
    if request.method == "POST":
        form = PasswordChangeForm(request.POST)
        if form.is_valid():
            user.set_password(form.cleaned_data["new_password1"])
            user.save()
            PasswordReset.objects.expire_key(pwdreset_key)
            logger.info(
                "%s - account-pwdchange: key '%s', user '%s'"
                % (request.META.get("REMOTE_ADDR"), pwdreset_key, user.username)
            )
            return render_to_response("account/password_change_done.html", context_instance=RequestContext(request))
        else:
            logger.error(
                "%s - account-pwdchange: key '%s', user '%s', error: '%s'"
                % (request.META.get("REMOTE_ADDR"), pwdreset_key, user.username, "Password not valid")
            )
    else:
        form = PasswordChangeForm()
    return render_to_response(
        "account/password_change_form.html",
        {"form": form, "user_cache": user},
        context_instance=RequestContext(request),
    )
Example #4
0
def graduado(request, plancarrera):
    dict_data['list_carreras'] = request.session.get('list_carreras', list())
    alumno = get_object_or_404(Alumno,
                               user=request.user,
                               plancarrera__short_name=plancarrera)
    if request.method == 'POST':
        form = forms.GraduadoForm(request.POST)
        if form.is_valid():
            alumno.graduado_date = form.cleaned_data['graduado_date']
            alumno.save()
            request.user.message_set.create(message=_(u'¡Felicitaciones!'))
            logger.info("%s - carreras-graduado: user '%s', plancarrera '%s'" %
                        (request.META.get('REMOTE_ADDR'), request.user,
                         alumno.plancarrera))
            return HttpResponseRedirect(reverse('carreras-home'))
    else:
        # Initial data
        initial_data = {'plancarrera': alumno.plancarrera.short_name}
        if alumno.graduado_date:
            initial_data['month'] = alumno.graduado_date.month
            initial_data['year'] = alumno.graduado_date.year
        form = forms.GraduadoForm(initial=initial_data)

    dict_data['form'] = form
    dict_data['alumno'] = alumno
    return render_to_response('carreras/carrera_graduado_form.html',
                              dict_data,
                              context_instance=RequestContext(request))
Example #5
0
def login(request, template_name):
    if request.method == "POST":
        # Default error_message
        error_message = "Password not valid"
        try:
            username = request.POST.get("username", "").strip()
            # Check if user entered email to login
            if email_re.search(username):
                # "username" is an email. Get his/her username.
                user = User.objects.get(email=username)
            else:
                # Get real username in case user entered ignore-case username
                user = User.objects.get(username__iexact=username)

            post_copy = request.POST.copy()
            post_copy["username"] = user.username
            request.POST = post_copy
        except User.DoesNotExist:
            error_message = "Username doesn't exist"
        response = auth_views.login(request, template_name)
        ip_address = request.META.get("REMOTE_ADDR")
        if type(response) == HttpResponseRedirect:
            UserSession.objects.create(user=user, ip_address=ip_address)
            logger.info("%s - account-login: user '%s'" % (ip_address, username))
        else:
            logger.error("%s - account-login: user '%s', error: '%s'" % (ip_address, username, error_message))
    else:
        response = auth_views.login(request, template_name)
    return response
Example #6
0
def materia(request, codigo):
    dict_data['list_carreras'] = request.session.get('list_carreras', list())
    materia = get_object_or_404(Materia, id=codigo)

    if request.method == 'POST':
        form = CursadaForm(request.POST)
        if form.is_valid():
            form.save(request.user, materia)
            AlumnoMateria.objects.update_creditos(request.user,
                                                  dict_data['list_carreras'])
            request.user.message_set.create(message=_('Cambios guardados.'))
            logger.info(
                "%s - facultadmateria: user '%s', materia '%s', state '%s', form %s"
                % (request.META.get('REMOTE_ADDR'), request.user, codigo,
                   form.cleaned_data['state'], form.cleaned_data))
            if request.session.has_key('plancarrera'):
                return HttpResponseRedirect(
                    reverse('facultad-materias-carrera',
                            args=[request.session.get('plancarrera')]))
    else:
        initial_data = AlumnoMateria.objects.get_initial_data(
            request.user, materia)
        form = CursadaForm(initial=initial_data)
        #request.session.set('redirect_url', request.META.get('HTTP_REFERER', ''))
    # form.fields['materia_curso'].choices = [('-', 'Curso')] + [(c.id, c.docentes) for c in MateriaCurso.objects.filter(pub_date='2008-03-01', materia=materia)]
    # print dir(form.fields['materia_curso']) #.fields['materia_curso']
    # MATERIA_CURSOS = [('-', '-')] + [(c.id, c.docentes) for c in MateriaCurso.objects.filter(pub_date='2008-03-01', materia=)]
    dict_data.update({
        'form': form,
        'materia': materia,
    })
    return render_to_response('facultad/materia_form.html',
                              dict_data,
                              context_instance=RequestContext(request))
Example #7
0
def parse_materias_aprobadas(paste, request):
    lines = paste.split("\n")
    materia_list = []
    notfound_list = []
    for l in lines:
        match = re_infoacad.match(l)
        if match:
            # Line matched regex
            dict_materia = match.groupdict()
            try:
                # Find materia
                cod_materia = dict_materia['cod_materia']
                materia = Materia.objects.get(id=cod_materia)
                nota = dict_materia['nota']
                day, month, year = dict_materia['final_date'].split('-')
                final_date = datetime.date(int(year), int(month), int(day))
                al = AlumnoMateria.objects.create_or_update(request.user, materia, final_date, nota)
                logger.info("%s - cargar_materias: user '%s', materia '%s', fecha '%s', nota '%s'" 
                	% (request.META.get('REMOTE_ADDR'), request.user, materia.id, final_date, nota))
                materia_list.append([materia, final_date, nota])
            except:
                # Materia not found
                notfound_list.append(l)
                logger.error("%s - cargar_materias: user '%s', materia 'NOT FOUND', line '%s'" 
                	% (request.META.get('REMOTE_ADDR'), request.user, l))
        else:
            # Not matched
            notfound_list.append(l)
            logger.error("%s - cargar_materias: user '%s', line NOT MATCH '%s'" 
            	% (request.META.get('REMOTE_ADDR'), request.user, l))
    dict_result = { 'text_paste' : "\n".join(notfound_list),
            		'materia_list' : materia_list, 
            		'materia_list_count' : len(materia_list),
    }
    return dict_result
Example #8
0
def events_add(request, cod_materia):
	materia = _get_common_vars(cod_materia)
	#from event.forms import CreateEventForm
	if request.method == 'POST':
		form = CreateEventForm(request.POST)
		if form.is_valid():
			title = form.cleaned_data['title']
			where = form.cleaned_data['where']
			description = form.cleaned_data['description']
			date_event = form.cleaned_data['date_event']
			event = Event.objects.create(title=title, where=where, description=description, date=date_event)
			EventMateria.objects.create(event=event, user=request.user, materia=materia)
			request.user.message_set.create(message=_('Fecha agregada'))
			logger.info("%s - materias-events_add: id %s, user '%s', materia '%s', '%s', '%s', '%s', '%s'" %
				(request.META.get('REMOTE_ADDR'), event.id, request.user, materia.id, title, where, date_event, description))
		else:
			logger.error("%s - materias-events_add: user '%s', materia '%s', title '%s', where '%s', date_event '%s/%s/%s %s:%s', description '%s'" %
				(request.META.get('REMOTE_ADDR'), request.user, materia.id, form.data['title'], form.data['where'],
				 form.data['date_day'], form.data['date_month'], form.data['date_year'], form.data['time_hour'],
				 form.data['time_minute'], form.data['description']))
	else:
		form = CreateEventForm()
	dict_data['form'] = form
	return render_to_response('materia_events_add.html', dict_data,
							  context_instance=RequestContext(request))
Example #9
0
def add(request):
    dict_data["list_carreras"] = request.session.get("list_carreras", list())
    if request.method == "POST":
        form = forms.SelectCarreraForm(request.POST)
        if form.is_valid():
            plancarrera = PlanCarrera.objects.get(id=form.cleaned_data["plancarrera"])
            begin_date = form.cleaned_data["begin_date"]
            alumno = Alumno.objects.create(
                user=request.user, carrera=plancarrera.carrera, plancarrera=plancarrera, begin_date=begin_date
            )
            if alumno:
                AlumnoMateria.objects.update_creditos(request.user, [alumno])
                request.user.message_set.create(message=_("Carrera agregada."))
                logger.info(
                    "%s - carreras-add: user '%s', plancarrera '%s'"
                    % (request.META.get("REMOTE_ADDR"), request.user, plancarrera.name)
                )
            else:
                request.user.message_set.create(message=_(u"Ya cursás esa carrera."))
                logger.error(
                    "%s - carreras-add: user '%s', plancarrera '%s', \"Ya cursás esa carrera.\""
                    % (request.META.get("REMOTE_ADDR"), request.user, plancarrera.name)
                )
            return HttpResponseRedirect(reverse("carreras-home"))
        else:
            logger.error(
                "%s - carreras-add: user '%s', plancarrera '%s', \"Form not valid.\""
                % (request.META.get("REMOTE_ADDR"), request.user, form.cleaned_data["plancarrera"])
            )

    form = forms.SelectCarreraForm()
    dict_data["form"] = form
    return render_to_response("carreras/carrera_add_form.html", dict_data, context_instance=RequestContext(request))
Example #10
0
def graduado(request, plancarrera):
    dict_data["list_carreras"] = request.session.get("list_carreras", list())
    alumno = get_object_or_404(Alumno, user=request.user, plancarrera__short_name=plancarrera)
    if request.method == "POST":
        form = forms.GraduadoForm(request.POST)
        if form.is_valid():
            alumno.graduado_date = form.cleaned_data["graduado_date"]
            alumno.save()
            request.user.message_set.create(message=_(u"¡Felicitaciones!"))
            logger.info(
                "%s - carreras-graduado: user '%s', plancarrera '%s'"
                % (request.META.get("REMOTE_ADDR"), request.user, alumno.plancarrera)
            )
            return HttpResponseRedirect(reverse("carreras-home"))
    else:
        # Initial data
        initial_data = {"plancarrera": alumno.plancarrera.short_name}
        if alumno.graduado_date:
            initial_data["month"] = alumno.graduado_date.month
            initial_data["year"] = alumno.graduado_date.year
        form = forms.GraduadoForm(initial=initial_data)

    dict_data["form"] = form
    dict_data["alumno"] = alumno
    return render_to_response(
        "carreras/carrera_graduado_form.html", dict_data, context_instance=RequestContext(request)
    )
Example #11
0
def events_delete(request, cod_materia, id_event):
	materia = _get_common_vars(cod_materia)
	event = get_object_or_404(EventMateria, id=id_event, user=request.user)
	logger.info("%s - materias-events_delete: id %s, user '%s'" % (request.META.get('REMOTE_ADDR'), event.id, request.user))
	event.event.delete()
	event.delete()
	request.user.message_set.create(message=_('Fecha borrada'))
	return HttpResponseRedirect(materia.url_events())
Example #12
0
def delete(request, plancarrera=None):
	if plancarrera:
		alumno = get_object_or_404(Alumno, user=request.user, plancarrera__short_name=plancarrera)
		alumno.delete()
		request.user.message_set.create(message=_('Carrera borrada.'))
		logger.info("%s - carreras-delete: user '%s', plancarrera '%s'" % (request.META.get('REMOTE_ADDR'), request.user, plancarrera))
		return HttpResponseRedirect(reverse('carreras-home'))
	# Show list of carreras
	dict_data['list_carreras'] = request.session.get('list_carreras', list())
	return render_to_response('carreras/carrera_delete.html', dict_data,
							  context_instance=RequestContext(request))
Example #13
0
def delete(request, plancarrera=None):
    if plancarrera:
        alumno = get_object_or_404(Alumno,
                                   user=request.user,
                                   plancarrera__short_name=plancarrera)
        alumno.delete()
        request.user.message_set.create(message=_('Carrera borrada.'))
        logger.info(
            "%s - carreras-delete: user '%s', plancarrera '%s'" %
            (request.META.get('REMOTE_ADDR'), request.user, plancarrera))
        return HttpResponseRedirect(reverse('carreras-home'))
    # Show list of carreras
    dict_data['list_carreras'] = request.session.get('list_carreras', list())
    return render_to_response('carreras/carrera_delete.html',
                              dict_data,
                              context_instance=RequestContext(request))
Example #14
0
def edit(request):
    """
    Edits profile data.
    """
    profile = Profile.objects.get(user=request.user)
    if request.method == 'POST':
        form = ProfileForm(request.POST)
        if form.is_valid():
            form.save(profile)
            logger.info("%s - profile-edit: user '%s', form %s" % (request.META.get('REMOTE_ADDR'), request.user, form.cleaned_data))
            request.user.message_set.create(message=_('Profile updated.'))
            return HttpResponseRedirect(reverse('profile-show'))
    form = ProfileForm(profile.get_init_data())
    dict_data['form'] = form
    return render_to_response('profiles/edit_form.html', dict_data,
                              context_instance=RequestContext(request))
Example #15
0
def edit(request):
    """
    Edits profile data.
    """
    profile = Profile.objects.get(user=request.user)
    if request.method == 'POST':
        form = ProfileForm(request.POST)
        if form.is_valid():
            form.save(profile)
            logger.info("%s - profile-edit: user '%s', form %s" % (request.META.get('REMOTE_ADDR'), request.user, form.cleaned_data))
            request.user.message_set.create(message=_('Profile updated.'))
            return HttpResponseRedirect(reverse('profile-show'))
    form = ProfileForm(profile.get_init_data())
    dict_data['form'] = form
    return render_to_response('profiles/edit_form.html', dict_data,
                              context_instance=RequestContext(request))
Example #16
0
def photo_edit(request):
    # Upload a new photo
    if request.FILES:
        form = UploadPhotoForm(request.POST, request.FILES)  
        if form.is_valid() and request.FILES.has_key('avatar'):
            if Photo.objects.upload_file(request.user, request.FILES['avatar']):
                request.user.message_set.create(message=_('Photo updated.'))
            else:
                request.user.message_set.create(message=_('Ocurrió un error.'))
            logger.info("%s - profile-photo_edit: user '%s', form %s" % (request.META.get('REMOTE_ADDR'), request.user, form.cleaned_data))
    else:
        form = UploadPhotoForm()
    profile = Profile.objects.get(user=request.user)
    photo_list = Photo.objects.filter(user=request.user).order_by('id')
    dict_data.update({ 'form' : form, 'profile' : profile, 'photo_list' : photo_list })
    return render_to_response('profiles/photo_form.html', dict_data,
                              context_instance=RequestContext(request))
Example #17
0
def photo_edit(request):
    # Upload a new photo
    if request.FILES:
        form = UploadPhotoForm(request.POST, request.FILES)  
        if form.is_valid() and request.FILES.has_key('avatar'):
            if Photo.objects.upload_file(request.user, request.FILES['avatar']):
                request.user.message_set.create(message=_('Photo updated.'))
            else:
                request.user.message_set.create(message=_('Ocurrió un error.'))
            logger.info("%s - profile-photo_edit: user '%s', form %s" % (request.META.get('REMOTE_ADDR'), request.user, form.cleaned_data))
    else:
        form = UploadPhotoForm()
    profile = Profile.objects.get(user=request.user)
    photo_list = Photo.objects.filter(user=request.user).order_by('id')
    dict_data.update({ 'form' : form, 'profile' : profile, 'photo_list' : photo_list })
    return render_to_response('profiles/photo_form.html', dict_data,
                              context_instance=RequestContext(request))
Example #18
0
def password_reset(request, template_name, email_template_name):
    if request.method == 'POST':
        form = PasswordResetForm(request.POST)
        if form.is_valid():
            "Generates a key and sends it to the user"
            from django.core.mail import send_mail
            pwdreset_key = PasswordReset.objects.create_key(form.user)
            pwdreset_key.send_mail(email_template_name)
            logger.info("%s - account-password_reset: email '%s'" %
                        (request.META.get('REMOTE_ADDR'), form.user.email))
            return HttpResponseRedirect('%sdone/' % request.path)
        else:
            logger.error("%s - account-password_reset: email '%s' not found" %
                         (request.META.get('REMOTE_ADDR'), form.data['email']))
    else:
        form = PasswordResetForm()
    return render_to_response(template_name, {'form': form},
                              context_instance=RequestContext(request))
Example #19
0
def password_reset(request, template_name, email_template_name):
    if request.method == "POST":
        form = PasswordResetForm(request.POST)
        if form.is_valid():
            "Generates a key and sends it to the user"
            from django.core.mail import send_mail

            pwdreset_key = PasswordReset.objects.create_key(form.user)
            pwdreset_key.send_mail(email_template_name)
            logger.info("%s - account-password_reset: email '%s'" % (request.META.get("REMOTE_ADDR"), form.user.email))
            return HttpResponseRedirect("%sdone/" % request.path)
        else:
            logger.error(
                "%s - account-password_reset: email '%s' not found"
                % (request.META.get("REMOTE_ADDR"), form.data["email"])
            )
    else:
        form = PasswordResetForm()
    return render_to_response(template_name, {"form": form}, context_instance=RequestContext(request))
Example #20
0
def parse_materias_aprobadas(paste, request):
    lines = paste.split("\n")
    materia_list = []
    notfound_list = []
    for l in lines:
        match = re_infoacad.match(l)
        if match:
            # Line matched regex
            dict_materia = match.groupdict()
            try:
                # Find materia
                cod_materia = dict_materia['cod_materia']
                materia = Materia.objects.get(id=cod_materia)
                nota = dict_materia['nota']
                day, month, year = dict_materia['final_date'].split('-')
                final_date = datetime.date(int(year), int(month), int(day))
                al = AlumnoMateria.objects.create_or_update(
                    request.user, materia, final_date, nota)
                logger.info(
                    "%s - cargar_materias: user '%s', materia '%s', fecha '%s', nota '%s'"
                    % (request.META.get('REMOTE_ADDR'), request.user,
                       materia.id, final_date, nota))
                materia_list.append([materia, final_date, nota])
            except:
                # Materia not found
                notfound_list.append(l)
                logger.error(
                    "%s - cargar_materias: user '%s', materia 'NOT FOUND', line '%s'"
                    % (request.META.get('REMOTE_ADDR'), request.user, l))
        else:
            # Not matched
            notfound_list.append(l)
            logger.error(
                "%s - cargar_materias: user '%s', line NOT MATCH '%s'" %
                (request.META.get('REMOTE_ADDR'), request.user, l))
    dict_result = {
        'text_paste': "\n".join(notfound_list),
        'materia_list': materia_list,
        'materia_list_count': len(materia_list),
    }
    return dict_result
Example #21
0
def links(request, callback=None):
    if request.method == 'POST':
        form_name = request.POST.get('form_name', '')
        if form_name == 'sn_form':
            form = LinkSocialNetworkForm(request.POST)
        elif form_name == 'im_form':
            form = LinkInstantMessengerForm(request.POST)
        elif form_name == 'w_form':
            form = LinkWebsiteForm(request.POST)
        else:
            form = None
        if form and form.is_valid():
            logger.info("%s - profile-links: user '%s', form %s" % (request.META.get('REMOTE_ADDR'), request.user, form.cleaned_data))
            form.save(request.user)
            request.user.message_set.create(message=_('Profile added.'))
            
    dict_data.update({ 'sn_form' : LinkSocialNetworkForm(), 
        'im_form' : LinkInstantMessengerForm(), 'w_form' : LinkWebsiteForm(), 
    })
    return render_to_response('profiles/links_form.html', dict_data, 
                              context_instance=RequestContext(request))
Example #22
0
def links(request, callback=None):
    if request.method == 'POST':
        form_name = request.POST.get('form_name', '')
        if form_name == 'sn_form':
            form = LinkSocialNetworkForm(request.POST)
        elif form_name == 'im_form':
            form = LinkInstantMessengerForm(request.POST)
        elif form_name == 'w_form':
            form = LinkWebsiteForm(request.POST)
        else:
            form = None
        if form and form.is_valid():
            logger.info("%s - profile-links: user '%s', form %s" % (request.META.get('REMOTE_ADDR'), request.user, form.cleaned_data))
            form.save(request.user)
            request.user.message_set.create(message=_('Profile added.'))
            
    dict_data.update({ 'sn_form' : LinkSocialNetworkForm(), 
        'im_form' : LinkInstantMessengerForm(), 'w_form' : LinkWebsiteForm(), 
    })
    return render_to_response('profiles/links_form.html', dict_data, 
                              context_instance=RequestContext(request))
Example #23
0
def materia(request, codigo):
	dict_data['list_carreras'] = request.session.get('list_carreras', list())
	materia = get_object_or_404(Materia, id=codigo)

	if request.method == 'POST':
		form = CursadaForm(request.POST)
		if form.is_valid():
			form.save(request.user, materia)
			AlumnoMateria.objects.update_creditos(request.user, dict_data['list_carreras'])
			request.user.message_set.create(message=_('Cambios guardados.'))
			logger.info("%s - facultadmateria: user '%s', materia '%s', state '%s', form %s" % (request.META.get('REMOTE_ADDR'), request.user, codigo, form.cleaned_data['state'], form.cleaned_data))
			if request.session.has_key('plancarrera'):
				return HttpResponseRedirect(reverse('facultad-materias-carrera', args=[request.session.get('plancarrera')]))
	else:
		initial_data = AlumnoMateria.objects.get_initial_data(request.user, materia)
		form = CursadaForm(initial=initial_data)
		#request.session.set('redirect_url', request.META.get('HTTP_REFERER', ''))
	# form.fields['materia_curso'].choices = [('-', 'Curso')] + [(c.id, c.docentes) for c in MateriaCurso.objects.filter(pub_date='2008-03-01', materia=materia)]
	# print dir(form.fields['materia_curso']) #.fields['materia_curso']
	# MATERIA_CURSOS = [('-', '-')] + [(c.id, c.docentes) for c in MateriaCurso.objects.filter(pub_date='2008-03-01', materia=)]
	dict_data.update({ 'form' : form, 'materia' : materia, })
	return render_to_response('facultad/materia_form.html', dict_data,
							  context_instance=RequestContext(request))
Example #24
0
def graduado(request, plancarrera):
	dict_data['list_carreras'] = request.session.get('list_carreras', list())
	alumno = get_object_or_404(Alumno, user=request.user, plancarrera__short_name=plancarrera)
	if request.method == 'POST':
		form = forms.GraduadoForm(request.POST)
		if form.is_valid():
			alumno.graduado_date = form.cleaned_data['graduado_date']
			alumno.save()
			request.user.message_set.create(message=_(u'¡Felicitaciones!'))
			logger.info("%s - carreras-graduado: user '%s', plancarrera '%s'" % (request.META.get('REMOTE_ADDR'), request.user, alumno.plancarrera))
			return HttpResponseRedirect(reverse('carreras-home'))
	else:
		# Initial data
		initial_data = { 'plancarrera' : alumno.plancarrera.short_name }
		if alumno.graduado_date:
			initial_data['month'] = alumno.graduado_date.month
			initial_data['year'] = alumno.graduado_date.year
		form = forms.GraduadoForm(initial=initial_data)

	dict_data['form'] = form
	dict_data['alumno'] = alumno
	return render_to_response('carreras/carrera_graduado_form.html', dict_data,
							  context_instance=RequestContext(request))
Example #25
0
def add(request):
    dict_data['list_carreras'] = request.session.get('list_carreras', list())
    if request.method == 'POST':
        form = forms.SelectCarreraForm(request.POST)
        if form.is_valid():
            plancarrera = PlanCarrera.objects.get(
                id=form.cleaned_data['plancarrera'])
            begin_date = form.cleaned_data['begin_date']
            alumno = Alumno.objects.create(user=request.user,
                                           carrera=plancarrera.carrera,
                                           plancarrera=plancarrera,
                                           begin_date=begin_date)
            if alumno:
                AlumnoMateria.objects.update_creditos(request.user, [alumno])
                request.user.message_set.create(message=_('Carrera agregada.'))
                logger.info("%s - carreras-add: user '%s', plancarrera '%s'" %
                            (request.META.get('REMOTE_ADDR'), request.user,
                             plancarrera.name))
            else:
                request.user.message_set.create(
                    message=_(u'Ya cursás esa carrera.'))
                logger.error(
                    "%s - carreras-add: user '%s', plancarrera '%s', \"Ya cursás esa carrera.\""
                    % (request.META.get('REMOTE_ADDR'), request.user,
                       plancarrera.name))
            return HttpResponseRedirect(reverse('carreras-home'))
        else:
            logger.error(
                "%s - carreras-add: user '%s', plancarrera '%s', \"Form not valid.\""
                % (request.META.get('REMOTE_ADDR'), request.user,
                   form.cleaned_data['plancarrera']))

    form = forms.SelectCarreraForm()
    dict_data['form'] = form
    return render_to_response('carreras/carrera_add_form.html',
                              dict_data,
                              context_instance=RequestContext(request))
Example #26
0
def activate(request, activation_key, template_name="registration/activate.html"):
    """
	Activates a ``User``'s account, if their key is valid and hasn't
	expired.

	By default, uses the template ``registration/activate.html``; to
	change this, pass the name of a template as the keyword argument
	``template_name``.

	**Context:**

	account
		The ``User`` object corresponding to the account, if the
		activation was successful. ``False`` if the activation was not
		successful.

	expiration_days
		The number of days for which activation keys stay valid after
		registration.

	**Template:**

	registration/activate.html or ``template_name`` keyword argument.

	"""
    activation_key = activation_key.lower()  # Normalize before trying anything with it.
    account = RegistrationProfile.objects.activate_user(activation_key)

    if account:
        logger.info("%s - account-activate: user %s" % (request.META.get("REMOTE_ADDR"), account))
    else:
        logger.error("%s - account-activate: activation_key %s" % (request.META.get("REMOTE_ADDR"), activation_key))
    return render_to_response(
        template_name,
        {"account": account, "expiration_days": getattr(settings, "ACCOUNT_ACTIVATION_DAYS", 5)},
        context_instance=RequestContext(request),
    )
Example #27
0
def activate(request, activation_key, template_name='registration/activate.html'):
	"""
	Activates a ``User``'s account, if their key is valid and hasn't
	expired.

	By default, uses the template ``registration/activate.html``; to
	change this, pass the name of a template as the keyword argument
	``template_name``.

	**Context:**

	account
		The ``User`` object corresponding to the account, if the
		activation was successful. ``False`` if the activation was not
		successful.

	expiration_days
		The number of days for which activation keys stay valid after
		registration.

	**Template:**

	registration/activate.html or ``template_name`` keyword argument.

	"""
	activation_key = activation_key.lower() # Normalize before trying anything with it.
	account = RegistrationProfile.objects.activate_user(activation_key)

	if (account):
		logger.info("%s - account-activate: user %s" %(request.META.get('REMOTE_ADDR'), account))
	else:
		logger.error("%s - account-activate: activation_key %s" %(request.META.get('REMOTE_ADDR'), activation_key))
	return render_to_response(template_name,
							  { 'account': account,
								'expiration_days': getattr(settings, 'ACCOUNT_ACTIVATION_DAYS', 5) },
							  context_instance=RequestContext(request))
Example #28
0
def register(request, success_url='/account/register/complete/',
			 form_class=RegistrationFormUniqueEmail, profile_callback=None,
			 template_name='registration/registration_form.html'):
	"""
	Allows a new user to register an account.

	Following successful registration, redirects to either
	``/accounts/register/complete/`` or, if supplied, the URL
	specified in the keyword argument ``success_url``.

	By default, ``registration.forms.RegistrationForm`` will be used
	as the registration form; to change this, pass a different form
	class as the ``form_class`` keyword argument. The form class you
	specify must have a method ``save`` which will create and return
	the new ``User``, and that method must accept the keyword argument
	``profile_callback`` (see below).

	To enable creation of a site-specific user profile object for the
	new user, pass a function which will create the profile object as
	the keyword argument ``profile_callback``. See
	``RegistrationManager.create_inactive_user`` in the file
	``models.py`` for details on how to write this function.

	By default, uses the template
	``registration/registration_form.html``; to change this, pass the
	name of a template as the keyword argument ``template_name``.

	**Context:**

	form
		The registration form.

	**Template:**

	registration/registration_form.html or ``template_name`` keyword
	argument.

	"""
	if request.method == 'POST':
		form = form_class(request.POST)
		logger.debug("%s - account-register: username: '******', first_name: '%s', last_name: '%s', email: '%s', tipo_verificacion: '%s', verificacion: '%s',  tipo_request_auth: '%s', request_auth: '%s'" % (request.META.get('REMOTE_ADDR'), form.data['username'], form.data['first_name'], form.data['last_name'], form.data['email'], form.data['tipo_verificacion'], form.data['verificacion'], form.data['tipo_request_auth'], form.data['request_auth']))
		if form.is_valid():
			# new_user = form.save(profile_callback=profile_callback)
			# return HttpResponseRedirect(success_url)
			if form.is_request_auth():
				# User is not alumno.
				send_email = False
				activation_email = form.cleaned_data['email']
			else:
				# User is alumno or has an email account.
				if form.is_account():
					# User has an email account.
					if settings.CHECK_PADRON.is_registered(form.cleaned_data['verificacion']):
						form.errors['verificacion'] = [_(u'Cuenta ya utilizada. Por favor contactate con nosotros \
								si creés que alguien utilizó tu cuenta.')]
						#logger.error("%s - check_padron %s ('%s', '%s', '%s')" % (request.META.get('REMOTE_ADDR'), 'ALREADY USED', form.cleaned_data['verificacion'], form.data['first_name'], form.data['last_name']))
					else:
						activation_email = form.cleaned_data['verificacion'] + '@fi.uba.ar'

				# Check padron
				elif form.is_padron():
					# Check verificacion repetido
					verificacion_error, log_message = settings.CHECK_PADRON.check_padron(form.cleaned_data['verificacion'], form.data['first_name'], form.data['last_name'])
					if verificacion_error:
						logger.error("%s - check_padron %s ('%s', '%s', '%s')" % (request.META.get('REMOTE_ADDR'), log_message, form.cleaned_data['verificacion'], form.data['first_name'], form.data['last_name']))
						form.errors['verificacion'] = [verificacion_error]
					else:
					    logger.info("%s - check_padron %s ('%s', '%s', '%s')" % (request.META.get('REMOTE_ADDR'), log_message, form.cleaned_data['verificacion'], form.data['first_name'], form.data['last_name']))
					activation_email = form.cleaned_data['email']
				send_email = True

			if len(form.errors) == 0:
				# Register new user
				new_user = RegistrationProfile.objects.create_inactive_user(username=form.cleaned_data['username'],
							  password=form.cleaned_data['password'], first_name=form.cleaned_data['first_name'],
							  last_name=form.cleaned_data['last_name'], email=activation_email, send_email=send_email)
				logger.info("%s - new_user ('%s', '%s')" % (request.META.get('REMOTE_ADDR'), new_user.username, new_user.email))
				if form.is_account():
					# Save user's email.
					new_user.email = form.cleaned_data['email']
					new_user.save()

				from django.core.mail import send_mail
				current_site = Site.objects.get_current()

				subject = _(u'[%s] New user' % current_site.name)
				message = render_to_string('registration/new_user_email.html',
										   { 'new_user': form.cleaned_data,
											 'site_url': 'http://%s/' % current_site.domain,
											 'site_name': current_site.name, })
				send_mail(subject, message, settings.DEFAULT_FROM_EMAIL, [a[1] for a in settings.MANAGERS])

				if send_email:
					settings.CHECK_PADRON.save_user(form.cleaned_data['verificacion'], form.data['first_name'], form.data['last_name'])
				return render_to_response('registration/registration_complete.html',
										  { 'send_email': send_email,
											'activation_email' : activation_email, },
										  context_instance=RequestContext(request))

			"""
			request_auth = form.cleaned_data['request_auth']

			return render_to_response('registration_complete.html',
									  { 'send_email': send_email },
									  context_instance=RequestContext(request))
			return HttpResponseRedirect(success_url)
			"""
	else:
		form = form_class()
	return render_to_response(template_name, { 'form': form },
							  context_instance=RequestContext(request))
Example #29
0
def register(
    request,
    success_url="/account/register/complete/",
    form_class=RegistrationFormUniqueEmail,
    profile_callback=None,
    template_name="registration/registration_form.html",
):
    """
	Allows a new user to register an account.

	Following successful registration, redirects to either
	``/accounts/register/complete/`` or, if supplied, the URL
	specified in the keyword argument ``success_url``.

	By default, ``registration.forms.RegistrationForm`` will be used
	as the registration form; to change this, pass a different form
	class as the ``form_class`` keyword argument. The form class you
	specify must have a method ``save`` which will create and return
	the new ``User``, and that method must accept the keyword argument
	``profile_callback`` (see below).

	To enable creation of a site-specific user profile object for the
	new user, pass a function which will create the profile object as
	the keyword argument ``profile_callback``. See
	``RegistrationManager.create_inactive_user`` in the file
	``models.py`` for details on how to write this function.

	By default, uses the template
	``registration/registration_form.html``; to change this, pass the
	name of a template as the keyword argument ``template_name``.

	**Context:**

	form
		The registration form.

	**Template:**

	registration/registration_form.html or ``template_name`` keyword
	argument.

	"""
    if request.method == "POST":
        form = form_class(request.POST)
        logger.debug(
            "%s - account-register: username: '******', first_name: '%s', last_name: '%s', email: '%s', tipo_verificacion: '%s', verificacion: '%s',  tipo_request_auth: '%s', request_auth: '%s'"
            % (
                request.META.get("REMOTE_ADDR"),
                form.data["username"],
                form.data["first_name"],
                form.data["last_name"],
                form.data["email"],
                form.data["tipo_verificacion"],
                form.data["verificacion"],
                form.data["tipo_request_auth"],
                form.data["request_auth"],
            )
        )
        if form.is_valid():
            # new_user = form.save(profile_callback=profile_callback)
            # return HttpResponseRedirect(success_url)
            if form.is_request_auth():
                # User is not alumno.
                send_email = False
                activation_email = form.cleaned_data["email"]
            else:
                # User is alumno or has an email account.
                if form.is_account():
                    # User has an email account.
                    if settings.CHECK_PADRON.is_registered(form.cleaned_data["verificacion"]):
                        form.errors["verificacion"] = [
                            _(
                                u"Cuenta ya utilizada. Por favor contactate con nosotros \
								si creés que alguien utilizó tu cuenta."
                            )
                        ]
                        # logger.error("%s - check_padron %s ('%s', '%s', '%s')" % (request.META.get('REMOTE_ADDR'), 'ALREADY USED', form.cleaned_data['verificacion'], form.data['first_name'], form.data['last_name']))
                    else:
                        activation_email = form.cleaned_data["verificacion"] + "@fi.uba.ar"

                        # Check padron
                elif form.is_padron():
                    # Check verificacion repetido
                    verificacion_error, log_message = settings.CHECK_PADRON.check_padron(
                        form.cleaned_data["verificacion"], form.data["first_name"], form.data["last_name"]
                    )
                    if verificacion_error:
                        logger.error(
                            "%s - check_padron %s ('%s', '%s', '%s')"
                            % (
                                request.META.get("REMOTE_ADDR"),
                                log_message,
                                form.cleaned_data["verificacion"],
                                form.data["first_name"],
                                form.data["last_name"],
                            )
                        )
                        form.errors["verificacion"] = [verificacion_error]
                    else:
                        logger.info(
                            "%s - check_padron %s ('%s', '%s', '%s')"
                            % (
                                request.META.get("REMOTE_ADDR"),
                                log_message,
                                form.cleaned_data["verificacion"],
                                form.data["first_name"],
                                form.data["last_name"],
                            )
                        )
                    activation_email = form.cleaned_data["email"]
                send_email = True

            if len(form.errors) == 0:
                # Register new user
                new_user = RegistrationProfile.objects.create_inactive_user(
                    username=form.cleaned_data["username"],
                    password=form.cleaned_data["password"],
                    first_name=form.cleaned_data["first_name"],
                    last_name=form.cleaned_data["last_name"],
                    email=activation_email,
                    send_email=send_email,
                )
                logger.info(
                    "%s - new_user ('%s', '%s')" % (request.META.get("REMOTE_ADDR"), new_user.username, new_user.email)
                )
                if form.is_account():
                    # Save user's email.
                    new_user.email = form.cleaned_data["email"]
                    new_user.save()

                from django.core.mail import send_mail

                current_site = Site.objects.get_current()

                subject = _(u"[%s] New user" % current_site.name)
                message = render_to_string(
                    "registration/new_user_email.html",
                    {
                        "new_user": form.cleaned_data,
                        "site_url": "http://%s/" % current_site.domain,
                        "site_name": current_site.name,
                    },
                )
                send_mail(subject, message, settings.DEFAULT_FROM_EMAIL, [a[1] for a in settings.MANAGERS])

                if send_email:
                    settings.CHECK_PADRON.save_user(
                        form.cleaned_data["verificacion"], form.data["first_name"], form.data["last_name"]
                    )
                return render_to_response(
                    "registration/registration_complete.html",
                    {"send_email": send_email, "activation_email": activation_email},
                    context_instance=RequestContext(request),
                )

            """
			request_auth = form.cleaned_data['request_auth']

			return render_to_response('registration_complete.html',
									  { 'send_email': send_email },
									  context_instance=RequestContext(request))
			return HttpResponseRedirect(success_url)
			"""
    else:
        form = form_class()
    return render_to_response(template_name, {"form": form}, context_instance=RequestContext(request))