adding custom user model + corrected provider to correctly create user according to new model
--- /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