server/src/metaeducation/signals.py
author durandn
Wed, 02 Mar 2016 10:45:20 +0100
changeset 8 e56471e269eb
parent 7 cb21b50b7793
child 9 fdbc47f06361
permissions -rw-r--r--
small correction on signals
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
     1
from django.db.models.signals import post_save
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
     2
from django.dispatch import receiver
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
     3
from django.contrib.auth import get_user_model
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
     4
from django.conf import settings
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
     5
import requests, json
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
     6
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
     7
@receiver(post_save)
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
     8
def reference_created_renkan(sender, instance, created, **kwargs):
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
     9
    from renkanmanager.models import Renkan
8
e56471e269eb small correction on signals
durandn
parents: 7
diff changeset
    10
    if created and sender == Renkan and instance.source_renkan_guid:
7
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    11
        token_response = requests.post(
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    12
            settings.MTDC_CLIENT_CREDENTIALS_TOKEN_URL+"?grant_type=client_credentials",
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    13
            data = {},
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    14
            headers = {
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    15
                "Authorization": "Basic %s" % settings.MTDC_AUTH_CODE
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    16
            }          
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    17
        )
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    18
        if token_response.status_code == 200:
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    19
            token = json.loads(token_response.text)['access_token']
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    20
            post_data = json.dumps({
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    21
                "userId": instance.creator.id,
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    22
                "title": instance.title
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    23
            })
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    24
            reference_response = requests.post(
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    25
                settings.MTDC_REFERENCE_RESOURCE_BASE_URL+str(instance.renkan_guid),
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    26
                data = post_data,
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    27
                headers = {
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    28
                    "Authorization": "Bearer %s" % token
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    29
                }                             
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    30
            )
8
e56471e269eb small correction on signals
durandn
parents: 7
diff changeset
    31
"""     
7
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    32
@receiver(post_save)
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    33
def reference_modified_title(sender, instance, created, **kwargs):
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    34
    from renkanmanager.models import Renkan, Revision
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    35
    if created and sender == Revision:
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    36
        try:
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    37
            referenced_renkan = Renkan.objects.get(renkan_guid = instance.revision_guid)
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    38
        except Renkan.DoesNotExist:
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    39
            return
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    40
        if referenced_renkan.revision_count > 1:
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    41
            # This means the revision isn't the first of the Renkan and therefore we shouldn't do anything
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    42
            token_response = requests.post(
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    43
                settings.MTDC_CLIENT_CREDENTIALS_TOKEN_URL+"?grant_type=client_credentials",
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    44
                data = {},
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    45
                headers = {
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    46
                    "Authorization": "Basic %s" % settings.MTDC_AUTH_CODE
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    47
                }                             
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    48
            )
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    49
            if token_response.status_code == 200:
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    50
                token = json.loads(token_response.text)['access_token']
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    51
                put_data = json.dumps({
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    52
                    "userId": referenced_renkan.creator.id,
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    53
                    "title": referenced_renkan.title
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    54
                })
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    55
                reference_response = requests.post(
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    56
                    settings.MTDC_REFERENCE_RESOURCE_BASE_URL+str(instance.renkan_guid),
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    57
                    data = put_data,
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    58
                    headers = {
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    59
                        "Authorization": "Bearer %s" % token
cb21b50b7793 small corrections on oauth server and allauth provider + implemented post_save signals to reference resources into itop ged
durandn
parents:
diff changeset
    60
                    }                             
8
e56471e269eb small correction on signals
durandn
parents: 7
diff changeset
    61
                )
e56471e269eb small correction on signals
durandn
parents: 7
diff changeset
    62
"""