EGYADMIN commited on
Commit
6548729
·
verified ·
1 Parent(s): 57e4771

Create utils/file_handler.py

Browse files
Files changed (1) hide show
  1. utils/file_handler.py +92 -0
utils/file_handler.py ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import logging
3
+ from logging.handlers import RotatingFileHandler
4
+ from pathlib import Path
5
+
6
+ def setup_logging():
7
+ """
8
+ إعداد نظام التسجيل للتطبيق
9
+ """
10
+ # إنشاء مجلد السجلات إذا لم يكن موجوداً
11
+ log_dir = Path("logs")
12
+ log_dir.mkdir(exist_ok=True)
13
+
14
+ log_file = log_dir / "app.log"
15
+
16
+ # إعداد التسجيل الرئيسي
17
+ logger = logging.getLogger("TenderAnalysisSystem")
18
+ logger.setLevel(logging.INFO)
19
+
20
+ # تنسيق السجلات
21
+ formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
22
+
23
+ # إضافة معالج للملف مع تدوير السجلات
24
+ file_handler = RotatingFileHandler(
25
+ log_file,
26
+ maxBytes=10 * 1024 * 1024, # 10 ميجابايت
27
+ backupCount=5
28
+ )
29
+ file_handler.setFormatter(formatter)
30
+
31
+ # إضافة معالج للإخراج القياسي
32
+ console_handler = logging.StreamHandler()
33
+ console_handler.setFormatter(formatter)
34
+
35
+ # إضافة المعالجات إلى المسجل
36
+ logger.addHandler(file_handler)
37
+ logger.addHandler(console_handler)
38
+
39
+ return logger
40
+
41
+ def ensure_directories():
42
+ """
43
+ إنشاء المجلدات الضرورية للتطبيق إذا لم تكن موجودة
44
+ """
45
+ directories = [
46
+ "data",
47
+ "data/uploads",
48
+ "data/processed",
49
+ "reports",
50
+ "models",
51
+ "models/cache",
52
+ "models/embeddings",
53
+ "logs"
54
+ ]
55
+
56
+ for directory in directories:
57
+ os.makedirs(directory, exist_ok=True)
58
+
59
+ def save_uploaded_file(uploaded_file, directory="data/uploads"):
60
+ """
61
+ حفظ الملف المرفوع في المجلد المحدد
62
+
63
+ المعلمات:
64
+ uploaded_file: الملف المرفوع من Streamlit
65
+ directory: المجلد الذي سيتم حفظ الملف فيه
66
+
67
+ الإرجاع:
68
+ مسار الملف المحفوظ
69
+ """
70
+ # التأكد من وجود المجلد
71
+ os.makedirs(directory, exist_ok=True)
72
+
73
+ # إنشاء مسار الملف
74
+ file_path = os.path.join(directory, uploaded_file.name)
75
+
76
+ # حفظ الملف
77
+ with open(file_path, "wb") as f:
78
+ f.write(uploaded_file.getbuffer())
79
+
80
+ return file_path
81
+
82
+ def get_file_extension(file_name):
83
+ """
84
+ الحصول على امتداد الملف
85
+
86
+ المعلمات:
87
+ file_name: اسم الملف
88
+
89
+ الإرجاع:
90
+ امتداد الملف
91
+ """
92
+ return os.path.splitext(file_name)[1].lower()