def demo(request): """Logs in a demo user""" # Check if it's possible to login if User.objects.filter(login__endswith='@demo.athena').count() > 1000: # Attempt to remove superficial accounts k = User.objects.filter(status=1, login__endswith='@demo.athena') \ .filter(created_on__lt=datetime.now() - timedelta(1)) for x in k: x.delete() if User.objects.filter(login__endswith='@demo.athena').count() > 1000: messages.add_message(request, messages.ERROR, u'Błąd: przeciążenie systemu') return redirect('/') target_login = '******' % (randint(0, 10000000)) su = User(name='Tymczasowe konto DEMO', surname='', login=target_login, number=0) su.save() Group.get_demo_group().students.add(su) request.login(target_login) messages.add_message(request, messages.INFO, u'Zalogowano demonstracyjnie.') return redirect('/')
def create(request): class NewAccountForm(forms.Form): _CHOICE = ((1, "Nauczyciel"), (2, "Adminstrator")) login = forms.EmailField(label=u"E-mail") name = forms.CharField(label=u"Imię", required=False) surname = forms.CharField(label=u"Nazwisko", required=False) status = forms.ChoiceField(choices=_CHOICE, initial=1, label=u"Typ") if request.method == "POST": form = NewAccountForm(request.POST) if form.is_valid(): # grab a random password from random import choice randompass = "".join([choice("1234567890qwertyupasdfghjklzxcvbnm") for i in range(7)]) u = User( login=form.cleaned_data["login"], name=form.cleaned_data["name"], surname=form.cleaned_data["surname"], status=form.cleaned_data["status"], ) u.save() u.set_password(randompass) messages.add_message(request, messages.SUCCESS, u"Konto stworzone. Nowe hasło to %s" % (randompass,)) return redirect("/admin/accounts/%s/" % (u.id,)) else: form = NewAccountForm() return render_to_response("radmin/manage_accounts_add.html", request, **klist(selected_user_id="create", form=form))
def register(request): """Handles registering new students only""" class RegisterForm(forms.Form): name = forms.CharField(label=u'Imię') surname = forms.CharField(label=u'Nazwisko') login = forms.EmailField(max_length=254, label=u'Email') album = forms.IntegerField(label=u'Nr albumu') password = forms.CharField(widget=forms.PasswordInput, label=u'Hasło', required=True) password2 = forms.CharField(widget=forms.PasswordInput, label=u'Powtórz hasło', required=True) def clean_login(self): """Assure login is unique""" lgn = self.cleaned_data['login'] try: usr = User.objects.get(login=lgn) except User.DoesNotExist: return lgn raise forms.ValidationError(u'Taki e-mail jest już używany!') def clean(self): """Assure passwords match""" cleaned_data = super(RegisterForm, self).clean() pwd1 = cleaned_data.get('password') pwd2 = cleaned_data.get('password2') if pwd1 != pwd2: self._errors['password'] = self.error_class(['Niezgodne hasła']) self._errors['password2'] = self.error_class(['Niezgodne hasła']) del cleaned_data['password'] del cleaned_data['password2'] return cleaned_data if request.method == 'POST': rf = RegisterForm(request.POST) if rf.is_valid(): # Create an account u = User(name=rf.cleaned_data['name'], surname=rf.cleaned_data['surname'], login=rf.cleaned_data['login'], number=rf.cleaned_data['album']) u.save() u.set_password(rf.cleaned_data['password']) request.login(u.login) # Log in the user messages.add_message(request, messages.INFO, u'Utworzono nowe konto. Zostałeś zalogowany.') return redirect('/') else: rf = RegisterForm() return render_to_response('front/register.html', request, form=rf)