mirror of
https://github.com/leaders-of-digital-9-task/backend.git
synced 2024-11-14 05:26:34 +03:00
fixed celery
This commit is contained in:
parent
1e19f7edd0
commit
8b88e97489
|
@ -1,5 +0,0 @@
|
||||||
__version__ = "0.1.0"
|
|
||||||
__version_info__ = tuple(
|
|
||||||
int(num) if num.isdigit() else num
|
|
||||||
for num in __version__.replace("-", ".", 1).split(".")
|
|
||||||
)
|
|
|
@ -5,7 +5,7 @@ from pathlib import Path
|
||||||
|
|
||||||
import environ
|
import environ
|
||||||
|
|
||||||
ROOT_DIR = Path(__file__).resolve(strict=True).parent.parent.parent
|
ROOT_DIR = Path(__file__).resolve(strict=True).parent.parent.parent.parent
|
||||||
# image_markuper/
|
# image_markuper/
|
||||||
APPS_DIR = ROOT_DIR / "image_markuper"
|
APPS_DIR = ROOT_DIR / "image_markuper"
|
||||||
env = environ.Env()
|
env = environ.Env()
|
||||||
|
@ -71,11 +71,7 @@ THIRD_PARTY_APPS = [
|
||||||
"drf_spectacular",
|
"drf_spectacular",
|
||||||
]
|
]
|
||||||
|
|
||||||
LOCAL_APPS = [
|
LOCAL_APPS = ["users", "dicom"]
|
||||||
"image_markuper.users",
|
|
||||||
"image_markuper.dicom"
|
|
||||||
# Your stuff: custom apps go here
|
|
||||||
]
|
|
||||||
# https://docs.djangoproject.com/en/dev/ref/settings/#installed-apps
|
# https://docs.djangoproject.com/en/dev/ref/settings/#installed-apps
|
||||||
INSTALLED_APPS = DJANGO_APPS + THIRD_PARTY_APPS + LOCAL_APPS
|
INSTALLED_APPS = DJANGO_APPS + THIRD_PARTY_APPS + LOCAL_APPS
|
||||||
|
|
|
@ -180,7 +180,7 @@ class ProjectSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Project
|
model = Project
|
||||||
fields = ["files", "slug", "created"]
|
fields = ["files", "slug", "created", "stl"]
|
||||||
|
|
||||||
|
|
||||||
class PatologyGenerateSerializer(serializers.Serializer):
|
class PatologyGenerateSerializer(serializers.Serializer):
|
||||||
|
|
|
@ -9,6 +9,7 @@ User = get_user_model()
|
||||||
class Project(models.Model):
|
class Project(models.Model):
|
||||||
user = models.ForeignKey(User, related_name="projects", on_delete=models.CASCADE)
|
user = models.ForeignKey(User, related_name="projects", on_delete=models.CASCADE)
|
||||||
slug = models.SlugField(max_length=10)
|
slug = models.SlugField(max_length=10)
|
||||||
|
stl = models.FileField(blank=True)
|
||||||
|
|
||||||
created = models.DateTimeField(auto_now_add=True)
|
created = models.DateTimeField(auto_now_add=True)
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ def process_files(
|
||||||
if content_type == "DICOM medical imaging data":
|
if content_type == "DICOM medical imaging data":
|
||||||
Dicom.objects.create(file=file, project=project, user=user)
|
Dicom.objects.create(file=file, project=project, user=user)
|
||||||
elif "Zip" in content_type:
|
elif "Zip" in content_type:
|
||||||
dit_path = f"tmp/{generate_charset(10)}"
|
dit_path = f"/tmp/{generate_charset(10)}"
|
||||||
os.mkdir(dit_path)
|
os.mkdir(dit_path)
|
||||||
with zipfile.ZipFile(file.temporary_file_path(), "r") as zip_ref:
|
with zipfile.ZipFile(file.temporary_file_path(), "r") as zip_ref:
|
||||||
zip_ref.extractall(dit_path)
|
zip_ref.extractall(dit_path)
|
||||||
|
@ -96,7 +96,7 @@ def generate_3d_point_cloud(project_slug: str):
|
||||||
return point_clouds
|
return point_clouds
|
||||||
|
|
||||||
|
|
||||||
def generate_3d_model(project: Project, thr=800) -> str:
|
def generate_3d_model(project: Project, thr=800):
|
||||||
image = []
|
image = []
|
||||||
for file in project.files.all():
|
for file in project.files.all():
|
||||||
image.append(pydicom.dcmread(file.file.path).pixel_array)
|
image.append(pydicom.dcmread(file.file.path).pixel_array)
|
||||||
|
@ -111,4 +111,9 @@ def generate_3d_model(project: Project, thr=800) -> str:
|
||||||
|
|
||||||
pth = f"/tmp/{generate_charset(4)}.stl"
|
pth = f"/tmp/{generate_charset(4)}.stl"
|
||||||
solid.save(pth)
|
solid.save(pth)
|
||||||
return pth
|
path = Path(pth)
|
||||||
|
with path.open(mode="rb") as f:
|
||||||
|
project.stl = File(f, name=pth.split("/")[-1])
|
||||||
|
project.save()
|
||||||
|
|
||||||
|
os.remove(pth)
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
from dicom.models import Dicom, Project
|
from dicom.models import Dicom, Project
|
||||||
|
from dicom.tasks import process_project
|
||||||
from django.db.models.signals import post_save
|
from django.db.models.signals import post_save
|
||||||
from django.dispatch import receiver
|
from django.dispatch import receiver
|
||||||
from utils.generators import generate_charset
|
from utils.generators import generate_charset
|
||||||
|
@ -12,6 +13,7 @@ def create_project(sender, instance: Project, created, **kwargs):
|
||||||
slug = generate_charset(5)
|
slug = generate_charset(5)
|
||||||
instance.slug = slug
|
instance.slug = slug
|
||||||
instance.save()
|
instance.save()
|
||||||
|
process_project.apply_async(kwargs={"slug": slug})
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_save, sender=Dicom)
|
@receiver(post_save, sender=Dicom)
|
||||||
|
|
|
@ -4,6 +4,7 @@ from dicom.services import generate_3d_model
|
||||||
|
|
||||||
|
|
||||||
@shared_task()
|
@shared_task()
|
||||||
def process_dicom(pk: int):
|
def process_project(slug: str):
|
||||||
generate_3d_model(Project.objects.get(pk=pk))
|
print(slug)
|
||||||
return pk
|
generate_3d_model(Project.objects.get(slug=slug))
|
||||||
|
return slug
|
||||||
|
|
Loading…
Reference in New Issue
Block a user