old_console/console/api/base.py
2024-11-02 14:12:45 +03:00

25 lines
921 B
Python

from django.contrib.auth.decorators import login_required, user_passes_test
from rest_framework.decorators import api_view
from rest_framework.response import Response
from console.serializers import CelerySerializer
from core.decorators import log_url
from storage.tasks import dump_db
@log_url
@login_required
@user_passes_test(lambda u: u.is_superuser)
@api_view(('GET',))
def download_db_snapshot(request):
""" Downloads fixture to restore current DB state, for test and dev purposes only
request->models allow to control which tables would be downloaded, for example 'auth,console.userinfo """
dump_models = request.GET.get('models', tuple())
if dump_models:
dump_models = dump_models.split(',')
res = dump_db.apply_async(args=(request.user.pk, dump_models))
serializer = CelerySerializer(data={'task_id': res.id})
serializer.is_valid()
return Response(serializer.data)