إنشاء وحدة¶
قبل إنشاء وحدتك الأولى، من الضروري إنشاء مشروع Odoo.sh ومعرفة عنوان URL لمستودع GitHub الخاص بك.
مسرد المصطلحات
~/srcهو الدليل الذي توجد فيه مستودعات Git المتعلقة بمشاريع Odoo الخاصة بك.odooهو مستخدم GitHub.odoo-addonsهو مستودع GitHub.feature-1هو اسم فرع التطوير.mainهو اسم فرع الإنتاج.اسم الوحدة هو
my_module.
استبدل هذه حسب الحاجة.
إنشاء فرع التطوير¶
من عرض الفروع:
في لوحة التنقل بين الفروع، انقر على زر + (فرع تطوير جديد) بجوار التطوير.
ضمن التفريع، حدد فرع
main.ضمن إلى، أدخل
feature-1.
بمجرد أن يصبح البناء جاهزًا، يمكنك الوصول إلى المحرر وكود فرع التطوير الخاص بك من مجلد ~/src/user.
استنسخ مستودع GitHub الخاص بك على جهاز الكمبيوتر الخاص بك عن طريق تشغيل الأوامر التالية:
mkdir ~/src cd ~/src git clone https://github.com/odoo/odoo-addons.git cd ~/src/odoo-addons
أنشئ فرعًا جديدًا عن طريق تشغيل:
git checkout -b feature-1 main
إنشاء بنية التطبيق¶
السقالات¶
على الرغم من أن السقالات ليست مطلوبة، إلا أنها تتجنب عناء إعداد هيكل وحدة Odoo الأساسي. يمكنك إنشاء وحدة جديدة باستخدام الملف التنفيذي odoo-bin.
من طرفية المحرر، شغّل:
odoo-bin scaffold my_module ~/src/user/
مع تثبيت Odoo على جهاز الكمبيوتر الخاص بك، شغّل:
./odoo-bin scaffold my_module ~/src/odoo-addons/
نصيحة
إذا كنت لا تريد تثبيت Odoo على جهاز الكمبيوتر الخاص بك، يمكنك أيضًا تنزيل قالب هيكل الوحدة هذا. استبدل كل تكرار لـ my_module بالاسم الذي تختاره.
سيتم إنشاء الهيكل أدناه:
my_module
├── __init__.py
├── __manifest__.py
├── controllers
│ ├── __init__.py
│ └── controllers.py
├── demo
│ └── demo.xml
├── models
│ ├── __init__.py
│ └── models.py
├── security
│ ├── ir.model.access.csv
│ └── models.py
└── views
├── templates.xml
└── views.xml
تحذير
استخدم فقط الأحرف الأبجدية الرقمية (a-z، 0-9) أو الشرطات السفلية (_) عند تسمية الوحدة الخاصة بك، حيث يتم استخدام اسمها لفئات Python، وأسماء الفئات التي تحتوي على أحرف خاصة بخلاف الشرطات السفلية غير صالحة في Python.
ألغِ التعليق على الملفات التالية:
models/models.pyمثال على نموذج مع حقولهviews/views.xmlعرض شجري وعرض نموذج، مع القوائم التي تفتحهاdemo/demo.xmlسجلات تجريبية للنموذج المثاليcontrollers/controllers.pyمثال على متحكم يُنفذ بعض المساراتviews/templates.xmlمثالان لعروض qweb يستخدمها مسارات المتحكم__manifest__.pyبيان الوحدة النمطية الخاصة بك، بما في ذلك عنوانها ووصفها وملفات البيانات المراد تحميلها. قم بإلغاء التعليق على ملف بيانات قائمة التحكم في الوصول:# 'security/ir.model.access.csv',
يدويًا¶
لإنشاء هيكل الوحدة النمطية يدوياً، اتبع البرنامج التعليمي Server framework 101 لفهم بنية الوحدة النمطية ومحتوى كل ملف.
الدفع إلى فرع التطوير¶
قم بتجهيز التغييرات التي سيتم تثبيتها عن طريق تشغيل:
git add my_module
قم بتثبيت تغييراتك عن طريق تشغيل:
git commit -m "My first module"ادفع تغييراتك إلى المستودع البعيد الخاص بك عن طريق تشغيل:
من طرفية المحرر، شغّل:
git push https HEAD:feature-1
شغّل:
git push -u origin feature-1
من الضروري تحديد
-u origin feature-1في المرة الأولى التي تدفع فيها فقط. بعد ذلك، شغّل:git push
اختبار الوحدة النمطية¶
يجب أن يظهر الفرع ضمن قسم التطوير في لوحة التنقل الخاصة بـ عرض الفروع.
انقر فوق اسم الفرع لعرض سجله، بما في ذلك التغييرات التي دفعتها للتو. بمجرد أن تصبح قاعدة البيانات جاهزة، انقر فوق اتصال للوصول إليها.
إذا تم تكوين مشروع Odoo.sh الخاص بك لتثبيت الوحدة النمطية تلقائياً، فستظهر مباشرة على لوحة بيانات قاعدة البيانات. وإلا، ستكون متاحة للتثبيت ضمن تطبيق التطبيقات.
اختبر باستخدام بيانات الإنتاج¶
ملاحظة
قاعدة بيانات إنتاج مطلوبة لهذه الخطوة. إذا لم يكن لديك واحدة بعد، قم بإنشائها.
بمجرد اختبار الوحدة في بناء التطوير مع البيانات التجريبية وتعتقد أنها جاهزة، يمكنك اختبارها مع بيانات الإنتاج باستخدام فرع التجهيز.
يمكنك:
تحويل فرع التطوير الخاص بك إلى فرع تجهيز عن طريق سحبه وإفلاته في قسم التجهيز.
دمجه في فرع تجهيز موجود عن طريق سحبه وإفلاته على ذلك الفرع.
استخدام أمر
git mergeلدمج فروعك.
هذا ينشئ بناء تجهيز جديد يكرر قاعدة بيانات الإنتاج ويشغلها على خادم محدث بآخر تغييرات فرعك.
بمجرد أن تصبح قاعدة البيانات جاهزة، انقر فوق اتصال للوصول إليها.
تثبيت الوحدة¶
قم بتثبيت الوحدة من تطبيق التطبيقات. نظرًا لأن الوحدة قد لا تظهر مباشرة في قائمة التطبيقات، قم بتحديث قائمة التطبيقات عن طريق تفعيل وضع المطور والنقر فوق .
ملاحظة
لا يتم تثبيت الوحدة تلقائيًا، حيث أن الغرض من بناء التجهيز هو اختبار سلوك تغييراتك كما ستكون على قاعدة بيانات الإنتاج، لذلك لن ترغب في تثبيت وحدة تلقائيًا.
التشغيل في الإنتاج¶
بمجرد اختبار الوحدة في فرع التجهيز مع بيانات الإنتاج وتعتقد أنها جاهزة للإنتاج، يمكنك دمج فرعك في فرع الإنتاج عن طريق:
سحب وإفلات فرع التجهيز على فرع الإنتاج.
استخدام أمر
git mergeلدمج فروعك.
هذا يدمج آخر التغييرات من فرع التجهيز في فرع الإنتاج ويحدث خادم الإنتاج بها.
بمجرد أن تصبح قاعدة البيانات جاهزة، انقر فوق اتصال للوصول إليها.
تثبيت الوحدة¶
قم بتثبيت الوحدة من تطبيق التطبيقات. نظرًا لأن الوحدة قد لا تظهر مباشرة في قائمة التطبيقات، قم بتحديث قائمة التطبيقات عن طريق تفعيل وضع المطور والنقر فوق .
أضف تغييراً¶
يشرح هذا القسم كيفية إضافة تغيير في وحدتك عن طريق إضافة حقل جديد في نموذج ونشره.
من المحرر أو من جهاز الكمبيوتر الخاص بك، افتح مجلد الوحدة
~/src/odoo-addons/my_module، ثم افتح ملفmodels/models.pyلتحريره. بعد حقل الوصف:description = fields.Text()
أضف حقل التاريخ والوقت:
start_datetime = fields.Datetime('Start time', default=lambda self: fields.Datetime.now())
افتح ملف
views/views.xmlوبعد:<field name="value2"/>
أضف:
<field name="start_datetime"/>
تؤدي هذه التغييرات إلى تعديل بنية قاعدة البيانات عن طريق إضافة عمود إلى جدول وتعديل عرض. لتطبيقها على قاعدة بيانات موجودة، مثل قاعدة بيانات الإنتاج الخاصة بك، تتطلب هذه التغييرات تحديث الوحدة. إذا كنت ترغب في أن يتم التحديث تلقائيًا بواسطة منصة Odoo.sh عند دفع تغييراتك، قم بزيادة إصدار الوحدة في ملفها البياني عن طريق فتح
__manifest__.pyواستبدال:'version': '0.1',
بـ:
'version': '0.2',
ستكتشف المنصة تغيير الإصدار وتبدأ تحديث الوحدة عند نشر المراجعة الجديدة.
بعد ذلك، ادفع التغييرات.
بمجرد اختبار تغييراتك، يمكنك دمجها في فرع الإنتاج، على سبيل المثال، عن طريق سحب الفرع وإفلاته على فرع الإنتاج في واجهة Odoo.sh. نظرًا لأنك قمت بزيادة إصدار الوحدة في الملف البياني، ستقوم المنصة تلقائيًا بتحديث الوحدة، وسيكون حقلك الجديد متاحًا على الفور. وإلا، يمكنك تحديث الوحدة يدويًا ضمن قائمة التطبيقات.
استخدم مكتبة Python خارجية¶
إذا كنت ترغب في استخدام مكتبة Python خارجية غير مثبتة افتراضيًا، يمكنك تعريف ملف requirements.txt يسرد المكتبات الخارجية التي تعتمد عليها وحداتك. ستستخدم المنصة هذا الملف لتثبيت مكتبات Python التي يحتاجها مشروعك تلقائيًا.
ملاحظة
لا يمكن تثبيت أو ترقية حزم النظام على قواعد بيانات Odoo.sh (مثل حزم apt). ومع ذلك، في ظل ظروف محددة، يمكن النظر في تثبيت الحزم. ينطبق هذا أيضًا على وحدات Python التي تتطلب حزم نظام للتجميع وعلى وحدات Odoo التابعة لجهات خارجية.
امتدادات PostgreSQL غير مدعومة على Odoo.sh، وبالتالي لا يمكن تثبيت الامتدادات (مثل PostGIS وltree وما إلى ذلك) في قواعد بيانات Odoo.sh.
على سبيل المثال، لاستخدام مكتبة Unidecode في وحدتك:
أنشئ ملف
requirements.txtفي المجلد الجذر لمستودعك:من محرر Odoo.sh، أنشئ وافتح الملف
~/src/user/requirements.txt.من جهاز الكمبيوتر الخاص بك، أنشئ وافتح الملف
~/src/odoo-addons/requirements.txt.
أضف إلى الملف:
unidecode
يمكنك الآن استخدام المكتبة في وحدتك، على سبيل المثال، لإزالة العلامات من الأحرف في حقل الاسم لنموذجك. للقيام بذلك، افتح ملف
models/models.pyوقبل:from odoo import models, fields, api
أضف:
from unidecode import unidecode
بعد:
start_datetime = fields.Datetime('Start time', default=lambda self: fields.Datetime.now())
أضف:
@api.model def create(self, values): if 'name' in values: values['name'] = unidecode(values['name']) return super(my_module, self).create(values) def write(self, values): if 'name' in values: values['name'] = unidecode(values['name']) return super(my_module, self).write(values)
قم بزيادة إصدار الوحدة لتثبيت تبعية Python عن طريق تحرير ملف الوحدة البياني
__manifest__.py.ثم، ادفع التغييرات.
نصيحة
جهز ملف
requirements.txtعن طريق تشغيلgit add requirements.txt.