API & Client: add timezone to user - #11

This commit is contained in:
Sam
2018-06-11 15:10:18 +02:00
parent 793ef22c59
commit fe91040370
17 changed files with 98 additions and 4 deletions

View File

@ -49,6 +49,7 @@ def user_1_full():
user.last_name = 'Doe'
user.bio = 'just a random guy'
user.location = 'somewhere'
user.timezone = 'America/New_York'
user.birth_date = datetime.datetime.strptime('01/01/1980', '%d/%m/%Y')
db.session.add(user)
db.session.commit()

View File

@ -397,6 +397,7 @@ def test_user_profile_minimal(app, user_1):
assert data['data']['email'] == 'test@test.com'
assert data['data']['created_at']
assert not data['data']['admin']
assert data['data']['timezone'] is None
assert data['data']['nb_activities'] == 0
assert data['data']['nb_sports'] == 0
assert data['data']['total_distance'] == 0
@ -434,6 +435,7 @@ def test_user_profile_full(app, user_1_full):
assert data['data']['birth_date']
assert data['data']['bio'] == 'just a random guy'
assert data['data']['location'] == 'somewhere'
assert data['data']['timezone'] == 'America/New_York'
assert data['data']['nb_activities'] == 0
assert data['data']['nb_sports'] == 0
assert data['data']['total_distance'] == 0
@ -469,6 +471,7 @@ def test_user_profile_with_activities(
assert data['data']['email'] == 'test@test.com'
assert data['data']['created_at']
assert not data['data']['admin']
assert data['data']['timezone'] is None
assert data['data']['nb_activities'] == 2
assert data['data']['nb_sports'] == 2
assert data['data']['total_distance'] == 22
@ -507,7 +510,8 @@ def test_user_profile_valid_update(app, user_1):
bio='just a random guy',
birth_date='1980-01-01',
password='87654321',
password_conf='87654321'
password_conf='87654321',
timezone='America/New_York'
)),
headers=dict(
Authorization='Bearer ' + json.loads(
@ -627,7 +631,8 @@ def test_user_profile_invalid_password(app, user_1):
bio='just a random guy',
birth_date='1980-01-01',
password='87654321',
password_conf='876543210'
password_conf='876543210',
timezone='America/New_York'
)),
headers=dict(
Authorization='Bearer ' + json.loads(
@ -661,6 +666,7 @@ def test_user_profile_missing_password_conf(app, user_1):
bio='just a random guy',
birth_date='1980-01-01',
password='87654321',
timezone='America/New_York'
)),
headers=dict(
Authorization='Bearer ' + json.loads(

View File

@ -32,6 +32,7 @@ def test_single_user(app, user_1):
assert data['data']['birth_date'] is None
assert data['data']['bio'] is None
assert data['data']['location'] is None
assert data['data']['timezone'] is None
assert data['data']['nb_activities'] == 0
assert data['data']['nb_sports'] == 0
assert data['data']['total_distance'] == 0
@ -60,6 +61,7 @@ def test_single_user_with_activities(
assert data['data']['birth_date'] is None
assert data['data']['bio'] is None
assert data['data']['location'] is None
assert data['data']['timezone'] is None
assert data['data']['nb_activities'] == 2
assert data['data']['nb_sports'] == 2
assert data['data']['total_distance'] == 22
@ -105,10 +107,12 @@ def test_users_list(app, user_1, user_2):
assert 'toto' in data['data']['users'][1]['username']
assert 'test@test.com' in data['data']['users'][0]['email']
assert 'toto@toto.com' in data['data']['users'][1]['email']
assert data['data']['users'][0]['timezone'] is None
assert data['data']['users'][0]['nb_activities'] == 0
assert data['data']['users'][0]['nb_sports'] == 0
assert data['data']['users'][0]['total_distance'] == 0
assert data['data']['users'][0]['total_duration'] == '0:00:00'
assert data['data']['users'][1]['timezone'] is None
assert data['data']['users'][1]['nb_activities'] == 0
assert data['data']['users'][1]['nb_sports'] == 0
assert data['data']['users'][1]['total_distance'] == 0

View File

@ -12,6 +12,7 @@ def test_user_model(app, user_1):
assert serialized_user['location'] is None
assert serialized_user['birth_date'] is None
assert serialized_user['picture'] is False
assert serialized_user['timezone'] is None
assert serialized_user['nb_activities'] == 0
assert serialized_user['nb_sports'] == 0
assert serialized_user['total_distance'] == 0

View File

@ -185,6 +185,7 @@ def edit_user(user_id):
location = post_data.get('location')
password = post_data.get('password')
password_conf = post_data.get('password_conf')
timezone = post_data.get('timezone')
if password is not None and password != '':
if password_conf != password:
@ -211,6 +212,7 @@ def edit_user(user_id):
)
if password is not None and password != '':
user.password = password
user.timezone = timezone
db.session.commit()
response_object = {

View File

@ -22,6 +22,7 @@ class User(db.Model):
location = db.Column(db.String(80), nullable=True)
bio = db.Column(db.String(200), nullable=True)
picture = db.Column(db.String(255), nullable=True)
timezone = db.Column(db.String(50), nullable=True)
activities = db.relationship('Activity',
lazy=True,
backref=db.backref('users', lazy='joined'))
@ -111,6 +112,7 @@ class User(db.Model):
'location': self.location,
'birth_date': self.birth_date,
'picture': self.picture is not None,
'timezone': self.timezone,
'nb_activities': nb_activity,
'nb_sports': len(sports),
'total_distance': float(total[0]) if total[0] else 0,

View File

@ -1,4 +1,4 @@
"""empty message
"""add static map url to 'Activity' table
Revision ID: 5a42db64e872
Revises: 92adde6ac0d0

View File

@ -1,4 +1,4 @@
"""empty message
"""add static map id to 'Activity' table
Revision ID: 9f8c9c37da44
Revises: 5a42db64e872

View File

@ -0,0 +1,28 @@
"""add 'timezone' to 'User' table
Revision ID: e82e5e9447de
Revises: 9f8c9c37da44
Create Date: 2018-06-08 16:01:52.684935
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = 'e82e5e9447de'
down_revision = '9f8c9c37da44'
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('users', sa.Column('timezone', sa.String(length=50), nullable=True))
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_column('users', 'timezone')
# ### end Alembic commands ###

View File

@ -26,6 +26,7 @@ def init_data():
email='admin@example.com',
password='mpwoadmin')
admin.admin = True
admin.timezone = 'Europe/Paris'
db.session.add(admin)
sport = Sport(label='Cycling (Sport)')
sport.img = '/img/sports/cycling-sport.png'