|
| 1 | +from audioop import reverse |
| 2 | +import os |
| 3 | +import re |
| 4 | +from unittest import loader |
| 5 | +from django.shortcuts import redirect |
| 6 | +import subprocess |
1 | 7 | from django.shortcuts import render
|
2 | 8 | from .models import INSEEPatient, WarehousePatient
|
3 | 9 | from .forms import INSEEPatientForm, ImportFileForm
|
|
14 | 20 |
|
15 | 21 | # --------------------------------------------------------------------------------- Search home part
|
16 | 22 |
|
| 23 | +import subprocess |
| 24 | +import sys |
| 25 | +from django.http import HttpResponse |
| 26 | + |
| 27 | + |
| 28 | +def get_recent_death_date(): |
| 29 | + directory = './deces_insee' |
| 30 | + latest_date = None |
| 31 | + |
| 32 | + for filename in os.listdir(directory): |
| 33 | + if filename.startswith("deces_global_maj_"): |
| 34 | + try: |
| 35 | + date_str = filename.split('_')[-1] |
| 36 | + date_obj = datetime.strptime(date_str, '%d%m%Y') |
| 37 | + if latest_date is None or date_obj > latest_date: |
| 38 | + latest_date = date_obj |
| 39 | + except ValueError: |
| 40 | + continue |
| 41 | + |
| 42 | + return latest_date # Remplacez 'your_template.html' par le nom de votre template |
| 43 | +def latestdate(request): |
| 44 | + recent_death_date = get_recent_death_date() |
| 45 | + print(recent_death_date) |
| 46 | + context = { |
| 47 | + 'recent_death_date': recent_death_date.strftime('%d/%m/%Y') if recent_death_date else 'Aucune date trouvée', |
| 48 | + } |
| 49 | + print(context) |
| 50 | + |
| 51 | + return render(request, 'import_file.html', context) # Remplacez 'your_template.html' par le nom de votre template |
| 52 | + |
| 53 | +def run_scripts(request): |
| 54 | + if request.method == 'POST': |
| 55 | + try: |
| 56 | + # Chemin vers l'interpréteur Python de Django |
| 57 | + python_executable = sys.executable |
| 58 | + |
| 59 | + # Chemins absolus complets des scripts à exécuter |
| 60 | + script1 = '../00_ApiRequest.py' |
| 61 | + script2 = '../01_ParserINSEE.py' |
| 62 | + script3 = '../death_warehouse_webapp/initial_import_data.py' |
| 63 | + |
| 64 | + # Exécuter les scripts nécessaires |
| 65 | + result1 = subprocess.run([python_executable, script1], capture_output=True, text=True) |
| 66 | + result2 = subprocess.run([python_executable, script2], capture_output=True, text=True) |
| 67 | + result3 = subprocess.run([python_executable, script3], capture_output=True, text=True) |
| 68 | + |
| 69 | + # Afficher la sortie du script pour le débogage |
| 70 | + print(result1.stdout) |
| 71 | + print(result1.stderr) |
| 72 | + |
| 73 | + print(result2.stdout) |
| 74 | + print(result2.stderr) |
| 75 | + |
| 76 | + print(result3.stdout) |
| 77 | + print(result3.stderr) |
| 78 | + # Vérifier le code de retour |
| 79 | + return redirect('home') |
| 80 | + |
| 81 | + except Exception as e: |
| 82 | + return render(request, 'death_warehouse_app/home.html', { |
| 83 | + 'error_message': f'Error: {e}' |
| 84 | + }) |
| 85 | + |
| 86 | + return render(request, 'death_warehouse_app/home.html') |
| 87 | + |
| 88 | + |
| 89 | + # Si la méthode HTTP n'est pas POST, retourner une réponse par défaut (peut être ajusté selon vos besoins) |
| 90 | + return HttpResponse('Method not allowed', status=405) |
| 91 | + |
17 | 92 | def format_date_for_display(date):
|
18 | 93 | if date:
|
19 | 94 | return date.strftime('%d/%m/%Y')
|
@@ -218,6 +293,60 @@ def get_verification_results(df):
|
218 | 293 | return verification_results
|
219 | 294 |
|
220 | 295 | # --------------------------------------------------------------------------------- Display results
|
| 296 | +# views.py |
| 297 | +import os |
| 298 | +import json |
| 299 | +from django.http import JsonResponse |
| 300 | + |
| 301 | +def get_recent_death_date_from_database(request): |
| 302 | + try: |
| 303 | + # Récupérer la date la plus récente depuis la base de données |
| 304 | + most_recent_date = INSEEPatient.objects.latest('date_deces').date_deces.strftime('%d/%m/%Y') |
| 305 | + return JsonResponse({'recent_death_date': most_recent_date}) |
| 306 | + except INSEEPatient.DoesNotExist: |
| 307 | + return JsonResponse({'error': 'Aucune donnée trouvée dans la base de données.'}, status=404) |
| 308 | + except Exception as e: |
| 309 | + return JsonResponse({'error': str(e)}, status=500) |
| 310 | +def get_files_in_folder(request): |
| 311 | + try: |
| 312 | + # Récupérer la date la plus récente depuis la base de données |
| 313 | + most_recent_date = INSEEPatient.objects.latest('date_deces').date_deces.strftime('%d/%m/%Y') |
| 314 | + return JsonResponse({'recent_death_date': most_recent_date}) |
| 315 | + except INSEEPatient.DoesNotExist: |
| 316 | + return JsonResponse({'error': 'Aucune donnée trouvée dans la base de données.'}, status=404) |
| 317 | + except Exception as e: |
| 318 | + return JsonResponse({'error': str(e)}, status=500) |
| 319 | + folder_path = './deces_insee' # Mettez le chemin absolu de votre dossier deces_insee ici |
| 320 | + # Fonction pour extraire la date du nom de fichier |
| 321 | + def extract_date_from_filename(filename): |
| 322 | + # Regex pour extraire la date (ici, le motif suppose une date au format DDMMYYYY) |
| 323 | + match = re.search(r'_([0-9]{2})([0-9]{2})([0-9]{4})', filename) |
| 324 | + if match: |
| 325 | + day = match.group(1) |
| 326 | + month = match.group(2) |
| 327 | + year = match.group(3) |
| 328 | + return f"{day}/{month}/{year}" |
| 329 | + return None |
| 330 | + |
| 331 | + # Récupérer la liste des fichiers dans le dossier |
| 332 | + if os.path.isdir(folder_path): |
| 333 | + files = os.listdir(folder_path) |
| 334 | + files_in_folder = [f for f in files if os.path.isfile(os.path.join(folder_path, f))] |
| 335 | + |
| 336 | + # Filtrer le fichier commençant par deces_global_maj_ |
| 337 | + filtered_files = [f for f in files_in_folder if f.startswith('deces_global_maj_')] |
| 338 | + |
| 339 | + # Extraire la date du premier fichier trouvé |
| 340 | + if filtered_files: |
| 341 | + first_file = filtered_files[0] |
| 342 | + date_from_filename = extract_date_from_filename(first_file) |
| 343 | + else: |
| 344 | + date_from_filename = None |
| 345 | + |
| 346 | + # Renvoyer la date au format JSON |
| 347 | + return JsonResponse({'recent_death_date': date_from_filename}) |
| 348 | + else: |
| 349 | + return JsonResponse({'error': 'Le dossier deces_insee n\'existe pas ou n\'est pas accessible.'}, status=400) |
221 | 350 |
|
222 | 351 | def import_file(request):
|
223 | 352 |
|
|
0 commit comments