إنشاء وحدة برمجية¶
قبل إنشاء الوحدة البرمجية الأولى، من الضروري إنشاء مشروع 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.