avanzosc team mailing list archive
-
avanzosc team
-
Mailing list archive
-
Message #00562
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.