من نحن

عن اي تي هورايزون

شركة تقنية متخصصة تبني أنظمة المؤسسات بدقة دور الفخامة العالمية.

قصتنا
شريك أودو

حلول أودو المتكاملة

أودو 20 للمؤسسات من البداية إلى النهاية: تطبيق وتخصيص وربط ودعم على يد فريقنا من كبار الاستشاريين.

كن عميلًا لدينا
تطبيقات أودو

كل تطبيق، مهيأ لدول الخليج

تطبيقات المالية والمبيعات وسلسلة الإمداد والموارد البشرية والتسويق والخدمات، تُطبَّق وفق قواعد الضرائب والرواتب واللغة في كل دولة.

كل تطبيقات أودو
ما نقدمه

ما بعد أنظمة ERP

استراتيجية وهندسة منتجات وتجربة عملاء تحوّل الأنظمة إلى ميزة تنافسية.

تحدّث معنا
القطاعات

خبرة في القطاعات

معرفة عميقة بالقطاعات التي تقوم عليها اقتصادات الخليج، وباللوائح التنظيمية التي تحكمها.

ناقش قطاعك
تعلّم · انمُ · انجح

معرفة عملية

أفكار عملية ودراسات حالة وجلسات تساعد شركتك على العمل بذكاء أكبر مع أودو.

تصفّح المدونة
تواصل معناEnglishاحجز استشارة
الرئيسية/المدونة/أودو 20 · تطوير
أودو 20 · تطوير · قراءة 8 دقائق

طريقة إعداد بيئة تطوير أودو 20 مع PyCharm على Ubuntu

نظام Ubuntu هو البيئة الطبيعية لتطوير أودو، لأنه يطابق الخوادم التي يعمل عليها أودو في بيئة الإنتاج. يشرح هذا الدليل إعداد أودو 20 على Ubuntu 24.04 LTS مع PyCharm، وبيئة افتراضية، وتقارير PDF تُطبع بشكل صحيح.

ما الذي تغيّر منذ أودو 19

  • Python 3.12 أو أحدث. لا يعمل أودو 20 على أي إصدار أقدم، ويعرض تحذيرًا مع الإصدارات الأحدث من 3.14. أما أودو 19 فكان يقبل 3.10.
  • PostgreSQL 16 أو أحدث. يعرض أودو 20 تحذيرًا عند اتصاله بخادم أقدم، بينما كان أودو 19 يطلب الإصدار 13.
  • إمكانية اختيار محرك PDF. ما زال wkhtmltopdf هو المحرك الافتراضي، ويضيف أودو 20 محركًا اختياريًا خاصًا به هو Paper Muncher.
  • صلاحيات الوصول في ملف واحد. تعرّف الوحدات صلاحيات الوصول في security/ir.access.csv، وكل سطر فيه يربط مجموعة مستخدمين بمجموعة من العمليات مع نطاق (domain) اختياري، ويحل هذا الملف محل ir.model.access.csv وقواعد السجلات (record rules) معًا.

لماذا Ubuntu 24.04

يأتي Ubuntu 24.04 LTS مع Python 3.12 وPostgreSQL 16، وهما الحد الأدنى لأودو 20، كما يضبط أودو إصدارات مكتبات Python التي يعتمد عليها على الإصدارات التي توفرها حزم هذا الإصدار من Ubuntu. أما على Ubuntu 22.04 فستحتاج إلى Python 3.12 من deadsnakes PPA، وإلى PostgreSQL 16 من مستودع apt الخاص بمشروع PostgreSQL.

الخطوة 1: تثبيت PyCharm

sudo apt update && sudo apt upgrade -y
sudo snap install pycharm --classic

أصبح PyCharm الآن منتجًا واحدًا يتضمن خطة مجانية: بعد انتهاء فترة تجربة Pro لمدة 30 يومًا، تكفي الميزات الأساسية المجانية للعمل على أودو.

الخطوة 2: تثبيت Python ومكتبات البناء

sudo apt install -y python3 python3-dev python3-venv build-essential \
  libpq-dev libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev \
  libjpeg-dev libldap2-dev libsasl2-dev

تتيح هذه المكتبات لأداة pip بناء الحزم التي ليس لها حزمة wheel جاهزة على Linux، مثل python-ldap وpsycopg2.

الخطوة 3: تثبيت Node.js وrtlcss

يُجمّع أودو ملفات التنسيق الخاصة به بنفسه، لكن اللغات التي تُكتب من اليمين إلى اليسار، مثل العربية، تحتاج إلى أداة rtlcss:

sudo apt install -y nodejs npm
sudo npm install -g rtlcss

الخطوة 4: تثبيت wkhtmltopdf لتقارير PDF

ما زال wkhtmltopdf هو محرك PDF الافتراضي في أودو 20. استخدم النسخة المبنية على Qt المعدّلة (patched Qt) من الإصدار 0.12.6.1، وإلا فستُطبع الترويسات والتذييلات وفواصل الصفحات بشكل غير صحيح. وحزمة Ubuntu 22.04 (jammy) يمكن تثبيتها على 24.04:

wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.jammy_amd64.deb
sudo apt install -y ./wkhtmltox_0.12.6.1-3.jammy_amd64.deb

ويوفر أودو 20 أيضًا محركًا خاصًا به هو Paper Muncher، في الوحدة الاختيارية base_report_paper_muncher. ويحتاج هذا المحرك إلى برنامج paper-muncher بالإصدار 0.6 أو أحدث. ويبقى wkhtmltopdf هو المحرك الافتراضي ما لم تغيّره.

الخطوة 5: تثبيت PostgreSQL وإنشاء مستخدم أودو

sudo apt install -y postgresql postgresql-client
sudo -u postgres createuser --createdb --no-createrole --no-superuser --pwprompt odoo20

على جهازك الشخصي يمكنك منح الدور صلاحيات superuser لتجنّب أخطاء الصلاحيات عند استعادة قواعد البيانات. لا تفعل ذلك أبدًا على خادم. يرفض أودو العمل باسم المستخدم postgres نفسه، ولهذا يحصل على دور خاص به.

sudo -u postgres psql -c "ALTER USER odoo20 WITH SUPERUSER;"

الخطوة 6: الحصول على الكود المصدري لأودو 20

sudo apt install -y git
git clone https://github.com/odoo/odoo.git --branch 20.0 --depth 1 odoo20

إذا كان لديك اشتراك في أودو للمؤسسات، فاستنسخ الفرع 20.0 من مستودع enterprise بجانب مجلد أودو.

الخطوة 7: إنشاء بيئة افتراضية وتثبيت المتطلبات

افتح مجلد odoo20 في PyCharm، ونفّذ في الطرفية (Terminal) الخاصة به:

python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt

إذا فشل بناء psycopg2، فتأكد من تثبيت libpq-dev وpython3-dev من الخطوة 2، أو ثبّت psycopg2-binary بدلًا منه.

الخطوة 8: كتابة ملف odoo.conf

[options]
; master password for the database manager
admin_passwd = change-me
db_host = localhost
db_port = 5432
db_user = odoo20
db_password = your_password
addons_path = /home/you/odoo20/addons
http_port = 8069

ومع النسخة المؤسسية، ضع مجلدها أولًا: addons_path = /home/you/enterprise,/home/you/odoo20/addons. ولا تضف logfile أثناء التطوير، ليظهر السجل في وحدة التحكم (console) في PyCharm.

الخطوة 9: إضافة إعداد تشغيل

اختر Run → Edit Configurations → + → Python:

  • Script path: odoo-bin
  • Parameters: -c odoo.conf
  • Working directory: مجلد odoo20
  • Interpreter: بيئة venv التي أنشأتها

اضغط Run أو Debug، ثم افتح http://localhost:8069. وظهور مدير قواعد البيانات (database manager) يؤكد أن البيئة تعمل.

نصائح من مطوّرينا

  • احفظ وحداتك الخاصة في مجلد منفصل وأضفه إلى addons_path، ولا تعدّل وحدات أودو الأساسية أبدًا.
  • استخدم Git من أول سطر كود، بمستودع واحد لكل عميل أو خط منتجات.
  • شغّل أودو مع --dev=all أثناء العمل، ومع تثبيت inotify أو watchdog في البيئة الافتراضية يُعاد تحميل تغييرات Python دون إعادة تشغيل.
  • شغّل اختبارات أي وحدة على قاعدة بيانات مؤقتة باستخدام -d test20 -i your_module --test-enable، وسيتوقف أودو عند انتهائها.
  • عرّف الصلاحيات في security/ir.access.csv: سطر يربط مجموعة مستخدمين بمجموعة من العمليات، مع نطاق (domain) في المواضع التي كنت ستكتب فيها قاعدة سجل (record rule) من قبل.

تبني وحدات لعميل وتحتاج إلى مطوّرين إضافيين؟ استعن بمطوّر أودو من فريقنا في الكويت.

تحتاج مساعدة في مشروع أودو لديك؟

أخبرنا بما تعمل عليه، وسيرد عليك استشاري أول موضحًا كيف سنتعامل معه.