diff --git a/odex30_base/ctp_database_clean_up/models/ctp_database_clean_up.py b/odex30_base/ctp_database_clean_up/models/ctp_database_clean_up.py index b49615a..0986287 100644 --- a/odex30_base/ctp_database_clean_up/models/ctp_database_clean_up.py +++ b/odex30_base/ctp_database_clean_up/models/ctp_database_clean_up.py @@ -26,7 +26,7 @@ class CtpDatabaseCleanUp(models.TransientModel): _logger.info('Attempting to TRUNCATE table for model: %s (table: %s)', line, table_name) safe_table_name = table_name.replace('"', '""') - sql = 'TRUNCATE TABLE "%s" RESTART IDENTITY CASCADE' % safe_table_name + sql = 'DELETE FROM "%s"' % safe_table_name self._cr.execute(sql) except Exception as e: diff --git a/odex30_base/odoo_log_viewer/models/log_handler.py b/odex30_base/odoo_log_viewer/models/log_handler.py index a57e322..a5a255b 100644 --- a/odex30_base/odoo_log_viewer/models/log_handler.py +++ b/odex30_base/odoo_log_viewer/models/log_handler.py @@ -1,24 +1,21 @@ import logging from odoo import api, models -# استخدام المسجل القياسي لإضافة رسائل تصحيح خاصة بهذا الموديول _logger = logging.getLogger(__name__) class MemoryLogHandler(logging.Handler): def __init__(self): super().__init__() - self.max_entries = 10000 # الاحتفاظ بآخر 10000 سجل + self.max_entries = 10000 self.entries = [] def emit(self, record): - # تجنب تسجيل الطلبات القادمة من العارض نفسه لمنع حلقة لا نهائية if '/log_viewer/get_logs' in getattr(record, 'message', ''): return self.entries.append(self.format(record)) - # إزالة أقدم سجل إذا تجاوزنا الحد الأقصى if len(self.entries) > self.max_entries: self.entries.pop(0) @@ -27,31 +24,24 @@ class LogHandlerManager(models.AbstractModel): _name = 'log.handler.manager' _description = 'Log Handler Manager' - # سنحتفظ بالمعالج كمتغير على مستوى الكلاس لضمان وجود نسخة واحدة فقط _memory_handler = None @api.model def _get_memory_handler(self): - # هذه الدالة الآن أصبحت أبسط، فقط تعيد المعالج الموجود return LogHandlerManager._memory_handler @api.model def _register_hook(self): - # هذه الدالة تُستدعى عند تحميل سجل الموديلات في أودو if LogHandlerManager._memory_handler is None: _logger.info("Initializing MemoryLogHandler for Odoo Log Viewer.") - # 1. إنشاء معالج السجلات الخاص بنا handler = MemoryLogHandler() formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') handler.setFormatter(formatter) - # 2. الحصول على مسجل الجذر وإضافة معالجنا إليه root_logger = logging.getLogger() root_logger.addHandler(handler) - # 3. !! التغيير الرئيسي هنا !! - # ضبط المستوى على INFO لتجاهل رسائل DEBUG المزعجة. if root_logger.level > logging.INFO: root_logger.setLevel(logging.INFO) @@ -62,6 +52,5 @@ class LogHandlerManager(models.AbstractModel): def get_log_entries(self): handler = self._get_memory_handler() if handler: - # إرجاع نسخة من القائمة لتجنب المشاكل المتعلقة بالتزامن return list(handler.entries) return []