إنشاء وحدة

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