create emailer version 1

This commit is contained in:
msosic97
2022-04-11 15:09:06 +02:00
parent 94c4245c8a
commit 37541f19a0
4850 changed files with 715130 additions and 0 deletions

View File

@@ -0,0 +1,39 @@
import asyncio
import functools
import os
from django.core.exceptions import SynchronousOnlyOperation
def async_unsafe(message):
"""
Decorator to mark functions as async-unsafe. Someone trying to access
the function while in an async context will get an error message.
"""
def decorator(func):
@functools.wraps(func)
def inner(*args, **kwargs):
if not os.environ.get("DJANGO_ALLOW_ASYNC_UNSAFE"):
# Detect a running event loop in this thread.
try:
asyncio.get_running_loop()
except RuntimeError:
pass
else:
raise SynchronousOnlyOperation(message)
# Pass onward.
return func(*args, **kwargs)
return inner
# If the message is actually a function, then be a no-arguments decorator.
if callable(message):
func = message
message = (
"You cannot call this from an async context - use a thread or "
"sync_to_async."
)
return decorator(func)
else:
return decorator