API - it returns if user accepted to last privacy policy

This commit is contained in:
Sam 2023-02-26 09:07:02 +01:00
parent f37cecec78
commit 1c1d2a77b7
3 changed files with 46 additions and 7 deletions

View File

@ -35,6 +35,7 @@ def update_app_config_from_database(
current_app.config[ current_app.config[
'is_registration_enabled' 'is_registration_enabled'
] = db_config.is_registration_enabled ] = db_config.is_registration_enabled
current_app.config['privacy_policy_date'] = db_config.privacy_policy_date
def verify_app_config(config_data: Dict) -> List: def verify_app_config(config_data: Dict) -> List:

View File

@ -78,15 +78,45 @@ class TestUserSerializeAsAuthUser(UserModelAssertMixin):
self.assert_workouts_keys_are_present(serialized_user) self.assert_workouts_keys_are_present(serialized_user)
def test_it_returns_accepted_privacy_policy_date( def test_it_returns_user_did_not_accept_default_privacy_policy(
self, app: Flask, user_1: User self, app: Flask, user_1: User
) -> None: ) -> None:
# default privacy policy
app.config['privacy_policy_date'] = None
user_1.accepted_policy_date = None
serialized_user = user_1.serialize(user_1) serialized_user = user_1.serialize(user_1)
assert ( assert serialized_user['accepted_privacy_policy'] is False
serialized_user['accepted_policy_date']
== user_1.accepted_policy_date def test_it_returns_user_did_accept_default_privacy_policy(
) self, app: Flask, user_1: User
) -> None:
# default privacy policy
app.config['privacy_policy_date'] = None
user_1.accepted_policy_date = datetime.utcnow()
serialized_user = user_1.serialize(user_1)
assert serialized_user['accepted_privacy_policy'] is True
def test_it_returns_user_did_not_accept_last_policy(
self, app: Flask, user_1: User
) -> None:
user_1.accepted_policy_date = datetime.utcnow()
# custom privacy policy
app.config['privacy_policy_date'] = datetime.utcnow()
serialized_user = user_1.serialize(user_1)
assert serialized_user['accepted_privacy_policy'] is False
def test_it_returns_user_did_accept_last_policy(
self, app: Flask, user_1: User
) -> None:
# custom privacy policy
app.config['privacy_policy_date'] = datetime.utcnow()
user_1.accepted_policy_date = datetime.utcnow()
serialized_user = user_1.serialize(user_1)
assert serialized_user['accepted_privacy_policy'] is True
def test_it_does_not_return_confirmation_token( def test_it_does_not_return_confirmation_token(
self, app: Flask, user_1_admin: User, user_2: User self, app: Flask, user_1_admin: User, user_2: User
@ -133,7 +163,7 @@ class TestUserSerializeAsAdmin(UserModelAssertMixin):
) -> None: ) -> None:
serialized_user = user_2.serialize(user_1_admin) serialized_user = user_2.serialize(user_1_admin)
assert 'accepted_policy_date' not in serialized_user assert 'accepted_privacy_policy' not in serialized_user
def test_it_does_not_return_confirmation_token( def test_it_does_not_return_confirmation_token(
self, app: Flask, user_1_admin: User, user_2: User self, app: Flask, user_1_admin: User, user_2: User

View File

@ -189,10 +189,18 @@ class User(BaseModel):
'username': self.username, 'username': self.username,
} }
if role == UserRole.AUTH_USER: if role == UserRole.AUTH_USER:
accepted_privacy_policy = False
if self.accepted_policy_date:
accepted_privacy_policy = (
True
if current_app.config['privacy_policy_date'] is None
else current_app.config['privacy_policy_date']
< self.accepted_policy_date
)
serialized_user = { serialized_user = {
**serialized_user, **serialized_user,
**{ **{
'accepted_policy_date': self.accepted_policy_date, 'accepted_privacy_policy': accepted_privacy_policy,
'date_format': self.date_format, 'date_format': self.date_format,
'display_ascent': self.display_ascent, 'display_ascent': self.display_ascent,
'imperial_units': self.imperial_units, 'imperial_units': self.imperial_units,