avanzosc team mailing list archive
-
avanzosc team
-
Mailing list archive
-
Message #00471
Re: [Merge] lp:~oihanecruce/avanzosc/dos_contracts_models into lp:~avanzosc-security-team/avanzosc/72horas
Review: Needs Fixing code review
Comentarios inline.
Diff comments:
> === modified file 'dos_contracts_models/__init__.py'
> --- dos_contracts_models/__init__.py 2014-06-11 10:23:47 +0000
> +++ dos_contracts_models/__init__.py 2014-06-16 14:10:18 +0000
> @@ -19,8 +19,5 @@
> #
> ##############################################################################
>
> -import wizard
> -import contract_model
> -
> -
> -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
> +from . import wizard
> +from . import models
>
> === modified file 'dos_contracts_models/__openerp__.py'
> --- dos_contracts_models/__openerp__.py 2014-06-11 10:23:47 +0000
> +++ dos_contracts_models/__openerp__.py 2014-06-16 14:10:18 +0000
> @@ -21,20 +21,18 @@
>
>
> {
> - "name" : "DOS Contracts Model",
> - "version" : "1.0",
> - "author" : "DOS",
> - "category" : "Enterprise Specific Modules",
> - "website" : "www.dos-sl.es",
> + "name": "DOS Contracts Model",
> + "version": "1.0",
> + "author": "DOS",
> + "category": "Enterprise Specific Modules",
> + "website": "www.dos-sl.es",
> "description": "This module allows to manage model contracts.",
> - "depends" : [],
> - "init_xml" : [],
> - "update_xml" : ['wizard/generate_contracts_view.xml',
> - 'contract_model_view.xml',
> - 'security/ir.model.access.csv',
> - ],
> + "depends": [],
> + "data": [
> + "wizard/generate_contracts_view.xml",
> + "views/contract_model_view.xml",
> + "security/ir.model.access.csv",
> + ],
> "active": False,
No hace falta. Eliminar.
> "installable": True
> }
> -
> -
>
> === added directory 'dos_contracts_models/models'
> === added file 'dos_contracts_models/models/__init__.py'
> --- dos_contracts_models/models/__init__.py 1970-01-01 00:00:00 +0000
> +++ dos_contracts_models/models/__init__.py 2014-06-16 14:10:18 +0000
> @@ -0,0 +1,22 @@
> +# -*- encoding: utf-8 -*-
> +##############################################################################
> +#
> +# OpenERP, Open Source Management Solution
> +# Copyright (C) 2008-2014 AvanzOSC S.L. (Oihane) All Rights Reserved
> +#
> +# 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 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 contract_model
>
> === renamed file 'dos_contracts_models/contract_model.py' => 'dos_contracts_models/models/contract_model.py'
> --- dos_contracts_models/contract_model.py 2014-06-11 10:23:47 +0000
> +++ dos_contracts_models/models/contract_model.py 2014-06-16 14:10:18 +0000
> @@ -19,21 +19,15 @@
> #
> ##############################################################################
>
> -from osv import osv
> -from osv import fields
> -from tools.translate import _
> -import time
> -from datetime import datetime
> -from dateutil.relativedelta import relativedelta
> -
> -class contract_model(osv.osv):
> -
> - _name = 'contract.model'
> +from osv import orm, fields
from openerp.osv ...
> +
> +
> +class ContractModel(orm.Model):
> +
> + _name = 'contract.model'
> _description = "Models of Contracts"
>
> - _columns = {
> + _columns = {
> 'name': fields.char('Name', size=64, required=True),
> 'model': fields.binary('Model', filters='*.rtf', required=True),
> }
> -
> -contract_model()
>
> === added directory 'dos_contracts_models/views'
> === renamed file 'dos_contracts_models/contract_model_view.xml' => 'dos_contracts_models/views/contract_model_view.xml'
> === modified file 'dos_contracts_models/wizard/generate_contract.py'
> --- dos_contracts_models/wizard/generate_contract.py 2014-06-11 10:23:47 +0000
> +++ dos_contracts_models/wizard/generate_contract.py 2014-06-16 14:10:18 +0000
> @@ -1,6 +1,6 @@
> # -*- coding: utf-8 -*-
> ##############################################################################
> -#
> +#
> # OpenERP, Open Source Management Solution
> # Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
> #
> @@ -15,56 +15,60 @@
> # 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/>.
> +# along with this program. If not, see <http://www.gnu.org/licenses/>.
> #
> ##############################################################################
>
> -import time
> -import ir
> import sys
>
> import base64
> from tempfile import TemporaryFile
> -from tools.translate import _
> -from osv import osv, fields
> -
> -class generate_contract(osv.osv_memory):
> -
> +from openerp.osv import orm, fields
> +
> +
> +class GenerateContract(orm.TransientModel):
> +
> _name = 'generate.contract'
>
> _columns = {
> -
> 'name': fields.char('Filename', 16, readonly=True),
> - 'contract_type': fields.many2one('contract.type', "Contract Type", required = True),
> - 'model': fields.many2one('contract.model', 'Model', required = True),
> - 'partner': fields.many2one('res.partner', 'Partner', required = True),
> - 'elevator': fields.many2one('res.partner', 'Elevator', required = True),
> - 'date_contract': fields.date('Date Contract', required = True),
> - 'data': fields.binary('File', readonly=True),
> - 'state': fields.selection( ( ('choose','choose'),
> - ('get','get'),
> - ) ),
> -
> + 'contract_type': fields.many2one('contract.type',
> + "Contract Type",
> + required=True),
> + 'model': fields.many2one('contract.model',
> + 'Model',
> + required=True),
> + 'partner': fields.many2one('res.partner',
> + 'Partner',
> + required=True),
> + 'elevator': fields.many2one('res.partner',
> + 'Elevator',
> + required=True),
> + 'date_contract': fields.date('Date Contract',
> + required=True),
> + 'data': fields.binary('File',
> + readonly=True),
> + 'state': fields.selection((('choose', 'choose'),
> + ('get', 'get'),
> + )),
> }
> -
> - _defaults = {
> +
> + _defaults = {
> 'state': lambda *a: 'choose',
No hace falta lambda *a:
> -
> }
> +
> def generate(self, cr, uid, ids, context=None):
> -
> if context:
> - model = self.pool.get("contract.model").browse(cr, uid, context["model"])
> + model = self.pool.get("contract.model").browse(
self.pool[]
Traspasar context
> + cr, uid, context["model"])
> import_data = model.model
> fileobj = TemporaryFile('w+')
> fileobj.write(base64.decodestring(import_data))
> fileobj.seek(0)
> - #first_line = fileobj.readline().strip().replace('"', '').replace(' ', '')
> -
> +
> reader = fileobj.read()
> -
> +
> meses = {}
> -
> meses['01'] = 'Enero'
> meses['02'] = 'Febrero'
> meses['03'] = 'Marzo'
> @@ -77,100 +81,101 @@
> meses['10'] = 'Octubre'
> meses['11'] = 'Noviembre'
> meses['12'] = 'Diciembre'
> -
> - partner = self.pool.get("res.partner").browse(cr, uid, context['partner'])
> - elevator = self.pool.get("res.partner").browse(cr, uid, context['elevator'])
> - contract_type = self.pool.get("contract.type").browse(cr, uid, context['contract_type'])
> - address = self.pool.get('res.partner.address').search(cr, uid, [('partner_id', '=', partner.id)])
> - address = self.pool.get('res.partner.address').browse(cr, uid, address[0])
> - bank = self.pool.get('res.partner.bank').search(cr, uid, [('partner_id', '=', partner.id)])
> - bank = self.pool.get('res.partner.bank').browse(cr, uid, bank[0])
> -
> +
> + partner_obj = self.pool["res.partner"]
> + partner = partner_obj.browse(cr, uid, context['partner'])
Traspasar context.
> + elevator = partner_obj.browse(cr, uid, context['elevator'])
Traspasar context.
> +
> + contract_type = self.pool["contract.type"].browse(
> + cr, uid, context['contract_type'])
Traspasar context.
> +
> + bank_obj = self.pool['res.partner.bank']
> + bank = bank_obj.search(
> + cr, uid, [('partner_id', '=', partner.id)])
Traspasar context.
> + bank = bank_obj.browse(cr, uid, bank[0])
Traspasar context.
> +
> reload(sys)
> - sys.setdefaultencoding( "latin-1" )
> -
> - #reader = reader.encode('utf-8', 'ignore')
> -
> + sys.setdefaultencoding("latin-1")
> +
> #Cliente
> if partner.name:
> reader = reader.replace('[partner_name]', str(partner.name))
> else:
> reader = reader.replace('[partner_name]', "")
> -
> +
> if partner.vat:
> reader = reader.replace('[partner_cif]', partner.vat)
> else:
> reader = reader.replace('[partner_cif]', "")
> -
> +
> if partner.user_id and partner.user_id.name:
> - reader = reader.replace('[partner_agent]', str(partner.user_id.name))
> + reader = reader.replace('[partner_agent]',
> + str(partner.user_id.name))
> else:
> reader = reader.replace('[partner_agent]', "")
> -
> - if partner.user_id and partner.user_id.address_id and partner.user_id.address_id.partner_id and partner.user_id.address_id.partner_id.vat:
> - reader = reader.replace('[partner_agent_dni]', partner.user_id.address_id.partner_id.vat.vat)
> +
> + if (partner.user_id and partner.user_id.partner_id and
> + partner.user_id.partner_id.vat):
> + reader = reader.replace('[partner_agent_dni]',
> + partner.user_id.partner_id.vat)
> else:
> reader = reader.replace('[partner_agent_dni]', "")
> -
> - if address and address.street:
> - reader = reader.replace('[partner_adress]', str(address.street))
> +
> + if partner.street:
> + reader = reader.replace('[partner_adress]',
> + str(partner.street))
> else:
> reader = reader.replace('[partner_adress]', "")
> -
> +
> if elevator:
> reader = reader.replace('[elevator_name]', str(elevator.name))
> else:
> reader = reader.replace('[elevator_name]', "")
> -
> - if address and address.phone:
> - reader = reader.replace('[partner_phone]', address.phone)
> +
> + if partner.phone:
> + reader = reader.replace('[partner_phone]', partner.phone)
> else:
> reader = reader.replace('[partner_phone]', "")
> -
> - if address and address.email:
> - reader = reader.replace('[partner_mail]', address.email)
> +
> + if partner.email:
> + reader = reader.replace('[partner_mail]', partner.email)
> else:
> reader = reader.replace('[partner_mail]', "")
> -
> +
> if bank and bank.bank:
> reader = reader.replace('[partner_bank]', str(bank.bank.name))
> else:
> reader = reader.replace('[partner_bank]', "")
> -
> +
> if bank and bank.acc_number:
> - reader = reader.replace('[partner_bank_account]', bank.acc_number[0:4] + "/" + bank.acc_number[4:8] + "/" + bank.acc_number[8:10] +"/"+ bank.acc_number[10:])
> + reader = reader.replace(
> + '[partner_bank_account]',
> + (bank.acc_number[0:4] + "/" +
> + bank.acc_number[4:8] + "/" +
> + bank.acc_number[8:10] + "/" +
> + bank.acc_number[10:]))
> else:
> reader = reader.replace('[partner_bank_account]', "")
> -
> +
> if partner.company_id:
> - reader = reader.replace('[company]', str(partner.company_id.name))
> + reader = reader.replace('[company]',
> + str(partner.company_id.name))
> else:
> reader = reader.replace('[company]', "")
> -
> - fixed_price = contract_type and contract_type.fixed_price and str(contract_type.fixed_price) or "0"
> +
> + fixed_price = (contract_type and contract_type.fixed_price and
> + str(contract_type.fixed_price) or "0")
> reader = reader.replace('[mensual_cuote]', fixed_price)
> -
> +
> date = str(context['date_contract']).split('-')
> -
> +
> reader = reader.replace('[day]', date[2])
> reader = reader.replace('[mounth]', meses[date[1]])
> reader = reader.replace('[year]', date[0])
> -
> - reader = reader.replace('[company]', str(partner.company_id.name))
¿Por qué has eliminado la línea de la compañía?
> -
> - #reader = reader.replace('[fecha_data]', context['date_contract'])
> - #reader = reader.replace('[tipo_contrato]', contract_type.name)
> -
> - values = {}
> -
> - out=base64.b64encode(reader.encode('latin-1'))
> -
> - return self.write(cr, uid, ids, {'state':'get', 'data':out, 'name':'Contract.rtf'}, context=context)
> -
> -
> -generate_contract()
> -
> -
> -
> -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
> -
> +
> + out = base64.b64encode(reader.encode('latin-1'))
> +
> + return self.write(cr, uid, ids, {'state': 'get',
> + 'data': out,
> + 'name': 'Contract.rtf'},
> + context=context)
>
> === modified file 'dos_contracts_models/wizard/generate_contracts_view.xml'
> --- dos_contracts_models/wizard/generate_contracts_view.xml 2014-06-11 10:23:47 +0000
> +++ dos_contracts_models/wizard/generate_contracts_view.xml 2014-06-16 14:10:18 +0000
> @@ -1,77 +1,91 @@
> <?xml version="1.0" encoding="utf-8"?>
> <openerp>
> - <data>
> -
> - <record id="view_generate_contract_wizard" model="ir.ui.view">
> - <field name="name">Generate Contract</field>
> - <field name="model">generate.contract</field>
> - <field name="type">form</field>
> - <field name="arch" type="xml">
> - <form string="Generate Contract">
> - <group col="8">
> - <group colspan="3">
> - <newline/>
> - <label colspan="4" width="220" string="Choose contract type, contract model and date contract."/>
> - <label colspan="4" width="220" string="Choose partner and elevator."/>
> - <label colspan="4" width="220"/>
> - <label colspan="4" width="220" string="Push generate button to create new contract."/>
> -
> - </group>
> - <separator orientation="vertical" rowspan="15"/>
> - <group colspan="4">
> - <separator string = "Contract" colspan="4" />
> - <group states="choose" colspan="4" width="400">
> -
> - <field name="contract_type" colspan="4"/>
> - <newline/>
> - <field name="model" colspan="4"/>
> - <newline/>
> - </group>
> - <group states="choose" colspan="4" width="400">
> -
> - <field name="date_contract" />
> - <label colspan="2" width="180"/>
> - <newline/>
> - </group>
> - <group states="choose" >
> - <separator string = "Partner" colspan="4"/>
> - <field name="partner" nolabel = "1" colspan="4" domain="[('tipo_cliente','=','particular')]"/>
> - <newline/>
> - <separator string = "Elevator" colspan="4"/>
> - <field name="elevator" colspan="4" nolabel = "1" domain="[('tipo_cliente','=','ascensorista')]"/>
> - <newline/>
> - </group>
> - <group colspan="4" states="get" >
> - <field name="name" invisible="1" colspan="4"/>
> - <field name="data" nolabel="1" readonly="1" fieldname="name" colspan="4"/>
> - </group>
> - </group>
> - <group colspan="8" col="8" states="choose">
> - <field invisible="1" name="state"/>
> - <label colspan="6" width="220"/>
> - <button special="cancel" string="Cancel" icon="gtk-cancel"/>
> - <button name="generate" string="Generate" type="object" icon="gtk-ok" context="{'model':model, 'partner': partner, 'elevator': elevator, 'contract_type': contract_type, 'date_contract':date_contract}"/>
> - </group>
> - <group colspan="8" col="8" states="get">
> - <label colspan="7" width="220"/>
> - <button special="cancel" string="Exit" icon="gtk-cancel"/>
> - </group>
> - </group>
> - </form>
> - </field>
> - </record>
> -
> - <record id="action_generate_contract" model="ir.actions.act_window">
> - <field name="name">Generate Contract</field>
> - <field name="type">ir.actions.act_window</field>
> - <field name="res_model">generate.contract</field>
> - <field name="view_type">form</field>
> - <field name="view_mode">form</field>
> - <field name="view_id" ref="view_generate_contract_wizard"/>
> - <field name="target">new</field>
> - </record>
> -
> -
> -
> - </data>
> + <data>
> + <record id="view_generate_contract_wizard" model="ir.ui.view">
> + <field name="name">Generate Contract</field>
> + <field name="model">generate.contract</field>
> + <field name="arch" type="xml">
> + <form string="Generate Contract">
> + <group col="8">
> + <group colspan="3">
> + <newline />
> + <label colspan="4" width="220"
> + string="Choose contract type, contract model and date contract." />
> + <label colspan="4" width="220"
> + string="Choose partner and elevator." />
> + <label colspan="4" width="220" />
> + <label colspan="4" width="220"
> + string="Push generate button to create new contract." />
> + </group>
> + <separator orientation="vertical"
> + rowspan="15" />
> + <group colspan="4">
> + <separator string="Contract"
> + colspan="4" />
> + <group states="choose" colspan="4"
> + width="400">
> + <field name="contract_type"
> + colspan="4" />
> + <newline />
> + <field name="model" colspan="4" />
> + <newline />
> + </group>
> + <group states="choose" colspan="4"
> + width="400">
> + <field name="date_contract" />
> + <label colspan="2" width="180" />
> + <newline />
> + </group>
> + <group states="choose">
> + <separator string="Partner"
> + colspan="4" />
> + <field name="partner" nolabel="1"
> + colspan="4"
> + domain="[('tipo_cliente','=','particular')]" />
> + <newline />
> + <separator string="Elevator"
> + colspan="4" />
> + <field name="elevator" colspan="4"
> + nolabel="1"
> + domain="[('tipo_cliente','=','ascensorista')]" />
> + <newline />
> + </group>
> + <group colspan="4" states="get">
> + <field name="name" invisible="1"
> + colspan="4" />
> + <field name="data" nolabel="1"
> + readonly="1" fieldname="name"
> + colspan="4" />
> + </group>
> + </group>
> + <group colspan="8" col="8" states="choose">
> + <field invisible="1" name="state" />
> + <label colspan="6" width="220" />
> + <button special="cancel" string="Cancel"
> + icon="gtk-cancel" />
> + <button name="generate" string="Generate"
> + type="object" icon="gtk-ok"
> + context="{'model':model, 'partner': partner, 'elevator': elevator, 'contract_type': contract_type, 'date_contract':date_contract}" />
> + </group>
> + <group colspan="8" col="8" states="get">
> + <label colspan="7" width="220" />
> + <button special="cancel" string="Exit"
> + icon="gtk-cancel" />
> + </group>
> + </group>
> + </form>
> + </field>
> + </record>
> +
> + <record id="action_generate_contract" model="ir.actions.act_window">
> + <field name="name">Generate Contract</field>
> + <field name="type">ir.actions.act_window</field>
> + <field name="res_model">generate.contract</field>
> + <field name="view_type">form</field>
> + <field name="view_mode">form</field>
> + <field name="view_id" ref="view_generate_contract_wizard" />
> + <field name="target">new</field>
> + </record>
> +
> + </data>
> </openerp>
>
--
https://code.launchpad.net/~oihanecruce/avanzosc/dos_contracts_models/+merge/223248
Your team Avanzosc_security is subscribed to branch lp:~avanzosc-security-team/avanzosc/72horas.