Completed
Push — main ( 39501b...4a0798 )
by Jochen
05:29
created

ChangeScreenNameForm.validate_screen_name()   A

Complexity

Conditions 3

Size

Total Lines 7
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 1
CRAP Score 7.608

Importance

Changes 0
Metric Value
cc 3
eloc 6
nop 2
dl 0
loc 7
ccs 1
cts 5
cp 0.2
crap 7.608
rs 10
c 0
b 0
f 0
1
"""
2
byceps.blueprints.common.user.settings.forms
3
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4
5
:Copyright: 2006-2020 Jochen Kupperschmidt
6
:License: Modified BSD, see LICENSE for details.
7
"""
8
9 1
from flask import g
10 1
from wtforms import DateField, PasswordField, StringField
11 1
from wtforms.fields.html5 import TelField
12 1
from wtforms.validators import InputRequired, Length, Optional
13
14 1
from .....services.authentication.password import service as password_service
15 1
from .....services.user import screen_name_validator, service as user_service
16 1
from .....util.l10n import LocalizedForm
17
18 1
from ..creation.forms import ScreenNameValidator
19
20
21 1
class ChangeScreenNameForm(LocalizedForm):
22 1
    screen_name = StringField('Neuer Benutzername', [
23
        InputRequired(),
24
        Length(min=screen_name_validator.MIN_LENGTH,
25
               max=screen_name_validator.MAX_LENGTH),
26
        ScreenNameValidator(),
27
    ])
28 1
    password = PasswordField('Aktuelles Passwort', [InputRequired()])
29
30 1
    @staticmethod
31
    def validate_screen_name(form, field):
32
        if g.current_user.screen_name == field.data:
33
            raise ValueError('Dies ist bereits der aktuelle Benutzername.')
34
35
        if user_service.is_screen_name_already_assigned(field.data):
36
            raise ValueError('Dieser Benutzername kann nicht verwendet werden.')
37
38 1
    @staticmethod
39
    def validate_password(form, field):
40
        user_id = g.current_user.id
41
        password = field.data
42
43
        if not password_service.is_password_valid_for_user(user_id, password):
44
            raise ValueError('Das Passwort ist nicht korrekt.')
45
46
47 1
class DetailsForm(LocalizedForm):
48 1
    first_names = StringField('Vorname(n)', [InputRequired(), Length(min=2)])
49 1
    last_name = StringField('Nachname', [InputRequired(), Length(min=2, max=80)])
50 1
    date_of_birth = DateField('Geburtsdatum',
51
                              [Optional()],
52
                              format='%d.%m.%Y')
53 1
    country = StringField('Land', [Optional(), Length(max=60)])
54 1
    zip_code = StringField('PLZ', [Optional()])
55 1
    city = StringField('Stadt', [Optional()])
56 1
    street = StringField('Straße', [Optional()])
57
    phone_number = TelField('Telefonnummer', [Optional(), Length(max=20)])
58