backend part environment
This commit is contained in:
parent
28a2a3ebff
commit
5aeee4f291
|
@ -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": {}
|
||||||
},
|
},
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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)
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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]
|
||||||
|
|
Loading…
Reference in New Issue