--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/server/src/metaeducation/signals.py Tue Mar 01 17:39:09 2016 +0100
@@ -0,0 +1,61 @@
+from django.db.models.signals import post_save
+from django.dispatch import receiver
+from django.contrib.auth import get_user_model
+from django.conf import settings
+import requests, json
+
+@receiver(post_save)
+def reference_created_renkan(sender, instance, created, **kwargs):
+ from renkanmanager.models import Renkan
+ if created and sender == Renkan:
+ 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']
+ post_data = json.dumps({
+ "userId": instance.creator.id,
+ "title": instance.title
+ })
+ 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