sms
This commit is contained in:
1 parent
250cdbab7f
commit
5c6069c3ef
87 files changed
+29209
-3697
No files matched your search
@@ -1,6 +1,39 @@
|
||||
import sys
|
||||
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
def make_std_streams_unicode_safe():
|
||||
"""استریمهای استاندارد را در برابر متن غیر-ASCII مقاوم میکند.
|
||||
|
||||
کنسول ویندوز با کدپیج cp1252 کار میکند و نوشتن متن فارسی روی آن
|
||||
``UnicodeEncodeError`` میدهد (پیام خطا: ``'charmap' codec can't encode ...``).
|
||||
|
||||
رخداد واقعی که این تابع برایش نوشته شد: ``print`` متن فارسی داخل provider کنسولِ
|
||||
پیامک استثنا میداد، worker آن را بهعنوان «ارسال ناموفق» ثبت میکرد و پیامک در صف
|
||||
``failed`` میماند — در حالی که ارسال هیچ مشکلی نداشت. یک استثنای صرفاً نمایشی
|
||||
نباید هرگز نتیجهٔ یک عملیات کسبوکار را عوض کند.
|
||||
|
||||
پس اینجا یکبار برای همیشه استریمها به UTF-8 با ``errors='replace'`` تنظیم میشوند:
|
||||
هیچ چاپ فارسیای پروسه را نمیشکند و فایلهای لاگ هم فارسی را درست نگه میدارند.
|
||||
"""
|
||||
for stream in (sys.stdout, sys.stderr):
|
||||
reconfigure = getattr(stream, "reconfigure", None)
|
||||
if reconfigure is None:
|
||||
continue
|
||||
try:
|
||||
reconfigure(encoding="utf-8", errors="replace")
|
||||
except Exception:
|
||||
# جریانهای جایگزین (مثلاً test runner یا jupyter) ممکن است پشتیبانی نکنند.
|
||||
pass
|
||||
|
||||
|
||||
class AdminPanelConfig(AppConfig):
|
||||
default_auto_field = 'django.db.models.BigAutoField'
|
||||
name = 'admin_panel'
|
||||
|
||||
def ready(self):
|
||||
# پیش از هر کامند/سیگنال: چاپ امن متن فارسی روی کنسول ویندوز.
|
||||
make_std_streams_unicode_safe()
|
||||
# ثبت سیگنالها (busy_timeout برای SQLite).
|
||||
from . import signals # noqa: F401
|
||||
Reference in new issue
Block a user