Verify valid product, move default school creation

This commit is contained in:
Christian Cueni 2020-01-29 09:52:31 +01:00
parent 0e95e872c8
commit c13ed2a5b2
3 changed files with 26 additions and 33 deletions

View File

@ -94,6 +94,12 @@ class SchoolClass(models.Model):
return '{} {}'.format(prefix, index + 1)
@classmethod
def create_default_group_for_teacher(cls, user):
default_class_name = cls.generate_default_group_name()
default_class = cls.objects.create(name=default_class_name)
user.school_classes.add(default_class)
def is_user_in_schoolclass(self, user):
return user.is_superuser or user.school_classes.filter(pk=self.id).count() > 0

View File

@ -66,6 +66,7 @@ class Login(relay.ClientIDMutation):
try:
license = License.objects.get(licensee=user)
# Todo how handle invalid license? Cron Job? How to select correct license? Save all licenses? History?
except License.DoesNotExist:
product = hep_client.myskillbox_product_for_customer(settings.HEP_ADMIN_TOKEN, user.hep_id)
@ -80,43 +81,13 @@ class Login(relay.ClientIDMutation):
UserRole.objects.create_role_for_user(user, license.for_role.key)
if license.for_role.key == Role.objects.TEACHER_KEY:
default_class_name = SchoolClass.generate_default_group_name()
default_class = SchoolClass.objects.create(name=default_class_name)
user.school_classes.add(default_class)
# if teacher create class
# if student add to class if exists???
# no orders
# network errors
# Todo get orders from magento
# check items
# show buy or create license
# check items
# show buy page
SchoolClass.create_default_group_for_teacher(user)
if not license.is_valid():
pass
error = LoginError(field='no_valid_license')
return cls(success=False, errors=[error])
# show page
#
# user_license = None
#
# try:
# user_license = License.objects.get(licensee=user)
# except License.DoesNotExist:
# # current users have no license, allow them to login
# pass
#
# if user_license is not None and not user_license.license_type.active:
# error = LoginError(field='license_inactive')
# return cls(success=False, errors=[error])
login(info.context, user)
return cls(success=True, errors=[])

View File

@ -190,6 +190,22 @@ class PasswordResetTests(TestCase):
self.assertFalse(result.get('data').get('login').get('success'))
self.assertEqual(result.get('data').get('login').get('errors')[0].get('field'), 'no_valid_license')
@patch.object(HepClient, 'customer_token', return_value={'token': FAKE_TOKEN})
@patch.object(HepClient, 'customer_me', return_value=ME_DATA)
def test_user_cannot_login_local_license_invalid(self, me_mock, token_mock):
now = timezone.now()
expiry_date = now - timedelta(1)
LicenseFactory(expire_date=expiry_date, licensee=self.user, for_role=self.teacher_role).save()
result = self.make_login_mutation(self.user.email, 'test123')
token = MagentoToken.objects.get(user=self.user)
self.assertEqual(token.token, FAKE_TOKEN)
self.assertFalse(result.get('data').get('login').get('success'))
self.assertEqual(result.get('data').get('login').get('errors')[0].get('field'), 'no_valid_license')
## can login with license and user
## can login with no user and license
# ?can login with no user and local license