adding custom user model + corrected provider to correctly create user according to new model
authordurandn
Wed, 02 Mar 2016 12:12:44 +0100
changeset 9 fdbc47f06361
parent 8 e56471e269eb
child 10 50b532f5e6cb
adding custom user model + corrected provider to correctly create user according to new model
server/src/metaeducation/models.py
server/src/metaeducation/mtdc_oauth_provider/provider.py
server/src/metaeducation/mtdc_oauth_provider/views.py
server/src/metaeducation/settings/__init__.py
server/src/metaeducation/signals.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
--- 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
--- 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()()
--- 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
--- 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