User Registration now uses all possibilities of the Membership Model. So you could apply for a membership with one step.

Fixed an error in the cleanup-registration command.
Also more stuff has been translated
This commit is contained in:
2016-09-16 18:57:28 +02:00
committed by Christian Berg
parent 9c4ec20394
commit 0bdd409dc2
7 changed files with 393 additions and 173 deletions

View File

@@ -43,12 +43,13 @@ class ProxyGroup(Group):
class MembershipAdmin(UserAdmin):
# admin_thumbnail = AdminThumbnail(image_field='thumbnail')
list_filter = ('membership', 'confirmed')
list_filter = ('is_active','membership', 'confirmed')
list_display = (
'avatar',
'username',
'first_name',
'last_name',
'is_active',
'membership',
'confirmed',
'paid_until',

View File

@@ -17,9 +17,10 @@ class MembershipForm(forms.ModelForm):
error_css_class = 'error'
required_css_class = 'required'
birthday = forms.DateField(label=_('birthday'), required=False)
email = forms.EmailField(label=_('Email'), required=True)
class Meta:
model = models.Membership
model = auth.get_user_model()
fields = (
'username', 'gender', 'first_name', 'last_name', 'email', 'avatar',
'website', 'membership', 'birthday', 'telephone', 'street_name',
@@ -60,26 +61,13 @@ class MembershipForm(forms.ModelForm):
return self.cleaned_data['city']
class RegistrationForm(forms.ModelForm):
class RegistrationForm(MembershipForm):
"""
Form to register a new user account.
Validates that the requested username and email is not already in use,
requires the password to be entered twice to catch typos.
sends an activation request per mail, to validate the eMail.
"""
error_css_class = 'error'
required_css_class = 'required'
first_name = forms.CharField(max_length=30, required=True,
label=_('Given Name'))
last_name = forms.CharField(max_length=30, required=True,
label=_('Last Name'))
username = forms.SlugField(required=True, max_length=30,
label=_('Username'),
help_text=_("The Username can only contain the letters from A to Z, \
Numbers, and the underscore. It must be at least 2 characters long, \
and cannot be longer the 30. The first character must be a letter."))
email = forms.EmailField(required=True)
password1 = forms.CharField(widget=forms.PasswordInput(),
label=_('password'))
password2 = forms.CharField(widget=forms.PasswordInput(),
@@ -88,7 +76,13 @@ class RegistrationForm(forms.ModelForm):
class Meta:
model = auth.get_user_model()
fields = ('first_name', 'last_name', 'username', 'email',)
fields = ('first_name', 'last_name', 'username', 'email',
'username', 'gender', 'first_name', 'last_name', 'email',
'avatar',
'website', 'membership', 'birthday', 'telephone',
'street_name',
'post_code', 'city'
)
def clean_username(self):
"""

View File

@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: kasu.membership\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-16 11:34+0200\n"
"PO-Revision-Date: 2015-09-03 18:31+0200\n"
"Last-Translator: Christian Berg <xeniac.at@gmail.com>\n"
"POT-Creation-Date: 2016-09-16 18:07+0200\n"
"PO-Revision-Date: 2016-09-16 18:20+0200\n"
"Last-Translator: Christian Berg <xeniac@posteo.at>\n"
"Language-Team: Kasu <verein@kasu.at>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
@@ -17,365 +17,539 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Translated-Using: django-rosetta 0.7.2\n"
"X-Generator: Poedit 1.8.3\n"
"X-Generator: Poedit 1.8.9\n"
#: admin.py:24
#: src/membership/admin.py:23
msgid "Activate selected User"
msgstr "Ausgewählte Benutzer freischalten"
#: admin.py:33
#: src/membership/admin.py:33
msgid "Cleanup selected Activation Requests"
msgstr "Ausgewählte Aktivierungsanfragen bereinigen"
#: admin.py:39
#: src/membership/admin.py:40
msgid "Group"
msgstr "Gruppe"
#: admin.py:40
#: src/membership/admin.py:41
msgid "Groups"
msgstr "Gruppen"
#: admin.py:60 models.py:187 models.py:247
#: src/membership/admin.py:61 src/membership/models.py:162
#: src/membership/models.py:210
#: src/membership/templates/membership/register_form.html:28
msgid "Membership"
msgstr "Mitgliedschaft"
#: admin.py:63
#: src/membership/admin.py:64
msgid "Permissions"
msgstr "Berechtigung"
#: admin.py:65
#: src/membership/admin.py:66
msgid "Important dates"
msgstr "Wichtige Daten"
#: forms.py:19
#: src/membership/forms.py:19
msgid "birthday"
msgstr "Geburtstag"
#: forms.py:32 forms.py:39 forms.py:46 forms.py:53
#: src/membership/forms.py:20
msgid "Email"
msgstr "E-Mail"
#: src/membership/forms.py:32 src/membership/forms.py:39
#: src/membership/forms.py:46 src/membership/forms.py:53
msgid ""
"For your membership, we need this. Please fill out this field "
"yet."
msgstr "Diese Angabe wird für eine Mitgliedschaft benötigt, bitte ausfüllen."
#: forms.py:59
#: src/membership/forms.py:59
msgid ""
"For your membership, we need this. Please fill out this field "
"yet."
msgstr "Diese Angabe wird für eine Mitgliedschaft benötigt, bitte ausfüllen."
#: forms.py:75
msgid "Given Name"
msgstr "Vorname"
#: forms.py:77
msgid "Last Name"
msgstr "Nachname"
#: forms.py:79
msgid "Username"
msgstr "Benutzername"
#: forms.py:80
msgid ""
"The Username can only contain the letters from A to Z, Numbers, and "
"the underscore. It must be at least 2 characters long, and cannot be "
"longer the 30. The first character must be a letter."
msgstr ""
"Der Benutzername kann aus den Buchstaben A-Z, Ziffern und dem Unterstrich "
"bestehen. Es sollte wenigstens 2, aber maximal 30 Zeichen lang sein. Das "
"erste Zeichen muss ein Buchstabe sein."
#: forms.py:85
#: src/membership/forms.py:72
msgid "password"
msgstr "Passwort"
#: forms.py:87
#: src/membership/forms.py:74
msgid "password (again)"
msgstr "Passwort (wiederholen)"
#: forms.py:104
#: src/membership/forms.py:97
msgid "This username is already taken. Please choose another."
msgstr "Diesen Benutzername ist schon vergeben. Bitte einen anderen auswählen."
#: forms.py:113
#: src/membership/forms.py:106
msgid ""
"This email address is already in use. Please supply a different "
"email address."
msgstr "Die E-Mail Adresse wird schon verwendet. Bitte eine andere angeben."
#: forms.py:122
#: src/membership/forms.py:115
msgid "The two password fields didn't match."
msgstr "Die beiden Passwörter passen nicht."
#: models.py:23
#: src/membership/models.py:20
msgid "Male"
msgstr "Männlich"
#: models.py:24
#: src/membership/models.py:21
msgid "Female"
msgstr "Weiblich"
#: models.py:91
#: src/membership/models.py:88
msgid "user"
msgstr "Benutzer"
#: models.py:93
#: src/membership/models.py:90
msgid "activation key"
msgstr "Aktivierungsschlüssel"
#: models.py:97
#: src/membership/models.py:94
msgid "pending activation"
msgstr "Ausstehende Aktivierung"
#: models.py:98
#: src/membership/models.py:95
msgid "pending activations"
msgstr "Wartende Aktivierungen"
#: models.py:101
#: src/membership/models.py:98
#, python-format
msgid "user registration for %s"
msgstr "Benutzerregistrierung für %s"
#: models.py:172
#: src/membership/models.py:145
msgid "Gender"
msgstr "Geschlecht"
#: models.py:189
#: src/membership/models.py:164
msgid ""
"Yes, I confirm that I am in agreement with the statutes and would "
"like to become a member."
msgstr "Ja, ich bin mit den Statuen einverstanden und möchte Mitglied werden."
#: models.py:192
#: src/membership/models.py:167
msgid "Birthday Date"
msgstr "Geburtstag"
#: models.py:194
#: src/membership/models.py:169
msgid "Telephone"
msgstr "Telefon"
#: models.py:200
#: src/membership/models.py:175
msgid "Address"
msgstr "Adresse"
#: models.py:206
#: src/membership/models.py:181
msgid "Postcode"
msgstr "Postleitzahl"
#: models.py:211
#: src/membership/models.py:186
msgid "Town/City"
msgstr "Ort"
#: models.py:219
#: src/membership/models.py:194
msgid "Paid until"
msgstr "Bezahlt bis"
#: models.py:225
#: src/membership/models.py:200
msgid "Confirmed"
msgstr "Bestätigt"
#: models.py:227
#: src/membership/models.py:202
msgid "This person has paid the membership fee."
msgstr "Diese Person hat ihre Mitgliedschaft bezahlt"
#: models.py:248
#: src/membership/models.py:211
msgid "Memberships"
msgstr "Mitgliedschaften"
#: templates/membership/email/password_reset_email.html:2
#: src/membership/templates/membership/email/activation_email.txt:2
#, python-format
msgid "Welcome %(user)s,"
msgstr "Herzlich willkommen %(user)s,"
#: src/membership/templates/membership/email/activation_email.txt:4
#, python-format
msgid ""
"We received an account request on %(site.domain)s for your email address.\n"
"To activate your account please visit the following link:"
msgstr ""
"Jemand (hoffentlich du selbst) möchte mit dieser E-Mail Adresse einen neuen "
"Benutzer Account für %(site.domain)s anlegen.\n"
"Solltest du diesen Account aktivieren wollen, klicke bitte auf den unten "
"stehenden Link, oder kopiere diesen in die Adresszeile deines Browsers:"
#: src/membership/templates/membership/email/activation_email.txt:9
#, python-format
msgid ""
"If you do not want to open an account on %(site.domain)s, please ignore this "
"email.\n"
"Your information will then be deleted in a few days time."
msgstr ""
"Wenn du keinen Zugang für %(site.domain)s eröffnen willst, ignoriere diese E-"
"Mail bitte.\n"
"Die Zugangsdaten werden dann in ein paar Tagen automatisch gelöscht."
#: src/membership/templates/membership/email/activation_email.txt:12
#, python-format
msgid ""
"Best Regards,\n"
"The %(site.domain)s team."
msgstr ""
"mit den besten Wünschen\n"
"Das Team von %(site.domain)s"
#: src/membership/templates/membership/email/password_reset_email.html:2
msgid "You're receiving this e-mail because you requested a password reset"
msgstr ""
"Du hast diese E-Mail erhalten, weil jemand die das Passwort zurücksetzen "
"möchte. "
#: templates/membership/email/password_reset_email.html:3
#: src/membership/templates/membership/email/password_reset_email.html:3
#, python-format
msgid "for your user account at %(site_name)s"
msgstr "Für deinen Benutzerzugang auf %(site_name)s"
#: templates/membership/email/password_reset_email.html:5
#: src/membership/templates/membership/email/password_reset_email.html:5
msgid "Please go to the following page and choose a new password:"
msgstr "Bitte gehe auf folgende Seite und wähle ein neues Passwort aus:"
#: templates/membership/email/password_reset_email.html:9
#: src/membership/templates/membership/email/password_reset_email.html:9
msgid "Your username, in case you've forgotten:"
msgstr "Dein Benutzername, für den Fall das du diesen vergessen hast:"
#: templates/membership/email/password_reset_email.html:11
#: src/membership/templates/membership/email/password_reset_email.html:11
msgid "Thanks for using our site!"
msgstr "Danke das du unsere Seite verwendest!"
#: templates/membership/email/password_reset_email.html:13
#: src/membership/templates/membership/email/password_reset_email.html:13
#, python-format
msgid "The %(site_name)s team"
msgstr "Das %(site_name)s Team"
#: templates/membership/email/password_reset_subject.txt:2
#: src/membership/templates/membership/email/password_reset_subject.txt:2
#, python-format
msgid "Password reset on %(site_name)s"
msgstr "Passwort auf %(site_name)s zurücksetzen"
#: templates/membership/hanchan_table.html:5
#: src/membership/templates/membership/hanchan_table.html:5
msgid "Start"
msgstr "Beginn"
#: templates/membership/hanchan_table.html:6
#: src/membership/templates/membership/hanchan_table.html:6
msgid "Event"
msgstr "Termin"
#: templates/membership/hanchan_table.html:7
#: src/membership/templates/membership/hanchan_table.html:7
msgid "Players"
msgstr "Spieler"
#: templates/membership/hanchan_table.html:8
#: src/membership/templates/membership/hanchan_table.html:8
msgid "Kyu Points"
msgstr "Kyū Punkte"
#: templates/membership/hanchan_table.html:9
#: src/membership/templates/membership/hanchan_table.html:9
msgid "Dan Points"
msgstr "Dan Punkte"
#: templates/membership/hanchan_table.html:10
#: src/membership/templates/membership/hanchan_table.html:10
msgid "Bonus Points"
msgstr "Bonus Punkte"
#: templates/membership/hanchan_table.html:11
#: src/membership/templates/membership/hanchan_table.html:11
msgid "Comment"
msgstr "Anmerkung"
#: templates/membership/hanchan_table.html:26
#: src/membership/templates/membership/hanchan_table.html:26
msgid "This Hanchan does not validate"
msgstr "Diese Hanchan ist ungültig"
#: templates/membership/membership_detail.html:6
#: src/membership/templates/membership/membership_detail.html:6
msgid "profile for"
msgstr "Profil für"
#: templates/membership/membership_detail.html:10
#: src/membership/templates/membership/membership_detail.html:10
msgid "Ladder Hanchans"
msgstr "Ladder Hanchans"
#: templates/membership/membership_detail.html:11
#: src/membership/templates/membership/membership_detail.html:11
msgid "Kyu Hanchans"
msgstr "Kyū Hanchans"
#: templates/membership/membership_detail.html:12
#: src/membership/templates/membership/membership_detail.html:12
msgid "Dan Hanchans"
msgstr "Dan Hanchans"
#: templates/membership/membership_detail.html:13
#: src/membership/templates/membership/membership_detail.html:13
msgid "Invalid Hanchans"
msgstr "Ungültige Hanchans"
#: templates/membership/membership_detail.html:14
#: src/membership/templates/membership/membership_detail.html:14
msgid "Mai-Star Games"
msgstr "Mai-Star Spiele"
#: templates/membership/membership_detail.html:20
#: src/membership/templates/membership/membership_detail.html:20
msgid "Profile Image"
msgstr "Profilbild"
#: templates/membership/membership_detail.html:28
#: src/membership/templates/membership/membership_detail.html:28
msgid "Member Since"
msgstr "Mitglied seit"
#: templates/membership/membership_detail.html:29
#: src/membership/templates/membership/membership_detail.html:29
msgid "Last Login"
msgstr "Letzte Anmeldung"
#: templates/membership/membership_detail.html:38
#: templates/membership/membership_detail.html:40
#: src/membership/templates/membership/membership_detail.html:38
#: src/membership/templates/membership/membership_detail.html:40
msgid "Points"
msgstr "Punkte"
#: templates/membership/membership_detail.html:42
#: src/membership/templates/membership/membership_detail.html:42
msgid "Games Total"
msgstr "Spiele gesamt"
#: templates/membership/membership_detail.html:43
#: templates/membership/membership_detail.html:45
#: src/membership/templates/membership/membership_detail.html:43
#: src/membership/templates/membership/membership_detail.html:45
msgid "Won"
msgstr "Gewonnen"
#: templates/membership/membership_detail.html:43
#: templates/membership/membership_detail.html:45
#: src/membership/templates/membership/membership_detail.html:43
#: src/membership/templates/membership/membership_detail.html:45
msgid "Good"
msgstr "Gut"
#: templates/membership/membership_detail.html:45
#: src/membership/templates/membership/membership_detail.html:45
msgid "Current Season"
msgstr "Aktuelle Saison"
#: templates/membership/membership_detail.html:55
#: src/membership/templates/membership/membership_detail.html:55
msgid "Edit Profile"
msgstr "Profil bearbeiten"
#: templates/membership/membership_detail.html:59
#: src/membership/templates/membership/membership_detail.html:59
#: src/membership/templates/registration/password_change_form.html:23
msgid "Change Password"
msgstr "Passwort ändern"
#: templates/membership/membership_detail.html:63
#: templates/membership/membership_detail.html:67
#: templates/membership/membership_detail.html:71
#: src/membership/templates/membership/membership_detail.html:63
#: src/membership/templates/membership/membership_detail.html:67
#: src/membership/templates/membership/membership_detail.html:71
#, python-format
msgid "Associate with %(name)s"
msgstr "Verbinde mit %(name)s"
#: templates/membership/membership_form.html:4
#: templates/membership/membership_form.html:6
#: templates/membership/membership_form.html:11
#: src/membership/templates/membership/membership_form.html:4
#: src/membership/templates/membership/membership_form.html:6
#: src/membership/templates/membership/membership_form.html:11
msgid "Edit Userprofile"
msgstr "Profil bearbeiten"
#: templates/membership/membership_form.html:15
#: src/membership/templates/membership/membership_form.html:15
msgid "Reset"
msgstr "Zurücksetzen"
#: templates/membership/membership_form.html:16
#: src/membership/templates/membership/membership_form.html:16
msgid "Save"
msgstr "Speichern"
#: templates/membership/register_form.html:5
#: templates/membership/register_form.html:7
#: src/membership/templates/membership/register_form.html:5
#: src/membership/templates/membership/register_form.html:7
msgid "Registration"
msgstr "Registrieren"
#: templates/membership/register_form.html:13
msgid "Name"
#: src/membership/templates/membership/register_form.html:16
msgid "name"
msgstr "Name"
#: templates/membership/register_form.html:18
msgid "Security"
msgstr "Sicherheit"
#: src/membership/templates/membership/register_form.html:22
#: src/membership/templates/registration/login.html:6
#: src/membership/templates/registration/login.html:8
#: src/membership/templates/registration/login.html:37
msgid "login"
msgstr "Anmelden"
#: templates/membership/register_form.html:24
#: src/membership/templates/membership/register_form.html:34
msgid ""
"After you've provided your account data, you'll\n"
" receive an email asking you to verify your email address.\n"
" You have to click on the link in this verification email to\n"
" confirm your email address, otherwise your can't login.\n"
" "
"After you've provided your account data, you'll receive\n"
" an email asking you to verify your email address. You have to click on "
"the\n"
" link in this verification email to confirm your email address, "
"otherwise\n"
" your can't login."
msgstr ""
"Nach dem du deine Daten eingegeben hast, wirst du eine E-Mail zur "
"Bestätigung bekommen.\n"
"Bitte klicke auf den Link in dieser E-Mail zur Verifizierung, erst dann ist "
"die Anmeldung möglich."
#: templates/membership/register_form.html:30
#: src/membership/templates/membership/register_form.html:39
msgid "reset"
msgstr "Zurücksetzen"
#: templates/membership/register_form.html:31
#: src/membership/templates/membership/register_form.html:41
#: src/membership/templates/registration/login.html:31
msgid "register"
msgstr "Registrieren"
#: templates/membership/register_successful.html:5
#: templates/membership/register_successful.html:7
#: templates/membership/register_successful.html:10
#: src/membership/templates/membership/register_successful.html:5
#: src/membership/templates/membership/register_successful.html:7
#: src/membership/templates/membership/register_successful.html:10
msgid "Activation sent"
msgstr "Aktivierung wurde zugesendet"
#: views.py:53
#: src/membership/templates/registration/login.html:15
msgid "Have you already registered?"
msgstr "Bereits registriert?"
#: src/membership/templates/registration/login.html:16
msgid ""
"\n"
"<p>As a registered member you can:</p>\n"
"<ul>\n"
" <li>leave comments on this page.</li>\n"
" <li>subscribe to our Newsletter</li>\n"
" <li>apply to a membership to our club</li>\n"
" <li>club-members have access to our ranking-system</li>\n"
"</ul>\n"
msgstr ""
"\n"
"<p>Als registrierter auf dieser Seite kannst du:</p>\n"
"<ul>\n"
" <li>Kommentare auf dieser Seite hinterlassen.</li>\n"
" <li>Dich für unseren Newsletter anmelden</li>\n"
" <li>Mitglied in unserem Verein werden</li>\n"
" <li>Vereinsmitglieder haben auch vollen Zugang zu unserem Ranking System</"
"li>\n"
"</ul>\n"
#: src/membership/templates/registration/login.html:25
msgid ""
"\n"
"<p>You can register here with your Google, or Facebook account.\n"
"If you don't own such an account, or do not want to use it for "
"authentication,\n"
"you can fill out our registration form.</p>\n"
msgstr ""
"\n"
"<p>Du kannst dich auch über deinen Facebook, Google, oder Twitter Account "
"anmelden.\n"
"Wenn du so etwas nicht besitzt, oder nicht verwenden möchtest, \n"
"kannst du auch das Registrierungsformular ausfüllen.</p>\n"
#: src/membership/templates/registration/login.html:41
msgid "Your username and password didn't match. Please try again."
msgstr ""
"Benutzername und Passwort stimmen nicht überein. Bitte noch einmal versuchen."
#: src/membership/templates/registration/login.html:44
msgid "Forgot your Password?"
msgstr "Passwort vergessen?"
#: src/membership/templates/registration/login.html:46
#: src/membership/templates/registration/password_reset_complete.html:13
msgid "Login"
msgstr "Anmelden"
#: src/membership/templates/registration/login.html:52
msgid "or login with an existing Account"
msgstr "oder über einen existierenden Account anmelden"
#: src/membership/templates/registration/login.html:53
msgid "Login with Facebook"
msgstr "Über Facebook anmelden"
#: src/membership/templates/registration/login.html:54
msgid "Login with Twitter"
msgstr "Über Twitter anmelden"
#: src/membership/templates/registration/login.html:55
msgid "Login with Google"
msgstr "Über Google Anmelden"
#: src/membership/templates/registration/password_change_done.html:4
#: src/membership/templates/registration/password_change_done.html:7
msgid "Password change successful"
msgstr "Benutzerprofil erfolgreich geändert."
#: src/membership/templates/registration/password_change_done.html:8
msgid "Your password was changed."
msgstr "Passwort geändet"
#: src/membership/templates/registration/password_change_form.html:4
#: src/membership/templates/registration/password_change_form.html:9
#: src/membership/templates/registration/password_change_form.html:16
msgid "Password change"
msgstr "Passwort wechseln"
#: src/membership/templates/registration/password_change_form.html:10
msgid ""
"Please enter your old password, for security's sake, and then enter your new "
"password twice so we can verify you typed it in correctly."
msgstr ""
"Zur Sicherheit bitte altes Passwort einmal und das gewünschte neue Passwort "
"zweimal angeben, so können Tippfehler abgefangen werden."
#: src/membership/templates/registration/password_reset_complete.html:4
#: src/membership/templates/registration/password_reset_complete.html:6
#: src/membership/templates/registration/password_reset_complete.html:9
msgid "Password reset complete"
msgstr "Das Rücksetzen des Passwortes ist abgeschlossen."
#: src/membership/templates/registration/password_reset_complete.html:10
msgid "Your password has been set. You may go ahead and log in now."
msgstr "Das Passwort wurde gesetzt, Du kannst dich nun damit anmelden."
#: src/membership/templates/registration/password_reset_confirm.html:4
#: src/membership/templates/registration/password_reset_confirm.html:6
#: src/membership/templates/registration/password_reset_confirm.html:15
msgid "Enter new password"
msgstr "Neues Passwort eingeben"
#: src/membership/templates/registration/password_reset_confirm.html:12
msgid ""
"Please enter your new password twice so we can verify you typed it in "
"correctly."
msgstr ""
"Bitte das Passwort zweimal eingeben, um sicher zu stellen das es korrekt "
"eingetippt wurde."
#: src/membership/templates/registration/password_reset_confirm.html:18
msgid "Change my password"
msgstr "Passwort ändern"
#: src/membership/templates/registration/password_reset_confirm.html:26
msgid "Password reset unsuccessful"
msgstr "Passwort rücksetzen fehlgeschlagen"
#: src/membership/templates/registration/password_reset_confirm.html:27
msgid ""
"The password reset link was invalid, possibly because it has already been "
"used. Please request a new password reset."
msgstr ""
"Der Link für die Rücksetzung des Passwortes war ungültig, vermutlich wurde "
"er schon einmal benutzt. Bitte eine neue Rücksetzung beantragen."
#: src/membership/templates/registration/password_reset_done.html:4
#: src/membership/templates/registration/password_reset_done.html:6
#: src/membership/templates/registration/password_reset_done.html:12
msgid "Password reset successful"
msgstr "Passwort erfolgreich zurückgesetzt."
#: src/membership/templates/registration/password_reset_form.html:4
#: src/membership/templates/registration/password_reset_form.html:6
msgid "Password reset"
msgstr "Passwort zurücksetzen"
#: src/membership/templates/registration/password_reset_form.html:21
msgid "Transmit"
msgstr "Übermitteln"
#: src/membership/views.py:54
msgid ""
"Activation successful. You can now login anytime with you username "
"and password."
@@ -383,21 +557,39 @@ msgstr ""
"Die Aktivierung war erfolgreich. Du kannst dich ab jetzt jederzeit mit "
"deinem Benutzernamen und Passwort anmelden."
#: views.py:73
#: src/membership/views.py:74
msgid "User Profile changed successfully"
msgstr "Benutzerprofil erfolgreich geändert."
#: views.py:87
#: src/membership/views.py:88
#, python-format
msgid "No %(verbose_name)s found matching the query"
msgstr "Kein %(verbose_name)s gefunden welche der Anfrage entspricht"
#~ msgid "Given Name"
#~ msgstr "Vorname"
#~ msgid "Last Name"
#~ msgstr "Nachname"
#~ msgid ""
#~ "The Username can only contain the letters from A to Z, Numbers, "
#~ "and the underscore. It must be at least 2 characters long, and "
#~ "cannot be longer the 30. The first character must be a letter."
#~ msgstr ""
#~ "Der Benutzername kann aus den Buchstaben A-Z, Ziffern und dem Unterstrich "
#~ "bestehen. Es sollte wenigstens 2, aber maximal 30 Zeichen lang sein. Das "
#~ "erste Zeichen muss ein Buchstabe sein."
#~ msgid "Name"
#~ msgstr "Name"
#~ msgid "Security"
#~ msgstr "Sicherheit"
#~ msgid "Nickname"
#~ msgstr "Spitzname"
#~ msgid "Email"
#~ msgstr "E-Mail"
#~ msgid "Userprofile for %s"
#~ msgstr "Benutzerprofil für %s"

View File

@@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('membership', '0005_auto_20150901_2204'),
]
operations = [
migrations.AlterField(
model_name='membership',
name='gender',
field=models.CharField(blank=True, max_length=1, null=True, verbose_name='Geschlecht', choices=[(b'm', 'M\xe4nnlich'), (b'f', 'Weiblich')]),
),
]

View File

@@ -71,9 +71,11 @@ class ActivationManager(models.Manager):
return self.create(user=user, activation_key=activation_key)
def expired(self):
timespan = timedelta(days=settings.ACCOUNT_ACTIVATION_DAYS)
expiration_date = timezone.now() - timespan
return self.filter(
user__is_active=False,
user__date_joined__lt=self.expiration_date
user__date_joined__lt=expiration_date
)
@@ -144,7 +146,9 @@ class Membership(AbstractUser):
gender = models.CharField(
_("Gender"),
max_length=1,
choices=GENDER_CHOICES
choices=GENDER_CHOICES,
blank=True,
null=True
)
# first_name = models.CharField(_("Given Name"), max_length=30)
# last_name = models.CharField(_("Last Name"), max_length=30)

View File

@@ -1,13 +1,13 @@
{% load i18n %}
Dear {{user}},
{% blocktrans %}Welcome {{user}},{% endblocktrans %}.
We received an account request on {{site.domain}} for your email address.
To activate your account please visit the following link:
{% blocktrans %}We received an account request on {{site.domain}} for your email address.
To activate your account please visit the following link:{% endblocktrans %}
http://{{site.domain}}/membership/activate/{{ activation_key }}/
If you do not want to open an account on {{site.domain}}, please ignore this email.
Your information will then be deleted in a few days time.
{% blocktrans %}If you do not want to open an account on {{site.domain}}, please ignore this email.
Your information will then be deleted in a few days time.{% endblocktrans %}
Best Regards,
The {{site.domain}} team.
{% blocktrans %}Best Regards,
The {{site.domain}} team.{% endblocktrans %}

View File

@@ -8,29 +8,39 @@
{% block maincontent %}
<form method="post" action="{% url 'membership-register' %}">
{% csrf_token %}
<fieldset class="grid_5">
<legend>{% trans "Name"%}</legend>
{% get_fieldset "first_name, last_name, username" from form as form1 %}
{% with form1 as form %}{% include "form.html" %}{% endwith %}
</fieldset>
<fieldset class="grid_7">
<legend>{% trans "Security"%}</legend>
{% get_fieldset "email, password1, password2, recaptcha" from form as form2 %}
{% with form2 as form %}{% include "form.html" %}{% endwith %}
</fieldset>
{% csrf_token %}
<h2>Form</h2>
<div class="grid_12">
<p>{% blocktrans %}After you've provided your account data, you'll
receive an email asking you to verify your email address.
You have to click on the link in this verification email to
confirm your email address, otherwise your can't login.
{% endblocktrans %}</p>
<p class="buttonbar">
<button type="reset"><span class="fa fa-undo"></span> {% trans 'reset' %}</button>
<button type="submit"><span class="fa fa-user-plus"></span> {% trans 'register' %}</button>
</p>
</div>
<h2>End Form</h2>
<fieldset class="grid_5">
<legend>{% trans "name"%}</legend>
{% get_fieldset "gender, first_name, last_name, username" from form as form1 %}
{% with form1 as form %}{% include "form.html" %}{% endwith %}
</fieldset>
<fieldset class="grid_7">
<legend>{% trans "login"%}</legend>
{% get_fieldset "email, password1, password2, recaptcha" from form as form1 %}
{% with form1 as form %}{% include "form.html" %}{% endwith %}
</fieldset>
<fieldset class="grid_12">
<legend>{% trans "Membership"%}</legend>
{% get_fieldset "membership, birthday, street_name, post_code, city, telephone, website" from form as form2 %}
{% with form2 as form %}{% include "form.html" %}{% endwith %}
</fieldset>
<div class="grid_12">
<p>{% blocktrans %}After you've provided your account data, you'll receive
an email asking you to verify your email address. You have to click on the
link in this verification email to confirm your email address, otherwise
your can't login.{% endblocktrans %}</p>
<p class="buttonbar">
<button type="reset"><span class="fa fa-undo"></span> {% trans 'reset' %}
</button>
<button type="submit"><span class="fa fa-user-plus"></span> {% trans 'register' %}</button>
</p>
</div>
</form>
{% endblock %}