[IMP] refactoring due to new directives
bzr revid: nicolas.vanhoren@openerp.com-20101119133040-kf5dehn3mf2ch4df
This commit is contained in:
@@ -22,11 +22,10 @@
|
||||
from osv import osv, fields
|
||||
import time
|
||||
import netsvc
|
||||
from tools.misc import ustr
|
||||
from tools.translate import _
|
||||
import tools.maintenance as tm
|
||||
import tools.ping
|
||||
import datetime
|
||||
from tools import misc
|
||||
|
||||
_nlogger = netsvc.Logger()
|
||||
_CHAN = __name__.split()[-1]
|
||||
@@ -41,6 +40,7 @@ class maintenance_contract(osv.osv):
|
||||
|
||||
def status(self, cr, uid):
|
||||
""" Method called by the client to check availability of maintenance contract. """
|
||||
|
||||
contracts = self._get_valid_contracts(cr, uid)
|
||||
return {
|
||||
'status': "full" if contracts else "none" ,
|
||||
@@ -49,36 +49,26 @@ class maintenance_contract(osv.osv):
|
||||
|
||||
def send(self, cr, uid, tb, explanations, remarks=None):
|
||||
""" Method called by the client to send a problem to the maintenance server. """
|
||||
|
||||
if not remarks:
|
||||
remarks = ""
|
||||
|
||||
valid_contracts = self._get_valid_contracts(cr, uid)
|
||||
|
||||
crm_case_id = None
|
||||
rc = None
|
||||
try:
|
||||
for contract in valid_contracts:
|
||||
rc = tm.remote_contract(cr, uid, contract.name)
|
||||
|
||||
if rc.id:
|
||||
contract_name = contract.name
|
||||
break
|
||||
rc = None
|
||||
valid_contract = valid_contracts[0]
|
||||
|
||||
if not rc:
|
||||
raise osv.except_osv(_('Error'), _('Unable to find a valid contract'))
|
||||
|
||||
try:
|
||||
rc = tm.remote_contract(cr, uid, valid_contract.name)
|
||||
|
||||
origin = 'client'
|
||||
dbuuid = self.pool.get('ir.config_parameter').get_param(cr, uid, 'database.uuid')
|
||||
crm_case_id = rc.submit_6({
|
||||
'contract_name': contract_name,
|
||||
'contract_name': valid_contract[0],
|
||||
'tb': tb,
|
||||
'explanations': explanations,
|
||||
'remarks': remarks,
|
||||
'origin': origin,
|
||||
'dbname': cr.dbname,
|
||||
'dbuuid': dbuuid})
|
||||
|
||||
except tm.RemoteContractException, rce:
|
||||
_nlogger.notifyChannel(_CHAN, netsvc.LOG_INFO, rce)
|
||||
except osv.except_osv:
|
||||
@@ -93,43 +83,42 @@ class maintenance_contract(osv.osv):
|
||||
def _valid_get(self, cr, uid, ids, field_name, arg, context=None):
|
||||
res = {}
|
||||
for contract in self.browse(cr, uid, ids, context=context):
|
||||
res[contract.id] = ("unvalid", "valid")[contract.date_stop >= time.strftime('%Y-%m-%d')]
|
||||
res[contract.id] = ("unvalid", "valid")[contract.date_stop >= time.strftime(misc.DEFAULT_SERVER_DATE_FORMAT)]
|
||||
return res
|
||||
|
||||
def check_validity(self, cr, uid, ids, context={}):
|
||||
contract_id = ids[0]
|
||||
contract = self.browse(cr, uid, contract_id)
|
||||
valid = contract.state == "valid"
|
||||
validated = contract.state != "unvalidated"
|
||||
|
||||
self.send_ping(cr, uid, ids, cron_mode=False, context=context)
|
||||
|
||||
contract = self.browse(cr, uid, contract_id)
|
||||
valid2 = contract.state == "valid"
|
||||
if not valid and not valid2:
|
||||
raise osv.except_osv("Contract validation error",
|
||||
"Please check your maintenance contract name and validity.")
|
||||
validated2 = contract.state != "unvalidated"
|
||||
if not validated and not validated2:
|
||||
raise osv.except_osv(_("Contract validation error"),
|
||||
_("Please check your maintenance contract name and validity."))
|
||||
|
||||
def send_ping(self, cr, uid, ids, cron_mode=True, context={}):
|
||||
try:
|
||||
try:
|
||||
result = tools.ping.send_ping(cr, uid)
|
||||
except:
|
||||
raise osv.except_osv("Error", "Error during communication with the maintenance server.")
|
||||
raise osv.except_osv(_("Error"), _("Error during communication with the maintenance server."))
|
||||
|
||||
contracts = result["validity_dates"]
|
||||
contracts = result["contracts"]
|
||||
for contract in contracts:
|
||||
c_id = self.search(cr, uid, [("name","=",contract)])[0]
|
||||
date_from = contracts[contract][0]
|
||||
date_to = contracts[contract][1]
|
||||
valid = datetime.date.today() >= datetime.datetime.strptime(date_from, '%Y-%m-%d').date() \
|
||||
and datetime.date.today() <= datetime.datetime.strptime(date_to, '%Y-%m-%d').date()
|
||||
state = contracts[contract][2]
|
||||
self.write(cr, uid, c_id, {
|
||||
"date_start": date_from,
|
||||
"date_stop": date_to,
|
||||
"state": "valid" if valid else "unvalid",
|
||||
"state": state,
|
||||
})
|
||||
|
||||
if cron_mode:
|
||||
if cron_mode and result["interval_type"] and result["interval_number"]:
|
||||
modosv = self.pool.get("ir.model.data")
|
||||
sched_id = modosv.get_object_reference(cr, uid, "base", "ir_cron_ping_scheduler")[1]
|
||||
cronosv = self.pool.get("ir.cron")
|
||||
@@ -150,12 +139,13 @@ class maintenance_contract(osv.osv):
|
||||
'date_start' : fields.date('Starting Date', readonly=True),
|
||||
'date_stop' : fields.date('Ending Date', readonly=True),
|
||||
'state' : fields.function(_valid_get, method=True, string="State", type="selection",
|
||||
selection=[('valid', 'Valid'),('unvalid', 'Unvalid')], readonly=True),
|
||||
selection=[('unvalidated', 'Unvalidated'), ('valid', 'Valid')
|
||||
, ('terminated', 'Terminated'), ('canceled', 'Canceled')], readonly=True),
|
||||
'kind' : fields.char('Kind', size=64, readonly=True),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'state': 'unvalid',
|
||||
'state': 'unvalidated',
|
||||
}
|
||||
|
||||
_sql_constraints = [
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<field name="model">maintenance.contract</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Maintenance Contract">
|
||||
<tree string="Publisher Warranty Contract">
|
||||
<field name="name"/>
|
||||
<field name="date_start"/>
|
||||
<field name="date_stop"/>
|
||||
@@ -21,7 +21,7 @@
|
||||
<field name="model">maintenance.contract</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Maintenance Contract">
|
||||
<form string="Publisher Warranty Contract">
|
||||
<group col="2" colspan="4">
|
||||
<group col="2">
|
||||
<field name="name"/>
|
||||
@@ -36,9 +36,9 @@
|
||||
</group>
|
||||
<group col="2">
|
||||
<button name="check_validity" string="Validate" type="object"
|
||||
attrs="{'invisible':[('state','in',['valid'])]}"/>
|
||||
attrs="{'invisible':[('state','in',['valid', 'terminated', 'canceled'])]}"/>
|
||||
<button name="check_validity" string="Refresh Validation Dates" type="object"
|
||||
attrs="{'invisible':[('state','in',['unvalid'])]}"/>
|
||||
attrs="{'invisible':[('state','in',['unvalidated'])]}"/>
|
||||
</group>
|
||||
</group>
|
||||
</form>
|
||||
@@ -50,7 +50,7 @@
|
||||
<field name="model">maintenance.contract</field>
|
||||
<field name="type">search</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Maintenance Contract">
|
||||
<search string="Publisher Warranty Contract">
|
||||
<field name="name"/>
|
||||
<field name="date_start"/>
|
||||
<field name="date_stop"/>
|
||||
@@ -71,7 +71,7 @@
|
||||
</record>
|
||||
|
||||
<record id="action_maintenance_contract_form" model="ir.actions.act_window">
|
||||
<field name="name">Maintenance Contracts</field>
|
||||
<field name="name">Publisher Warranty Contracts</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">maintenance.contract</field>
|
||||
<field name="view_type">form</field>
|
||||
@@ -79,7 +79,7 @@
|
||||
<field name="search_view_id" ref="maintenance_contract_search_view"/>
|
||||
</record>
|
||||
|
||||
<menuitem name="Maintenance" id="maintenance"
|
||||
<menuitem name="Publisher Warranty" id="maintenance"
|
||||
parent="base.menu_administration" groups="base.group_extended"/>
|
||||
|
||||
<menuitem action="action_maintenance_contract_form" id="menu_maintenance_contract" parent="maintenance"/>
|
||||
|
||||
Reference in New Issue
Block a user