برمجة وتطوير إضافات أودو

هيكل إضافات أودو: دليل شامل باستخدام مثال تطبيقي

هيكل إضافات أودو: دليل شامل باستخدام مثال تطبيقي

خلال الأيام الثلاثة الماضية شرعتُ العمل على تطوير إضافة مخصصة في إطار مشروع يرتكز على نظام إدارة موارد المؤسسات أودو، وفكرت في ملأ أوقات الراحة بين فترات العمل المتقطعة أن أنشر ملخصات تشرح بعض النقاط المهمة المرتبط بشكل مابشر بالعمل الذي أنجزه؛ ولأن العمل هنا هو تطوير إضافات أودو (حقيقة هما إضافتين وليست واحدة)، فسأبدأ بشرح هيكل الإضافات في أودو ثم لاحقا أختار جزئيات داخلها لأتطرق لها.. على بركة الله نبدأ 😎

على فكرة، اليوم هو الأحد وهو عطلة نهاية الأسبوع، صحيح؟ جيد، إذا، وبدل صداع الرأس هذا ربما يتوجب عليك تسجيل المقال في مفضلتك ثم العودة له لاحقا حين تكون مستعدا (أنا مزال ماوصلنيش اختراع “العطلة” 😁)، غير ذلك.. لننطلق 🔥🫖☕️

عندما نتحدث عن أودو، فإن أول ما يتبادر إلى الذهن هو قابليته للتخصيص اللامحدود عبر الإضافات، حيث كل إضافة (Module) تمثل قطعة مستقلة تضيف وظائف جديدة أو تعدل وظائف موجودة في النظام.
في هذا المقال، سأستعرض معكم هيكل إضافات أودو بالتفصيل، مع شرح عملي باستخدام الإضافة الحالية التي أشتغل عليها تحت اسم b2bstock كمثال، وسأحاول تغطية جميع المجلدات الأساسية، وأوضح أهمية كل منها، وسأتطرق أيضًا إلى المجلدات والمكونات الإضافية التي قد تجدها في إضافات أخرى.

هيكل الإضافة في أودو

إضافة أودو تتكون من مجموعة من المجلدات والملفات التي تعمل معًا لتقديم وظائف جديدة، وبشكل عام هذا هو الهيكل الأساسي لأي إضافة:

1. ملف  _manifest_.py

هذا الملف هو قلب الإضافة. يحتوي على تعريف الإضافة مثل اسمها، وصفها، المؤلف، الإصدارات المدعومة من أودو، والمكونات التي تعتمد عليها.

مثال لإضافة اسمها b2bstock:

{
    'name': 'b2bstock',
    'version': '1.0',
    'author': 'Abdennacer Elbasri',
    'depends': ['base', 'sale', 'stock'],
    'data': [
        'views/reception_offre.xml',
        'views/sale_order.xml',
    ],
    'installable': True,
    'application': True,
}
2. ملف  _init_.py

هذا الملف يستخدم لتهيئة الإضافة عند التثبيت. يقوم بتحديد الملفات التي سيتم تحميلها مثل النماذج (Models) أو وحدات التحكم (Controllers).

مثال من b2bstock:

from . import models
from . import controllers
3. مجلد models

هذا المجلد يحتوي على الملفات التي تعرف النماذج (Models) المستخدمة في الإضافة. النماذج تمثل جداول قاعدة البيانات، وهي المكان الذي يتم فيه تعريف الحقول والعلاقات بين البيانات.

أمثلة:

  • reception_offre.py: مسؤول عن نماذج استقبال العروض.
  • sale_order.py: يضيف الحقول والوظائف لإدارة الطلبات.
4. مجلد views

يحتوي هذا المجلد على ملفات XML التي تحدد الواجهات المرئية في أودو. يشمل ذلك القوائم، النماذج، والأزرار التي يتفاعل معها المستخدم.

أمثلة:

  • reception_offre.xml: تصميم واجهة استقبال العروض.
  • sale_order.xml: تخصيص واجهة الطلبات.
5. مجلد controllers

يستخدم هذا المجلد لتحديد واجهات برمجة التطبيقات (API) أو التعامل مع الطلبات الخاصة بالنظام.

مثال:

  • main.py: يحتوي على نقاط النهاية (Endpoints) التي تدير الاتصال بين الأنظمة.
6. مجلد security

هذا المجلد يحتوي على ملفات الصلاحيات والأذونات التي تحدد من يمكنه الوصول إلى الإضافة وما هي العمليات المسموح له بتنفيذها.

7. مجلد data

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

8. مجلد static

يحتوي على الموارد الثابتة مثل الصور، ملفات CSS، أو JavaScript.

9. مجلد tests

مخصص لاختبار الإضافة والتأكد من عملها بشكل صحيح.

10. ملفات إضافية (اختيارية)
  • wizard: لتوفير مربعات حوار تفاعلية.
  • reports: لتخصيص التقارير.
  • doc: لتوثيق الإضافة.

وهذه مكونات إضافية قد تجدها في إضافات أخرى

مخصصة للإضافات التي تحتوي على واجهات تفاعلية متقدمة.

مجلد setup:

يستخدم لإعداد ملفات التثبيت إذا كانت الإضافة ستوزع خارج أودو.

ملفات YAML:

تُستخدم للاختبارات بدلًا من بايثون.

ملفات جافاسكريبت:

مخصصة للإضافات التي تحتوي على واجهات تفاعلية متقدمة.

وإليكم المجلدات الرئيسية التي تتوفر عليها إضافات أودو بشكل عام، ونستمر في مثالنا b2bstock

  • النماذج (Models): لتعريف المنتجات، الطلبات، والعروض.
  • الواجهات (Views): لإظهار أزرار وحقول إضافية لإدارة العمليات.
  • وحدات التحكم (Controllers): لتوفير نقاط API للتواصل بين الأنظمة.

نلتقي في مقال آخر بحول الله، والسلام عليكم 🙋‍♂️

السابق
تحليل بيانات العملات المشفرة من بينانس: استكشاف، تصورات ولوحات تفاعلية
التالي
كيفية تشغيل أود باستخدام دوكر وربط الإضافات والملفات من المخدم المضيف