Ejemplo n.º 1
0
 def create(self, validated_data):
     try:
         instance, created = BadgeCheckHelper.get_or_create_assertion(
             **validated_data)
     except DjangoValidationError as e:
         raise RestframeworkValidationError(e.messages)
     return instance
Ejemplo n.º 2
0
 def create(self, validated_data):
     try:
         instance, created = BadgeCheckHelper.get_or_create_assertion(**validated_data)
         if not created:
             instance.acceptance = BadgeInstance.ACCEPTANCE_ACCEPTED
             instance.save()
     except DjangoValidationError as e:
         raise RestframeworkValidationError(e.messages)
     return instance
Ejemplo n.º 3
0
 def create(self, validated_data):
     try:
         instance, created = BadgeCheckHelper.get_or_create_assertion(**validated_data)
         if not created:
             instance.acceptance = BadgeInstance.ACCEPTANCE_ACCEPTED
             instance.save()
             raise RestframeworkValidationError([{'name': "DUPLICATE_BADGE", 'description': "You already have this badge in your backpack"}])
     except DjangoValidationError as e:
         raise RestframeworkValidationError(e.messages)
     return instance
Ejemplo n.º 4
0
 def create(self, validated_data):
     url = validated_data['assertion']['id']
     try:
         instance, created = BadgeCheckHelper.get_or_create_assertion(url=url, created_by=self.context['request'].user)
         if not created:
             instance.acceptance = BadgeInstance.ACCEPTANCE_ACCEPTED
             instance.save()
             raise RestframeworkValidationError([{'name': "DUPLICATE_BADGE", 'description': "You already have this badge in your backpack"}])
     except DjangoValidationError as e:
         raise RestframeworkValidationError(e.messages)
     return instance
Ejemplo n.º 5
0
 def create(self, validated_data):
     try:
         validated_data['imagefile'] = validated_data.pop('image', None)
         instance, created = BadgeCheckHelper.get_or_create_assertion(**validated_data)
         if not created:
             instance.acceptance = BadgeInstance.ACCEPTANCE_ACCEPTED
             instance.save()
             raise RestframeworkValidationError([{'name': "DUPLICATE_BADGE", 'description': "You already have this badge in your backpack"}])
     except DjangoValidationError as e:
         raise RestframeworkValidationError(e.messages)
     return instance
Ejemplo n.º 6
0
 def create(self, validated_data):
     owner = validated_data.get('created_by')
     try:
         instance, created = BadgeCheckHelper.get_or_create_assertion(
             url=validated_data.get('url', None),
             imagefile=validated_data.get('image', None),
             assertion=validated_data.get('assertion', None),
             created_by=owner,
         )
         owner.publish()  # update BadgeUser.cached_badgeinstances()
     except DjangoValidationError as e:
         raise RestframeworkValidationError(e.args[0])
     return instance
Ejemplo n.º 7
0
 def create(self, validated_data):
     owner = validated_data.get('created_by')
     try:
         instance, created = BadgeCheckHelper.get_or_create_assertion(
             url=validated_data.get('url', None),
             imagefile=validated_data.get('image', None),
             assertion=validated_data.get('assertion', None),
             created_by=owner,
         )
         if not created:
             instance.acceptance = BadgeInstance.ACCEPTANCE_ACCEPTED
             instance.save()
             raise RestframeworkValidationError([{'name': "DUPLICATE_BADGE", 'description': "You already have this badge in your backpack"}])
         owner.publish()  # update BadgeUser.cached_badgeinstances()
     except DjangoValidationError as e:
         raise RestframeworkValidationError(e.args[0])
     return instance
Ejemplo n.º 8
0
 def create(self, validated_data):
     owner = validated_data.get('created_by')
     try:
         instance, created = BadgeCheckHelper.get_or_create_assertion(
             url=validated_data.get('url', None),
             imagefile=validated_data.get('image', None),
             assertion=validated_data.get('assertion', None),
             created_by=owner,
         )
         if not created:
             if instance.acceptance == BadgeInstance.ACCEPTANCE_ACCEPTED:
                 raise RestframeworkValidationError([{'name': "DUPLICATE_BADGE", 'description': "You already have this badge in your backpack"}])
             instance.acceptance = BadgeInstance.ACCEPTANCE_ACCEPTED
             instance.save()
         owner.publish()  # update BadgeUser.cached_badgeinstances()
     except DjangoValidationError as e:
         raise RestframeworkValidationError(e.args[0])
     return instance
Ejemplo n.º 9
0
def update_issuedon_imported_assertion(self, assertion_entityid):

    try:
        assertion = BadgeInstance.objects.get(entity_id=assertion_entityid)
    except BadgeInstance.DoesNotExist:
        return {
            'success': False,
            'assertion': assertion_entityid,
            'message': "No such assertion."
        }

    if not assertion.source_url:
        return {
            'success': False,
            'assertion': assertion_entityid,
            'message': "Not an imported assertion."
        }

    assertion_obo = BadgeCheckHelper.get_assertion_obo(assertion)
    if not assertion_obo:
        return {
            'success':
            False,
            'assertion':
            assertion_entityid,
            'message':
            "Unable to fetch assertion with source_url={}".format(
                assertion.source_url)
        }

    original_issuedOn_date = dateutil.parser.parse(assertion_obo['issuedOn'])
    updated = False

    if original_issuedOn_date != assertion.issued_on:
        assertion.issued_on = original_issuedOn_date
        assertion.save()
        updated = True

    return {
        'success': True,
        'assertion': assertion.entity_id,
        'source_url': assertion.source_url,
        'updated': updated
    }
Ejemplo n.º 10
0
def update_issuedon_imported_assertion(self, assertion_entityid):

    try:
        assertion = BadgeInstance.objects.get(entity_id=assertion_entityid)
    except BadgeInstance.DoesNotExist:
        return {
            'success': False,
            'assertion': assertion_entityid,
            'message': "No such assertion."
        }

    if not assertion.source_url:
        return {
            'success': False,
            'assertion': assertion_entityid,
            'message': "Not an imported assertion."
        }

    assertion_obo = BadgeCheckHelper.get_assertion_obo(assertion)
    if not assertion_obo:
        return {
            'success': False,
            'assertion': assertion_entityid,
            'message': "Unable to fetch assertion with source_url={}".format(assertion.source_url)
        }

    original_issuedOn_date = dateutil.parser.parse(assertion_obo['issuedOn'])
    updated = False

    if original_issuedOn_date != assertion.issued_on:
        assertion.issued_on = original_issuedOn_date
        assertion.save()
        updated = True

    return {
        'success': True,
        'assertion': assertion.entity_id,
        'source_url': assertion.source_url,
        'updated': updated
    }