bx-1140-postprocessing #12

Merged
ksenia_mikhailova merged 18 commits from bx-1140-postprocessing into dev 2024-07-30 09:17:41 +03:00
7 changed files with 141 additions and 27 deletions
Showing only changes of commit 5aeee4f291 - Show all commits

View File

@ -168,6 +168,30 @@
"detail": "django.db", "detail": "django.db",
"documentation": {} "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": "migrations",
"importPath": "django.db",
"description": "django.db",
"isExtraImport": true,
"detail": "django.db",
"documentation": {}
},
{ {
"label": "models", "label": "models",
"importPath": "django.db", "importPath": "django.db",
@ -594,6 +618,23 @@
"detail": "object.models", "detail": "object.models",
"documentation": {} "documentation": {}
}, },
{
"label": "colorfield.fields",
"kind": 6,
"isExtraImport": true,
"importPath": "colorfield.fields",
"description": "colorfield.fields",
"detail": "colorfield.fields",
"documentation": {}
},
{
"label": "ColorField",
"importPath": "colorfield.fields",
"description": "colorfield.fields",
"isExtraImport": true,
"detail": "colorfield.fields",
"documentation": {}
},
{ {
"label": "Image", "label": "Image",
"importPath": "PIL", "importPath": "PIL",
@ -1177,12 +1218,30 @@
"detail": "back.object.migrations.0008_rename_can_disabled_element3d_can_not_disable", "detail": "back.object.migrations.0008_rename_can_disabled_element3d_can_not_disable",
"documentation": {} "documentation": {}
}, },
{
"label": "Migration",
"kind": 6,
"importPath": "back.object.migrations.0009_environment_remove_scene3d_hdr_gainmap_and_more",
"description": "back.object.migrations.0009_environment_remove_scene3d_hdr_gainmap_and_more",
"peekOfCode": "class Migration(migrations.Migration):\n dependencies = [\n ('object', '0008_rename_can_disabled_element3d_can_not_disable'),\n ]\n operations = [\n migrations.CreateModel(\n name='Environment',\n fields=[\n ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),\n ('env_displacementmap', models.FileField(blank=True, null=True, upload_to=object.models.group_based_upload_to)),",
"detail": "back.object.migrations.0009_environment_remove_scene3d_hdr_gainmap_and_more",
"documentation": {}
},
{
"label": "Migration",
"kind": 6,
"importPath": "back.object.migrations.0010_environment_clear_color",
"description": "back.object.migrations.0010_environment_clear_color",
"peekOfCode": "class Migration(migrations.Migration):\n dependencies = [\n ('object', '0009_environment_remove_scene3d_hdr_gainmap_and_more'),\n ]\n operations = [\n migrations.AddField(\n model_name='environment',\n name='clear_color',\n field=colorfield.fields.ColorField(blank=True, default=None, image_field=None, max_length=25, null=True, samples=None),\n ),",
"detail": "back.object.migrations.0010_environment_clear_color",
"documentation": {}
},
{ {
"label": "Scene3DAdmin", "label": "Scene3DAdmin",
"kind": 6, "kind": 6,
"importPath": "back.object.admin", "importPath": "back.object.admin",
"description": "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)", "peekOfCode": "class Scene3DAdmin(admin.ModelAdmin):\n filter_horizontal = (\"elements\",)\nadmin.site.register(Environment)\nadmin.site.register(Scene3D, Scene3DAdmin)\nadmin.site.register(Element3D)\nadmin.site.register(ClickableArea)",
"detail": "back.object.admin", "detail": "back.object.admin",
"documentation": {} "documentation": {}
}, },
@ -1195,6 +1254,15 @@
"detail": "back.object.apps", "detail": "back.object.apps",
"documentation": {} "documentation": {}
}, },
{
"label": "Environment",
"kind": 6,
"importPath": "back.object.models",
"description": "back.object.models",
"peekOfCode": "class Environment(models.Model):\n env_displacementmap = models.FileField(\n upload_to=group_based_upload_to, blank=True, null=True\n )\n env_normalmap = models.FileField(\n upload_to=group_based_upload_to, blank=True, null=True\n )\n clear_color = ColorField(blank=True, null=True)\n hdr_gainmap = models.FileField(\n upload_to=group_based_upload_to, blank=True, null=True",
"detail": "back.object.models",
"documentation": {}
},
{ {
"label": "Element3D", "label": "Element3D",
"kind": 6, "kind": 6,
@ -1209,7 +1277,7 @@
"kind": 6, "kind": 6,
"importPath": "back.object.models", "importPath": "back.object.models",
"description": "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(", "peekOfCode": "class Scene3D(models.Model):\n name = models.CharField(max_length=120)\n elements = models.ManyToManyField(Element3D)\n env = models.ForeignKey(Environment, models.RESTRICT, blank=True, null=True)\n min_distance = models.IntegerField(\n default=10,\n validators=[MinValueValidator(1), MaxValueValidator(600)],\n )\n max_distance = models.IntegerField(\n default=20,",
"detail": "back.object.models", "detail": "back.object.models",
"documentation": {} "documentation": {}
}, },
@ -1227,7 +1295,7 @@
"kind": 2, "kind": 2,
"importPath": "back.object.models", "importPath": "back.object.models",
"description": "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(blank=True, null=True)", "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 Environment(models.Model):\n env_displacementmap = models.FileField(\n upload_to=group_based_upload_to, blank=True, null=True\n )\n env_normalmap = models.FileField(",
"detail": "back.object.models", "detail": "back.object.models",
"documentation": {} "documentation": {}
}, },
@ -1245,16 +1313,25 @@
"kind": 5, "kind": 5,
"importPath": "back.object.models", "importPath": "back.object.models",
"description": "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)", "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 Environment(models.Model):\n env_displacementmap = models.FileField(\n upload_to=group_based_upload_to, blank=True, null=True\n )",
"detail": "back.object.models", "detail": "back.object.models",
"documentation": {} "documentation": {}
}, },
{
"label": "EnvironmentSerializer",
"kind": 6,
"importPath": "back.object.serializers",
"description": "back.object.serializers",
"peekOfCode": "class EnvironmentSerializer(serializers.ModelSerializer):\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 env_displacementmap = serializers.FileField(use_url=False)\n env_normalmap = serializers.FileField(use_url=False)\n class Meta:\n model = Environment\n fields = \"__all__\"\nclass Element3DSerializer(serializers.ModelSerializer):",
"detail": "back.object.serializers",
"documentation": {}
},
{ {
"label": "Element3DSerializer", "label": "Element3DSerializer",
"kind": 6, "kind": 6,
"importPath": "back.object.serializers", "importPath": "back.object.serializers",
"description": "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)", "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 env = EnvironmentSerializer()\n class Meta:\n model = Scene3D",
"detail": "back.object.serializers", "detail": "back.object.serializers",
"documentation": {} "documentation": {}
}, },
@ -1263,7 +1340,7 @@
"kind": 6, "kind": 6,
"importPath": "back.object.serializers", "importPath": "back.object.serializers",
"description": "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):", "peekOfCode": "class Scene3DSerializer(serializers.ModelSerializer):\n elements = Element3DSerializer(many=True)\n env = EnvironmentSerializer()\n class Meta:\n model = Scene3D\n fields = \"__all__\"\n depth = 2\nclass ClickableAreaSerializer(serializers.ModelSerializer):\n image = serializers.ImageField(use_url=False)\n class Meta:",
"detail": "back.object.serializers", "detail": "back.object.serializers",
"documentation": {} "documentation": {}
}, },

View File

@ -83,6 +83,7 @@ INSTALLED_APPS = [
"rest_framework", "rest_framework",
"crispy_forms", "crispy_forms",
"crispy_bootstrap4", "crispy_bootstrap4",
"colorfield",
"api", "api",
"frontImages", "frontImages",
"object", "object",

View File

@ -1,9 +1,12 @@
from django.contrib import admin from django.contrib import admin
from .models import ClickableArea, Element3D, Scene3D from .models import ClickableArea, Element3D, Environment, Scene3D
class Scene3DAdmin(admin.ModelAdmin): class Scene3DAdmin(admin.ModelAdmin):
filter_horizontal = ('elements',) filter_horizontal = ("elements",)
admin.site.register(Environment)
admin.site.register(Scene3D, Scene3DAdmin) admin.site.register(Scene3D, Scene3DAdmin)
admin.site.register(Element3D) admin.site.register(Element3D)
admin.site.register(ClickableArea) admin.site.register(ClickableArea)

View File

@ -2,6 +2,7 @@ from PIL import Image
from django.db import models from django.db import models
from django.core.validators import MinValueValidator, MaxValueValidator from django.core.validators import MinValueValidator, MaxValueValidator
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from colorfield.fields import ColorField
import logging import logging
logger = logging.getLogger("root") logger = logging.getLogger("root")
@ -14,6 +15,21 @@ def group_based_upload_to(instance, filename):
) )
class Environment(models.Model):
env_displacementmap = models.FileField(
upload_to=group_based_upload_to, blank=True, null=True
)
env_normalmap = models.FileField(
upload_to=group_based_upload_to, blank=True, null=True
)
clear_color = ColorField(blank=True, null=True)
hdr_gainmap = models.FileField(
upload_to=group_based_upload_to, blank=True, null=True
)
hdr_json = models.FileField(upload_to=group_based_upload_to, blank=True, null=True)
hdr_webp = models.FileField(upload_to=group_based_upload_to, blank=True, null=True)
class Element3D(models.Model): class Element3D(models.Model):
parent = models.ForeignKey("self", on_delete=models.PROTECT, blank=True, null=True) parent = models.ForeignKey("self", on_delete=models.PROTECT, blank=True, null=True)
model_file = models.FileField(upload_to=group_based_upload_to) model_file = models.FileField(upload_to=group_based_upload_to)
@ -27,27 +43,19 @@ class Element3D(models.Model):
class Scene3D(models.Model): class Scene3D(models.Model):
filter_horizontal = ("elements",) name = models.CharField(max_length=120)
name = models.CharField(
max_length=120,
)
elements = models.ManyToManyField(Element3D) elements = models.ManyToManyField(Element3D)
env = models.ForeignKey(Environment, models.RESTRICT, blank=True, null=True)
min_distance = models.IntegerField( min_distance = models.IntegerField(
validators=[MinValueValidator(1), MaxValueValidator(600)], blank=True, null=True default=10,
validators=[MinValueValidator(1), MaxValueValidator(600)],
) )
max_distance = models.IntegerField( max_distance = models.IntegerField(
default=20,
validators=[MinValueValidator(2), MaxValueValidator(1000)], validators=[MinValueValidator(2), MaxValueValidator(1000)],
blank=True,
null=True,
) )
hdr_gainmap = models.FileField(
upload_to=group_based_upload_to, blank=True, null=True
)
hdr_json = models.FileField(upload_to=group_based_upload_to, blank=True, null=True)
hdr_webp = models.FileField(upload_to=group_based_upload_to, blank=True, null=True)
def __str__(self): def __str__(self):
return self.name return self.name

View File

@ -1,5 +1,17 @@
from rest_framework import serializers from rest_framework import serializers
from .models import Scene3D, Element3D, ClickableArea from .models import Scene3D, Element3D, ClickableArea, Environment
class EnvironmentSerializer(serializers.ModelSerializer):
hdr_gainmap = serializers.FileField(use_url=False)
hdr_json = serializers.FileField(use_url=False)
hdr_webp = serializers.FileField(use_url=False)
env_displacementmap = serializers.FileField(use_url=False)
env_normalmap = serializers.FileField(use_url=False)
class Meta:
model = Environment
fields = "__all__"
class Element3DSerializer(serializers.ModelSerializer): class Element3DSerializer(serializers.ModelSerializer):
@ -12,9 +24,7 @@ class Element3DSerializer(serializers.ModelSerializer):
class Scene3DSerializer(serializers.ModelSerializer): class Scene3DSerializer(serializers.ModelSerializer):
elements = Element3DSerializer(many=True) elements = Element3DSerializer(many=True)
hdr_gainmap = serializers.FileField(use_url=False) env = EnvironmentSerializer()
hdr_json = serializers.FileField(use_url=False)
hdr_webp = serializers.FileField(use_url=False)
class Meta: class Meta:
model = Scene3D model = Scene3D

16
poetry.lock generated
View File

@ -63,6 +63,20 @@ tzdata = {version = "*", markers = "sys_platform == \"win32\""}
argon2 = ["argon2-cffi (>=19.1.0)"] argon2 = ["argon2-cffi (>=19.1.0)"]
bcrypt = ["bcrypt"] bcrypt = ["bcrypt"]
[[package]]
name = "django-colorfield"
version = "0.11.0"
description = "color field for django models with a nice color-picker in the admin."
optional = false
python-versions = "*"
files = [
{file = "django-colorfield-0.11.0.tar.gz", hash = "sha256:05c38c8eb2a94938b810a19b2011846391a4ce71d1c92e88a35974fbcc8fc62e"},
{file = "django_colorfield-0.11.0-py3-none-any.whl", hash = "sha256:460f40e6123b6ae0fb51a4eb86fc258fcdc0ea28f75102b685e8209b1eae9ec3"},
]
[package.dependencies]
Pillow = ">=9.0.0"
[[package]] [[package]]
name = "django-cors-headers" name = "django-cors-headers"
version = "4.3.1" version = "4.3.1"
@ -449,4 +463,4 @@ files = [
[metadata] [metadata]
lock-version = "2.0" lock-version = "2.0"
python-versions = "^3.10" python-versions = "^3.10"
content-hash = "be85620e01baf8ceb925bd6fe9283c50da4fc1a97d9f572b92266adb0f44c124" content-hash = "6b760d833dfd807526e05ba86e0e6cddb82ee47ec315f4a51d469aecfd1534e4"

View File

@ -21,6 +21,7 @@ django-filter = "^24.2"
django-crispy-forms = "^2.2" django-crispy-forms = "^2.2"
crispy-bootstrap4 = "^2024.1" crispy-bootstrap4 = "^2024.1"
django-extensions = "^3.2.3" django-extensions = "^3.2.3"
django-colorfield = "^0.11.0"
[build-system] [build-system]