Changeset e171dc2 in OpenWorkouts-current for ow


Ignore:
Timestamp:
Feb 26, 2019, 11:52:44 PM (5 years ago)
Author:
Borja Lopez <borja@…>
Branches:
current, feature/docs, master
Children:
ac3af33
Parents:
aad4954
Message:

(#69) Added translations for User gender.
(+ added a third gender option, "robot" ;-D)

Location:
ow
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • ow/models/user.py

    raad4954 re171dc2  
    3434        self.height = kw.get('height', None)
    3535        self.weight = kw.get('weight', None)
    36         self.gender = kw.get('gender', 'female')
     36        self.gender = kw.get('gender', 'robot')
    3737        self.picture = kw.get('picture', None)  # blob
    3838        self.timezone = kw.get('timezone', 'UTC')
  • ow/schemas/user.py

    raad4954 re171dc2  
    44
    55from ow.schemas.blob import FieldStorageBlob
    6 from ow.utilities import get_available_locale_names
     6from ow.utilities import get_available_locale_names, get_gender_names
    77
    88_ = TranslationStringFactory('OpenWorkouts')
     
    7373    height = validators.Number()
    7474    weight = validators.Number()
    75     gender = validators.OneOf(('male', 'female'), not_empty=True)
     75    gender = validators.OneOf(
     76        [gender[0] for gender in get_gender_names()],
     77        not_empty=True)
    7678    picture = FieldStorageBlob(if_emtpy=None, if_missing=None,
    7779                               whitelist=['jpg', 'jpeg', 'png', 'gif'])
  • ow/templates/edit_profile.pt

    raad4954 re171dc2  
    7272              </div>
    7373              <div>
    74                   <label for="gender" i18n:translate="">Gender:</label>
    75                   ${form.errorlist('gender')}
    76                   ${form.select('gender', ['male', 'female'])}
     74                <label for="gender" i18n:translate="">Gender:</label>
     75                ${form.errorlist('gender')}
     76                ${form.select('gender', gender_names)}
    7777              </div>
    7878            </div>
  • ow/templates/profile.pt

    raad4954 re171dc2  
    164164            <li>
    165165              <span><tal:t i18n:translate="">Gender:</tal:t></span>
    166               <tal:c tal:content="getattr(user, 'gender', '-')"></tal:c>
     166              <tal:c tal:content="user_gender"></tal:c>
    167167            </li>
    168168            <li tal:define="birth_date getattr(user, 'birth_date', None)">
  • ow/tests/views/test_user.py

    raad4954 re171dc2  
    409409        # profile page for the current day (no workouts avalable)
    410410        response = user_views.profile(john, request)
    411         assert len(response.keys()) == 5
     411        assert len(response.keys()) == 6
    412412        current_month = datetime.now(timezone.utc).strftime('%Y-%m')
    413413        assert response['user'] == john
     414        assert response['user_gender'] == 'Robot'
    414415        assert response['current_month'] == current_month
    415416        assert response['current_week'] is None
     
    424425        request.GET['month'] = 6
    425426        response = user_views.profile(john, request)
    426         assert len(response.keys()) == 5
     427        assert len(response.keys()) == 6
    427428        assert response['user'] == john
     429        assert response['user_gender'] == 'Robot'
    428430        assert response['current_month'] == '2015-06'
    429431        assert response['current_week'] is None
     
    440442        request.GET['week'] = 25
    441443        response = user_views.profile(john, request)
    442         assert len(response.keys()) == 5
     444        assert len(response.keys()) == 6
    443445        assert response['user'] == john
     446        assert response['user_gender'] == 'Robot'
    444447        assert response['current_month'] == '2015-06'
    445448        assert response['current_week'] == 25
     
    455458        request.GET['week'] = 26
    456459        response = user_views.profile(john, request)
    457         assert len(response.keys()) == 5
     460        assert len(response.keys()) == 6
    458461        assert response['user'] == john
     462        assert response['user_gender'] == 'Robot'
    459463        assert response['current_month'] == '2015-06'
    460464        assert response['current_week'] == 26
  • ow/utilities.py

    raad4954 re171dc2  
    310310        ('es', _('Spanish'))
    311311    ]
     312
     313
     314def get_gender_names():
     315    return [
     316        ('male', _('Male')),
     317        ('female', _('Female')),
     318        ('robot', _('Robot'))
     319    ]
  • ow/views/user.py

    raad4954 re171dc2  
    99from pyramid.security import remember, forget
    1010from pyramid.response import Response
    11 from pyramid.i18n import TranslationStringFactory
     11from pyramid.i18n import TranslationStringFactory, get_localizer
    1212from pyramid_simpleform import Form, State
    1313from pytz import common_timezones
     
    295295            getattr(workout, 'uphill', Decimal(0)) or Decimal(0))
    296296
     297    localizer = get_localizer(request)
     298    user_gender = _('Unknown')
     299    for g in get_gender_names():
     300        if g[0] == context.gender:
     301            user_gender = localizer.translate(g[1])
     302
    297303    return {
    298304        'user': user,
     305        'user_gender': user_gender,
    299306        'workouts': workouts,
    300307        'current_month': '{year}-{month}'.format(
     
    338345    default_locale = request.registry.settings.get(
    339346        'pyramid.default_locale_name')
    340     available_locale_names = get_available_locale_names()
    341347    current_locale = request.cookies.get('_LOCALE_', default_locale)
    342348    # if not given a file there is an empty byte in POST, which breaks
     
    372378        del form.data['picture']
    373379
     380    localizer = get_localizer(request)
     381    gender_names = [
     382        (g[0], localizer.translate(g[1])) for g in get_gender_names()]
     383    available_locale_names = [
     384        (l[0], localizer.translate(l[1])) for l in get_available_locale_names()
     385    ]
     386
    374387    return {'form': OWFormRenderer(form),
    375388            'timezones': common_timezones,
     389            'gender_names': gender_names,
    376390            'available_locale_names': available_locale_names,
    377391            'current_locale': current_locale}
Note: See TracChangeset for help on using the changeset viewer.