मॉड्यूल बनाएं¶
अपना पहला मॉड्यूल बनाने से पहले, Odoo.sh प्रोजेक्ट बनाना और अपने GitHub रिपॉज़िटरी का यूआरएल जानना आवश्यक है।
शब्दावली
~/srcवह डायरेक्टरी है जहां आपके Odoo प्रोजेक्ट से संबंधित Git रिपॉज़िटरी स्थित हैं।odooGitHub उपयोगकर्ता है।odoo-addonsGitHub रिपॉज़िटरी है।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()
एक datetime फ़ील्ड जोड़ें:
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 लाइब्रेरी इस्तेमाल करना चाहते हैं जो डिफ़ॉल्ट रूप से इंस्टॉल नहीं है, तो आप एक requirements.txt फ़ाइल डिफ़ाइन कर सकते हैं जो उन एक्सटर्नल लाइब्रेरी की लिस्ट करती है जिन पर आपके मॉड्यूल निर्भर हैं। प्लेटफ़ॉर्म इस फ़ाइल का इस्तेमाल आपके प्रोजेक्ट को ज़रूरी Python लाइब्रेरी को ऑटोमैटिकली इंस्टॉल करने के लिए करेगा।
टिप्पणी
Odoo.sh डेटाबेस पर सिस्टम पैकेज इंस्टॉल या अपग्रेड करना संभव नहीं है (जैसे, apt पैकेज)। हालांकि, विशिष्ट शर्तों के तहत, इंस्टॉलेशन के लिए पैकेज पर विचार किया जा सकता है। यह Python मॉड्यूल पर भी लागू होता है जिन्हें कंपाइलेशन के लिए सिस्टम पैकेज की ज़रूरत होती है और थर्ड-पार्टी Odoo मॉड्यूल पर भी।
Odoo.sh पर PostgreSQL एक्सटेंशन सपोर्टेड नहीं हैं, इसलिए Odoo.sh डेटाबेस में एक्सटेंशन (जैसे PostGIS, ltree, ...) इंस्टॉल करना संभव नहीं है।
उदाहरण के लिए, अपने मॉड्यूल में Unidecode library का इस्तेमाल करने के लिए:
अपनी रिपॉजिटरी के रूट फ़ोल्डर में
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)
module's manifest
__manifest__.pyको एडिट करके Python डिपेंडेंसी इंस्टॉल करने के लिए मॉड्यूल वर्शन बढ़ाएं।फिर, push the changes।
सलाह
git add requirements.txtचलाकरrequirements.txtफ़ाइल को स्टेज करें।