Procházet zdrojové kódy

[ADD] container workflow

robert před 6 roky
rodič
revize
485a4d7fc5
5 změnil soubory, kde provedl 110 přidání a 6 odebrání
  1. 2 1
      models/__init__.py
  2. binární
      models/__init__.pyc
  3. 38 0
      models/odoo_management_config.py
  4. 11 2
      models/system_instance.py
  5. 59 3
      templates.xml

+ 2 - 1
models/__init__.py

@@ -1,3 +1,4 @@
 # -*- coding: utf-8 -*-
 import payment_plan
-import system_instance
+import system_instance
+import odoo_management_config

binární
models/__init__.pyc


+ 38 - 0
models/odoo_management_config.py

@@ -0,0 +1,38 @@
+# -*- coding: utf-8 -*-
+from openerp import api, models, fields
+from openerp.tools.safe_eval import safe_eval
+
+
+class OdooManagementConfig(models.TransientModel):
+    _inherit = 'res.config.settings'
+    _name = 'odoo.management.config'
+
+    docker_sock = fields.Char(string='Socket', size=100, default='/var/run/docker.sock')
+    docker_exclusion = fields.Char(string='Lista de exclusión', size=160)
+    odoo_image = fields.Char(string='Imagen docker', size=50)
+    odoo_network = fields.Char(string='Red virtual', size=50, default='eiru')
+    odoo_ports_range = fields.Char(string='Rango de puertos', size=50)
+    odoo_root_path = fields.Char(string='Ruta raíz', size=50, default='/opt/odoo')
+    odoo_db = fields.Char(string='Base de datos', size=50, default='db')
+    git_path = fields.Char(string='Ruta del repositorio', size=100, default='/opt/gogs/git/gogs-repositories')
+
+    @api.multi
+    def set_default_settings(self):
+        pass
+
+    @api.model
+    def get_default_settings(self, fields):
+        return {
+            'docker_sock': '/var/run/docker.sock',
+            'docker_exclusion': (('test_001', 'Test 001'), ('test_002', 'Test 002')),
+            'odoo_image': 'odoo:1.0',
+            'odoo_network': 'eiru',
+            'odoo_ports_range': safe_eval('[10000, 20000]'),
+            'odoo_root_path': '/opt/odoo',
+            'odoo_db': 'db',
+            'git_path': '/opt/gogs/git/gogs-repositories'
+        }
+
+    @api.model
+    def on_change_docker_exclusion(self):
+        pass

+ 11 - 2
models/system_instance.py

@@ -11,7 +11,7 @@ import unicodedata
 import stringcase
 # import time
 
-print(config['docker_sock'])
+# print(config['docker_sock'])
 
 
 class SystemInstance(models.Model):
@@ -71,16 +71,24 @@ class SystemInstance(models.Model):
 
         self.state = 'activated'
 
+    @api.one
+    def action_disapprove(self):
+        if self.state != 'draft':
+            raise Warning('No se puede desaprobar un sistema ya activo')
+
+        self.state = 'disapproved'
+
     @api.one
     def action_suspend(self):
         if self.state != 'activated':
             raise Warning('No se puede suspender un sistema no activo')
 
         self.state = 'suspended'
+        self.running = False
 
     @api.one
     def copy(self):
-        raise Warning('Atención', 'No se puede duplicar una instancia. Por favor, cree un nuevo')
+        raise Warning('Atención', 'No se puede duplicar una instancia. Por favor, cree uno nuevo')
 
     @api.one
     def action_destroy(self):
@@ -88,6 +96,7 @@ class SystemInstance(models.Model):
             raise Warning('No se puede eliminar un sistema ya eliminado')
 
         self.state = 'destroyed'
+        self.running = False
 
     @api.one
     def action_start(self):

+ 59 - 3
templates.xml

@@ -6,7 +6,7 @@
             <field name="name">system.instance.tree</field>
             <field name="model">system.instance</field>
             <field name="arch" type="xml">
-                <tree colors="green:running == True and state == 'activated';red:running == False and state == 'activated';blue:state == 'draft';yellow:state == 'disapproved';gray:state == 'destroyed'" delete="false" copy="false">
+                <tree colors="green:running == True and state == 'activated';red:running == False and state == 'activated';blue:state == 'draft';yellow:state == 'disapproved';orange:state == 'suspended';gray:state == 'destroyed'" delete="false" copy="false">
                     <field name="name" />
                     <field name="domain" class="oe_link" />
                     <field name="demo" />
@@ -42,6 +42,13 @@
                                 type="object"
                                 class="oe_highlight"
                                 modifiers="{'invisible': ['|', ('id', '=', False), ('state', 'not in', ['draft', 'suspended'])]}" />
+                        <button
+                                name="action_disapprove"
+                                states="draft"
+                                string="No aprobar"
+                                type="object"
+                                class="oe_danger"
+                                modifiers="{'invisible': ['|', ('id', '=', False), ('state', '!=', 'draft')]}" />
                         <button
                                 name="action_suspend"
                                 states="activated"
@@ -148,6 +155,46 @@
             </field>
         </record>
 
+        <!--  odoo.management.config form -->
+        <record id="odoo_management_config_form_view" model="ir.ui.view">
+            <field name="name">Preferencias</field>
+            <field name="model">odoo.management.config</field>
+            <field name="arch" type="xml">
+                <form string="Preferencias">
+                    <header>
+                        <button string="Guardar" type="object" name="execute" class="oe_highlight" />
+                        or
+                        <button string="Cancelar" type="object" name="cancel" class="oe_link" />
+                    </header>
+                    <div name="general">
+                        <group>
+                            <group string="Docker">
+                                <field name="docker_sock" />
+                                <field name="docker_exclusion" widget="many2many_tags" context="{'model': None}" />
+                            </group>
+                            <group />
+                        </group>
+                        <group>
+                            <group string="Odoo">
+                                <field name="odoo_image" />
+                                <field name="odoo_network" />
+                                <field name="odoo_ports_range" />
+                                <field name="odoo_root_path" />
+                                <field name="odoo_db" />
+                            </group>
+                            <group />
+                        </group>
+                        <group>
+                            <group string="Git">
+                                <field name="git_path" />
+                            </group>
+                            <group />
+                        </group>
+                    </div>
+                </form>
+            </field>
+        </record>
+
         <!-- system.instance action -->
         <record id="odoo_container_action" model="ir.actions.act_window">
             <field name="name">Sistemas Odoo</field>
@@ -176,6 +223,15 @@
             </field>
         </record>
 
+        <!-- odoo.management.config action -->
+        <record id="odoo_management_config_action" model="ir.actions.act_window">
+            <field name="name">Configuración</field>
+            <field name="type">ir.actions.act_window</field>
+            <field name="res_model">odoo.management.config</field>
+            <field name="view_mode">form</field>
+            <field name="target">inline</field>
+        </record>
+
         <!-- root menu -->
         <menuitem id="sysadmin_menu_root" name="Administración de Sistemas" />
 
@@ -185,7 +241,7 @@
         
         <!-- configuration menu  -->
         <menuitem id="configuration_menu_categ" name="Configuración" parent="sysadmin_menu_root" />
-        <menuitem id="payment_plan_menu_act" name="Planes" parent="configuration_menu_categ" action="payment_plan_action" />
-        <menuitem id="configuration_menu_act" name="Configuración" parent="configuration_menu_categ" action="payment_plan_action" />
+        <menuitem id="payment_plan_menu_act" name="Planes de pago" parent="configuration_menu_categ" action="payment_plan_action" />
+        <menuitem id="configuration_menu_act" name="Configuración" parent="configuration_menu_categ" action="odoo_management_config_action" />
     </data>
 </openerp>