Beispiel #1
0
def get_unicef_user(backend, details, response, *args, **kwargs):
    from .models import User
    if details.get('email'):
        filters = {'email': details['email']}
    elif details.get('unique_name'):
        filters = {'username': details['unique_name']}
    elif details.get('username'):
        filters = {'username': details['username']}

    try:
        user = User.objects.get(**filters)
        social = user.social_auth.get()
        user.social_user = social
        created = False
    except (User.DoesNotExist, UserSocialAuth.DoesNotExist):
        for k, v in response.items():
            if k in ['email', 'family_name', 'unique_name']:
                details[k] = v
        try:
            sync = Synchronizer()
            data = sync.get_user(details['email'])

            for k, v in data.items():
                details[k] = v

        except Exception as e:
            process_exception(e)

        user, created = User.objects.get_or_create(
            username=details['unique_name'],
            defaults={
                'first_name': details.get('givenName', ''),
                'last_name': details.get('surname', ''),
                'job_title': details.get('jobTitle', ''),
                'display_name': details.get('displayName',
                                            details['unique_name']),
                'email': details.get('email', ''),
                'azure_id': details.get('id'),
            })
        social, __ = UserSocialAuth.objects.get_or_create(
            user=user, provider=backend.name, uid=user.username)
        user.social_user = social
    return {
        'user': user,
        'social': social,
        'uid': details.get('id'),
        'is_new': created
    }
Beispiel #2
0
 def syncronize(self, max_records=None, callback=None):
     logger.debug("Start Azure user synchronization")
     results = SyncResult()
     try:
         for i, user_info in enumerate(iter(self)):
             pk, values = self.get_record(user_info)
             if self.is_valid(values):
                 user, created = self.user_model.objects.update_or_create(**pk,
                                                                          defaults=values)
                 if callback:
                     callback(user=user, is_new=created)
                 self.echo([user, created])
                 results.log(user, created)
             else:
                 results.log(user_info)
             if max_records and i > max_records:
                 break
     except Exception as e:
         logger.exception(e)
         process_exception(e)
         raise
     logger.debug(f"End Azure user synchronization: {results}")
     return results
Beispiel #3
0
def raise_with_message_user(request):
    try:
        raise IndexError('IndexError')
    except Exception as e:
        process_exception(e, request, message_user=True)
    return HttpResponse()
def test_simple(rf, django_app, admin_user):
    error = process_exception(PermissionDenied())
    assert error.pk
def test_simple(rf, django_app, admin_user):
    request = rf.get("/my/home/url")
    error = process_exception(PermissionDenied())
    assert error.pk