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): class MembershipAdmin(UserAdmin):
# admin_thumbnail = AdminThumbnail(image_field='thumbnail') # admin_thumbnail = AdminThumbnail(image_field='thumbnail')
list_filter = ('membership', 'confirmed') list_filter = ('is_active','membership', 'confirmed')
list_display = ( list_display = (
'avatar', 'avatar',
'username', 'username',
'first_name', 'first_name',
'last_name', 'last_name',
'is_active',
'membership', 'membership',
'confirmed', 'confirmed',
'paid_until', 'paid_until',

View File

@@ -17,9 +17,10 @@ class MembershipForm(forms.ModelForm):
error_css_class = 'error' error_css_class = 'error'
required_css_class = 'required' required_css_class = 'required'
birthday = forms.DateField(label=_('birthday'), required=False) birthday = forms.DateField(label=_('birthday'), required=False)
email = forms.EmailField(label=_('Email'), required=True)
class Meta: class Meta:
model = models.Membership model = auth.get_user_model()
fields = ( fields = (
'username', 'gender', 'first_name', 'last_name', 'email', 'avatar', 'username', 'gender', 'first_name', 'last_name', 'email', 'avatar',
'website', 'membership', 'birthday', 'telephone', 'street_name', 'website', 'membership', 'birthday', 'telephone', 'street_name',
@@ -60,26 +61,13 @@ class MembershipForm(forms.ModelForm):
return self.cleaned_data['city'] return self.cleaned_data['city']
class RegistrationForm(forms.ModelForm): class RegistrationForm(MembershipForm):
""" """
Form to register a new user account. Form to register a new user account.
Validates that the requested username and email is not already in use, Validates that the requested username and email is not already in use,
requires the password to be entered twice to catch typos. requires the password to be entered twice to catch typos.
sends an activation request per mail, to validate the eMail. 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(), password1 = forms.CharField(widget=forms.PasswordInput(),
label=_('password')) label=_('password'))
password2 = forms.CharField(widget=forms.PasswordInput(), password2 = forms.CharField(widget=forms.PasswordInput(),
@@ -88,7 +76,13 @@ class RegistrationForm(forms.ModelForm):
class Meta: class Meta:
model = auth.get_user_model() 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): def clean_username(self):
""" """

View File

@@ -7,9 +7,9 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: kasu.membership\n" "Project-Id-Version: kasu.membership\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-16 11:34+0200\n" "POT-Creation-Date: 2016-09-16 18:07+0200\n"
"PO-Revision-Date: 2015-09-03 18:31+0200\n" "PO-Revision-Date: 2016-09-16 18:20+0200\n"
"Last-Translator: Christian Berg <xeniac.at@gmail.com>\n" "Last-Translator: Christian Berg <xeniac@posteo.at>\n"
"Language-Team: Kasu <verein@kasu.at>\n" "Language-Team: Kasu <verein@kasu.at>\n"
"Language: de\n" "Language: de\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -17,365 +17,539 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Translated-Using: django-rosetta 0.7.2\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" msgid "Activate selected User"
msgstr "Ausgewählte Benutzer freischalten" msgstr "Ausgewählte Benutzer freischalten"
#: admin.py:33 #: src/membership/admin.py:33
msgid "Cleanup selected Activation Requests" msgid "Cleanup selected Activation Requests"
msgstr "Ausgewählte Aktivierungsanfragen bereinigen" msgstr "Ausgewählte Aktivierungsanfragen bereinigen"
#: admin.py:39 #: src/membership/admin.py:40
msgid "Group" msgid "Group"
msgstr "Gruppe" msgstr "Gruppe"
#: admin.py:40 #: src/membership/admin.py:41
msgid "Groups" msgid "Groups"
msgstr "Gruppen" 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" msgid "Membership"
msgstr "Mitgliedschaft" msgstr "Mitgliedschaft"
#: admin.py:63 #: src/membership/admin.py:64
msgid "Permissions" msgid "Permissions"
msgstr "Berechtigung" msgstr "Berechtigung"
#: admin.py:65 #: src/membership/admin.py:66
msgid "Important dates" msgid "Important dates"
msgstr "Wichtige Daten" msgstr "Wichtige Daten"
#: forms.py:19 #: src/membership/forms.py:19
msgid "birthday" msgid "birthday"
msgstr "Geburtstag" 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 "" msgid ""
"For your membership, we need this. Please fill out this field " "For your membership, we need this. Please fill out this field "
"yet." "yet."
msgstr "Diese Angabe wird für eine Mitgliedschaft benötigt, bitte ausfüllen." msgstr "Diese Angabe wird für eine Mitgliedschaft benötigt, bitte ausfüllen."
#: forms.py:59 #: src/membership/forms.py:59
msgid "" msgid ""
"For your membership, we need this. Please fill out this field " "For your membership, we need this. Please fill out this field "
"yet." "yet."
msgstr "Diese Angabe wird für eine Mitgliedschaft benötigt, bitte ausfüllen." msgstr "Diese Angabe wird für eine Mitgliedschaft benötigt, bitte ausfüllen."
#: forms.py:75 #: src/membership/forms.py:72
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
msgid "password" msgid "password"
msgstr "Passwort" msgstr "Passwort"
#: forms.py:87 #: src/membership/forms.py:74
msgid "password (again)" msgid "password (again)"
msgstr "Passwort (wiederholen)" msgstr "Passwort (wiederholen)"
#: forms.py:104 #: src/membership/forms.py:97
msgid "This username is already taken. Please choose another." msgid "This username is already taken. Please choose another."
msgstr "Diesen Benutzername ist schon vergeben. Bitte einen anderen auswählen." msgstr "Diesen Benutzername ist schon vergeben. Bitte einen anderen auswählen."
#: forms.py:113 #: src/membership/forms.py:106
msgid "" msgid ""
"This email address is already in use. Please supply a different " "This email address is already in use. Please supply a different "
"email address." "email address."
msgstr "Die E-Mail Adresse wird schon verwendet. Bitte eine andere angeben." 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." msgid "The two password fields didn't match."
msgstr "Die beiden Passwörter passen nicht." msgstr "Die beiden Passwörter passen nicht."
#: models.py:23 #: src/membership/models.py:20
msgid "Male" msgid "Male"
msgstr "Männlich" msgstr "Männlich"
#: models.py:24 #: src/membership/models.py:21
msgid "Female" msgid "Female"
msgstr "Weiblich" msgstr "Weiblich"
#: models.py:91 #: src/membership/models.py:88
msgid "user" msgid "user"
msgstr "Benutzer" msgstr "Benutzer"
#: models.py:93 #: src/membership/models.py:90
msgid "activation key" msgid "activation key"
msgstr "Aktivierungsschlüssel" msgstr "Aktivierungsschlüssel"
#: models.py:97 #: src/membership/models.py:94
msgid "pending activation" msgid "pending activation"
msgstr "Ausstehende Aktivierung" msgstr "Ausstehende Aktivierung"
#: models.py:98 #: src/membership/models.py:95
msgid "pending activations" msgid "pending activations"
msgstr "Wartende Aktivierungen" msgstr "Wartende Aktivierungen"
#: models.py:101 #: src/membership/models.py:98
#, python-format #, python-format
msgid "user registration for %s" msgid "user registration for %s"
msgstr "Benutzerregistrierung für %s" msgstr "Benutzerregistrierung für %s"
#: models.py:172 #: src/membership/models.py:145
msgid "Gender" msgid "Gender"
msgstr "Geschlecht" msgstr "Geschlecht"
#: models.py:189 #: src/membership/models.py:164
msgid "" msgid ""
"Yes, I confirm that I am in agreement with the statutes and would " "Yes, I confirm that I am in agreement with the statutes and would "
"like to become a member." "like to become a member."
msgstr "Ja, ich bin mit den Statuen einverstanden und möchte Mitglied werden." msgstr "Ja, ich bin mit den Statuen einverstanden und möchte Mitglied werden."
#: models.py:192 #: src/membership/models.py:167
msgid "Birthday Date" msgid "Birthday Date"
msgstr "Geburtstag" msgstr "Geburtstag"
#: models.py:194 #: src/membership/models.py:169
msgid "Telephone" msgid "Telephone"
msgstr "Telefon" msgstr "Telefon"
#: models.py:200 #: src/membership/models.py:175
msgid "Address" msgid "Address"
msgstr "Adresse" msgstr "Adresse"
#: models.py:206 #: src/membership/models.py:181
msgid "Postcode" msgid "Postcode"
msgstr "Postleitzahl" msgstr "Postleitzahl"
#: models.py:211 #: src/membership/models.py:186
msgid "Town/City" msgid "Town/City"
msgstr "Ort" msgstr "Ort"
#: models.py:219 #: src/membership/models.py:194
msgid "Paid until" msgid "Paid until"
msgstr "Bezahlt bis" msgstr "Bezahlt bis"
#: models.py:225 #: src/membership/models.py:200
msgid "Confirmed" msgid "Confirmed"
msgstr "Bestätigt" msgstr "Bestätigt"
#: models.py:227 #: src/membership/models.py:202
msgid "This person has paid the membership fee." msgid "This person has paid the membership fee."
msgstr "Diese Person hat ihre Mitgliedschaft bezahlt" msgstr "Diese Person hat ihre Mitgliedschaft bezahlt"
#: models.py:248 #: src/membership/models.py:211
msgid "Memberships" msgid "Memberships"
msgstr "Mitgliedschaften" 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" msgid "You're receiving this e-mail because you requested a password reset"
msgstr "" msgstr ""
"Du hast diese E-Mail erhalten, weil jemand die das Passwort zurücksetzen " "Du hast diese E-Mail erhalten, weil jemand die das Passwort zurücksetzen "
"möchte. " "möchte. "
#: templates/membership/email/password_reset_email.html:3 #: src/membership/templates/membership/email/password_reset_email.html:3
#, python-format #, python-format
msgid "for your user account at %(site_name)s" msgid "for your user account at %(site_name)s"
msgstr "Für deinen Benutzerzugang auf %(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:" 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:" 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:" msgid "Your username, in case you've forgotten:"
msgstr "Dein Benutzername, für den Fall das du diesen vergessen hast:" 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!" msgid "Thanks for using our site!"
msgstr "Danke das du unsere Seite verwendest!" 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 #, python-format
msgid "The %(site_name)s team" msgid "The %(site_name)s team"
msgstr "Das %(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 #, python-format
msgid "Password reset on %(site_name)s" msgid "Password reset on %(site_name)s"
msgstr "Passwort auf %(site_name)s zurücksetzen" msgstr "Passwort auf %(site_name)s zurücksetzen"
#: templates/membership/hanchan_table.html:5 #: src/membership/templates/membership/hanchan_table.html:5
msgid "Start" msgid "Start"
msgstr "Beginn" msgstr "Beginn"
#: templates/membership/hanchan_table.html:6 #: src/membership/templates/membership/hanchan_table.html:6
msgid "Event" msgid "Event"
msgstr "Termin" msgstr "Termin"
#: templates/membership/hanchan_table.html:7 #: src/membership/templates/membership/hanchan_table.html:7
msgid "Players" msgid "Players"
msgstr "Spieler" msgstr "Spieler"
#: templates/membership/hanchan_table.html:8 #: src/membership/templates/membership/hanchan_table.html:8
msgid "Kyu Points" msgid "Kyu Points"
msgstr "Kyū Punkte" msgstr "Kyū Punkte"
#: templates/membership/hanchan_table.html:9 #: src/membership/templates/membership/hanchan_table.html:9
msgid "Dan Points" msgid "Dan Points"
msgstr "Dan Punkte" msgstr "Dan Punkte"
#: templates/membership/hanchan_table.html:10 #: src/membership/templates/membership/hanchan_table.html:10
msgid "Bonus Points" msgid "Bonus Points"
msgstr "Bonus Punkte" msgstr "Bonus Punkte"
#: templates/membership/hanchan_table.html:11 #: src/membership/templates/membership/hanchan_table.html:11
msgid "Comment" msgid "Comment"
msgstr "Anmerkung" msgstr "Anmerkung"
#: templates/membership/hanchan_table.html:26 #: src/membership/templates/membership/hanchan_table.html:26
msgid "This Hanchan does not validate" msgid "This Hanchan does not validate"
msgstr "Diese Hanchan ist ungültig" msgstr "Diese Hanchan ist ungültig"
#: templates/membership/membership_detail.html:6 #: src/membership/templates/membership/membership_detail.html:6
msgid "profile for" msgid "profile for"
msgstr "Profil für" msgstr "Profil für"
#: templates/membership/membership_detail.html:10 #: src/membership/templates/membership/membership_detail.html:10
msgid "Ladder Hanchans" msgid "Ladder Hanchans"
msgstr "Ladder Hanchans" msgstr "Ladder Hanchans"
#: templates/membership/membership_detail.html:11 #: src/membership/templates/membership/membership_detail.html:11
msgid "Kyu Hanchans" msgid "Kyu Hanchans"
msgstr "Kyū Hanchans" msgstr "Kyū Hanchans"
#: templates/membership/membership_detail.html:12 #: src/membership/templates/membership/membership_detail.html:12
msgid "Dan Hanchans" msgid "Dan Hanchans"
msgstr "Dan Hanchans" msgstr "Dan Hanchans"
#: templates/membership/membership_detail.html:13 #: src/membership/templates/membership/membership_detail.html:13
msgid "Invalid Hanchans" msgid "Invalid Hanchans"
msgstr "Ungültige Hanchans" msgstr "Ungültige Hanchans"
#: templates/membership/membership_detail.html:14 #: src/membership/templates/membership/membership_detail.html:14
msgid "Mai-Star Games" msgid "Mai-Star Games"
msgstr "Mai-Star Spiele" msgstr "Mai-Star Spiele"
#: templates/membership/membership_detail.html:20 #: src/membership/templates/membership/membership_detail.html:20
msgid "Profile Image" msgid "Profile Image"
msgstr "Profilbild" msgstr "Profilbild"
#: templates/membership/membership_detail.html:28 #: src/membership/templates/membership/membership_detail.html:28
msgid "Member Since" msgid "Member Since"
msgstr "Mitglied seit" msgstr "Mitglied seit"
#: templates/membership/membership_detail.html:29 #: src/membership/templates/membership/membership_detail.html:29
msgid "Last Login" msgid "Last Login"
msgstr "Letzte Anmeldung" msgstr "Letzte Anmeldung"
#: templates/membership/membership_detail.html:38 #: src/membership/templates/membership/membership_detail.html:38
#: templates/membership/membership_detail.html:40 #: src/membership/templates/membership/membership_detail.html:40
msgid "Points" msgid "Points"
msgstr "Punkte" msgstr "Punkte"
#: templates/membership/membership_detail.html:42 #: src/membership/templates/membership/membership_detail.html:42
msgid "Games Total" msgid "Games Total"
msgstr "Spiele gesamt" msgstr "Spiele gesamt"
#: templates/membership/membership_detail.html:43 #: src/membership/templates/membership/membership_detail.html:43
#: templates/membership/membership_detail.html:45 #: src/membership/templates/membership/membership_detail.html:45
msgid "Won" msgid "Won"
msgstr "Gewonnen" msgstr "Gewonnen"
#: templates/membership/membership_detail.html:43 #: src/membership/templates/membership/membership_detail.html:43
#: templates/membership/membership_detail.html:45 #: src/membership/templates/membership/membership_detail.html:45
msgid "Good" msgid "Good"
msgstr "Gut" msgstr "Gut"
#: templates/membership/membership_detail.html:45 #: src/membership/templates/membership/membership_detail.html:45
msgid "Current Season" msgid "Current Season"
msgstr "Aktuelle Saison" msgstr "Aktuelle Saison"
#: templates/membership/membership_detail.html:55 #: src/membership/templates/membership/membership_detail.html:55
msgid "Edit Profile" msgid "Edit Profile"
msgstr "Profil bearbeiten" 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" msgid "Change Password"
msgstr "Passwort ändern" msgstr "Passwort ändern"
#: templates/membership/membership_detail.html:63 #: src/membership/templates/membership/membership_detail.html:63
#: templates/membership/membership_detail.html:67 #: src/membership/templates/membership/membership_detail.html:67
#: templates/membership/membership_detail.html:71 #: src/membership/templates/membership/membership_detail.html:71
#, python-format #, python-format
msgid "Associate with %(name)s" msgid "Associate with %(name)s"
msgstr "Verbinde mit %(name)s" msgstr "Verbinde mit %(name)s"
#: templates/membership/membership_form.html:4 #: src/membership/templates/membership/membership_form.html:4
#: templates/membership/membership_form.html:6 #: src/membership/templates/membership/membership_form.html:6
#: templates/membership/membership_form.html:11 #: src/membership/templates/membership/membership_form.html:11
msgid "Edit Userprofile" msgid "Edit Userprofile"
msgstr "Profil bearbeiten" msgstr "Profil bearbeiten"
#: templates/membership/membership_form.html:15 #: src/membership/templates/membership/membership_form.html:15
msgid "Reset" msgid "Reset"
msgstr "Zurücksetzen" msgstr "Zurücksetzen"
#: templates/membership/membership_form.html:16 #: src/membership/templates/membership/membership_form.html:16
msgid "Save" msgid "Save"
msgstr "Speichern" msgstr "Speichern"
#: templates/membership/register_form.html:5 #: src/membership/templates/membership/register_form.html:5
#: templates/membership/register_form.html:7 #: src/membership/templates/membership/register_form.html:7
msgid "Registration" msgid "Registration"
msgstr "Registrieren" msgstr "Registrieren"
#: templates/membership/register_form.html:13 #: src/membership/templates/membership/register_form.html:16
msgid "Name" msgid "name"
msgstr "Name" msgstr "Name"
#: templates/membership/register_form.html:18 #: src/membership/templates/membership/register_form.html:22
msgid "Security" #: src/membership/templates/registration/login.html:6
msgstr "Sicherheit" #: 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 "" msgid ""
"After you've provided your account data, you'll\n" "After you've provided your account data, you'll receive\n"
" receive an email asking you to verify your email address.\n" " an email asking you to verify your email address. You have to click on "
" You have to click on the link in this verification email to\n" "the\n"
" confirm your email address, otherwise your can't login.\n" " link in this verification email to confirm your email address, "
" " "otherwise\n"
" your can't login."
msgstr "" msgstr ""
"Nach dem du deine Daten eingegeben hast, wirst du eine E-Mail zur " "Nach dem du deine Daten eingegeben hast, wirst du eine E-Mail zur "
"Bestätigung bekommen.\n" "Bestätigung bekommen.\n"
"Bitte klicke auf den Link in dieser E-Mail zur Verifizierung, erst dann ist " "Bitte klicke auf den Link in dieser E-Mail zur Verifizierung, erst dann ist "
"die Anmeldung möglich." "die Anmeldung möglich."
#: templates/membership/register_form.html:30 #: src/membership/templates/membership/register_form.html:39
msgid "reset" msgid "reset"
msgstr "Zurücksetzen" 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" msgid "register"
msgstr "Registrieren" msgstr "Registrieren"
#: templates/membership/register_successful.html:5 #: src/membership/templates/membership/register_successful.html:5
#: templates/membership/register_successful.html:7 #: src/membership/templates/membership/register_successful.html:7
#: templates/membership/register_successful.html:10 #: src/membership/templates/membership/register_successful.html:10
msgid "Activation sent" msgid "Activation sent"
msgstr "Aktivierung wurde zugesendet" 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 "" msgid ""
"Activation successful. You can now login anytime with you username " "Activation successful. You can now login anytime with you username "
"and password." "and password."
@@ -383,21 +557,39 @@ msgstr ""
"Die Aktivierung war erfolgreich. Du kannst dich ab jetzt jederzeit mit " "Die Aktivierung war erfolgreich. Du kannst dich ab jetzt jederzeit mit "
"deinem Benutzernamen und Passwort anmelden." "deinem Benutzernamen und Passwort anmelden."
#: views.py:73 #: src/membership/views.py:74
msgid "User Profile changed successfully" msgid "User Profile changed successfully"
msgstr "Benutzerprofil erfolgreich geändert." msgstr "Benutzerprofil erfolgreich geändert."
#: views.py:87 #: src/membership/views.py:88
#, python-format #, python-format
msgid "No %(verbose_name)s found matching the query" msgid "No %(verbose_name)s found matching the query"
msgstr "Kein %(verbose_name)s gefunden welche der Anfrage entspricht" 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" #~ msgid "Nickname"
#~ msgstr "Spitzname" #~ msgstr "Spitzname"
#~ msgid "Email"
#~ msgstr "E-Mail"
#~ msgid "Userprofile for %s" #~ msgid "Userprofile for %s"
#~ msgstr "Benutzerprofil für %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) return self.create(user=user, activation_key=activation_key)
def expired(self): def expired(self):
timespan = timedelta(days=settings.ACCOUNT_ACTIVATION_DAYS)
expiration_date = timezone.now() - timespan
return self.filter( return self.filter(
user__is_active=False, 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 = models.CharField(
_("Gender"), _("Gender"),
max_length=1, max_length=1,
choices=GENDER_CHOICES choices=GENDER_CHOICES,
blank=True,
null=True
) )
# first_name = models.CharField(_("Given Name"), max_length=30) # first_name = models.CharField(_("Given Name"), max_length=30)
# last_name = models.CharField(_("Last Name"), max_length=30) # last_name = models.CharField(_("Last Name"), max_length=30)

View File

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

View File

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