मॉड्यूल बनाएं

अपना पहला मॉड्यूल बनाने से पहले, Odoo.sh प्रोजेक्ट बनाना और अपने GitHub रिपॉज़िटरी का यूआरएल जानना आवश्यक है।

शब्दावली

  • ~/src वह डायरेक्टरी है जहां आपके Odoo प्रोजेक्ट से संबंधित Git रिपॉज़िटरी स्थित हैं।

  • 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 प्रोजेक्ट मॉड्यूल को ऑटोमैटिकली इंस्टॉल करने के लिए कॉन्फ़िगर किया गया है, तो यह सीधे डेटाबेस डैशबोर्ड पर दिखाई देगा। अन्यथा, यह ऐप्लिकेशन ऐप्लिकेशन के अंतर्गत इंस्टॉलेशन के लिए उपलब्ध होगा।

डेटाबेस डैशबोर्ड पर नया मॉड्यूल

प्रॉडक्शन डेटा के साथ टेस्ट करें

टिप्पणी

इस चरण के लिए एक प्रॉडक्शन डेटाबेस आवश्यक है। अगर आपके पास अभी तक कोई नहीं है, तो इसे बनाएं।

जब आप डेमो डेटा के साथ डेवलपमेंट बिल्ड में मॉड्यूल को टेस्ट कर लें और मानें कि यह तैयार है, तो आप स्टेजिंग ब्रांच का उपयोग करके इसे प्रॉडक्शन डेटा के साथ टेस्ट कर सकते हैं।

आप ये कर सकते हैं:

  • अपनी डेवलपमेंट ब्रांच को स्टेजिंग ब्रांच में बदलने के लिए इसे ड्रैग और ड्रॉप करके Staging सेक्शन में ले जाएं।

  • इसे किसी मौजूदा स्टेजिंग ब्रांच में मर्ज करने के लिए इसे ड्रैग और ड्रॉप करके उस ब्रांच पर ले जाएं।

  • अपनी ब्रांचों को मर्ज करने के लिए git merge कमांड इस्तेमाल करें।

यह एक नई स्टेजिंग बिल्ड बनाता है जो प्रॉडक्शन डेटाबेस को डुप्लिकेट करती है और इसे आपकी ब्रांच के नवीनतम बदलावों के साथ अपडेट किए गए सर्वर पर चलाती है।

डेटाबेस तैयार होने के बाद, इसे ऐक्सेस करने के लिए Connect पर क्लिक करें।

मॉड्यूल इंस्टॉल करें

Apps ऐप्लिकेशन से मॉड्यूल इंस्टॉल करें। चूंकि मॉड्यूल ऐप्लिकेशन की लिस्ट में सीधे दिखाई नहीं दे सकता, इसलिए developer mode सक्रिय करके और Update Apps List ‣ Update पर क्लिक करके ऐप्लिकेशन की लिस्ट अपडेट करें।

टिप्पणी

मॉड्यूल ऑटोमैटिकली इंस्टॉल नहीं होता है, क्योंकि स्टेजिंग बिल्ड का उद्देश्य आपके बदलावों के व्यवहार को वैसे टेस्ट करना है जैसे वे प्रॉडक्शन डेटाबेस पर होंगे, इसलिए आप नहीं चाहेंगे कि मॉड्यूल ऑटोमैटिकली इंस्टॉल हो जाए।

प्रॉडक्शन में डिप्लॉय करें

एक बार जब आप प्रॉडक्शन डेटा के साथ स्टेजिंग ब्रांच में मॉड्यूल टेस्ट कर लेते हैं और मानते हैं कि यह प्रॉडक्शन के लिए तैयार है, तो आप अपनी ब्रांच को प्रॉडक्शन ब्रांच में मर्ज कर सकते हैं:

  • स्टेजिंग ब्रांच को ड्रैग और ड्रॉप करके प्रॉडक्शन ब्रांच पर ले जाएं।

  • अपनी ब्रांचों को मर्ज करने के लिए git merge कमांड इस्तेमाल करें।

यह स्टेजिंग ब्रांच से नवीनतम बदलावों को प्रॉडक्शन ब्रांच में मर्ज करता है और उनके साथ प्रॉडक्शन सर्वर को अपडेट करता है।

डेटाबेस तैयार होने के बाद, इसे ऐक्सेस करने के लिए Connect पर क्लिक करें।

मॉड्यूल इंस्टॉल करें

Apps ऐप्लिकेशन से मॉड्यूल इंस्टॉल करें। चूंकि मॉड्यूल ऐप्लिकेशन की लिस्ट में सीधे दिखाई नहीं दे सकता, इसलिए developer mode सक्रिय करके और Update Apps List ‣ Update पर क्लिक करके ऐप्लिकेशन की लिस्ट अपडेट करें।

बदलाव जोड़ें

यह सेक्शन बताता है कि किसी मॉडल में नया फ़ील्ड जोड़कर और उसे डिप्लॉय करके अपने मॉड्यूल में बदलाव कैसे जोड़ें।

  1. editor से या अपने कंप्यूटर से, मॉड्यूल फ़ोल्डर ~/src/odoo-addons/my_module खोलें, फिर models/models.py फ़ाइल को एडिट करने के लिए खोलें। description फ़ील्ड के बाद:

    description = fields.Text()
    

    datetime फ़ील्ड जोड़ें:

    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 लाइब्रेरी का इस्तेमाल करना चाहते हैं जो डिफ़ॉल्ट रूप से इंस्टॉल नहीं है, तो आप एक requirements.txt फ़ाइल परिभाषित कर सकते हैं जिसमें उन एक्सटर्नल लाइब्रेरी की लिस्ट हो जिन पर आपके मॉड्यूल निर्भर हैं। प्लेटफ़ॉर्म इस फ़ाइल का इस्तेमाल करके आपके प्रोजेक्ट के लिए आवश्यक Python लाइब्रेरी को ऑटोमैटिकली इंस्टॉल करेगा।

टिप्पणी

  • Odoo.sh डेटाबेस पर सिस्टम पैकेज इंस्टॉल या अपग्रेड करना संभव नहीं है (जैसे apt पैकेज)। हालांकि, विशिष्ट परिस्थितियों में, पैकेज को इंस्टॉलेशन के लिए माना जा सकता है। यह Python मॉड्यूल पर भी लागू होता है जिन्हें संकलन के लिए सिस्टम पैकेज की आवश्यकता होती है और थर्ड-पार्टी Odoo मॉड्यूल पर भी।

  • PostgreSQL एक्सटेंशन Odoo.sh पर समर्थित नहीं हैं इसलिए Odoo.sh डेटाबेस में एक्सटेंशन (जैसे PostGIS, ltree, ...) इंस्टॉल करना संभव नहीं है।

उदाहरण के लिए, अपने मॉड्यूल में 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. मॉड्यूल के मेनिफेस्ट __manifest__.py को एडिट करके Python डिपेंडेंसी इंस्टॉल करने के लिए मॉड्यूल वर्शन बढ़ाएं।

  6. फिर, बदलावों को पुश करें

    सलाह

    git add requirements.txt चलाकर requirements.txt फ़ाइल को स्टेज करें।