إنشاء وحدة برمجية

قبل إنشاء الوحدة البرمجية الأولى، من الضروري إنشاء مشروع Odoo.sh ومعرفة عنوان URL لمستودع GitHub الخاص بك.

مسرد المصطلحات

  • ~/src هو الدليل الذي توجد فيه مستودعات Git المتعلقة بمشاريع Odoo الخاصة بك.

  • odoo هو مستخدم GitHub.

  • odoo-addons هو مستودع GitHub.

  • feature-1 هو اسم فرع التطوير.

  • main هو اسم فرع الإنتاج.

  • my_module هو اسم الوحدة البرمجية.

استبدل هذه حسب الحاجة.

إنشاء فرع التطوير

من عرض الفروع:

  • في لوحة التنقل بين الفروع، انقر فوق زر + (فرع تطوير جديد) بجوار التطوير.

  • ضمن تفريع، حدد فرع main.

  • ضمن إلى، أدخل feature-1.

تفريع فرع الإنتاج لإنشاء فرع تطوير على Odoo.sh

بمجرد أن يصبح البناء جاهزًا، يمكنك الوصول إلى المحرر وكود فرع التطوير الخاص بك من مجلد ~/src/user.

إنشاء بنية التطبيق

الهيكلة

على الرغم من أن الأمر غير مطلوب، تتجنب الهيكلة مشقة إعداد بنية وحدة Odoo الأساسية. يمكنك هيكلة وحدة جديدة باستخدام الملف التنفيذي odoo-bin.

من طرفية المحرر، شغّل:

odoo-bin scaffold my_module ~/src/user/

نصيحة

إذا كنت لا تريد تثبيت 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 لفهم بنية الوحدة ومحتوى كل ملف.

الدفع إلى فرع التطوير

  1. قم بتجهيز التغييرات ليتم تنفيذها عن طريق تشغيل:

    git add my_module
    
  2. قم بتنفيذ تغييراتك عن طريق تشغيل:

    git commit -m "My first module"
    
  3. ادفع تغييراتك إلى المستودع البعيد الخاص بك عن طريق تشغيل:

    من طرفية المحرر، شغّل:

    git push https HEAD:feature-1
    

اختبار الوحدة

يجب أن يظهر الفرع تحت قسم التطوير في لوحة التنقل عرض الفروع.

مثال على فرع تطوير

انقر فوق اسم الفرع لعرض سجله، بما في ذلك التغييرات التي دفعتها للتو. بمجرد أن تكون قاعدة البيانات جاهزة، انقر فوق اتصال للوصول إليها.

زر الاتصال للوصول إلى قاعدة البيانات

إذا تم تكوين مشروع Odoo.sh الخاص بك لتثبيت الوحدة تلقائيًا، فستظهر مباشرةً على لوحة بيانات قاعدة البيانات. وإلا، فستكون متاحة للتثبيت ضمن تطبيق التطبيقات.

الوحدة الجديدة على لوحة بيانات قاعدة البيانات

اختبر باستخدام بيانات الإنتاج

ملاحظة

مطلوب قاعدة بيانات إنتاج لهذه الخطوة. إذا لم يكن لديك واحدة بعد، قم بإنشائها.

بمجرد اختبار الوحدة في بناء التطوير باستخدام البيانات التجريبية وتعتقد أنها جاهزة، يمكنك اختبارها باستخدام بيانات الإنتاج باستخدام فرع التدريج.

يمكنك:

  • تحويل فرع التطوير الخاص بك إلى فرع تجهيز عن طريق سحبه وإفلاته في قسم التجهيز.

  • دمجه في فرع تجهيز موجود عن طريق سحبه وإفلاته على ذلك الفرع.

  • استخدام أمر git merge لدمج فروعك.

ينشئ هذا بناء تجهيز جديد ينسخ قاعدة بيانات الإنتاج ويشغلها على خادم محدّث بأحدث التغييرات في فرعك.

بمجرد أن تصبح قاعدة البيانات جاهزة، انقر على اتصال للوصول إليها.

تثبيت الوحدة

قم بتثبيت الوحدة من تطبيق التطبيقات. نظرًا لأن الوحدة قد لا تظهر مباشرة في قائمة التطبيقات، قم بتحديث قائمة التطبيقات عن طريق تفعيل وضع المطور والنقر على تحديث قائمة التطبيقات ‣ تحديث.

ملاحظة

لا يتم تثبيت الوحدة تلقائيًا، حيث أن الغرض من بناء التجهيز هو اختبار سلوك تغييراتك كما لو كانت على قاعدة بيانات الإنتاج، لذا لن ترغب في تثبيت وحدة تلقائيًا.

التشغيل في الإنتاج

بمجرد اختبار الوحدة في فرع تجهيز مع بيانات الإنتاج وتعتقد أنها جاهزة للإنتاج، يمكنك دمج فرعك في فرع الإنتاج عن طريق:

  • سحب وإفلات فرع التجهيز على فرع الإنتاج.

  • استخدام أمر git merge لدمج فروعك.

يدمج هذا أحدث التغييرات من فرع التجهيز في فرع الإنتاج ويحدّث خادم الإنتاج بها.

بمجرد أن تصبح قاعدة البيانات جاهزة، انقر على اتصال للوصول إليها.

تثبيت الوحدة

قم بتثبيت الوحدة من تطبيق التطبيقات. نظرًا لأن الوحدة قد لا تظهر مباشرة في قائمة التطبيقات، قم بتحديث قائمة التطبيقات عن طريق تفعيل وضع المطور والنقر على تحديث قائمة التطبيقات ‣ تحديث.

أضف تغييراً

يشرح هذا القسم كيفية إضافة تغيير في الوحدة الخاصة بك عن طريق إضافة حقل جديد في نموذج ونشره.

  1. من المحرر أو من جهاز الكمبيوتر الخاص بك، افتح مجلد الوحدة ~/src/odoo-addons/my_module، ثم افتح ملف models/models.py لتحريره. بعد حقل الوصف:

    description = fields.Text()
    

    أضف حقل تاريخ ووقت:

    start_datetime = fields.Datetime('Start time', default=lambda self: fields.Datetime.now())
    
  2. افتح ملف views/views.xml وبعد:

    <field name="value2"/>
    

    أضف:

    <field name="start_datetime"/>
    
  3. تعدّل هذه التغييرات بنية قاعدة البيانات عن طريق إضافة عمود إلى جدول وتعديل طريقة عرض. لكي يتم تطبيقها على قاعدة بيانات موجودة، مثل قاعدة بيانات الإنتاج الخاصة بك، تتطلب هذه التغييرات تحديث الوحدة. إذا كنت ترغب في أن يتم التحديث تلقائيًا بواسطة منصة Odoo.sh عند دفع تغييراتك، قم بزيادة إصدار الوحدة في بيانها عن طريق فتح __manifest__.py واستبدال:

    'version': '0.1',
    

    مع:

    'version': '0.2',
    

    ستكتشف المنصة تغيير الإصدار وتبدأ تحديث الوحدة عند نشر المراجعة الجديدة.

  4. بعد ذلك، ادفع التغييرات.

  5. بمجرد أن تكون قد اختبرت تغييراتك، يمكنك دمجها في فرع الإنتاج، على سبيل المثال، عن طريق السحب والإفلات للفرع على فرع الإنتاج في واجهة Odoo.sh. نظراً لأنك قمت بزيادة إصدار الوحدة في البيان، ستقوم المنصة تلقائياً بتحديث الوحدة، وسيكون الحقل الجديد متاحاً على الفور. وإلا، يمكنك يدوياً تحديث الوحدة من قائمة التطبيقات.

استخدم مكتبة Python خارجية

إذا كنت ترغب في استخدام مكتبة Python خارجية غير مثبتة افتراضياً، يمكنك تعريف ملف requirements.txt يسرد المكتبات الخارجية التي تعتمد عليها وحداتك. ستستخدم المنصة هذا الملف لتثبيت مكتبات Python التي يحتاجها مشروعك تلقائياً.

ملاحظة

  • ليس من الممكن تثبيت أو ترقية حزم النظام على قواعد بيانات Odoo.sh (مثل حزم apt). ومع ذلك، في ظل ظروف معينة، يمكن النظر في الحزم للتثبيت. ينطبق هذا أيضاً على وحدات Python التي تتطلب حزم نظام للترجمة وعلى وحدات Odoo من جهات خارجية.

  • إضافات PostgreSQL غير مدعومة على Odoo.sh لذلك ليس من الممكن تثبيت الإضافات (مثل PostGIS، ltree، ...) في قواعد بيانات Odoo.sh.

على سبيل المثال، لاستخدام مكتبة Unidecode في وحدتك:

  1. أنشئ ملف requirements.txt في المجلد الجذر للمستودع الخاص بك:

    • من محرر Odoo.sh، أنشئ وافتح الملف ~/src/user/requirements.txt.

    • من جهاز الكمبيوتر الخاص بك، أنشئ وافتح الملف ~/src/odoo-addons/requirements.txt.

  2. أضف إلى الملف:

    unidecode
    
  3. يمكنك الآن استخدام المكتبة في وحدتك، على سبيل المثال، لإزالة العلامات من الأحرف في حقل الاسم لنموذجك. للقيام بذلك، افتح الملف models/models.py وقبل:

    from odoo import models, fields, api
    

    أضف:

    from unidecode import unidecode
    
  4. بعد:

    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)
    
  5. قم بزيادة إصدار الوحدة لتثبيت تبعية Python عن طريق تحرير بيان الوحدة __manifest__.py.

  6. بعد ذلك، ادفع التغييرات.

    نصيحة

    جهز ملف requirements.txt عن طريق تشغيل git add requirements.txt.