Skip to content

Instantly share code, notes, and snippets.

@inspiretk
Last active August 12, 2018 12:34
Show Gist options
  • Select an option

  • Save inspiretk/5e2b8d0f08508a118e5341d1cfc12165 to your computer and use it in GitHub Desktop.

Select an option

Save inspiretk/5e2b8d0f08508a118e5341d1cfc12165 to your computer and use it in GitHub Desktop.
# ! / usr / bin / env python
# - * - coding: utf-8 - * -
import sys
import os
print('################################################################################################ #############')
print('# Inheritance is an application to generate Module for Odoo # ')
print('# www.falconsolutions.cl # ')
print(' # Author: Marlon Falcon Herandez # ')
print(' # mail: mfalcon@falconsolutions.cl # ')
print(' ################################################################################################ ############# ')
# Enter the name of the module
name = raw_input ( " Enter the Name of the Module to Inherit: " )
module = name
name = name.replace ( " . " , ' _ ' )
name = " legacy_ " + name
form = raw_input ( " Give me the Form ID: " )
pos_campos = raw_input ( " Give me the name Reference field: " )
cant_campos = int ( raw_input ( " Number of Fields to Insert: " ))
print(' " " ')
print(' " ########## Fields #################################################################################### ')
print(' " " ')
print(' " " ')
# We create the module folder
os.makedirs (name)
os.makedirs (name + " / views " )
os.makedirs (name + " / models " )
# We create the files in the root
# We create the __init__.py
file = open (name + ' /__init__.py ' , ' w ' )
file .write ( ' # - * - coding: utf-8 - * - \ n ' )
file .write ( ' import models \ n ' )
file .close ()
# We created the __manifest__.py
file = open (name + ' /__manifest__.py ' , ' w ' )
file .write ( ' # - * - coding: utf-8 - * - \ n ' )
file .write ( ' ################################################################################################ ##########################################################################
file .write ( ' # \ n ' )
file .write ( ' # OpenERP, Open Source Management Solution \ n ' )
file .write ( ' # This module copyright (C) 2017 Marlon Falcón Hernandez \ n ' )
file .write ( ' # (<http://www.falconsolutions.cl>). \ n ' )
file .write ( ' # \ n ' )
file .write ( ' # This program is free software: you can redistribute it and / or modify \ n ' )
file .write ( ' # it under the terms of the GNU Affero General Public License as \ n ' )
file .write ( ' # published by the Free Software Foundation, either version 3 of the \ n ' )
file .write ( ' # License, or (at your option) any later version. \ n ' )
file .write ( ' # \ n ' )
file .write ( ' # This program is distributed in the hope that it will be useful, \ n ' )
file .write ( ' # but WITHOUT ANY WARRANTY; without even the implied warranty of \ n ' )
file .write ( ' # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the \ n ' )
file .write ( ' # GNU Affero General Public License for more details. \ n ' )
file .write ( ' # \ n ' )
file .write ( ' # You should have received a copy of the GNU Affero General Public License \ n ' )
file .write ( ' # along with this program. If not, see <http://www.gnu.org/licenses/>. \ n ' )
file .write ( ' # \ n ' )
file .write ( ' ################################################################################################ ##########################################################################
file .write ( ' { \ n ' )
file .write ( ' \' name \ ' : \' ' + name + ' MFH \ ' , \ n ' )
file .write ( ' \' version \ ' : \' 10.0.0.1.0 \ ' , \ n ' )
file .write ( ' \' author \ ' : "Falcón Solutions, Marlon Falcón ...", \ n ' )
file .write ( ' \' maintainer \ ' : \' Falcon Solutions \ ' , \ n ' )
file .write ( ' \' website \ ' : \' http://www.falconsolutions.cl \ ' , \ n ' )
file .write ( ' \' license \ ' : \' AGPL-3 \ ' , \ n ' )
file .write ( ' \' category \ ' : \' account.payment \ ' , \ n ' )
file .write ( ' \' summary \ ' : \' Example of a module by FalconSolutions. \ ' , \ n ' )
file .write ( ' \' depends \ ' : [ \' account \ ' , \' account_accountant \ ' ], \ n ' )
file .write ( ' \' description \ ' : "" " \ n ' )
file .write ( ' Module based on FalconSolutions \ n ' )
file .write ( ' ============================================================ ======== \ n ' )
file .write ( ' This module allows you to select \ n ' )
file .write ( ' "" ", \ n ' )
file .write ( ' \' demo \ ' : [], \ n ' )
file .write ( ' \' test \ ' : [], \ n ' )
file .write ( ' \' data \ ' : [ \' views / ' + name + ' _view.xml \ ' ,], \ n ' )
file .write ( ' \' installable \ ' : True, \ n ' )
file .write ( ' \' auto_install \ ' : False, \ n ' )
file .write ( ' } \ n ' )
file .close ()
# We created the Model
file = open (name + ' /models/__init__.py ' , ' w ' )
file .write ( ' # - * - coding: utf-8 - * - \ n ' )
file .write ( ' import ' + name + ' \ n ' )
file .close ()
# We created the Model
file = open (name + ' / models / ' + name + ' .py ' , ' w ' )
file .write ( ' # - * - coding: utf-8 - * - \ n ' )
file .write ( ' # Part of Odoo. See LICENSE file for full copyright and licensing details. \ n ' )
file .write ( ' from odoo import api, fields, models \ n ' )
file .write ( ' from datetime import datetime \ n ' )
file .write ( ' \ n ' )
file .write ( ' class ' + name + ' (models.Model): \ n ' )
file .write ( ' _inherit = " ' + module + ' " \ n ' )
fix = []
for num in range ( 1 , cant_fields + 1 ):
fname = raw_input ( " Field Name: " )
print " Char, Text, Boolean, Datetime, Integer "
ftipo = raw_input ( " Type of Field: " )
print(' " ----------------------------------- " ')
print(' " " ')
print(' " " ')
file .write ( ' ' + fname + ' = fields. ' + ftipo + ' (string = \' ' + fname + ' \ ' , required = True) \ n ' )
file .write ( ' \ n ' )
array.append (fname)
file .close ()
# We create the _views.xml
file = open (name + ' / views / ' + name + ' _view.xml ' , ' w ' )
file .write ( ' <? xml version = "1.0" encoding = "UTF-8"?> \ n ' )
file .write ( ' <odoo> \ n ' )
file .write ( ' <! - Comment on the Views -> \ n ' )
file .write ( ' <record id = "view_ej_ ' + name + ' _form" model = "ir.ui.view"> \ n ' )
file .write ( ' <field name = "name"> eg ' + name + ' .form </ field> \ n ' )
file .write ( ' <field name = "model"> ' + module + ' </ field> \ n ' )
file .write ( ' <field name = "inherit_id" ref = " ' + form + ' " /> \ n ' )
file .write ( ' <field name = "arch" type = "xml"> \ n ' )
file .write ( ' <field name = " ' + pos_campos + ' " position = "after"> \ n ' )
for fname in fix:
file .write ( ' <field name = " ' + fname + ' " /> \ n ' )
file .write ( ' </ field> \ n ' )
file .write ( ' </ field> \ n ' )
file .write ( ' </ record> \ n ' )
file .write ( ' </ odoo> \ n ' )
file .close ()
print('The Module was created: ' + name)
# https://github.com/falconsoft3d/odoo-constructor-module
# https://translate.google.com/translate?hl=en&sl=es&tl=en&u=https%3A%2F%2Fgithub.com%2Ffalconsoft3d%2Fodoo-constructor-module
# It is a program that creates simple modules.to execute it you need python
python simple.py
# It is a program that creates modules with use of inheritance python herencia.py
https://www.youtube.com/watch?v=DafCbHfXKcM
# ! / usr / bin / env python
# - * - coding: utf-8 - * -
import sys
import os
print(' ################################################################################################ ############# ')
print(' # Simple is an application to generate Module for Odoo ERP # " ')
print(' # www.falconsolutions.cl # " ')
print(' # Author: Marlon Falcon Herandez # " ')
print(' # mail: mfalcon@falconsolutions.cl # " ')
print(' ################################################################################################ ############# ')
# Enter the name of the module
name = raw_input ( " Enter the Module Name: " )
cant_fields = int ( raw_input ( " Number of Fields: " ))
print(' ')
print(' ########## Fields #################################################################################### ')
print(' ')
print(' ')
# We create the module folder
os.makedirs (name)
os.makedirs (name + " / views " )
os.makedirs (name + " / models " )
# We create the files in the root
# We create the __init__.py
file = open (name + ' /__init__.py ' , ' w ' )
file .write ( ' # - * - coding: utf-8 - * - \ n ' )
file .write ( ' import models \ n ' )
file .close ()
# We created the __manifest__.py
file = open (name + ' /__manifest__.py ' , ' w ' )
file .write ( ' # - * - coding: utf-8 - * - \ n ' )
file .write ( ' ################################################################################################ ##########################################################################
file .write ( ' # \ n ' )
file .write ( ' # OpenERP, Open Source Management Solution \ n ' )
file .write ( ' # This module copyright (C) 2017 Marlon Falcón Hernandez \ n ' )
file .write ( ' # (<http://www.falconsolutions.cl>). \ n ' )
file .write ( ' # \ n ' )
file .write ( ' # This program is free software: you can redistribute it and / or modify \ n ' )
file .write ( ' # it under the terms of the GNU Affero General Public License as \ n ' )
file .write ( ' # published by the Free Software Foundation, either version 3 of the \ n ' )
file .write ( ' # License, or (at your option) any later version. \ n ' )
file .write ( ' # \ n ' )
file .write ( ' # This program is distributed in the hope that it will be useful, \ n ' )
file .write ( ' # but WITHOUT ANY WARRANTY; without even the implied warranty of \ n ' )
file .write ( ' # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the \ n ' )
file .write ( ' # GNU Affero General Public License for more details. \ n ' )
file .write ( ' # \ n ' )
file .write ( ' # You should have received a copy of the GNU Affero General Public License \ n ' )
file .write ( ' # along with this program. If not, see <http://www.gnu.org/licenses/>. \ n ' )
file .write ( ' # \ n ' )
file .write ( ' ################################################################################################ ##########################################################################
file .write ( ' { \ n ' )
file .write ( ' \' name \ ' : \' ' + name + ' MFH \ ' , \ n ' )
file .write ( ' \' version \ ' : \' 10.0.0.1.0 \ ' , \ n ' )
file .write ( ' \' author \ ' : "Falcón Solutions, Marlon Falcón ...", \ n ' )
file .write ( ' \' maintainer \ ' : \' Falcon Solutions \ ' , \ n ' )
file .write ( ' \' website \ ' : \' http://www.falconsolutions.cl \ ' , \ n ' )
file .write ( ' \' license \ ' : \' AGPL-3 \ ' , \ n ' )
file .write ( ' \' category \ ' : \' account.payment \ ' , \ n ' )
file .write ( ' \' summary \ ' : \' Example of a module by FalconSolutions. \ ' , \ n ' )
file .write ( ' \' depends \ ' : [ \' account \ ' , \' account_accountant \ ' ], \ n ' )
file .write ( ' \' description \ ' : "" " \ n ' )
file .write ( ' Module based on FalconSolutions \ n ' )
file .write ( ' ============================================================ ======== \ n ' )
file .write ( ' This module allows you to select \ n ' )
file .write ( ' "" ", \ n ' )
file .write ( ' \' demo \ ' : [], \ n ' )
file .write ( ' \' test \ ' : [], \ n ' )
file .write ( ' \' data \ ' : [ \' views / ' + name + ' _view.xml \ ' ,], \ n ' )
file .write ( ' \' installable \ ' : True, \ n ' )
file .write ( ' \' auto_install \ ' : False, \ n ' )
file .write ( ' } \ n ' )
file .close ()
# We created the Model
file = open (name + ' /models/__init__.py ' , ' w ' )
file .write ( ' # - * - coding: utf-8 - * - \ n ' )
file .write ( ' import ' + name + ' \ n ' )
file .close ()
# We created the Model
file = open (name + ' / models / ' + name + ' .py ' , ' w ' )
file .write ( ' # - * - coding: utf-8 - * - \ n ' )
file .write ( ' # Part of Odoo. See LICENSE file for full copyright and licensing details. \ n ' )
file .write ( ' from odoo import api, fields, models \ n ' )
file .write ( ' from datetime import datetime \ n ' )
file .write ( ' \ n ' )
file .write ( ' class ' + name + ' (models.Model): \ n ' )
file .write ( ' _name = \' ex. ' + name + ' \ ' \ n ' )
fix = []
for num in range ( 1 , cant_fields + 1 ):
fname = raw_input ( " Field Name: " )
print " Char, Text, Boolean, Datetime, Integer "
ftipo = raw_input ( " Type of Field: " )
print " ----------------------------------- "
print " "
print " "
file .write ( ' ' + fname + ' = fields. ' + ftipo + ' (string = \' ' + fname + ' \ ' , required = True) \ n ' )
file .write ( ' \ n ' )
array.append (fname)
file .close ()
# We create the _views.xml
file = open (name + ' / views / ' + name + ' _view.xml ' , ' w ' )
file .write ( ' <? xml version = "1.0" encoding = "UTF-8"?> \ n ' )
file .write ( ' <odoo> \ n ' )
file .write ( ' <! - Comment on the Views -> \ n ' )
file .write ( ' <record id = "view_ej_ ' + name + ' _form" model = "ir.ui.view"> \ n ' )
file .write ( ' <field name = "name"> eg ' + name + ' .form </ field> \ n ' )
file .write ( ' <field name = "model"> eg ' + name + ' </ field> \ n ' )
file .write ( ' <field name = "arch" type = "xml"> \ n ' )
file .write ( ' <form string = "List of ' + name.capitalize () + ' "> \ n ' )
file .write ( ' <group> \ n ' )
for fname in fix:
file .write ( ' <field name = " ' + fname + ' " /> \ n ' )
file .write ( ' </ group> \ n ' )
file .write ( ' </ form> \ n ' )
file .write ( ' </ field> \ n ' )
file .write ( ' </ record> \ n ' )
file .write ( ' <record id = "view_ej_ ' + name + ' _tree" model = "ir.ui.view"> \ n ' )
file .write ( ' <field name = "name"> eg ' + name + ' .tree </ field> \ n ' )
file .write ( ' <field name = "model"> eg ' + name + ' </ field> \ n ' )
file .write ( ' <field name = "arch" type = "xml"> \ n ' )
file .write ( ' <tree> \ n ' )
for fname in fix:
file .write ( ' <field name = " ' + fname + ' " /> \ n ' )
file .write ( ' </ tree> \ n ' )
file .write ( ' </ field> \ n ' )
file .write ( ' </ record> \ n ' )
# We place the action
file .write ( ' <record model = "ir.actions.act_window" id = "act_ej_ ' + name + ' "> \ n ' )
file .write ( ' <field name = "name"> ' + name + ' </ field> \ n ' )
file .write ( ' <field name = "type"> ir.actions.act_window </ field> \ n ' )
file .write ( ' <field name = "res_model"> eg ' + name + ' </ field> \ n ' )
file .write ( ' <field name = "view_type"> form </ field> \ n ' )
file .write ( ' <field name = "view_mode"> tree, form </ field> \ n ' )
file .write ( ' </ record> \ n ' )
# We place the Menu
file .write ( ' <! - Declare the menu -> \ n ' )
file .write ( ' <menuitem id = "ej_ ' + name + ' _menu" name = " ' + name.capitalize () + ' " sequence = "10" /> \ n ' )
file .write ( ' <menuitem id = "submenu_ej_ ' + name + ' _menu" name = " ' + name.capitalize () + ' " sequence = "10" parent = "ej_ ' + name + ' _menu" /> \ n ' )
file .write ( ' <menuitem id = "submenu_ej_ ' + name + ' _action" name = " ' + name.capitalize () + ' " sequence = "10" parent = "submenu_ej_ ' + name + ' _menu" action = " act_ej_ ' + name + ' "/> \ n ' )
file .write ( ' </ odoo> \ n ' )
file .close ()
print('The Module was created: ' + name)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment