# HG changeset patch # User durandn # Date 1456917164 -3600 # Node ID fdbc47f063617aa92fa62832a2f865e1b106bb93 # Parent e56471e269eb07a45ca9a2bd1b796ab7b4ed7515 adding custom user model + corrected provider to correctly create user according to new model diff -r e56471e269eb -r fdbc47f06361 server/src/metaeducation/models.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/server/src/metaeducation/models.py Wed Mar 02 12:12:44 2016 +0100 @@ -0,0 +1,8 @@ +from django.contrib.auth.models import AbstractUser +from django.db.models import CharField + +class User(AbstractUser): + external_id = CharField(max_length=256, blank=True, null=True) + + def __unicode__(self): + return self.external_id \ No newline at end of file diff -r e56471e269eb -r fdbc47f06361 server/src/metaeducation/mtdc_oauth_provider/provider.py --- a/server/src/metaeducation/mtdc_oauth_provider/provider.py Wed Mar 02 10:45:20 2016 +0100 +++ b/server/src/metaeducation/mtdc_oauth_provider/provider.py Wed Mar 02 12:12:44 2016 +0100 @@ -10,13 +10,15 @@ package = 'metaeducation.mtdc_oauth_provider' def extract_uid(self, data): - print("retrieved data: "+str(data)) return data.get(settings.MTDC_USERID_FIELD_NAME, '') def extract_common_fields(self, data): return {"username": data.get(settings.MTDC_USERNAME_FIELD_NAME, "")} def extract_extra_data(self, data): - return {"username": data.get(settings.MTDC_USERNAME_FIELD_NAME, "")} + return { + "username": data.get(settings.MTDC_USERNAME_FIELD_NAME, ""), + "external_id": data.get(settings.MTDC_USERID_FIELD_NAME) + } providers.registry.register(MtdcProvider) \ No newline at end of file diff -r e56471e269eb -r fdbc47f06361 server/src/metaeducation/mtdc_oauth_provider/views.py --- a/server/src/metaeducation/mtdc_oauth_provider/views.py Wed Mar 02 10:45:20 2016 +0100 +++ b/server/src/metaeducation/mtdc_oauth_provider/views.py Wed Mar 02 12:12:44 2016 +0100 @@ -28,7 +28,6 @@ from .provider import MtdcProvider - class MtdcOAuth2Adapter(OAuth2Adapter, DefaultSocialAccountAdapter): provider_id = MtdcProvider.id supports_state = False @@ -67,6 +66,7 @@ else: user = get_user_model()() user.username = sociallogin.account.extra_data.get('username', '') + user.external_id = sociallogin.account.extra_data.get('external_id', '') return user else: return get_user_model()() diff -r e56471e269eb -r fdbc47f06361 server/src/metaeducation/settings/__init__.py --- a/server/src/metaeducation/settings/__init__.py Wed Mar 02 10:45:20 2016 +0100 +++ b/server/src/metaeducation/settings/__init__.py Wed Mar 02 12:12:44 2016 +0100 @@ -37,7 +37,8 @@ 'metaeducation.mtdc_oauth_provider', 'guardian', 'renkanmanager', - 'easy_thumbnails' + 'easy_thumbnails', + 'metaeducation' ) AUTHENTICATION_BACKENDS = ( @@ -86,6 +87,8 @@ }, ] +AUTH_USER_MODEL = 'metaeducation.User' + WSGI_APPLICATION = 'metaeducation.wsgi.application' USE_I18N = True diff -r e56471e269eb -r fdbc47f06361 server/src/metaeducation/signals.py --- a/server/src/metaeducation/signals.py Wed Mar 02 10:45:20 2016 +0100 +++ b/server/src/metaeducation/signals.py Wed Mar 02 12:12:44 2016 +0100 @@ -7,7 +7,7 @@ @receiver(post_save) def reference_created_renkan(sender, instance, created, **kwargs): from renkanmanager.models import Renkan - if created and sender == Renkan and instance.source_renkan_guid: + if created and sender == Renkan and not instance.source_revision_guid: token_response = requests.post( settings.MTDC_CLIENT_CREDENTIALS_TOKEN_URL+"?grant_type=client_credentials", data = {}, @@ -18,45 +18,14 @@ if token_response.status_code == 200: token = json.loads(token_response.text)['access_token'] post_data = json.dumps({ - "userId": instance.creator.id, + "userId": instance.creator.external_id, "title": instance.title }) + print(post_data) reference_response = requests.post( settings.MTDC_REFERENCE_RESOURCE_BASE_URL+str(instance.renkan_guid), data = post_data, headers = { "Authorization": "Bearer %s" % token } - ) -""" -@receiver(post_save) -def reference_modified_title(sender, instance, created, **kwargs): - from renkanmanager.models import Renkan, Revision - if created and sender == Revision: - try: - referenced_renkan = Renkan.objects.get(renkan_guid = instance.revision_guid) - except Renkan.DoesNotExist: - return - if referenced_renkan.revision_count > 1: - # This means the revision isn't the first of the Renkan and therefore we shouldn't do anything - token_response = requests.post( - settings.MTDC_CLIENT_CREDENTIALS_TOKEN_URL+"?grant_type=client_credentials", - data = {}, - headers = { - "Authorization": "Basic %s" % settings.MTDC_AUTH_CODE - } - ) - if token_response.status_code == 200: - token = json.loads(token_response.text)['access_token'] - put_data = json.dumps({ - "userId": referenced_renkan.creator.id, - "title": referenced_renkan.title - }) - reference_response = requests.post( - settings.MTDC_REFERENCE_RESOURCE_BASE_URL+str(instance.renkan_guid), - data = put_data, - headers = { - "Authorization": "Bearer %s" % token - } - ) -""" \ No newline at end of file + ) \ No newline at end of file