update to django 3.0 & asgi
This commit is contained in:
@@ -1,3 +1,9 @@
|
||||
import json
|
||||
|
||||
from django.core import serializers
|
||||
from django.core.exceptions import ImproperlyConfigured
|
||||
from django.core.serializers.json import DjangoJSONEncoder
|
||||
from django.http import HttpResponse
|
||||
from django.views.generic import TemplateView
|
||||
|
||||
from bots.forms import BotForm
|
||||
@@ -38,4 +44,83 @@ class BaseBotConfigView(CabinetViewMixin, TemplateView):
|
||||
ctx = super(BaseBotConfigView, self).get_context_data(**kwargs)
|
||||
ctx['bot_form'], ctx['config_form'] = self.get_forms() if forms is None else forms
|
||||
ctx['bot_module'] = self.get_content_type().model_class()
|
||||
return ctx
|
||||
return ctx
|
||||
|
||||
|
||||
# django-braces
|
||||
class AjaxResponseMixin(object):
|
||||
"""
|
||||
Mixin allows you to define alternative methods for ajax requests. Similar
|
||||
to the normal get, post, and put methods, you can use get_ajax, post_ajax,
|
||||
and put_ajax.
|
||||
"""
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
request_method = request.method.lower()
|
||||
|
||||
if request.is_ajax() and request_method in self.http_method_names:
|
||||
handler = getattr(self, "{0}_ajax".format(request_method),
|
||||
self.http_method_not_allowed)
|
||||
self.request = request
|
||||
self.args = args
|
||||
self.kwargs = kwargs
|
||||
return handler(request, *args, **kwargs)
|
||||
|
||||
return super(AjaxResponseMixin, self).dispatch(
|
||||
request, *args, **kwargs)
|
||||
|
||||
def get_ajax(self, request, *args, **kwargs):
|
||||
return self.get(request, *args, **kwargs)
|
||||
|
||||
def post_ajax(self, request, *args, **kwargs):
|
||||
return self.post(request, *args, **kwargs)
|
||||
|
||||
def put_ajax(self, request, *args, **kwargs):
|
||||
return self.get(request, *args, **kwargs)
|
||||
|
||||
def delete_ajax(self, request, *args, **kwargs):
|
||||
return self.get(request, *args, **kwargs)
|
||||
|
||||
|
||||
class JSONResponseMixin(object):
|
||||
"""
|
||||
A mixin that allows you to easily serialize simple data such as a dict or
|
||||
Django models.
|
||||
"""
|
||||
content_type = None
|
||||
json_dumps_kwargs = None
|
||||
json_encoder_class = DjangoJSONEncoder
|
||||
|
||||
def get_content_type(self):
|
||||
if self.content_type is not None and not isinstance(self.content_type, str):
|
||||
raise ImproperlyConfigured(
|
||||
'{0} is missing a content type. Define {0}.content_type, '
|
||||
'or override {0}.get_content_type().'.format(
|
||||
self.__class__.__name__))
|
||||
return self.content_type or "application/json"
|
||||
|
||||
def get_json_dumps_kwargs(self):
|
||||
if self.json_dumps_kwargs is None:
|
||||
self.json_dumps_kwargs = {}
|
||||
self.json_dumps_kwargs.setdefault('ensure_ascii', False)
|
||||
return self.json_dumps_kwargs
|
||||
|
||||
def render_json_response(self, context_dict, status=200):
|
||||
"""
|
||||
Limited serialization for shipping plain data. Do not use for models
|
||||
or other complex or custom objects.
|
||||
"""
|
||||
json_context = json.dumps(
|
||||
context_dict,
|
||||
cls=self.json_encoder_class,
|
||||
**self.get_json_dumps_kwargs()).encode('utf-8')
|
||||
return HttpResponse(json_context,
|
||||
content_type=self.get_content_type(),
|
||||
status=status)
|
||||
|
||||
def render_json_object_response(self, objects, **kwargs):
|
||||
"""
|
||||
Serializes objects using Django's builtin JSON serializer. Additional
|
||||
kwargs can be used the same way for django.core.serializers.serialize.
|
||||
"""
|
||||
json_data = serializers.serialize("json", objects, **kwargs)
|
||||
return HttpResponse(json_data, content_type=self.get_content_type())
|
||||
|
@@ -1,4 +1,3 @@
|
||||
from braces.views import AjaxResponseMixin, JSONResponseMixin
|
||||
from django.contrib import messages
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
@@ -15,7 +14,7 @@ from jsonrpc import JSONRPCResponseManager
|
||||
|
||||
from bots.models import TelegramBot
|
||||
from bots.modules import BOT_MODULES
|
||||
from bots.utils import BaseBotConfigView
|
||||
from bots.utils import BaseBotConfigView, JSONResponseMixin, AjaxResponseMixin
|
||||
from cabinet.utils import CabinetViewMixin
|
||||
from config.utils import AllowCORSMixin
|
||||
|
||||
|
Reference in New Issue
Block a user