From 249abff36b0ce0476d3cdaea7fd8a43ba64292c2 Mon Sep 17 00:00:00 2001 From: Ramon Wenger Date: Tue, 6 Jul 2021 15:09:51 +0200 Subject: [PATCH] Add license check to user model --- server/users/models.py | 12 ++++++++++ server/users/tests/test_license_expired.py | 26 ++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 server/users/tests/test_license_expired.py diff --git a/server/users/models.py b/server/users/models.py index 27226e30..310887e9 100644 --- a/server/users/models.py +++ b/server/users/models.py @@ -17,6 +17,10 @@ DEFAULT_SCHOOL_ID = 1 class User(AbstractUser): + LICENSE_NONE = 'no-license' + LICENSE_VALID = 'valid-license' + LICENSE_EXPIRED = 'expired-license' + last_module = models.ForeignKey('books.Module', related_name='+', on_delete=models.SET_NULL, null=True) recent_modules = models.ManyToManyField('books.Module', related_name='+', through='books.RecentModule') last_topic = models.ForeignKey('books.Topic', related_name='+', on_delete=models.SET_NULL, null=True) @@ -120,6 +124,14 @@ class User(AbstractUser): # todo: just mocked for now, link to license before release return True + def get_license_status(self): + if not self.license_expiry_date: + return User.LICENSE_NONE + now = datetime.now() + if self.license_expiry_date >= now: + return User.LICENSE_VALID + return User.LICENSE_NONE + class Meta: ordering = ['pk', ] diff --git a/server/users/tests/test_license_expired.py b/server/users/tests/test_license_expired.py new file mode 100644 index 00000000..82222ddf --- /dev/null +++ b/server/users/tests/test_license_expired.py @@ -0,0 +1,26 @@ +from datetime import timedelta, datetime + +from core.factories import UserFactory +from core.tests.base_test import SkillboxTestCase +from users.models import User + + +class LicenseExpiredTestCase(SkillboxTestCase): + def setUp(self) -> None: + self.user = UserFactory(username='some_user') + + def test_license_expired(self): + + now = datetime.now() + self.user.license_expiry_date = now - timedelta(days=1) + self.user.save() + self.assertTrue(self.user.get_license_status(), User.LICENSE_EXPIRED) + + def test_license_valid(self): + now = datetime.now() + self.user.license_expiry_date = now + timedelta(days=1) + self.user.save() + self.assertTrue(self.user.get_license_status(), User.LICENSE_VALID) + + def test_license_none(self): + self.assertTrue(self.user.get_license_status(), User.LICENSE_NONE)