demo-int-table/.vscode/PythonImportHelper-v2-Compl...

1199 lines
56 KiB
JSON

[
{
"label": "django.db.models.deletion",
"kind": 6,
"isExtraImport": true,
"importPath": "django.db.models.deletion",
"description": "django.db.models.deletion",
"detail": "django.db.models.deletion",
"documentation": {}
},
{
"label": "migrations",
"importPath": "django.db",
"description": "django.db",
"isExtraImport": true,
"detail": "django.db",
"documentation": {}
},
{
"label": "models",
"importPath": "django.db",
"description": "django.db",
"isExtraImport": true,
"detail": "django.db",
"documentation": {}
},
{
"label": "models",
"importPath": "django.db",
"description": "django.db",
"isExtraImport": true,
"detail": "django.db",
"documentation": {}
},
{
"label": "models",
"importPath": "django.db",
"description": "django.db",
"isExtraImport": true,
"detail": "django.db",
"documentation": {}
},
{
"label": "migrations",
"importPath": "django.db",
"description": "django.db",
"isExtraImport": true,
"detail": "django.db",
"documentation": {}
},
{
"label": "models",
"importPath": "django.db",
"description": "django.db",
"isExtraImport": true,
"detail": "django.db",
"documentation": {}
},
{
"label": "models",
"importPath": "django.db",
"description": "django.db",
"isExtraImport": true,
"detail": "django.db",
"documentation": {}
},
{
"label": "migrations",
"importPath": "django.db",
"description": "django.db",
"isExtraImport": true,
"detail": "django.db",
"documentation": {}
},
{
"label": "models",
"importPath": "django.db",
"description": "django.db",
"isExtraImport": true,
"detail": "django.db",
"documentation": {}
},
{
"label": "models",
"importPath": "django.db",
"description": "django.db",
"isExtraImport": true,
"detail": "django.db",
"documentation": {}
},
{
"label": "admin",
"importPath": "django.contrib",
"description": "django.contrib",
"isExtraImport": true,
"detail": "django.contrib",
"documentation": {}
},
{
"label": "admin",
"importPath": "django.contrib",
"description": "django.contrib",
"isExtraImport": true,
"detail": "django.contrib",
"documentation": {}
},
{
"label": "admin",
"importPath": "django.contrib",
"description": "django.contrib",
"isExtraImport": true,
"detail": "django.contrib",
"documentation": {}
},
{
"label": "admin",
"importPath": "django.contrib",
"description": "django.contrib",
"isExtraImport": true,
"detail": "django.contrib",
"documentation": {}
},
{
"label": "AppConfig",
"importPath": "django.apps",
"description": "django.apps",
"isExtraImport": true,
"detail": "django.apps",
"documentation": {}
},
{
"label": "AppConfig",
"importPath": "django.apps",
"description": "django.apps",
"isExtraImport": true,
"detail": "django.apps",
"documentation": {}
},
{
"label": "AppConfig",
"importPath": "django.apps",
"description": "django.apps",
"isExtraImport": true,
"detail": "django.apps",
"documentation": {}
},
{
"label": "json",
"kind": 6,
"isExtraImport": true,
"importPath": "json",
"description": "json",
"detail": "json",
"documentation": {}
},
{
"label": "routers",
"importPath": "rest_framework",
"description": "rest_framework",
"isExtraImport": true,
"detail": "rest_framework",
"documentation": {}
},
{
"label": "serializers",
"importPath": "rest_framework",
"description": "rest_framework",
"isExtraImport": true,
"detail": "rest_framework",
"documentation": {}
},
{
"label": "viewsets",
"importPath": "rest_framework",
"description": "rest_framework",
"isExtraImport": true,
"detail": "rest_framework",
"documentation": {}
},
{
"label": "status",
"importPath": "rest_framework",
"description": "rest_framework",
"isExtraImport": true,
"detail": "rest_framework",
"documentation": {}
},
{
"label": "routers",
"importPath": "rest_framework",
"description": "rest_framework",
"isExtraImport": true,
"detail": "rest_framework",
"documentation": {}
},
{
"label": "serializers",
"importPath": "rest_framework",
"description": "rest_framework",
"isExtraImport": true,
"detail": "rest_framework",
"documentation": {}
},
{
"label": "viewsets",
"importPath": "rest_framework",
"description": "rest_framework",
"isExtraImport": true,
"detail": "rest_framework",
"documentation": {}
},
{
"label": "serializers",
"importPath": "rest_framework",
"description": "rest_framework",
"isExtraImport": true,
"detail": "rest_framework",
"documentation": {}
},
{
"label": "viewsets",
"importPath": "rest_framework",
"description": "rest_framework",
"isExtraImport": true,
"detail": "rest_framework",
"documentation": {}
},
{
"label": "logging",
"kind": 6,
"isExtraImport": true,
"importPath": "logging",
"description": "logging",
"detail": "logging",
"documentation": {}
},
{
"label": "TestCase",
"importPath": "django.test",
"description": "django.test",
"isExtraImport": true,
"detail": "django.test",
"documentation": {}
},
{
"label": "TestCase",
"importPath": "django.test",
"description": "django.test",
"isExtraImport": true,
"detail": "django.test",
"documentation": {}
},
{
"label": "TestCase",
"importPath": "django.test",
"description": "django.test",
"isExtraImport": true,
"detail": "django.test",
"documentation": {}
},
{
"label": "io",
"kind": 6,
"isExtraImport": true,
"importPath": "io",
"description": "io",
"detail": "io",
"documentation": {}
},
{
"label": "base64",
"kind": 6,
"isExtraImport": true,
"importPath": "base64",
"description": "base64",
"detail": "base64",
"documentation": {}
},
{
"label": "cv2",
"kind": 6,
"isExtraImport": true,
"importPath": "cv2",
"description": "cv2",
"detail": "cv2",
"documentation": {}
},
{
"label": "numpy",
"kind": 6,
"isExtraImport": true,
"importPath": "numpy",
"description": "numpy",
"detail": "numpy",
"documentation": {}
},
{
"label": "JSONParser",
"importPath": "rest_framework.parsers",
"description": "rest_framework.parsers",
"isExtraImport": true,
"detail": "rest_framework.parsers",
"documentation": {}
},
{
"label": "MultiPartParser",
"importPath": "rest_framework.parsers",
"description": "rest_framework.parsers",
"isExtraImport": true,
"detail": "rest_framework.parsers",
"documentation": {}
},
{
"label": "APIView",
"importPath": "rest_framework.views",
"description": "rest_framework.views",
"isExtraImport": true,
"detail": "rest_framework.views",
"documentation": {}
},
{
"label": "JsonResponse",
"importPath": "django.http",
"description": "django.http",
"isExtraImport": true,
"detail": "django.http",
"documentation": {}
},
{
"label": "get_object_or_404",
"importPath": "django.shortcuts",
"description": "django.shortcuts",
"isExtraImport": true,
"detail": "django.shortcuts",
"documentation": {}
},
{
"label": "render",
"importPath": "django.shortcuts",
"description": "django.shortcuts",
"isExtraImport": true,
"detail": "django.shortcuts",
"documentation": {}
},
{
"label": "parse_image",
"importPath": "api.tracer",
"description": "api.tracer",
"isExtraImport": true,
"detail": "api.tracer",
"documentation": {}
},
{
"label": "read_image",
"importPath": "api.tracer",
"description": "api.tracer",
"isExtraImport": true,
"detail": "api.tracer",
"documentation": {}
},
{
"label": "numpy_zip_str_to_arr",
"importPath": "api.tracer",
"description": "api.tracer",
"isExtraImport": true,
"detail": "api.tracer",
"documentation": {}
},
{
"label": "os",
"kind": 6,
"isExtraImport": true,
"importPath": "os",
"description": "os",
"detail": "os",
"documentation": {}
},
{
"label": "get_asgi_application",
"importPath": "django.core.asgi",
"description": "django.core.asgi",
"isExtraImport": true,
"detail": "django.core.asgi",
"documentation": {}
},
{
"label": "Path",
"importPath": "pathlib",
"description": "pathlib",
"isExtraImport": true,
"detail": "pathlib",
"documentation": {}
},
{
"label": "load_dotenv",
"importPath": "dotenv",
"description": "dotenv",
"isExtraImport": true,
"detail": "dotenv",
"documentation": {}
},
{
"label": "include",
"importPath": "django.urls",
"description": "django.urls",
"isExtraImport": true,
"detail": "django.urls",
"documentation": {}
},
{
"label": "path",
"importPath": "django.urls",
"description": "django.urls",
"isExtraImport": true,
"detail": "django.urls",
"documentation": {}
},
{
"label": "static",
"importPath": "django.conf.urls.static",
"description": "django.conf.urls.static",
"isExtraImport": true,
"detail": "django.conf.urls.static",
"documentation": {}
},
{
"label": "csrf_exempt",
"importPath": "django.views.decorators.csrf",
"description": "django.views.decorators.csrf",
"isExtraImport": true,
"detail": "django.views.decorators.csrf",
"documentation": {}
},
{
"label": "views",
"importPath": "api",
"description": "api",
"isExtraImport": true,
"detail": "api",
"documentation": {}
},
{
"label": "views",
"importPath": "frontImages",
"description": "frontImages",
"isExtraImport": true,
"detail": "frontImages",
"documentation": {}
},
{
"label": "views",
"importPath": "object",
"description": "object",
"isExtraImport": true,
"detail": "object",
"documentation": {}
},
{
"label": "get_wsgi_application",
"importPath": "django.core.wsgi",
"description": "django.core.wsgi",
"isExtraImport": true,
"detail": "django.core.wsgi",
"documentation": {}
},
{
"label": "frontImages.models",
"kind": 6,
"isExtraImport": true,
"importPath": "frontImages.models",
"description": "frontImages.models",
"detail": "frontImages.models",
"documentation": {}
},
{
"label": "django.core.validators",
"kind": 6,
"isExtraImport": true,
"importPath": "django.core.validators",
"description": "django.core.validators",
"detail": "django.core.validators",
"documentation": {}
},
{
"label": "MinValueValidator",
"importPath": "django.core.validators",
"description": "django.core.validators",
"isExtraImport": true,
"detail": "django.core.validators",
"documentation": {}
},
{
"label": "MaxValueValidator",
"importPath": "django.core.validators",
"description": "django.core.validators",
"isExtraImport": true,
"detail": "django.core.validators",
"documentation": {}
},
{
"label": "object.models",
"kind": 6,
"isExtraImport": true,
"importPath": "object.models",
"description": "object.models",
"detail": "object.models",
"documentation": {}
},
{
"label": "Image",
"importPath": "PIL",
"description": "PIL",
"isExtraImport": true,
"detail": "PIL",
"documentation": {}
},
{
"label": "ValidationError",
"importPath": "django.core.exceptions",
"description": "django.core.exceptions",
"isExtraImport": true,
"detail": "django.core.exceptions",
"documentation": {}
},
{
"label": "ValidationError",
"importPath": "django.core.exceptions",
"description": "django.core.exceptions",
"isExtraImport": true,
"detail": "django.core.exceptions",
"documentation": {}
},
{
"label": "django_filters",
"kind": 6,
"isExtraImport": true,
"importPath": "django_filters",
"description": "django_filters",
"detail": "django_filters",
"documentation": {}
},
{
"label": "sys",
"kind": 6,
"isExtraImport": true,
"importPath": "sys",
"description": "sys",
"detail": "sys",
"documentation": {}
},
{
"label": "Migration",
"kind": 6,
"importPath": "back.api.migrations.0001_initial",
"description": "back.api.migrations.0001_initial",
"peekOfCode": "class Migration(migrations.Migration):\n initial = True\n dependencies = [\n ]\n operations = [\n migrations.CreateModel(\n name='Floorplan',\n fields=[\n ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),\n ('title', models.CharField(max_length=200)),",
"detail": "back.api.migrations.0001_initial",
"documentation": {}
},
{
"label": "ApiConfig",
"kind": 6,
"importPath": "back.api.apps",
"description": "back.api.apps",
"peekOfCode": "class ApiConfig(AppConfig):\n default_auto_field = 'django.db.models.BigAutoField'\n name = 'api'",
"detail": "back.api.apps",
"documentation": {}
},
{
"label": "Product",
"kind": 6,
"importPath": "back.api.models",
"description": "back.api.models",
"peekOfCode": "class Product(models.Model):\n title = models.CharField(max_length=100)\n description = models.TextField(default=None, null=True)\n model3d = models.FileField(default=None, blank=True, null=True, upload_to=\"files\")\n image1 = models.ImageField(default=None, blank=True, null=True, upload_to=\"files\")\n image2 = models.ImageField(default=None, blank=True, null=True, upload_to=\"files\")\n image3 = models.ImageField(default=None, blank=True, null=True, upload_to=\"files\")\n def __str__(self):\n return self.title\nclass Floorplan(models.Model):",
"detail": "back.api.models",
"documentation": {}
},
{
"label": "Floorplan",
"kind": 6,
"importPath": "back.api.models",
"description": "back.api.models",
"peekOfCode": "class Floorplan(models.Model):\n title = models.CharField(max_length=200)\n np_field = models.TextField()\n d_size = models.IntegerField(null=True, blank=True)\n d_border = models.IntegerField(null=True, blank=True)\n paths = models.TextField()\nclass FloorplanPoints(models.Model):\n plan = models.OneToOneField(Floorplan, on_delete=models.CASCADE, primary_key=True)\n points = models.JSONField()",
"detail": "back.api.models",
"documentation": {}
},
{
"label": "FloorplanPoints",
"kind": 6,
"importPath": "back.api.models",
"description": "back.api.models",
"peekOfCode": "class FloorplanPoints(models.Model):\n plan = models.OneToOneField(Floorplan, on_delete=models.CASCADE, primary_key=True)\n points = models.JSONField()",
"detail": "back.api.models",
"documentation": {}
},
{
"label": "ProductSerializer",
"kind": 6,
"importPath": "back.api.serializers",
"description": "back.api.serializers",
"peekOfCode": "class ProductSerializer(serializers.HyperlinkedModelSerializer):\n class Meta:\n model = Product\n fields = [\n \"id\",\n \"title\",\n \"description\",\n \"model3d\",\n \"image1\",\n \"image2\",",
"detail": "back.api.serializers",
"documentation": {}
},
{
"label": "FloorplanSerializer",
"kind": 6,
"importPath": "back.api.serializers",
"description": "back.api.serializers",
"peekOfCode": "class FloorplanSerializer(serializers.ModelSerializer):\n class Meta:\n model = Floorplan\n fields = [\n \"id\",\n \"title\",\n \"np_field\",\n \"d_border\",\n \"d_size\",\n \"paths\",",
"detail": "back.api.serializers",
"documentation": {}
},
{
"label": "FloorplanListSerializer",
"kind": 6,
"importPath": "back.api.serializers",
"description": "back.api.serializers",
"peekOfCode": "class FloorplanListSerializer(serializers.ModelSerializer):\n class Meta:\n model = Floorplan\n fields = [\n \"id\",\n \"title\",\n ]\nclass FloorplanPointsSerializer(serializers.ModelSerializer):\n class Meta:\n model = FloorplanPoints",
"detail": "back.api.serializers",
"documentation": {}
},
{
"label": "FloorplanPointsSerializer",
"kind": 6,
"importPath": "back.api.serializers",
"description": "back.api.serializers",
"peekOfCode": "class FloorplanPointsSerializer(serializers.ModelSerializer):\n class Meta:\n model = FloorplanPoints\n fields = [\n \"points\",\n \"plan\",\n ]",
"detail": "back.api.serializers",
"documentation": {}
},
{
"label": "logger",
"kind": 5,
"importPath": "back.api.serializers",
"description": "back.api.serializers",
"peekOfCode": "logger = logging.getLogger(\"root\")\nclass ProductSerializer(serializers.HyperlinkedModelSerializer):\n class Meta:\n model = Product\n fields = [\n \"id\",\n \"title\",\n \"description\",\n \"model3d\",\n \"image1\",",
"detail": "back.api.serializers",
"documentation": {}
},
{
"label": "numpy_arr_to_zip_str",
"kind": 2,
"importPath": "back.api.tracer",
"description": "back.api.tracer",
"peekOfCode": "def numpy_arr_to_zip_str(arr):\n f = io.BytesIO()\n np.savez_compressed(f, arr=arr)\n return base64.b64encode(f.getvalue())\ndef numpy_zip_str_to_arr(zip_str):\n f = io.BytesIO(base64.b64decode(zip_str))\n return np.load(f)['arr'].tolist()\ndef read_image(content: bytes) -> np.ndarray:\n \"\"\"\n Image bytes to OpenCV image",
"detail": "back.api.tracer",
"documentation": {}
},
{
"label": "numpy_zip_str_to_arr",
"kind": 2,
"importPath": "back.api.tracer",
"description": "back.api.tracer",
"peekOfCode": "def numpy_zip_str_to_arr(zip_str):\n f = io.BytesIO(base64.b64decode(zip_str))\n return np.load(f)['arr'].tolist()\ndef read_image(content: bytes) -> np.ndarray:\n \"\"\"\n Image bytes to OpenCV image\n :param content: Image bytes\n :returns OpenCV image\n :raises TypeError: If content is not bytes\n :raises ValueError: If content does not represent an image",
"detail": "back.api.tracer",
"documentation": {}
},
{
"label": "read_image",
"kind": 2,
"importPath": "back.api.tracer",
"description": "back.api.tracer",
"peekOfCode": "def read_image(content: bytes) -> np.ndarray:\n \"\"\"\n Image bytes to OpenCV image\n :param content: Image bytes\n :returns OpenCV image\n :raises TypeError: If content is not bytes\n :raises ValueError: If content does not represent an image\n \"\"\"\n if not isinstance(content, bytes):\n raise TypeError(f\"Expected 'content' to be bytes, received: {type(content)}\")",
"detail": "back.api.tracer",
"documentation": {}
},
{
"label": "parse_image",
"kind": 2,
"importPath": "back.api.tracer",
"description": "back.api.tracer",
"peekOfCode": "def parse_image(img):\n (img_h, img_w) = img.shape[:2]\n t = 1920\n w = t\n h = int((img_h / img_w) * t)\n img = cv2.resize(img, (w, h))\n gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)\n gray = 255 - gray\n gray = cv2.threshold(gray, 250, 255, cv2.THRESH_BINARY)[1]\n gray = cv2.blur(gray, (10, 5))",
"detail": "back.api.tracer",
"documentation": {}
},
{
"label": "Products",
"kind": 6,
"importPath": "back.api.views",
"description": "back.api.views",
"peekOfCode": "class Products(APIView):\n def get(self, request):\n tasks = Product.objects.all()\n serializer = ProductSerializer(tasks, many=True)\n return JsonResponse(serializer.data, safe=False)\n def post(self, request):\n data = JSONParser().parse(request)\n serializer = ProductSerializer(data=data)\n if serializer.is_valid():\n serializer.save()",
"detail": "back.api.views",
"documentation": {}
},
{
"label": "FloorplanView",
"kind": 6,
"importPath": "back.api.views",
"description": "back.api.views",
"peekOfCode": "class FloorplanView(APIView):\n parser_classes = (\n MultiPartParser,\n JSONParser,\n )\n def post(self, request):\n try:\n file = request.FILES[\"demo\"]\n logger.info(file.__dict__)\n res = parse_image(read_image(file.read()))",
"detail": "back.api.views",
"documentation": {}
},
{
"label": "FloorplanPointsView",
"kind": 6,
"importPath": "back.api.views",
"description": "back.api.views",
"peekOfCode": "class FloorplanPointsView(APIView):\n def get(self, request, id):\n if FloorplanPoints.objects.filter(plan=id).exists():\n points = FloorplanPoints.objects.get(plan=id)\n serializer = FloorplanPointsSerializer(points, many=False)\n return JsonResponse(serializer.data, safe=False)\n else:\n return JsonResponse(\n \"No item\", safe=False, status=status.HTTP_400_BAD_REQUEST\n )",
"detail": "back.api.views",
"documentation": {}
},
{
"label": "logger",
"kind": 5,
"importPath": "back.api.views",
"description": "back.api.views",
"peekOfCode": "logger = logging.getLogger(\"root\")\nclass Products(APIView):\n def get(self, request):\n tasks = Product.objects.all()\n serializer = ProductSerializer(tasks, many=True)\n return JsonResponse(serializer.data, safe=False)\n def post(self, request):\n data = JSONParser().parse(request)\n serializer = ProductSerializer(data=data)\n if serializer.is_valid():",
"detail": "back.api.views",
"documentation": {}
},
{
"label": "application",
"kind": 5,
"importPath": "back.back.asgi",
"description": "back.back.asgi",
"peekOfCode": "application = get_asgi_application()",
"detail": "back.back.asgi",
"documentation": {}
},
{
"label": "BASE_DIR",
"kind": 5,
"importPath": "back.back.settings",
"description": "back.back.settings",
"peekOfCode": "BASE_DIR = Path(__file__).resolve().parent.parent\n# Quick-start development settings - unsuitable for production\n# See https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/\n# SECURITY WARNING: keep the secret key used in production secret!\nSECRET_KEY = \"django-insecure-ly8rk@zb&ne*-063&q-=81!d@8q0hh4$&q!_7mtqc81(rlejqd\"\n# SECURITY WARNING: don't run with debug turned on in production!\nDEBUG = True\nALLOWED_HOSTS = [\n \"localhost\",\n \"localhost:8000\",",
"detail": "back.back.settings",
"documentation": {}
},
{
"label": "SECRET_KEY",
"kind": 5,
"importPath": "back.back.settings",
"description": "back.back.settings",
"peekOfCode": "SECRET_KEY = \"django-insecure-ly8rk@zb&ne*-063&q-=81!d@8q0hh4$&q!_7mtqc81(rlejqd\"\n# SECURITY WARNING: don't run with debug turned on in production!\nDEBUG = True\nALLOWED_HOSTS = [\n \"localhost\",\n \"localhost:8000\",\n \"127.0.0.1\",\n \"127.0.0.1:8000\",\n \"192.168.103.159\",\n \"192.168.103.159:8000\",",
"detail": "back.back.settings",
"documentation": {}
},
{
"label": "DEBUG",
"kind": 5,
"importPath": "back.back.settings",
"description": "back.back.settings",
"peekOfCode": "DEBUG = True\nALLOWED_HOSTS = [\n \"localhost\",\n \"localhost:8000\",\n \"127.0.0.1\",\n \"127.0.0.1:8000\",\n \"192.168.103.159\",\n \"192.168.103.159:8000\",\n \"back\",\n \"back:8000\",",
"detail": "back.back.settings",
"documentation": {}
},
{
"label": "ALLOWED_HOSTS",
"kind": 5,
"importPath": "back.back.settings",
"description": "back.back.settings",
"peekOfCode": "ALLOWED_HOSTS = [\n \"localhost\",\n \"localhost:8000\",\n \"127.0.0.1\",\n \"127.0.0.1:8000\",\n \"192.168.103.159\",\n \"192.168.103.159:8000\",\n \"back\",\n \"back:8000\",\n \"demo.kustarshina.ru\",",
"detail": "back.back.settings",
"documentation": {}
},
{
"label": "CSRF_TRUSTED_ORIGINS",
"kind": 5,
"importPath": "back.back.settings",
"description": "back.back.settings",
"peekOfCode": "CSRF_TRUSTED_ORIGINS = (\n \"https://demo.kustarshina.ru\",\n \"http://localhost\",\n \"http://localhost:3011\",\n \"http://localhost:4173\",\n \"http://localhost:5173\",\n \"http://192.168.103.159:3011\",\n \"http://192.168.103.159\",\n)\nCORS_ORIGIN_ALLOW_ALL = False",
"detail": "back.back.settings",
"documentation": {}
},
{
"label": "CORS_ORIGIN_ALLOW_ALL",
"kind": 5,
"importPath": "back.back.settings",
"description": "back.back.settings",
"peekOfCode": "CORS_ORIGIN_ALLOW_ALL = False\nCORS_ORIGIN_WHITELIST = [\n \"null\",\n \"http://localhost\",\n \"http://localhost:3011\",\n \"http://localhost:4173\",\n \"http://localhost:5173\",\n \"http://localhost:8000\",\n \"http://192.168.103.159:3011\",\n \"http://127.0.0.1\",",
"detail": "back.back.settings",
"documentation": {}
},
{
"label": "CORS_ORIGIN_WHITELIST",
"kind": 5,
"importPath": "back.back.settings",
"description": "back.back.settings",
"peekOfCode": "CORS_ORIGIN_WHITELIST = [\n \"null\",\n \"http://localhost\",\n \"http://localhost:3011\",\n \"http://localhost:4173\",\n \"http://localhost:5173\",\n \"http://localhost:8000\",\n \"http://192.168.103.159:3011\",\n \"http://127.0.0.1\",\n \"http://192.168.103.159\",",
"detail": "back.back.settings",
"documentation": {}
},
{
"label": "INSTALLED_APPS",
"kind": 5,
"importPath": "back.back.settings",
"description": "back.back.settings",
"peekOfCode": "INSTALLED_APPS = [\n \"django.contrib.admin\",\n \"django.contrib.auth\",\n \"django.contrib.contenttypes\",\n \"django.contrib.sessions\",\n \"django.contrib.messages\",\n \"django.contrib.staticfiles\",\n \"corsheaders\",\n \"django_filters\",\n 'django_extensions',",
"detail": "back.back.settings",
"documentation": {}
},
{
"label": "MIDDLEWARE",
"kind": 5,
"importPath": "back.back.settings",
"description": "back.back.settings",
"peekOfCode": "MIDDLEWARE = [\n \"django.middleware.security.SecurityMiddleware\",\n \"django.contrib.sessions.middleware.SessionMiddleware\",\n \"django.middleware.common.CommonMiddleware\",\n \"corsheaders.middleware.CorsMiddleware\",\n \"django.middleware.csrf.CsrfViewMiddleware\",\n \"django.contrib.auth.middleware.AuthenticationMiddleware\",\n \"django.contrib.messages.middleware.MessageMiddleware\",\n \"django.middleware.clickjacking.XFrameOptionsMiddleware\",\n]",
"detail": "back.back.settings",
"documentation": {}
},
{
"label": "ROOT_URLCONF",
"kind": 5,
"importPath": "back.back.settings",
"description": "back.back.settings",
"peekOfCode": "ROOT_URLCONF = \"back.urls\"\nTEMPLATES = [\n {\n \"BACKEND\": \"django.template.backends.django.DjangoTemplates\",\n \"DIRS\": [],\n \"APP_DIRS\": True,\n \"OPTIONS\": {\n \"context_processors\": [\n \"django.template.context_processors.debug\",\n \"django.template.context_processors.request\",",
"detail": "back.back.settings",
"documentation": {}
},
{
"label": "TEMPLATES",
"kind": 5,
"importPath": "back.back.settings",
"description": "back.back.settings",
"peekOfCode": "TEMPLATES = [\n {\n \"BACKEND\": \"django.template.backends.django.DjangoTemplates\",\n \"DIRS\": [],\n \"APP_DIRS\": True,\n \"OPTIONS\": {\n \"context_processors\": [\n \"django.template.context_processors.debug\",\n \"django.template.context_processors.request\",\n \"django.contrib.auth.context_processors.auth\",",
"detail": "back.back.settings",
"documentation": {}
},
{
"label": "WSGI_APPLICATION",
"kind": 5,
"importPath": "back.back.settings",
"description": "back.back.settings",
"peekOfCode": "WSGI_APPLICATION = \"back.wsgi.application\"\n# Database\n# https://docs.djangoproject.com/en/5.0/ref/settings/#databases\nDATABASES = {\n \"default\": {\n \"ENGINE\": \"django.db.backends.postgresql_psycopg2\", # change engine to this\n \"NAME\": \"interactive_table\", # db name you created above\n \"HOST\": os.getenv(\"DB_HOST\"), # usually localhost\n \"USER\": os.getenv(\"DB_USER\"), # db user you created above or postgres default\n \"PASSWORD\": os.getenv(",
"detail": "back.back.settings",
"documentation": {}
},
{
"label": "DATABASES",
"kind": 5,
"importPath": "back.back.settings",
"description": "back.back.settings",
"peekOfCode": "DATABASES = {\n \"default\": {\n \"ENGINE\": \"django.db.backends.postgresql_psycopg2\", # change engine to this\n \"NAME\": \"interactive_table\", # db name you created above\n \"HOST\": os.getenv(\"DB_HOST\"), # usually localhost\n \"USER\": os.getenv(\"DB_USER\"), # db user you created above or postgres default\n \"PASSWORD\": os.getenv(\n \"DB_PASSWORD\"\n ), # db password you created above or postgres\n \"PORT\": os.getenv(\"DB_PORT\"), # usually 5432",
"detail": "back.back.settings",
"documentation": {}
},
{
"label": "AUTH_PASSWORD_VALIDATORS",
"kind": 5,
"importPath": "back.back.settings",
"description": "back.back.settings",
"peekOfCode": "AUTH_PASSWORD_VALIDATORS = [\n {\n \"NAME\": \"django.contrib.auth.password_validation.UserAttributeSimilarityValidator\",\n },\n {\n \"NAME\": \"django.contrib.auth.password_validation.MinimumLengthValidator\",\n },\n {\n \"NAME\": \"django.contrib.auth.password_validation.CommonPasswordValidator\",\n },",
"detail": "back.back.settings",
"documentation": {}
},
{
"label": "LANGUAGE_CODE",
"kind": 5,
"importPath": "back.back.settings",
"description": "back.back.settings",
"peekOfCode": "LANGUAGE_CODE = \"en-us\"\nTIME_ZONE = \"UTC\"\nUSE_I18N = True\nUSE_TZ = True\n# Static files (CSS, JavaScript, Images)\n# https://docs.djangoproject.com/en/5.0/howto/static-files/\nSTATIC_URL = \"static/\"\n# Default primary key field type\n# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field\nREST_FRAMEWORK = {",
"detail": "back.back.settings",
"documentation": {}
},
{
"label": "TIME_ZONE",
"kind": 5,
"importPath": "back.back.settings",
"description": "back.back.settings",
"peekOfCode": "TIME_ZONE = \"UTC\"\nUSE_I18N = True\nUSE_TZ = True\n# Static files (CSS, JavaScript, Images)\n# https://docs.djangoproject.com/en/5.0/howto/static-files/\nSTATIC_URL = \"static/\"\n# Default primary key field type\n# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field\nREST_FRAMEWORK = {\n 'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend']",
"detail": "back.back.settings",
"documentation": {}
},
{
"label": "USE_I18N",
"kind": 5,
"importPath": "back.back.settings",
"description": "back.back.settings",
"peekOfCode": "USE_I18N = True\nUSE_TZ = True\n# Static files (CSS, JavaScript, Images)\n# https://docs.djangoproject.com/en/5.0/howto/static-files/\nSTATIC_URL = \"static/\"\n# Default primary key field type\n# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field\nREST_FRAMEWORK = {\n 'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend']\n}",
"detail": "back.back.settings",
"documentation": {}
},
{
"label": "USE_TZ",
"kind": 5,
"importPath": "back.back.settings",
"description": "back.back.settings",
"peekOfCode": "USE_TZ = True\n# Static files (CSS, JavaScript, Images)\n# https://docs.djangoproject.com/en/5.0/howto/static-files/\nSTATIC_URL = \"static/\"\n# Default primary key field type\n# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field\nREST_FRAMEWORK = {\n 'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend']\n}\nCRISPY_ALLOWED_TEMPLATE_PACKS = \"bootstrap4\"",
"detail": "back.back.settings",
"documentation": {}
},
{
"label": "STATIC_URL",
"kind": 5,
"importPath": "back.back.settings",
"description": "back.back.settings",
"peekOfCode": "STATIC_URL = \"static/\"\n# Default primary key field type\n# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field\nREST_FRAMEWORK = {\n 'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend']\n}\nCRISPY_ALLOWED_TEMPLATE_PACKS = \"bootstrap4\"\nCRISPY_TEMPLATE_PACK = \"bootstrap4\"\nDEFAULT_AUTO_FIELD = \"django.db.models.BigAutoField\"\nLOGGING = {",
"detail": "back.back.settings",
"documentation": {}
},
{
"label": "REST_FRAMEWORK",
"kind": 5,
"importPath": "back.back.settings",
"description": "back.back.settings",
"peekOfCode": "REST_FRAMEWORK = {\n 'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend']\n}\nCRISPY_ALLOWED_TEMPLATE_PACKS = \"bootstrap4\"\nCRISPY_TEMPLATE_PACK = \"bootstrap4\"\nDEFAULT_AUTO_FIELD = \"django.db.models.BigAutoField\"\nLOGGING = {\n \"version\": 1,\n \"disable_existing_loggers\": False,\n \"formatters\": {",
"detail": "back.back.settings",
"documentation": {}
},
{
"label": "CRISPY_ALLOWED_TEMPLATE_PACKS",
"kind": 5,
"importPath": "back.back.settings",
"description": "back.back.settings",
"peekOfCode": "CRISPY_ALLOWED_TEMPLATE_PACKS = \"bootstrap4\"\nCRISPY_TEMPLATE_PACK = \"bootstrap4\"\nDEFAULT_AUTO_FIELD = \"django.db.models.BigAutoField\"\nLOGGING = {\n \"version\": 1,\n \"disable_existing_loggers\": False,\n \"formatters\": {\n \"verbose\": {\n \"format\": \"{levelname} {asctime} {module} {process:d} {thread:d} {message}\",\n \"style\": \"{\",",
"detail": "back.back.settings",
"documentation": {}
},
{
"label": "CRISPY_TEMPLATE_PACK",
"kind": 5,
"importPath": "back.back.settings",
"description": "back.back.settings",
"peekOfCode": "CRISPY_TEMPLATE_PACK = \"bootstrap4\"\nDEFAULT_AUTO_FIELD = \"django.db.models.BigAutoField\"\nLOGGING = {\n \"version\": 1,\n \"disable_existing_loggers\": False,\n \"formatters\": {\n \"verbose\": {\n \"format\": \"{levelname} {asctime} {module} {process:d} {thread:d} {message}\",\n \"style\": \"{\",\n },",
"detail": "back.back.settings",
"documentation": {}
},
{
"label": "DEFAULT_AUTO_FIELD",
"kind": 5,
"importPath": "back.back.settings",
"description": "back.back.settings",
"peekOfCode": "DEFAULT_AUTO_FIELD = \"django.db.models.BigAutoField\"\nLOGGING = {\n \"version\": 1,\n \"disable_existing_loggers\": False,\n \"formatters\": {\n \"verbose\": {\n \"format\": \"{levelname} {asctime} {module} {process:d} {thread:d} {message}\",\n \"style\": \"{\",\n },\n \"large\": {",
"detail": "back.back.settings",
"documentation": {}
},
{
"label": "LOGGING",
"kind": 5,
"importPath": "back.back.settings",
"description": "back.back.settings",
"peekOfCode": "LOGGING = {\n \"version\": 1,\n \"disable_existing_loggers\": False,\n \"formatters\": {\n \"verbose\": {\n \"format\": \"{levelname} {asctime} {module} {process:d} {thread:d} {message}\",\n \"style\": \"{\",\n },\n \"large\": {\n \"format\": \"%(asctime)s %(levelname)s %(process)d %(filename)s:%(lineno)d \"",
"detail": "back.back.settings",
"documentation": {}
},
{
"label": "router",
"kind": 5,
"importPath": "back.back.urls",
"description": "back.back.urls",
"peekOfCode": "router = routers.DefaultRouter()\nrouter.register(r'api/front_img', frontimg_views.ImageViewSet)\nrouter.register(r'api/obj/scene', object_views.Scene3DViewSet)\nrouter.register(r'api/obj/element', object_views.Element3DViewSet)\nrouter.register(r'api/obj/clickable', object_views.ClickableAreaViewSet)\nurlpatterns = [\n path('', include(router.urls)),\n path(\"admin/\", admin.site.urls),\n path(\"api/products\", csrf_exempt(views.Products.as_view())),\n path(\"api/floorplan/\", csrf_exempt(views.FloorplanView.as_view())),",
"detail": "back.back.urls",
"documentation": {}
},
{
"label": "urlpatterns",
"kind": 5,
"importPath": "back.back.urls",
"description": "back.back.urls",
"peekOfCode": "urlpatterns = [\n path('', include(router.urls)),\n path(\"admin/\", admin.site.urls),\n path(\"api/products\", csrf_exempt(views.Products.as_view())),\n path(\"api/floorplan/\", csrf_exempt(views.FloorplanView.as_view())),\n path(\"api/floorplan/<str:id>\", csrf_exempt(views.FloorplanView.as_view())),\n path(\"api/floorplan/<str:id>/points\", csrf_exempt(views.FloorplanPointsView.as_view())),\n] + static('/files', document_root='files')",
"detail": "back.back.urls",
"documentation": {}
},
{
"label": "application",
"kind": 5,
"importPath": "back.back.wsgi",
"description": "back.back.wsgi",
"peekOfCode": "application = get_wsgi_application()",
"detail": "back.back.wsgi",
"documentation": {}
},
{
"label": "Migration",
"kind": 6,
"importPath": "back.frontImages.migrations.0001_initial",
"description": "back.frontImages.migrations.0001_initial",
"peekOfCode": "class Migration(migrations.Migration):\n initial = True\n dependencies = [\n ]\n operations = [\n migrations.CreateModel(\n name='Image',\n fields=[\n ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),\n ('file', models.ImageField(upload_to=frontImages.models.group_based_upload_to)),",
"detail": "back.frontImages.migrations.0001_initial",
"documentation": {}
},
{
"label": "FrontimagesConfig",
"kind": 6,
"importPath": "back.frontImages.apps",
"description": "back.frontImages.apps",
"peekOfCode": "class FrontimagesConfig(AppConfig):\n default_auto_field = 'django.db.models.BigAutoField'\n name = 'frontImages'",
"detail": "back.frontImages.apps",
"documentation": {}
},
{
"label": "Image",
"kind": 6,
"importPath": "back.frontImages.models",
"description": "back.frontImages.models",
"peekOfCode": "class Image(models.Model):\n file = models.ImageField(upload_to=group_based_upload_to)\n alt = models.CharField(max_length=255)\n title = models.CharField(max_length=255)\n def __str__(self):\n return self.title",
"detail": "back.frontImages.models",
"documentation": {}
},
{
"label": "group_based_upload_to",
"kind": 2,
"importPath": "back.frontImages.models",
"description": "back.frontImages.models",
"peekOfCode": "def group_based_upload_to(instance, filename):\n logger.info(instance)\n return \"files/image/{}/{}/{}\".format(\n type(instance).__name__.lower(), instance.id, filename\n )\nclass Image(models.Model):\n file = models.ImageField(upload_to=group_based_upload_to)\n alt = models.CharField(max_length=255)\n title = models.CharField(max_length=255)\n def __str__(self):",
"detail": "back.frontImages.models",
"documentation": {}
},
{
"label": "logger",
"kind": 5,
"importPath": "back.frontImages.models",
"description": "back.frontImages.models",
"peekOfCode": "logger = logging.getLogger(\"root\")\ndef group_based_upload_to(instance, filename):\n logger.info(instance)\n return \"files/image/{}/{}/{}\".format(\n type(instance).__name__.lower(), instance.id, filename\n )\nclass Image(models.Model):\n file = models.ImageField(upload_to=group_based_upload_to)\n alt = models.CharField(max_length=255)\n title = models.CharField(max_length=255)",
"detail": "back.frontImages.models",
"documentation": {}
},
{
"label": "ImageSerializer",
"kind": 6,
"importPath": "back.frontImages.serializers",
"description": "back.frontImages.serializers",
"peekOfCode": "class ImageSerializer(serializers.ModelSerializer):\n file = serializers.ImageField(use_url=False)\n class Meta:\n model = Image\n fields = \"__all__\"",
"detail": "back.frontImages.serializers",
"documentation": {}
},
{
"label": "ImageViewSet",
"kind": 6,
"importPath": "back.frontImages.views",
"description": "back.frontImages.views",
"peekOfCode": "class ImageViewSet(viewsets.ModelViewSet):\n queryset = Image.objects.all()\n serializer_class = ImageSerializer",
"detail": "back.frontImages.views",
"documentation": {}
},
{
"label": "Migration",
"kind": 6,
"importPath": "back.object.migrations.0001_initial",
"description": "back.object.migrations.0001_initial",
"peekOfCode": "class Migration(migrations.Migration):\n initial = True\n dependencies = [\n ]\n operations = [\n migrations.CreateModel(\n name='Element3D',\n fields=[\n ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),\n ('model_file', models.FileField(upload_to=object.models.group_based_upload_to)),",
"detail": "back.object.migrations.0001_initial",
"documentation": {}
},
{
"label": "Scene3DAdmin",
"kind": 6,
"importPath": "back.object.admin",
"description": "back.object.admin",
"peekOfCode": "class Scene3DAdmin(admin.ModelAdmin):\n filter_horizontal = ('elements',)\nadmin.site.register(Scene3D, Scene3DAdmin)\nadmin.site.register(Element3D)\nadmin.site.register(ClickableArea)",
"detail": "back.object.admin",
"documentation": {}
},
{
"label": "ObjectConfig",
"kind": 6,
"importPath": "back.object.apps",
"description": "back.object.apps",
"peekOfCode": "class ObjectConfig(AppConfig):\n default_auto_field = 'django.db.models.BigAutoField'\n name = 'object'",
"detail": "back.object.apps",
"documentation": {}
},
{
"label": "Element3D",
"kind": 6,
"importPath": "back.object.models",
"description": "back.object.models",
"peekOfCode": "class Element3D(models.Model):\n parent = models.ForeignKey(\"self\", on_delete=models.PROTECT, blank=True, null=True)\n model_file = models.FileField(upload_to=group_based_upload_to)\n name = models.CharField(max_length=255)\n description = models.TextField()\n def __str__(self):\n return self.name\nclass Scene3D(models.Model):\n filter_horizontal = (\"elements\",)\n name = models.CharField(",
"detail": "back.object.models",
"documentation": {}
},
{
"label": "Scene3D",
"kind": 6,
"importPath": "back.object.models",
"description": "back.object.models",
"peekOfCode": "class Scene3D(models.Model):\n filter_horizontal = (\"elements\",)\n name = models.CharField(\n max_length=120,\n )\n elements = models.ManyToManyField(Element3D)\n min_distance = models.IntegerField(\n validators=[MinValueValidator(1), MaxValueValidator(600)], blank=True, null=True\n )\n max_distance = models.IntegerField(",
"detail": "back.object.models",
"documentation": {}
},
{
"label": "ClickableArea",
"kind": 6,
"importPath": "back.object.models",
"description": "back.object.models",
"peekOfCode": "class ClickableArea(models.Model):\n name = models.CharField(\"название\", max_length=255)\n description = models.TextField(\"описание\")\n object_name = models.CharField(\"название объекта\", max_length=255)\n target_name = models.CharField(\n max_length=200,\n blank=True,\n null=True,\n )\n target = models.ForeignKey(",
"detail": "back.object.models",
"documentation": {}
},
{
"label": "group_based_upload_to",
"kind": 2,
"importPath": "back.object.models",
"description": "back.object.models",
"peekOfCode": "def group_based_upload_to(instance, filename):\n logger.info(instance)\n return \"files/image/{}/{}/{}\".format(\n type(instance).__name__.lower(), instance.id, filename\n )\nclass Element3D(models.Model):\n parent = models.ForeignKey(\"self\", on_delete=models.PROTECT, blank=True, null=True)\n model_file = models.FileField(upload_to=group_based_upload_to)\n name = models.CharField(max_length=255)\n description = models.TextField()",
"detail": "back.object.models",
"documentation": {}
},
{
"label": "maximum_size_validator",
"kind": 2,
"importPath": "back.object.models",
"description": "back.object.models",
"peekOfCode": "def maximum_size_validator(image):\n max_width = 512\n max_height = 512\n img = Image.open(image)\n fw, fh = img.size\n if fw > max_width or fh > max_height:\n raise ValidationError(\"Height or Width is larger than what is allowed\")\nclass ClickableArea(models.Model):\n name = models.CharField(\"название\", max_length=255)\n description = models.TextField(\"описание\")",
"detail": "back.object.models",
"documentation": {}
},
{
"label": "logger",
"kind": 5,
"importPath": "back.object.models",
"description": "back.object.models",
"peekOfCode": "logger = logging.getLogger(\"root\")\ndef group_based_upload_to(instance, filename):\n logger.info(instance)\n return \"files/image/{}/{}/{}\".format(\n type(instance).__name__.lower(), instance.id, filename\n )\nclass Element3D(models.Model):\n parent = models.ForeignKey(\"self\", on_delete=models.PROTECT, blank=True, null=True)\n model_file = models.FileField(upload_to=group_based_upload_to)\n name = models.CharField(max_length=255)",
"detail": "back.object.models",
"documentation": {}
},
{
"label": "Element3DSerializer",
"kind": 6,
"importPath": "back.object.serializers",
"description": "back.object.serializers",
"peekOfCode": "class Element3DSerializer(serializers.ModelSerializer):\n model_file = serializers.ImageField(use_url=False)\n class Meta:\n model = Element3D\n fields = \"__all__\"\nclass Scene3DSerializer(serializers.ModelSerializer):\n elements = Element3DSerializer(many=True)\n hdr_gainmap = serializers.FileField(use_url=False)\n hdr_json = serializers.FileField(use_url=False)\n hdr_webp = serializers.FileField(use_url=False)",
"detail": "back.object.serializers",
"documentation": {}
},
{
"label": "Scene3DSerializer",
"kind": 6,
"importPath": "back.object.serializers",
"description": "back.object.serializers",
"peekOfCode": "class Scene3DSerializer(serializers.ModelSerializer):\n elements = Element3DSerializer(many=True)\n hdr_gainmap = serializers.FileField(use_url=False)\n hdr_json = serializers.FileField(use_url=False)\n hdr_webp = serializers.FileField(use_url=False)\n class Meta:\n model = Scene3D\n fields = \"__all__\"\n depth = 2\nclass ClickableAreaSerializer(serializers.ModelSerializer):",
"detail": "back.object.serializers",
"documentation": {}
},
{
"label": "ClickableAreaSerializer",
"kind": 6,
"importPath": "back.object.serializers",
"description": "back.object.serializers",
"peekOfCode": "class ClickableAreaSerializer(serializers.ModelSerializer):\n class Meta:\n model = ClickableArea\n fields = ['image']",
"detail": "back.object.serializers",
"documentation": {}
},
{
"label": "validate_image_size",
"kind": 2,
"importPath": "back.object.validators",
"description": "back.object.validators",
"peekOfCode": "def validate_image_size(image):\n max_size = 2 * 1024 * 1024 # Максимальный размер файла в байтах (2MB)\n if image.file.size > max_size:\n raise ValidationError(f\"Размер файла не должен превышать {max_size / (1024 * 1024)}MB\")",
"detail": "back.object.validators",
"documentation": {}
},
{
"label": "NumberInFilter",
"kind": 6,
"importPath": "back.object.views",
"description": "back.object.views",
"peekOfCode": "class NumberInFilter(django_filters.BaseInFilter, django_filters.NumberFilter):\n pass\nclass ClickableAreaViewSet(viewsets.ModelViewSet):\n queryset = ClickableArea.objects.all()\n serializer_class = ClickableAreaSerializer\n filterset_fields = (\n \"source\",\n \"object_name\",\n )\nclass Scene3DViewSet(viewsets.ModelViewSet):",
"detail": "back.object.views",
"documentation": {}
},
{
"label": "ClickableAreaViewSet",
"kind": 6,
"importPath": "back.object.views",
"description": "back.object.views",
"peekOfCode": "class ClickableAreaViewSet(viewsets.ModelViewSet):\n queryset = ClickableArea.objects.all()\n serializer_class = ClickableAreaSerializer\n filterset_fields = (\n \"source\",\n \"object_name\",\n )\nclass Scene3DViewSet(viewsets.ModelViewSet):\n queryset = Scene3D.objects.all()\n serializer_class = Scene3DSerializer",
"detail": "back.object.views",
"documentation": {}
},
{
"label": "Scene3DViewSet",
"kind": 6,
"importPath": "back.object.views",
"description": "back.object.views",
"peekOfCode": "class Scene3DViewSet(viewsets.ModelViewSet):\n queryset = Scene3D.objects.all()\n serializer_class = Scene3DSerializer\n filterset_fields = (\n \"name\",\n )\nclass Element3DFilter(django_filters.rest_framework.FilterSet):\n parent = NumberInFilter(\n field_name=\"parent\",\n lookup_expr=\"in\",",
"detail": "back.object.views",
"documentation": {}
},
{
"label": "Element3DFilter",
"kind": 6,
"importPath": "back.object.views",
"description": "back.object.views",
"peekOfCode": "class Element3DFilter(django_filters.rest_framework.FilterSet):\n parent = NumberInFilter(\n field_name=\"parent\",\n lookup_expr=\"in\",\n )\n parent__isnull = django_filters.BooleanFilter(\n field_name=\"parent\",\n lookup_expr=\"isnull\",\n )\nclass Element3DViewSet(viewsets.ModelViewSet):",
"detail": "back.object.views",
"documentation": {}
},
{
"label": "Element3DViewSet",
"kind": 6,
"importPath": "back.object.views",
"description": "back.object.views",
"peekOfCode": "class Element3DViewSet(viewsets.ModelViewSet):\n queryset = Element3D.objects.all()\n serializer_class = Element3DSerializer\n filterset_class = Element3DFilter",
"detail": "back.object.views",
"documentation": {}
},
{
"label": "main",
"kind": 2,
"importPath": "back.manage",
"description": "back.manage",
"peekOfCode": "def main():\n \"\"\"Run administrative tasks.\"\"\"\n os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'back.settings')\n try:\n from django.core.management import execute_from_command_line\n except ImportError as exc:\n raise ImportError(\n \"Couldn't import Django. Are you sure it's installed and \"\n \"available on your PYTHONPATH environment variable? Did you \"\n \"forget to activate a virtual environment?\"",
"detail": "back.manage",
"documentation": {}
}
]