← Back to team overview

avanzosc team mailing list archive

Re: [Merge] lp:~oihanecruce/avanzosc/nayar_mqspace into lp:~avanzosc-security-team/avanzosc/72horas

 

Review: Approve code review

Un comentario como curiosidad, pero todo correcto.

Un saludo.

Diff comments:

> === modified file 'nayar_mqspace/__init__.py'
> --- nayar_mqspace/__init__.py	2014-06-11 10:23:47 +0000
> +++ nayar_mqspace/__init__.py	2014-06-30 14:09:22 +0000
> @@ -19,7 +19,4 @@
>  #
>  ##############################################################################
>  
> -import worker
> -
> -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
> -
> +from . import models
> 
> === modified file 'nayar_mqspace/__openerp__.py'
> --- nayar_mqspace/__openerp__.py	2014-06-11 10:23:47 +0000
> +++ nayar_mqspace/__openerp__.py	2014-06-30 14:09:22 +0000
> @@ -24,18 +24,16 @@
>      "version": "1.0",
>      "author": "Nayar Systems",
>      "category": "Enterprise Specific Modules",
> -    "description": "Soporte para workers que trabajan conectados a la nube MQSpace",
> +    "description": """
> +    Soporte para workers que trabajan conectados a la nube MQSpace
> +    """,
>      "depends": [],
> -    "init_xml": [],
> -    "demo_xml": [],
> -    "update_xml": [
> +    "data": [
>          'security/nayar_mqspace.xml',
>          'security/ir.model.access.csv',
> -        'worker_view.xml',
> -        ],
> +        'views/worker_view.xml',
> +    ],
>      "website": 'http://www.72horas.net/',
>      "active": False,
>      "installable": True
>  }
> -
> -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
> 
> === added directory 'nayar_mqspace/models'
> === added file 'nayar_mqspace/models/__init__.py'
> --- nayar_mqspace/models/__init__.py	1970-01-01 00:00:00 +0000
> +++ nayar_mqspace/models/__init__.py	2014-06-30 14:09:22 +0000
> @@ -0,0 +1,22 @@
> +# -*- coding: utf-8 -*-
> +##############################################################################
> +#
> +#    OpenERP, Open Source Management Solution
> +#    Copyright (C) 2013 Nayar Systems (<http://www.72horas.net/>)
> +#
> +#    This program is free software: you can redistribute it and/or modify
> +#    it under the terms of the GNU Affero General Public License as
> +#    published by the Free Software Foundation, either version 3 of the
> +#    License, or (at your option) any later version.
> +#
> +#    This program is distributed in the hope that it will be useful,
> +#    but WITHOUT ANY WARRANTY; without even the implied warranty of
> +#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +#    GNU Affero General Public License for more details.
> +#
> +#    You should have received a copy of the GNU Affero General Public License
> +#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
> +#
> +##############################################################################
> +
> +from . import worker
> 
> === renamed file 'nayar_mqspace/worker.py' => 'nayar_mqspace/models/worker.py'
> --- nayar_mqspace/worker.py	2014-06-11 10:23:47 +0000
> +++ nayar_mqspace/models/worker.py	2014-06-30 14:09:22 +0000
> @@ -19,16 +19,12 @@
>  #
>  ##############################################################################
>  
> -import logging
> -import netsvc
> -from osv import osv, fields
> +from openerp import logging, netsvc
> +from openerp.osv import orm, fields
>  import platform
>  import pooler
>  import threading
> -import time
> -from tools import config
> -from tools import mqclient
> -from tools.translate import _
> +from openerp.tools import config, mqclient

mqclient debe ser algo que han añadido ellos al core. Les preguntaré a ver.

>  
>  
>  STATE = [
> @@ -37,7 +33,7 @@
>      ]
>  
>  
> -class nayar_mqspace_worker(osv.osv):
> +class NayarMqspaceWorker(orm.Model):
>      _name = 'nayar.mqspace.worker'
>      _description = 'Nayar MQSpace Worker'
>  
> @@ -46,7 +42,9 @@
>      def _get_state(self, cr, uid, ids, field_name, arg, context):
>          res = {}
>          for i in ids:
> -            if cr.dbname in self.workers and i in self.workers[cr.dbname] and self.workers[cr.dbname][i].is_alive():
> +            if (cr.dbname in self.workers and
> +                    i in self.workers[cr.dbname] and
> +                    self.workers[cr.dbname][i].is_alive()):
>                  res[i] = 'running'
>              else:
>                  res[i] = 'stopped'
> @@ -55,22 +53,25 @@
>      _columns = {
>          'name': fields.char('Name', size=512, required=True),
>          'uid': fields.many2one('res.users', 'User', required=True),
> -        'state': fields.function(_get_state, type='selection', selection=STATE, method=True, string='State'),
> +        'state': fields.function(_get_state, type='selection', selection=STATE,
> +                                 method=True, string='State'),
>          'autorun': fields.boolean('Auto'),
> -        'queue_ids': fields.one2many('nayar.mqspace.worker.queue', 'worker_id', 'Queues'),
> -        }
> +        'queue_ids': fields.one2many('nayar.mqspace.worker.queue', 'worker_id',
> +                                     'Queues'),
> +    }
>  
>      _defaults = {
>          'uid': lambda self, cr, uid, context: uid,
>          'autorun': False,
> -        }
> +    }
>  
>      def __init__(self, *args, **kwargs):
> -        super(nayar_mqspace_worker, self).__init__(*args, **kwargs)
> +        super(NayarMqspaceWorker, self).__init__(*args, **kwargs)
>          pool, cr = args
>          try:
>              self.logger = logging.getLogger("mqspace")
> -            cr.execute("SELECT EXISTS(SELECT * FROM information_schema.tables WHERE table_name = 'nayar_mqspace_worker')")
> +            cr.execute("SELECT EXISTS(SELECT * FROM information_schema.tables "
> +                       "WHERE table_name = 'nayar_mqspace_worker')")
>              if cr.fetchone()[0]:
>                  ids = self.search(cr, 1, [('autorun', '=', True)])
>                  self.schedule(cr, 1, ids)
> @@ -79,14 +80,17 @@
>  
>      def schedule(self, cr, uid, ids, context=None):
>          for i in ids:
> -            if not(cr.dbname in self.workers and i in self.workers[cr.dbname] and self.workers[cr.dbname][i].is_alive()):
> +            if not(cr.dbname in self.workers and
> +                   i in self.workers[cr.dbname] and
> +                   self.workers[cr.dbname][i].is_alive()):
>                  worker_conf = self.browse(cr, uid, i)
> -                worker = Worker(cr.dbname, worker_conf.uid.id, i, worker_conf.name)
> +                worker = Worker(cr.dbname, worker_conf.uid.id, i,
> +                                worker_conf.name)
>                  if not cr.dbname in self.workers:
>                      self.workers[cr.dbname] = {}
>                  self.workers[cr.dbname][i] = worker
>          return True
> -        
> +
>      def start(self, cr, uid, ids, context=None):
>          self.schedule(cr, uid, ids, context=context)
>          for i in ids:
> @@ -104,24 +108,27 @@
>  
>      def process(self, cr, uid, data):
>          model_obj = self.pool.get(data['model'])
> -        return getattr(model_obj, data['fun'])(cr, uid, *data.get('args', []), **data.get('kwargs', {}))
> -
> -nayar_mqspace_worker()
> -
> -
> -class nayar_mqspace_worker_queue(osv.osv):
> +        return getattr(model_obj, data['fun'])(cr, uid,
> +                                               *data.get('args', []),
> +                                               **data.get('kwargs', {}))
> +
> +
> +class NayarMqspaceWorkerQueue(orm.Model):
>      _name = 'nayar.mqspace.worker.queue'
>      _description = 'Nayar MQSpace Queue'
>  
>      _columns = {
> -        'worker_id': fields.many2one('nayar.mqspace.worker', 'Worker', required=True),
> +        'worker_id': fields.many2one('nayar.mqspace.worker', 'Worker',
> +                                     required=True),
>          'name': fields.char('Name', size=512, required=True),
> -        'model': fields.char('Object', size=64, help="Name of object whose function will be called when this queue will have messages."),
> -        'function': fields.char('Function', size=64, help="Name of the method to be called on the object when this queue receives a message."),
> +        'model': fields.char('Object', size=64,
> +                             help="Name of object whose function will be "
> +                             "called when this queue will have messages."),
> +        'function': fields.char('Function', size=64,
> +                                help="Name of the method to be called on the "
> +                                "object when this queue receives a message."),
>          }
>  
> -nayar_mqspace_worker_queue()
> -
>  
>  class Worker(threading.Thread, netsvc.Server):
>      def __init__(self, db_name, uid, worker_id, name):
> @@ -143,7 +150,8 @@
>              netsvc.Server.start(self)
>  
>      def run(self):
> -        self.logger.info("Starting Worker '%s' on %s" % (self.name, self.db_name))
> +        self.logger.info("Starting Worker '%s' on %s" %
> +                         (self.name, self.db_name))
>          print "Starting Worker '%s' on %s" % (self.name, self.db_name)
>  
>          try:
> @@ -151,13 +159,18 @@
>              self.cr = pooler.get_db(self.db_name).cursor()
>              self.halt = False
>              self.connection = mqclient.Connection(config.get('cloud_host'))
> -            self.connection.session_create(config.get('cloud_user'), config.get('cloud_pass'), expire=60*5)
> +            self.connection.session_create(config.get('cloud_user'),
> +                                           config.get('cloud_pass'),
> +                                           expire=60*5)
>              self.connection.start()
>  
>              queue_obj = self.pool.get('nayar.mqspace.worker.queue')
> -            queue_ids = queue_obj.search(self.cr, self.uid, [('worker_id', '=', self.worker_id)])
> +            queue_ids = queue_obj.search(self.cr, self.uid,
> +                                         [('worker_id', '=', self.worker_id)])
>              queues = queue_obj.browse(self.cr, self.uid, queue_ids)
> -            queue_names = ["%s%s.%s.%s" % (config.get('cloud_path'), platform.node(), self.db_name, queue.name) for queue in queues]
> +            queue_names = ["%s%s.%s.%s" % (config.get('cloud_path'),
> +                                           platform.node(), self.db_name,
> +                                           queue.name) for queue in queues]
>  
>              pulls = []
>              for q in queue_names:
> @@ -165,7 +178,8 @@
>                  t.start()
>                  pulls.append(t)
>  
> -            self.logger.info("Worker '%s' running on %s" % (self.name, self.db_name))
> +            self.logger.info("Worker '%s' running on %s" %
> +                             (self.name, self.db_name))
>              print "Worker '%s' running on %s" % (self.name, self.db_name)
>  
>              for t in pulls:
> @@ -181,7 +195,8 @@
>          except Exception as ex:
>              self.logger.error(ex)
>  
> -        self.logger.info("Worker '%s' on %s stopped" % (self.name, self.db_name))
> +        self.logger.info("Worker '%s' on %s stopped" %
> +                         (self.name, self.db_name))
>          print "Worker '%s' on %s stopped" % (self.name, self.db_name)
>  
>      def pull_message(self, queue_name):
> @@ -198,7 +213,8 @@
>                          self.logger.error(m)
>                          break
>                      else:
> -                        t = threading.Thread(target=self.process_task, args=(taskpull, m))
> +                        t = threading.Thread(target=self.process_task,
> +                                             args=(taskpull, m))
>                          t.start()
>                          tasks.append(t)
>                          taskpull = self.connection.new_taskpull()
> @@ -211,22 +227,27 @@
>              for t in tasks:
>                  t.join()
>  
> -    def process_task(self, taskpull, message):
> +    def process_task(self, taskpull, message, context=None):
>          try:
>              cr = pooler.get_db(self.db_name).cursor()
> -            taskpull.result(self.process_message(cr, self.uid, message))
> +            taskpull.result(self.process_message(cr, self.uid, message,
> +                                                 context=context))
>              cr.close()
>              cr = None
>          except Exception as ex:
>              self.logger.error(message)
>              self.logger.error(ex)
> -        
> -    def process_message(self, cr, uid, message):
> +
> +    def process_message(self, cr, uid, message, context=None):
>          queue_name = message['data']['queue']
> -        queue_obj = self.pool.get('nayar.mqspace.worker.queue')
> -        queue_ids = queue_obj.search(cr, uid, [('worker_id', '=', self.worker_id)])
> -        for queue in queue_obj.browse(cr, uid, queue_ids):
> -            if queue_name == "%s%s.%s.%s" % (config.get('cloud_path'), platform.node(), self.db_name, queue.name):
> +        queue_obj = self.pool['nayar.mqspace.worker.queue']
> +        queue_ids = queue_obj.search(cr, uid,
> +                                     [('worker_id', '=', self.worker_id)],
> +                                     context=context)
> +        for queue in queue_obj.browse(cr, uid, queue_ids, context=context):
> +            if queue_name == "%s%s.%s.%s" % (config.get('cloud_path'),
> +                                             platform.node(), self.db_name,
> +                                             queue.name):
>                  try:
>                      m = self.pool.get(queue.model)
>                      f = getattr(m, queue.function)
> @@ -235,12 +256,15 @@
>                  except Exception as ex:
>                      cr.rollback()
>                      msg_error = ""
> -                    if type(ex) is osv.except_osv:
> +                    if type(ex) is orm.except_orm:
>                          msg_error = "%s %s" % (ex.name, ex.value)
>                      else:
>                          msg_error = str(ex)
>                      res = {'error': msg_error}
> -                    self.logger.exception("Job call of self.pool.get('%s').%s(cr, uid, %s) failed" % (queue.model, queue.function, message['data']['data']))
> +                    self.logger.exception(
> +                        "Job call of self.pool.get('%s').%s(cr, uid, %s) "
> +                        "failed" % (queue.model, queue.function,
> +                                    message['data']['data']))
>  
>                  return res
>  
> @@ -250,7 +274,8 @@
>  
>      def stop(self):
>          if self.is_alive():
> -            self.logger.info("Stopping Worker '%s' on %s" % (self.name, self.db_name))
> +            self.logger.info("Stopping Worker '%s' on %s" %
> +                             (self.name, self.db_name))
>              print "Stopping Worker '%s' on %s" % (self.name, self.db_name)
>              self.halt = True
>              netsvc.Server.stop(self)
> 
> === added directory 'nayar_mqspace/views'
> === renamed file 'nayar_mqspace/worker_view.xml' => 'nayar_mqspace/views/worker_view.xml'
> --- nayar_mqspace/worker_view.xml	2014-06-11 10:23:47 +0000
> +++ nayar_mqspace/views/worker_view.xml	2014-06-30 14:09:22 +0000
> @@ -1,100 +1,102 @@
>  <?xml version="1.0" encoding="utf-8"?>
>  <openerp>
> -  <data>
> -    <!-- Worker Search View -->
> -    <record id="view_nayar_mqspace_worker_search" model="ir.ui.view">
> -      <field name="name">view.nayar.mqspace.worker.search</field>
> -      <field name="model">nayar.mqspace.worker</field>
> -      <field name="type">search</field>
> -      <field name="arch" type="xml">
> -	<search string="Search Workers">
> -	  <field name="name"/>
> -	  <field name="uid"/>
> -	  <field name="state"/>
> -	  <field name="autorun"/>
> -	</search>
> -      </field>
> -    </record>
> -
> -    <!-- Worker Tree View -->
> -    <record id="view_nayar_mqspace_worker_view" model="ir.ui.view">
> -      <field name="name">view.nayar.mqspace.worker.tree</field>
> -      <field name="model">nayar.mqspace.worker</field>
> -      <field name="type">tree</field>
> -      <field name="priority">1</field>
> -      <field name="arch" type="xml">
> -	<tree string="Workers">
> -	  <field name="name" />
> -	  <field name="uid" />
> -	  <field name="state" />
> -	  <field name="autorun" />
> -	</tree>
> -      </field>
> -    </record>
> -
> -    <!-- Worker Form View-->
> -    <record id="view_nayar_mqspace_worker_form" model="ir.ui.view">
> -      <field name="name">view.nayar.mqspace.worker.form</field>
> -      <field name="model">nayar.mqspace.worker</field>
> -      <field name="type">form</field>
> -      <field name="arch" type="xml">
> -        <form string="Worker">
> -          <group col="4" colspan="2">
> -            <field name="name"/>
> -	    <field name="uid"/>
> -	    <field name="state"/>
> -	    <field name="autorun"/>
> -	    <field name="queue_ids" nolabel="1" colspan="4"/>
> -	    <button name="start" string="Start" type="object" icon="gtk-go-forward" colspan="2"/>
> -	    <button name="stop" string="Stop" type="object" icon="gtk-stop" colspan="2"/>
> -	  </group>
> -        </form>
> -      </field>
> -    </record>
> -
> -    <!-- Queue Tree View-->
> -    <record id="view_nayar_mqspace_worker_queue_tree" model="ir.ui.view">
> -      <field name="name">view.nayar.mqspace.worker.queue.tree</field>
> -      <field name="model">nayar.mqspace.worker.queue</field>
> -      <field name="type">tree</field>
> -      <field name="priority">1</field>
> -      <field name="arch" type="xml">
> -        <tree string="Queues">
> -          <field name="name"/>
> -          <field name="model"/>
> -          <field name="function"/>
> -        </tree>
> -      </field>
> -    </record>
> -
> -    <!-- Queue Form View -->
> -    <record id="view_nayar_mqspace_worker_queue_form" model="ir.ui.view" >
> -      <field name="name">view.nayar.mqspace.worker.queue.form</field>
> -      <field name="model">nayar.mqspace.worker.queue</field>
> -      <field name="priority">1</field>
> -      <field name="type">form</field>
> -      <field name="arch" type="xml">
> -        <form string="Queue">
> -          <group colspan="2" col="4">
> -            <field name="name"/>
> -            <field name="model"/>
> -            <field name="function"/>
> -          </group>
> -        </form>
> -      </field>
> -    </record>
> -
> -    <!-- Actions -->
> -    <record id="action_nayar_mqspace_worker_form" model="ir.actions.act_window">
> -      <field name="name">Workers</field>
> -      <field name="type">ir.actions.act_window</field>
> -      <field name="res_model">nayar.mqspace.worker</field>
> -      <field name="view_type">form</field>
> -      <field name="view_mode">tree,form</field>
> -      <field name="search_view_id" ref="view_nayar_mqspace_worker_search"/>
> -    </record>
> -
> -    <menuitem id="base.menu_nayar_mqspace" name="Nayar MQSpace" parent="base.menu_administration"/>
> -    <menuitem action="action_nayar_mqspace_worker_form" id="menu_nayar_mqspace_worker" parent="base.menu_nayar_mqspace" sequence="1"/>
> -  </data>
> +    <data>
> +        <!-- Worker Search View -->
> +        <record id="view_nayar_mqspace_worker_search" model="ir.ui.view">
> +            <field name="name">view.nayar.mqspace.worker.search</field>
> +            <field name="model">nayar.mqspace.worker</field>
> +            <field name="arch" type="xml">
> +                <search string="Search Workers">
> +                    <field name="name" />
> +                    <field name="uid" />
> +                    <field name="state" />
> +                    <field name="autorun" />
> +                </search>
> +            </field>
> +        </record>
> +
> +        <!-- Worker Tree View -->
> +        <record id="view_nayar_mqspace_worker_view" model="ir.ui.view">
> +            <field name="name">view.nayar.mqspace.worker.tree</field>
> +            <field name="model">nayar.mqspace.worker</field>
> +            <field name="priority">1</field>
> +            <field name="arch" type="xml">
> +                <tree string="Workers">
> +                    <field name="name" />
> +                    <field name="uid" />
> +                    <field name="state" />
> +                    <field name="autorun" />
> +                </tree>
> +            </field>
> +        </record>
> +
> +        <!-- Worker Form View -->
> +        <record id="view_nayar_mqspace_worker_form" model="ir.ui.view">
> +            <field name="name">view.nayar.mqspace.worker.form</field>
> +            <field name="model">nayar.mqspace.worker</field>
> +            <field name="arch" type="xml">
> +                <form string="Worker">
> +                    <group col="4" colspan="2">
> +                        <field name="name" />
> +                        <field name="uid" />
> +                        <field name="state" />
> +                        <field name="autorun" />
> +                        <field name="queue_ids" nolabel="1"
> +                            colspan="4" />
> +                        <button name="start" string="Start" type="object"
> +                            icon="gtk-go-forward" colspan="2" />
> +                        <button name="stop" string="Stop" type="object"
> +                            icon="gtk-stop" colspan="2" />
> +                    </group>
> +                </form>
> +            </field>
> +        </record>
> +
> +        <!-- Queue Tree View -->
> +        <record id="view_nayar_mqspace_worker_queue_tree" model="ir.ui.view">
> +            <field name="name">view.nayar.mqspace.worker.queue.tree
> +            </field>
> +            <field name="model">nayar.mqspace.worker.queue</field>
> +            <field name="priority">1</field>
> +            <field name="arch" type="xml">
> +                <tree string="Queues">
> +                    <field name="name" />
> +                    <field name="model" />
> +                    <field name="function" />
> +                </tree>
> +            </field>
> +        </record>
> +
> +        <!-- Queue Form View -->
> +        <record id="view_nayar_mqspace_worker_queue_form" model="ir.ui.view">
> +            <field name="name">view.nayar.mqspace.worker.queue.form
> +            </field>
> +            <field name="model">nayar.mqspace.worker.queue</field>
> +            <field name="priority">1</field>
> +            <field name="arch" type="xml">
> +                <form string="Queue">
> +                    <group colspan="2" col="4">
> +                        <field name="name" />
> +                        <field name="model" />
> +                        <field name="function" />
> +                    </group>
> +                </form>
> +            </field>
> +        </record>
> +
> +        <!-- Actions -->
> +        <record id="action_nayar_mqspace_worker_form" model="ir.actions.act_window">
> +            <field name="name">Workers</field>
> +            <field name="type">ir.actions.act_window</field>
> +            <field name="res_model">nayar.mqspace.worker</field>
> +            <field name="view_type">form</field>
> +            <field name="view_mode">tree,form</field>
> +            <field name="search_view_id" ref="view_nayar_mqspace_worker_search" />
> +        </record>
> +
> +        <menuitem id="base.menu_nayar_mqspace" name="Nayar MQSpace"
> +            parent="base.menu_administration" />
> +        <menuitem action="action_nayar_mqspace_worker_form" id="menu_nayar_mqspace_worker"
> +            parent="base.menu_nayar_mqspace" sequence="1" />
> +    </data>
>  </openerp>
> 


-- 
https://code.launchpad.net/~oihanecruce/avanzosc/nayar_mqspace/+merge/225008
Your team Avanzosc_security is subscribed to branch lp:~avanzosc-security-team/avanzosc/72horas.