[IMP] maintenance: new method to get the contract status when a bug occure

[IMP] maintenance: new method to post the error details to openerp.com

bzr revid: christophe@cobalt-20081231133303-q0dgibftxdtvxgc0
This commit is contained in:
Christophe Simonis
2008-12-31 14:33:03 +01:00
parent 36c0818b59
commit e02cea2104
+44 -1
View File
@@ -34,7 +34,7 @@ import time
import math
from pprint import pprint as pp
from tools import config
from tools import config, debug
import xmlrpclib
class maintenance_contract_module(osv.osv):
@@ -51,6 +51,49 @@ class maintenance_contract(osv.osv):
_name = "maintenance.contract"
_description = "Maintenance Contract"
def _get_valid_contracts(self, cr, uid):
return [contract for contract in self.browse(cr, uid, self.search(cr, uid, [])) if contract.state == 'valid']
def status(self, cr, uid):
covered_modules, uncovered_modules = set(), set()
status = 'none'
for contract in self._get_valid_contracts(cr, uid):
covered_modules.update([m.name for m in contract.module_ids])
if covered_modules:
modobj = self.pool.get('ir.module.module')
modids = modobj.search(cr, uid, [('state', '=', 'installed')])
uncovered_modules = set(m.name for m in modobj.browse(cr, uid, modids)) - covered_modules
status = ['full', 'partial'][len(uncovered_modules) > 0]
return {
'status': status,
'uncovered_modules': list(uncovered_modules),
}
def send(self, cr, uid, tb, explanations, remarks=None):
assert self.status(cr, uid) == 'full'
contract = self._get_valid_contracts(cr, uid)[0]
content = "(%s) has reported the following bug:\n%s\nremarks: %s\nThe traceback is:\n%s" % (
contract.name, explanations, remarks or '', tb
)
try:
import urllib
args = [('contract_id', contract.name),('data', content)]
args = urllib.urlencode(args)
fp = urllib.urlopen('http://www.openerp.com/scripts/survey.php', args)
submit_result = fp.read()
debug(submit_result)
fp.close()
except:
# TODO schedule a retry
return False
return True
def _valid_get(self, cr, uid, ids, field_name, arg, context=None):
res = {}
for contract in self.browse(cr, uid, ids, context=context):