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 }
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
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