tiffank1802 commited on
Commit
b286809
·
1 Parent(s): a84bc4e

Fix FEniCS import - use lazy loading to avoid import during migrations

Browse files
Files changed (1) hide show
  1. backend/poisson/views.py +15 -1
backend/poisson/views.py CHANGED
@@ -4,10 +4,15 @@ from rest_framework.response import Response
4
  from django.http import JsonResponse
5
  from .models import PoissonSimulation
6
  from .serializers import PoissonSimulationSerializer, PoissonSimulationCreateSerializer
7
- from .solver import solve_poisson, generate_preview_mesh
8
  import traceback
9
 
10
 
 
 
 
 
 
 
11
  class PoissonSimulationViewSet(viewsets.ModelViewSet):
12
  """ViewSet pour les simulations Poisson"""
13
 
@@ -26,6 +31,9 @@ class PoissonSimulationViewSet(viewsets.ModelViewSet):
26
  simulation = serializer.save(status='running')
27
 
28
  try:
 
 
 
29
  # Récupérer les paramètres
30
  params = simulation.get_parameters_dict()
31
 
@@ -91,6 +99,9 @@ class PoissonSimulationViewSet(viewsets.ModelViewSet):
91
  def preview_mesh(self, request):
92
  """Génère un aperçu du maillage sans résoudre l'équation"""
93
  try:
 
 
 
94
  # Construire les paramètres depuis la requête
95
  data = request.data
96
  params = {
@@ -121,6 +132,9 @@ class PoissonSimulationViewSet(viewsets.ModelViewSet):
121
  simulation.save()
122
 
123
  try:
 
 
 
124
  params = simulation.get_parameters_dict()
125
  result = solve_poisson(params)
126
 
 
4
  from django.http import JsonResponse
5
  from .models import PoissonSimulation
6
  from .serializers import PoissonSimulationSerializer, PoissonSimulationCreateSerializer
 
7
  import traceback
8
 
9
 
10
+ def get_solver():
11
+ """Lazy import of solver to avoid FEniCS import at module load time"""
12
+ from .solver import solve_poisson, generate_preview_mesh
13
+ return solve_poisson, generate_preview_mesh
14
+
15
+
16
  class PoissonSimulationViewSet(viewsets.ModelViewSet):
17
  """ViewSet pour les simulations Poisson"""
18
 
 
31
  simulation = serializer.save(status='running')
32
 
33
  try:
34
+ # Lazy import solver
35
+ solve_poisson, _ = get_solver()
36
+
37
  # Récupérer les paramètres
38
  params = simulation.get_parameters_dict()
39
 
 
99
  def preview_mesh(self, request):
100
  """Génère un aperçu du maillage sans résoudre l'équation"""
101
  try:
102
+ # Lazy import solver
103
+ _, generate_preview_mesh = get_solver()
104
+
105
  # Construire les paramètres depuis la requête
106
  data = request.data
107
  params = {
 
132
  simulation.save()
133
 
134
  try:
135
+ # Lazy import solver
136
+ solve_poisson, _ = get_solver()
137
+
138
  params = simulation.get_parameters_dict()
139
  result = solve_poisson(params)
140