mirror of
				https://github.com/graphql-python/graphene-django.git
				synced 2025-11-04 09:57:53 +03:00 
			
		
		
		
	Merge branch 'main' into fix-m2m-filter-type
This commit is contained in:
		
						commit
						ee6f1a6821
					
				| 
						 | 
				
			
			@ -9,32 +9,32 @@ from .types import DjangoDebug
 | 
			
		|||
 | 
			
		||||
class DjangoDebugContext:
 | 
			
		||||
    def __init__(self):
 | 
			
		||||
        self.debug_promise = None
 | 
			
		||||
        self.promises = []
 | 
			
		||||
        self.debug_result = None
 | 
			
		||||
        self.results = []
 | 
			
		||||
        self.object = DjangoDebug(sql=[], exceptions=[])
 | 
			
		||||
        self.enable_instrumentation()
 | 
			
		||||
 | 
			
		||||
    def get_debug_promise(self):
 | 
			
		||||
        if not self.debug_promise:
 | 
			
		||||
            self.debug_promise = Promise.all(self.promises)
 | 
			
		||||
            self.promises = []
 | 
			
		||||
        return self.debug_promise.then(self.on_resolve_all_promises).get()
 | 
			
		||||
    def get_debug_result(self):
 | 
			
		||||
        if not self.debug_result:
 | 
			
		||||
            self.debug_result = self.results
 | 
			
		||||
            self.results = []
 | 
			
		||||
        return self.on_resolve_all_results()
 | 
			
		||||
 | 
			
		||||
    def on_resolve_error(self, value):
 | 
			
		||||
        if hasattr(self, "object"):
 | 
			
		||||
            self.object.exceptions.append(wrap_exception(value))
 | 
			
		||||
        return Promise.reject(value)
 | 
			
		||||
        return value
 | 
			
		||||
 | 
			
		||||
    def on_resolve_all_promises(self, values):
 | 
			
		||||
        if self.promises:
 | 
			
		||||
            self.debug_promise = None
 | 
			
		||||
            return self.get_debug_promise()
 | 
			
		||||
    def on_resolve_all_results(self):
 | 
			
		||||
        if self.results:
 | 
			
		||||
            self.debug_result = None
 | 
			
		||||
            return self.get_debug_result()
 | 
			
		||||
        self.disable_instrumentation()
 | 
			
		||||
        return self.object
 | 
			
		||||
 | 
			
		||||
    def add_promise(self, promise):
 | 
			
		||||
        if self.debug_promise:
 | 
			
		||||
            self.promises.append(promise)
 | 
			
		||||
    def add_result(self, result):
 | 
			
		||||
        if self.debug_result:
 | 
			
		||||
            self.results.append(result)
 | 
			
		||||
 | 
			
		||||
    def enable_instrumentation(self):
 | 
			
		||||
        # This is thread-safe because database connections are thread-local.
 | 
			
		||||
| 
						 | 
				
			
			@ -62,10 +62,10 @@ class DjangoDebugMiddleware:
 | 
			
		|||
                    )
 | 
			
		||||
                )
 | 
			
		||||
        if info.schema.get_type("DjangoDebug") == info.return_type:
 | 
			
		||||
            return context.django_debug.get_debug_promise()
 | 
			
		||||
            return context.django_debug.get_debug_result()
 | 
			
		||||
        try:
 | 
			
		||||
            promise = next(root, info, **args)
 | 
			
		||||
            result = next(root, info, **args)
 | 
			
		||||
        except Exception as e:
 | 
			
		||||
            return context.django_debug.on_resolve_error(e)
 | 
			
		||||
        context.django_debug.add_promise(promise)
 | 
			
		||||
        return promise
 | 
			
		||||
        context.django_debug.add_result(result)
 | 
			
		||||
        return result
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user