Skip to content

Commit

Permalink
Adds more fields to the user form
Browse files Browse the repository at this point in the history
  • Loading branch information
Denis Krienbühl committed Feb 21, 2017
1 parent f17fc15 commit 01905c3
Show file tree
Hide file tree
Showing 7 changed files with 164 additions and 84 deletions.
3 changes: 3 additions & 0 deletions HISTORY.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
Changelog
---------

- Adds more fields to the user form.
[href]

- Splits attendee name into first/last name.
[href]

Expand Down
61 changes: 54 additions & 7 deletions onegov/feriennet/forms/userprofile.py
Original file line number Diff line number Diff line change
@@ -1,27 +1,66 @@
import string

from onegov.feriennet import _
from onegov.feriennet.utils import encode_name, decode_name
from onegov.form import Form
from wtforms import StringField, TextAreaField
from wtforms import StringField, TextAreaField, RadioField
from wtforms.fields.html5 import URLField
from wtforms.validators import Optional, URL, ValidationError, InputRequired


class UserProfileForm(Form):
""" Custom userprofile form for feriennet """

extra_fields = ('address', 'email', 'phone', 'website', 'emergency')
extra_fields = (
'salutation',
'organisation',
'address',
'zip_code',
'place',
'email',
'phone',
'website',
'emergency'
)

salutation = RadioField(
label=_("Salutation"),
choices=[
('mr', _("Mr.")),
('ms', _("Ms.")),
],
validators=[InputRequired()]
)

first_name = StringField(
label=_("First Name"),
validators=[InputRequired()]
)

last_name = StringField(
label=_("Last Name"),
validators=[InputRequired()]
)

realname = StringField(
label=_("Name"),
description=_("Personal-, Society- or Company-Name")
organisation = StringField(
label=_("Organisation"),
)

address = TextAreaField(
label=_("Address"),
render_kw={'rows': 4},
)

zip_code = StringField(
label=_("Zip Code"),
validators=[InputRequired()]
)

place = StringField(
label=_("Place"),
validators=[InputRequired()]
)

email = StringField(
label=_("Public E-Mail Address"),
description=_("If different than username")
Expand All @@ -43,6 +82,14 @@ class UserProfileForm(Form):
validators=[Optional(), URL()]
)

@property
def name(self):
return encode_name(self.first_name.data, self.last_name.data).strip()

@name.setter
def name(self, value):
self.first_name.data, self.last_name.data = decode_name(value)

def validate_emergency(self, field):
if field.data:
characters = tuple(c for c in field.data if c.strip())
Expand All @@ -58,7 +105,7 @@ def populate_obj(self, model):
super().populate_obj(model)

model.data = model.data or {}
model.realname = self.realname.data
model.realname = self.name

for key in self.extra_fields:
model.data[key] = self.data.get(key)
Expand All @@ -67,7 +114,7 @@ def process_obj(self, model):
super().process_obj(model)

modeldata = model.data or {}
self.realname.data = model.realname
self.name = model.realname

for key in self.extra_fields:
getattr(self, key).data = modeldata.get(key)
84 changes: 41 additions & 43 deletions onegov/feriennet/locale/de_CH/LC_MESSAGES/onegov.feriennet.po
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE 1.0\n"
"POT-Creation-Date: 2017-02-20 13:51+0100\n"
"POT-Creation-Date: 2017-02-21 14:22+0100\n"
"PO-Revision-Date: 2015-10-15 09:42+0200\n"
"Last-Translator: Denis Krienbühl <denis.krienbuehl@seantis.ch>\n"
"Language-Team: German\n"
Expand Down Expand Up @@ -54,6 +54,14 @@ msgstr "Benutzerprofil"
msgid "Homepage"
msgstr "Startseite"

#, python-format
msgid "Wishlist of ${user}"
msgstr "Wunschliste von ${user}"

#, python-format
msgid "Bookings of ${user}"
msgstr "Buchungen von ${user}"

msgid "Manage Periods"
msgstr "Perioden"

Expand Down Expand Up @@ -214,11 +222,11 @@ msgstr "Theater"
msgid "Trade"
msgstr "Handwerk"

msgid "Attendee"
msgstr "Teilnehmer"
msgid "First Name"
msgstr "Vornane"

msgid "Full Name"
msgstr "Vollständiger Name"
msgid "Last Name"
msgstr "Nachname"

msgid "Birthdate"
msgstr "Geburtsdatum"
Expand All @@ -232,9 +240,15 @@ msgstr "Bemerkung"
msgid "Allergies, Disabilities, Particulars"
msgstr "Allergien, Behinderungen, Besonderheiten"

msgid "Attendee"
msgstr "Teilnehmer"

msgid "Ignore Age Restriction"
msgstr "Altersbeschränkung Ignorieren"

msgid "You already entered a child with this name"
msgstr "Sie haben bereits ein Kind mit diesem Namen eingegeben"

msgid "Add a new attendee"
msgstr "Neuen Teilnehmer erfassen"

Expand Down Expand Up @@ -269,9 +283,6 @@ msgstr "Mädchen"
msgid "Boy"
msgstr "Junge"

msgid "You already entered a child with this name"
msgstr "Sie haben bereits ein Kind mit diesem Namen eingegeben"

#, python-format
msgid "This occasion has already been booked by ${name}"
msgstr "${name} hat sich bereits für diese Durchführung angemeldet"
Expand Down Expand Up @@ -490,15 +501,21 @@ msgstr ""
"Es ist nicht mehr möglich die Ausführungs-Einstellungen zu verändern da die "
"Periode bereits bestätigt wurde."

msgid "Name"
msgstr "Name"
msgid "Salutation"
msgstr "Anrede"

msgid "Personal-, Society- or Company-Name"
msgstr "Persönlicher, Vereins- oder Firmen-Name"
msgid "Organisation"
msgstr "Organisation"

msgid "Address"
msgstr "Adresse"

msgid "Zip Code"
msgstr "PLZ"

msgid "Place"
msgstr "Ort"

msgid "Public E-Mail Address"
msgstr "Öffentliche E-Mail Adresse"

Expand All @@ -520,6 +537,12 @@ msgstr "Webseite"
msgid "Website address including http:// or https://"
msgstr "Webseiten-Adresse inklusive http:// oder https://"

msgid "Mr."
msgstr "Herr"

msgid "Ms."
msgstr "Frau"

msgid "Please enter both a phone number and a name"
msgstr "Bitte geben Sie eine Telefonnummer und einen Namen ein"

Expand Down Expand Up @@ -833,13 +856,6 @@ msgstr "Zum Angebot."
msgid "Activity State"
msgstr "Angebotsstatus"

msgid ""
"${user}'s activity was created ${created} and it was submitted for "
"publication ${submitted}."
msgstr ""
"${user}'s Angebot wurde ${created} erstellt und ${submitted} zur Publikation "
"eingereicht."

msgid "This is ${user}'s first activity."
msgstr "Dies ist ${user}'s erstes Angebot."

Expand Down Expand Up @@ -1000,6 +1016,9 @@ msgstr "${operability} aller Durchführungen haben genug Teilnehmer."
msgid "Years"
msgstr "Jahre"

msgid "Name"
msgstr "Name"

msgid "State"
msgstr "Status"

Expand Down Expand Up @@ -1197,6 +1216,9 @@ msgstr ""
"ist möglich dass abgesagte/blockierte Buchungen bestehen. Diese werden "
"gelöscht."

msgid "Edit Attendee"
msgstr "Teilnehmer Bearbeiten"

#, python-format
msgid "Billing for ${title}"
msgstr "Fakturierung für ${title}"
Expand Down Expand Up @@ -1257,14 +1279,6 @@ msgstr ""
msgid "Your booking was cancelled successfully"
msgstr "Ihre Buchung wurde erfolgreich storniert"

#, python-format
msgid "Wishlist of ${user}"
msgstr "Wunschliste von ${user}"

#, python-format
msgid "Bookings of ${user}"
msgstr "Buchungen von ${user}"

msgid "Only open, cancelled, denied or blocked bookings may be deleted"
msgstr ""
"Nur offene, abgesagte, abgelehnte und blockierte Buchungen können gelöscht "
Expand Down Expand Up @@ -1406,19 +1420,3 @@ msgstr ""

msgid "Activate Period"
msgstr "Periode Aktivieren"

#~ msgid "Activity State: ${state}"
#~ msgstr "Angebotsstatus: ${state}"

#~ msgid ""
#~ "After reviewing the activity it can either be published or denied. "
#~ "Published activites with active occasions show up in the respective "
#~ "periods. Published activities can be archived to make them invisible to "
#~ "the public and be reactivated at a later time."
#~ msgstr ""
#~ "Nach der Überprüfung des Angebots kann es entweder veröffentlicht oder "
#~ "abgelehnt werden. Veröffentlichte Angebote mit aktiven Durchführungen "
#~ "werden in den entsprechenden Perioden angezeigt. Veröffentlichte Angebote "
#~ "können archiviert werden um sie von der Öffentlichkeit zu verstecken. "
#~ "Archivierte Angebote können zu einem späteren Zeitpunkt reaktiviert "
#~ "werden."
63 changes: 36 additions & 27 deletions onegov/feriennet/templates/macros.pt
Original file line number Diff line number Diff line change
Expand Up @@ -7,38 +7,39 @@
<body>

<metal:activity_ticket_summary define-macro="activity_ticket_summary" i18n:domain="onegov.feriennet">
<h2>${activity.title}</h2>
<tal:block define="user activity.user.data.organisation or activity.user.title|activity.user.title">
<h2>${activity.title}</h2>

<span class="page-lead" tal:condition="activity.lead" tal:content="activity.lead" />
<span class="page-lead" tal:condition="activity.lead" tal:content="activity.lead" />

<p>
<strong><a href="${request.link(activity)}" i18n:translate>Go to activity.</a></strong>
</p>

<p>
<span i18n:translate>Activity State</span>: <strong><metal:block use-macro="layout.macros.activity_state_text" /></strong>
<br>
<span i18n:translate>Organiser</span>: <strong>${activity.user.title}</strong>
</p>

<div>
<p>
<span i18n:translate tal:condition="is_first">
This is <tal:block i18n:name="user">${activity.user.title}</tal:block>'s first activity.
</span>
<span i18n:translate tal:condition="not is_first">
<tal:block i18n:name="user">${activity.user.title}</tal:block> has submitted activities before.
</span>
<span i18n:translate>After reviewing the activity it can either be published or denied.</span>
<strong><a href="${request.link(activity)}" i18n:translate>Go to activity.</a></strong>
</p>

<p i18n:translate>
Published activites with active occasions show up in the respective
periods. Published activities can be archived to make them invisible
to the public and be reactivated at a later time.
<p>
<span i18n:translate>Activity State</span>: <strong><metal:block use-macro="layout.macros.activity_state_text" /></strong>
<br>
<span i18n:translate>Organiser</span>: <strong>${user}</strong>
</p>
</div>

<div>
<p>
<span i18n:translate tal:condition="is_first">
This is <tal:block i18n:name="user">${user}</tal:block>'s first activity.
</span>
<span i18n:translate tal:condition="not is_first">
<tal:block i18n:name="user">${user}</tal:block> has submitted activities before.
</span>
<span i18n:translate>After reviewing the activity it can either be published or denied.</span>
</p>

<p i18n:translate>
Published activites with active occasions show up in the respective
periods. Published activities can be archived to make them invisible
to the public and be reactivated at a later time.
</p>
</div>
</tal:block>
</metal:activity_ticket_summary>

<metal:activity_detailed define-macro="activity_detailed" i18n:domain="onegov.feriennet">
Expand Down Expand Up @@ -118,13 +119,21 @@
<metal:organiser define-macro="organiser" i18n:domain="onegov.feriennet">
<div class="organiser">
<ul>
<li class="organiser-name"
tal:condition="organiser.data.organisation|nothing"
tal:content="organiser.data.organisation">
</li>
<li class="organiser-name"
tal:condition="organiser.realname|nothing"
tal:content="organiser.realname">
</li>
<li class="organiser-address"
tal:condition="organiser.data.address|nothing"
tal:content="organiser.data.address">
tal:condition="organiser.data.address|organiser.data.zip_code|organiser.data.place|nothing">
<span class="newlines" tal:condition="organiser.data.address|nothing">${organiser.data.address}</span>
<div tal:condition="organiser.data.zip_code|organiser.data.place|nothing">
<span tal:condition="organiser.data.zip_code|nothing">${organiser.data.zip_code}</span>
<span tal:condition="organiser.data.place|nothing">${organiser.data.place}</span>
</div>
</li>
<li class="organiser-email" tal:define="email organiser.data.email or organiser.username|organiser.username">
<a href="mailto:${email}">${email}</a>
Expand Down

0 comments on commit 01905c3

Please sign in to comment.