From 1400413c128a094105886de960b99a654016c6f2 Mon Sep 17 00:00:00 2001 From: "Rvo (Open ERP)" Date: Wed, 3 Mar 2010 16:56:40 +0530 Subject: [PATCH 01/22] [IMP]:improved the menu of Resources in project_long_term and mrp bzr revid: rvo@tinyerp.co.in-20100303112640-ye7j3c0j0u31zzx6 --- addons/mrp/mrp_view.xml | 45 ++++++++++--------- addons/mrp/mrp_wizard.xml | 2 +- addons/mrp_operations/mrp_operations_view.xml | 2 +- addons/project_long_term/__terp__.py | 1 + addons/project_long_term/project_wizard.xml | 1 + addons/report_mrp/report_mrp_view.xml | 2 +- addons/resource/resource_view.xml | 22 +++++---- 7 files changed, 41 insertions(+), 34 deletions(-) diff --git a/addons/mrp/mrp_view.xml b/addons/mrp/mrp_view.xml index d47311f543e..fde53d537fe 100644 --- a/addons/mrp/mrp_view.xml +++ b/addons/mrp/mrp_view.xml @@ -2,15 +2,15 @@ - - + - + diff --git a/addons/resource/resource_view.xml b/addons/resource/resource_view.xml index 36f15124b9d..b42cf310b98 100755 --- a/addons/resource/resource_view.xml +++ b/addons/resource/resource_view.xml @@ -1,9 +1,6 @@ - - - resource.calendar.form resource.calendar @@ -24,7 +21,6 @@ form - resource.calendar.week.tree @@ -65,7 +61,6 @@ - - resource.resource.form resource.resource @@ -120,8 +114,6 @@ tree,form - - resource.calendar.leaves.form resource.calendar.leaves @@ -158,7 +150,19 @@ tree,form,calendar - + + + + + + + + + + + + + From 07cbe5aca598ebb4148c425c6732a58ee0a391ae Mon Sep 17 00:00:00 2001 From: "Rvo (Open ERP)" Date: Wed, 3 Mar 2010 17:13:50 +0530 Subject: [PATCH 02/22] [IMP]:menu changes bzr revid: rvo@tinyerp.co.in-20100303114350-si24bf7gtg5p0r2v --- addons/mrp/mrp_view.xml | 7 +++++++ addons/project_long_term/project_view.xml | 7 +++++++ addons/resource/resource_view.xml | 14 -------------- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/addons/mrp/mrp_view.xml b/addons/mrp/mrp_view.xml index fde53d537fe..a94d12f23e3 100644 --- a/addons/mrp/mrp_view.xml +++ b/addons/mrp/mrp_view.xml @@ -1038,5 +1038,12 @@ res_model="mrp.bom" src_model="product.product"/> + + + + + + + diff --git a/addons/project_long_term/project_view.xml b/addons/project_long_term/project_view.xml index be7b8de5977..e2f0c0207f2 100644 --- a/addons/project_long_term/project_view.xml +++ b/addons/project_long_term/project_view.xml @@ -160,6 +160,13 @@ + + + + + + + diff --git a/addons/resource/resource_view.xml b/addons/resource/resource_view.xml index b42cf310b98..ece75a4cb54 100755 --- a/addons/resource/resource_view.xml +++ b/addons/resource/resource_view.xml @@ -150,19 +150,5 @@ tree,form,calendar - - - - - - - - - - - - - - From 873461674a47bb6b6ba76ff07eab79b2c802c835 Mon Sep 17 00:00:00 2001 From: "Rvo (Open ERP)" Date: Wed, 3 Mar 2010 19:46:20 +0530 Subject: [PATCH 03/22] [ADD]:added search views on resource module bzr revid: rvo@tinyerp.co.in-20100303141620-qjnk3hlbaip8x3vj --- addons/mrp/mrp_view.xml | 6 +- addons/project/project_view.xml | 21 ++----- addons/project_long_term/project_view.xml | 7 +-- addons/resource/resource_view.xml | 72 ++++++++++++++++++++++- 4 files changed, 83 insertions(+), 23 deletions(-) diff --git a/addons/mrp/mrp_view.xml b/addons/mrp/mrp_view.xml index a94d12f23e3..3d58d595ac5 100644 --- a/addons/mrp/mrp_view.xml +++ b/addons/mrp/mrp_view.xml @@ -1041,9 +1041,9 @@ - - - + + + diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index 73249f58384..749222a2275 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -505,15 +505,6 @@ - - - + res.company.task.config res.company form diff --git a/addons/project_long_term/project_view.xml b/addons/project_long_term/project_view.xml index e2f0c0207f2..9977933238e 100644 --- a/addons/project_long_term/project_view.xml +++ b/addons/project_long_term/project_view.xml @@ -163,10 +163,9 @@ - - - - + + + diff --git a/addons/resource/resource_view.xml b/addons/resource/resource_view.xml index ece75a4cb54..bd2f63d5853 100755 --- a/addons/resource/resource_view.xml +++ b/addons/resource/resource_view.xml @@ -15,11 +15,27 @@ + + + resource.calendar.tree + resource.calendar + tree + + + + + + + + + Resource Calendar resource.calendar form + tree,form + @@ -98,7 +114,7 @@ resource.resource tree - + @@ -112,6 +128,7 @@ Resources resource.resource tree,form + @@ -148,6 +165,59 @@ Resource Leaves resource.calendar.leaves tree,form,calendar + + + + + + + + resource.resource.search + resource.resource + search + + + + + + + + + + + + + + + + resource.calendar.search + resource.calendar + search + + + + + + + + + + + + + resource.calendar.leaves.search + resource.calendar.leaves + search + + + + + + + + + + From 3e6ae1128103ab483bc211d6da800091e1b63776 Mon Sep 17 00:00:00 2001 From: "Rvo (Open ERP)" Date: Thu, 4 Mar 2010 10:40:05 +0530 Subject: [PATCH 04/22] [IMP]:search views on resource bzr revid: rvo@tinyerp.co.in-20100304051005-65ouresjg24w247u --- addons/resource/resource_view.xml | 100 +++++++++++++++--------------- 1 file changed, 51 insertions(+), 49 deletions(-) diff --git a/addons/resource/resource_view.xml b/addons/resource/resource_view.xml index bd2f63d5853..c3092cb7697 100755 --- a/addons/resource/resource_view.xml +++ b/addons/resource/resource_view.xml @@ -1,6 +1,57 @@ + + + + + resource.resource.search + resource.resource + search + + + + + + + + + + + + + + + + resource.calendar.search + resource.calendar + search + + + + + + + + + + + + + resource.calendar.leaves.search + resource.calendar.leaves + search + + + + + + + + + + + resource.calendar.form resource.calendar @@ -169,56 +220,7 @@ - - - resource.resource.search - resource.resource - search - - - - - - - - - - - - - - - - resource.calendar.search - resource.calendar - search - - - - - - - - - - - - - resource.calendar.leaves.search - resource.calendar.leaves - search - - - - - - - - - - - From 4ababa7f00c12cff6ce974747d650419aa4e6ada Mon Sep 17 00:00:00 2001 From: "Rvo (Open ERP)" Date: Thu, 4 Mar 2010 11:04:20 +0530 Subject: [PATCH 05/22] [IMP]:removed the phase relate button from project/project_view.xml to project_long_term/project_view.xml bzr revid: rvo@tinyerp.co.in-20100304053420-isz3yaega0v5y9ne --- addons/project/project_view.xml | 9 --------- addons/project_long_term/project_view.xml | 9 +++++++++ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index 749222a2275..92c90ba9e2b 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -514,15 +514,6 @@ view_mode="tree,form,calendar,graph" view_type="form"/> - - res.company.task.config res.company diff --git a/addons/project_long_term/project_view.xml b/addons/project_long_term/project_view.xml index 9977933238e..d8f6cfe697f 100644 --- a/addons/project_long_term/project_view.xml +++ b/addons/project_long_term/project_view.xml @@ -158,6 +158,15 @@ view_mode="tree,form" domain="[('phase_id','=',active_id)]"/> + + From 9f7bfc3339a3e6fa6b1467a17022d1232dc8a827 Mon Sep 17 00:00:00 2001 From: "Harry (Open ERP)" Date: Thu, 4 Mar 2010 14:24:47 +0530 Subject: [PATCH 06/22] [IMP] crm: pass remaining contact info on create partner in lead form bzr revid: hmo@tinyerp.com-20100304085447-cjyqqoymrsth19w0 --- addons/crm/wizard/crm_lead_wizard.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/addons/crm/wizard/crm_lead_wizard.py b/addons/crm/wizard/crm_lead_wizard.py index 70c71e023c2..e119134a868 100644 --- a/addons/crm/wizard/crm_lead_wizard.py +++ b/addons/crm/wizard/crm_lead_wizard.py @@ -98,7 +98,16 @@ class partner_create(wizard.interface): 'name': case.name, 'phone': case.phone, 'mobile': case.mobile, - 'email': case.email_from + 'email': case.email_from, + 'fax': case.fax, + 'title': case.title, + 'function': case.function and case.function.id or False, + 'street': case.street, + 'street2': case.street2, + 'zip': case.zip, + 'city': case.city, + 'country_id': case.country_id and case.country_id.id or False, + 'state_id': case.state_id and case.state_id.id or False, }) else: From e3d0a8779ab751b2302758f066d10bd4a2b1a3c0 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 4 Mar 2010 10:03:42 +0100 Subject: [PATCH 07/22] [fix] coding: tag in source files bzr revid: xmo@tinyerp.com-20100304090342-jrfl3lp54pdnrsdw --- bin/addons/base/ir/ir_sequence.py | 2 +- bin/service/http_server.py | 3 +-- bin/service/websrv_lib.py | 3 +-- bin/tools/safe_eval.py | 2 +- 4 files changed, 4 insertions(+), 6 deletions(-) diff --git a/bin/addons/base/ir/ir_sequence.py b/bin/addons/base/ir/ir_sequence.py index 46428c80262..ab72cf863b3 100644 --- a/bin/addons/base/ir/ir_sequence.py +++ b/bin/addons/base/ir/ir_sequence.py @@ -1,4 +1,4 @@ -# -*- encoding: utf-8 -*- +# -*- coding: utf-8 -*- ############################################################################## # # OpenERP, Open Source Management Solution diff --git a/bin/service/http_server.py b/bin/service/http_server.py index a35701dc9e5..ee7c06dd4ac 100644 --- a/bin/service/http_server.py +++ b/bin/service/http_server.py @@ -1,5 +1,4 @@ -# -*- encoding: utf-8 -*- - +# -*- coding: utf-8 -*- # # Copyright P. Christeas 2008,2009 # diff --git a/bin/service/websrv_lib.py b/bin/service/websrv_lib.py index 1913b5d5102..ab491284556 100644 --- a/bin/service/websrv_lib.py +++ b/bin/service/websrv_lib.py @@ -1,5 +1,4 @@ -# -*- encoding: utf-8 -*- - +# -*- coding: utf-8 -*- # # Copyright P. Christeas 2008,2009 # diff --git a/bin/tools/safe_eval.py b/bin/tools/safe_eval.py index bfbc0b34fe9..db2995faa19 100644 --- a/bin/tools/safe_eval.py +++ b/bin/tools/safe_eval.py @@ -1,4 +1,4 @@ -# -*- encoding: utf-8 -*- +# -*- coding: utf-8 -*- # # Copyright P. Christeas 2008,2009 # From 65d46a54e8840f851677004fde028e70a434aa59 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 4 Mar 2010 10:05:56 +0100 Subject: [PATCH 08/22] [fix] whitespace in files touched by parent (xmo@tinyerp.com-20100304090342-y0peh0slc8in1tbh) bzr revid: xmo@tinyerp.com-20100304090556-ehv8xpf9gd82uqgj --- bin/addons/base/ir/ir_sequence.py | 7 +++---- bin/service/http_server.py | 22 +++++++++++----------- bin/service/websrv_lib.py | 28 ++++++++++++++-------------- bin/tools/safe_eval.py | 14 +++++++------- 4 files changed, 35 insertions(+), 36 deletions(-) diff --git a/bin/addons/base/ir/ir_sequence.py b/bin/addons/base/ir/ir_sequence.py index ab72cf863b3..8b0e7795a7c 100644 --- a/bin/addons/base/ir/ir_sequence.py +++ b/bin/addons/base/ir/ir_sequence.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- ############################################################################## # -# OpenERP, Open Source Management Solution +# OpenERP, Open Source Management Solution # Copyright (C) 2004-2009 Tiny SPRL (). All Rights Reserved # $Id$ # @@ -59,8 +59,8 @@ class ir_sequence(osv.osv): def _process(self, s): return (s or '') % { - 'year':time.strftime('%Y'), - 'month': time.strftime('%m'), + 'year':time.strftime('%Y'), + 'month': time.strftime('%m'), 'day':time.strftime('%d'), 'y': time.strftime('%y'), 'doy': time.strftime('%j'), @@ -93,4 +93,3 @@ ir_sequence() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: - diff --git a/bin/service/http_server.py b/bin/service/http_server.py index ee7c06dd4ac..fe3d98a0004 100644 --- a/bin/service/http_server.py +++ b/bin/service/http_server.py @@ -27,7 +27,7 @@ """ This file contains instance of the http server. - + """ from websrv_lib import * import netsvc @@ -43,7 +43,7 @@ try: import fcntl except ImportError: fcntl = None - + try: from ssl import SSLError except ImportError: @@ -51,7 +51,7 @@ except ImportError: class ThreadedHTTPServer(ConnThreadingMixIn, SimpleXMLRPCDispatcher, HTTPServer): """ A threaded httpd server, with all the necessary functionality for us. - + It also inherits the xml-rpc dispatcher, so that some xml-rpc functions will be available to the request handler """ @@ -191,20 +191,20 @@ def reg_http_service(hts, secure_only = False): global httpd, httpsd if not isinstance(hts, HTTPDir): raise Exception("Wrong class for http service") - + if httpd and not secure_only: httpd.server.vdirs.append(hts) - + if httpsd: httpsd.server.vdirs.append(hts) - + if (not httpd) and (not httpsd): netsvc.Logger().notifyChannel('httpd',netsvc.LOG_WARNING,"No httpd available to register service %s" % hts.path) return import SimpleXMLRPCServer class XMLRPCRequestHandler(netsvc.OpenERPDispatcher,FixSendError,SimpleXMLRPCServer.SimpleXMLRPCRequestHandler): - rpc_paths = [] + rpc_paths = [] protocol_version = 'HTTP/1.1' def _dispatch(self, method, params): try: @@ -235,13 +235,13 @@ def init_xmlrpc(): reg_http_service(HTTPDir('/xmlrpc/',XMLRPCRequestHandler)) # Example of http file serving: # reg_http_service(HTTPDir('/test/',HTTPHandler)) - netsvc.Logger().notifyChannel("web-services", netsvc.LOG_INFO, + netsvc.Logger().notifyChannel("web-services", netsvc.LOG_INFO, "Registered XML-RPC over HTTP") - + class OerpAuthProxy(AuthProxy): """ Require basic authentication.. - + This is a copy of the BasicAuthProxy, which however checks/caches the db as well. """ @@ -303,7 +303,7 @@ class OpenERPAuthProvider(AuthProvider): except Exception,e: netsvc.Logger().notifyChannel("auth",netsvc.LOG_DEBUG,"Fail auth:"+ str(e)) return False - + def log(self, msg): netsvc.Logger().notifyChannel("auth",netsvc.LOG_INFO,msg) diff --git a/bin/service/websrv_lib.py b/bin/service/websrv_lib.py index ab491284556..354311eaa64 100644 --- a/bin/service/websrv_lib.py +++ b/bin/service/websrv_lib.py @@ -40,7 +40,7 @@ class AuthRequiredExc(Exception): Exception.__init__(self) self.atype = atype self.realm = realm - + class AuthRejectedExc(Exception): pass @@ -55,7 +55,7 @@ class AuthProvider: def authenticate(self, user, passwd, client_address): return False - + def log(self, msg): print msg @@ -63,7 +63,7 @@ class BasicAuthProvider(AuthProvider): def setupAuth(self, multi, handler): if not multi.sec_realms.has_key(self.realm): multi.sec_realms[self.realm] = BasicAuthProxy(self) - + class AuthProxy: """ This class will hold authentication information for a handler, @@ -109,15 +109,15 @@ class HTTPHandler(SimpleHTTPRequestHandler): # print "Handler for %s inited" % str(client_address) self.protocol_version = 'HTTP/1.1' self.connection = dummyconn() - + def handle(self): """ Classes here should NOT handle inside their constructor """ pass - + def finish(self): pass - + def setup(self): pass @@ -128,7 +128,7 @@ class HTTPDir: self.path = path self.handler = handler self.auth_provider = auth_provider - + def matches(self, request): """ Test if some request matches us. If so, return the matched path. """ @@ -175,14 +175,14 @@ class FixSendError: class MultiHTTPHandler(FixSendError,BaseHTTPRequestHandler): """ this is a multiple handler, that will dispatch each request to a nested handler, iff it matches - + The handler will also have *one* dict of authentication proxies, groupped by their realm. """ protocol_version = "HTTP/1.1" default_request_version = "HTTP/0.9" # compatibility with py2.5 - + auth_required_msg = """ Authorization required You must authenticate to use this service\r\r""" @@ -311,7 +311,7 @@ class MultiHTTPHandler(FixSendError,BaseHTTPRequestHandler): if not self.parse_rawline(): self.log_message("Could not parse rawline.") return - # self.parse_request(): # Do NOT parse here. the first line should be the only + # self.parse_request(): # Do NOT parse here. the first line should be the only for vdir in self.server.vdirs: p = vdir.matches(self.path) if p == False: @@ -350,11 +350,11 @@ class MultiHTTPHandler(FixSendError,BaseHTTPRequestHandler): class SecureMultiHTTPHandler(MultiHTTPHandler): def getcert_fnames(self): """ Return a pair with the filenames of ssl cert,key - + Override this to direct to other filenames """ return ('server.cert','server.key') - + def setup(self): import ssl certfile, keyfile = self.getcert_fnames() @@ -384,7 +384,7 @@ class SecureMultiHTTPHandler(MultiHTTPHandler): import threading class ConnThreadingMixIn: """Mix-in class to handle each _connection_ in a new thread. - + This is necessary for persistent connections, where multiple requests should be handled synchronously at each connection, but multiple connections can run in parallel. @@ -400,7 +400,7 @@ class ConnThreadingMixIn: if self.daemon_threads: t.setDaemon (1) t.start() - + def _handle_request2(self): """Handle one request, without blocking. diff --git a/bin/tools/safe_eval.py b/bin/tools/safe_eval.py index db2995faa19..a7fce27d2e0 100644 --- a/bin/tools/safe_eval.py +++ b/bin/tools/safe_eval.py @@ -30,8 +30,8 @@ import sys def __init_ebis(): global __export_bis - - _evars = [ 'abs', 'all', 'any', 'basestring' , 'bool', + + _evars = [ 'abs', 'all', 'any', 'basestring' , 'bool', 'chr', 'cmp','complex', 'dict', 'divmod', 'enumerate', 'float', 'frozenset', 'getattr', 'hasattr', 'hash', 'hex', 'id','int', 'iter', 'len', 'list', 'long', 'map', 'max', @@ -39,12 +39,12 @@ def __init_ebis(): 'reversed', 'round', 'set', 'setattr', 'slice','sorted', 'str', 'sum', 'tuple','type', 'unichr','unicode', 'xrange', 'True','False', 'None', 'NotImplemented', 'Ellipsis', ] - + if sys.version_info[0:2] >= (2,6): _evars.extend(['bin', 'format', 'next']) for v in _evars: __export_bis[v] = __builtins__[v] - + __init_ebis() @@ -53,14 +53,14 @@ def safe_eval(expr,sglobals,slocals = None): """ A little safer version of eval(). This one, will use fewer builtin functions, so that only arithmetic and logic expressions can really work """ - + global __export_bis if not sglobals.has_key('__builtins__'): # we copy, because we wouldn't want successive calls to safe_eval # to be able to alter the builtins. sglobals['__builtins__'] = __export_bis.copy() - + return eval(expr,sglobals,slocals) - + #eof From 739b4a584d2ead0f3af3176d3b97ce5f00696822 Mon Sep 17 00:00:00 2001 From: "YSA(OpenERP)" <> Date: Thu, 4 Mar 2010 14:46:44 +0530 Subject: [PATCH 09/22] [IMP]:survey:Imptoved survey with continues browse the answer and more improvements. bzr revid: apa@tinyerp.com-20100304091644-oskak8irvozyr5rz --- .../survey/report/survey_analysis_report.py | 3 + .../survey/report/survey_browse_response.py | 12 +- addons/survey/report/survey_form.py | 12 +- addons/survey/survey.py | 91 ++- addons/survey/survey_demo.xml | 622 ++++++++++++++++++ addons/survey/survey_que_wizard.xml | 2 +- addons/survey/survey_report.xml | 2 +- addons/survey/survey_view.xml | 65 +- addons/survey/survey_wizard.xml | 3 + addons/survey/wizard/__init__.py | 1 + addons/survey/wizard/wizard_browse_answer.py | 2 +- .../wizard/wizard_print_survey_statistics.py | 52 ++ 12 files changed, 813 insertions(+), 54 deletions(-) create mode 100644 addons/survey/wizard/wizard_print_survey_statistics.py diff --git a/addons/survey/report/survey_analysis_report.py b/addons/survey/report/survey_analysis_report.py index e95270bf80b..44d42610e6f 100755 --- a/addons/survey/report/survey_analysis_report.py +++ b/addons/survey/report/survey_analysis_report.py @@ -101,6 +101,9 @@ class survey_analysis(report_rml): """ surv_obj = pooler.get_pool(cr.dbname).get('survey') + if datas.has_key('form') and datas['form']['survey_ids']: + ids = datas['form']['survey_ids'][0][2] + for survey in surv_obj.browse(cr, uid, ids): rml += """ diff --git a/addons/survey/report/survey_browse_response.py b/addons/survey/report/survey_browse_response.py index 1ba53f4cd33..e406aca9833 100644 --- a/addons/survey/report/survey_browse_response.py +++ b/addons/survey/report/survey_browse_response.py @@ -481,12 +481,12 @@ class survey_browse_response(report_rml): rml += """ No Response """ - if datas.has_key('form') and not datas['form']['without_pagebreak']: - rml += """""" - elif not datas.has_key('form'): - rml += """""" - else: - rml += """""" + if datas.has_key('form') and not datas['form']['without_pagebreak']: + rml += """""" + elif not datas.has_key('form'): + rml += """""" + else: + rml += """""" rml += """""" report_type = datas.get('report_type', 'pdf') create_doc = self.generators[report_type] diff --git a/addons/survey/report/survey_form.py b/addons/survey/report/survey_form.py index 6d62726fff5..ff1e0bc8424 100644 --- a/addons/survey/report/survey_form.py +++ b/addons/survey/report/survey_form.py @@ -365,12 +365,12 @@ class survey_form(report_rml): rml+=""" """ rml+="""""" - if datas.has_key('form') and not datas['form']['without_pagebreak']: - rml+="""""" - elif not datas.has_key('form'): - rml+="""""" - else: - rml+="""""" + if datas.has_key('form') and not datas['form']['without_pagebreak']: + rml+="""""" + elif not datas.has_key('form'): + rml+="""""" + else: + rml+="""""" rml+="""""" report_type = datas.get('report_type', 'pdf') create_doc = self.generators[report_type] diff --git a/addons/survey/survey.py b/addons/survey/survey.py index 9e4aad1ff7f..55a1e33f588 100644 --- a/addons/survey/survey.py +++ b/addons/survey/survey.py @@ -519,6 +519,16 @@ class survey_response(osv.osv): 'response_type' : lambda * a: "manually", } + def name_get(self, cr, uid, ids, context=None): + if not len(ids): + return [] + reads = self.read(cr, uid, ids, ['user_id','date_create'], context) + res = [] + for record in reads: + name = record['user_id'][1] + ' (' + record['date_create'].split('.')[0] + ')' + res.append((record['id'], name)) + return res + def copy(self, cr, uid, id, default=None,context={}): raise osv.except_osv(_('Error !'),_('You cannot duplicate the resource!')) @@ -667,7 +677,6 @@ class survey_question_wiz(osv.osv_memory): context.update({'sur_name_id' :wiz_id}) else: sur_name_rec = surv_name_wiz.read(cr, uid, context['sur_name_id']) - if context.has_key('active_id'): context.pop('active_id') survey_id = context['survey_id'] survey_obj = self.pool.get('survey') @@ -675,7 +684,8 @@ class survey_question_wiz(osv.osv_memory): page_obj = self.pool.get('survey.page') que_obj = self.pool.get('survey.question') ans_obj = self.pool.get('survey.answer') - response_obj = self.pool.get('survey.response.line') + + sur_response_obj = self.pool.get('survey.response') que_col_head = self.pool.get('survey.question.column.heading') p_id = sur_rec['page_ids'] total_pages = len(p_id) @@ -721,11 +731,22 @@ class survey_question_wiz(osv.osv_memory): pag_rec = page_obj.read(cr, uid, p_id) xml_form = etree.Element('form', {'string': _(tools.ustr(pag_rec['title']))}) xml_group = etree.SubElement(xml_form, 'group', {'col': '1', 'colspan': '4'}) + if context.has_key('response_id'): + xml_group = etree.SubElement(xml_form, 'group', {'col': '40', 'colspan': '4'}) + record = sur_response_obj.browse(cr, uid, context['response_id'][context['response_no']]) + etree.SubElement(xml_group, 'label', {'string': to_xml(tools.ustr('Answer Of :- ' + record.user_id.name + ', Date :- ' + record.date_create.split('.')[0] )), 'align':"0.0"}) + etree.SubElement(xml_group, 'label', {'string': to_xml(tools.ustr(" Response :- " + str(context['response_no'] + 1) +"/" + str(len(context['response_id'])) )), 'align':"0.0"}) + if context['response_no'] > 0: + etree.SubElement(xml_group, 'button', {'colspan':"1",'icon':"gtk-go-back",'name':"action_forward_previous",'string': tools.ustr("Previous Answer"),'type':"object"}) + if context['response_no'] + 1 == len(context['response_id']): + etree.SubElement(xml_group, 'button', {'colspan':"1",'icon': "gtk-go-forward", 'special' : 'cancel','string': tools.ustr("Done") ,'context' : tools.ustr(context)}) + else: + etree.SubElement(xml_group, 'button', {'colspan':"1",'icon': "gtk-go-forward", 'name':"action_forward_next",'string': tools.ustr("Next Answer") ,'type':"object",'context' : tools.ustr(context)}) if wiz_id: fields["wizardid_" + str(wiz_id)] = {'type':'char', 'size' : 255, 'string':"", 'views':{}} etree.SubElement(xml_form, 'field', {'invisible':'1','name': "wizardid_" + str(wiz_id),'default':str(lambda *a: 0)}) - if pag_rec['note']: + xml_group = etree.SubElement(xml_form, 'group', {'col': '1', 'colspan': '4'}) for que_test in pag_rec['note'].split('\n'): etree.SubElement(xml_group, 'label', {'string': to_xml(tools.ustr(que_test)), 'align':"0.0"}) que_ids = pag_rec['question_ids'] @@ -902,8 +923,13 @@ class survey_question_wiz(osv.osv_memory): but_string = "Next" if int(page_number) + 1 == total_pages: but_string = "Done" - if context.has_key('active') and context['active'] and int(page_number) + 1 == total_pages: - etree.SubElement(xml_group, 'button', {'icon': "gtk-go-forward", 'string': "Done" ,'special':"cancel",'context' : tools.ustr(context)}) + + if context.has_key('active') and context['active'] and int(page_number) + 1 == total_pages and context.has_key('response_id') and context.has_key('response_no') and context['response_no'] + 1 == len(context['response_id']): + etree.SubElement(xml_group, 'button', {'icon': "gtk-go-forward", 'special' : 'cancel','string': tools.ustr("Done") ,'context' : tools.ustr(context)}) + elif context.has_key('active') and context['active'] and int(page_number) + 1 == total_pages and context.has_key('response_id'): + etree.SubElement(xml_group, 'button', {'icon': "gtk-go-forward", 'name':"action_forward_next",'string': tools.ustr("Next Answer") ,'type':"object",'context' : tools.ustr(context)}) + elif context.has_key('active') and context['active'] and int(page_number) + 1 == total_pages: + etree.SubElement(xml_group, 'button', {'icon': "gtk-go-forward", 'special': "cancel", 'string' : 'Done', 'context' : tools.ustr(context)}) else: etree.SubElement(xml_group, 'button', {'icon': "gtk-go-forward", 'name':"action_next",'string': tools.ustr(but_string) ,'type':"object",'context' : tools.ustr(context)}) if context.has_key('active') and context['active'] and context.has_key('edit'): @@ -920,7 +946,6 @@ class survey_question_wiz(osv.osv_memory): result['context'] = context else: survey_obj.write(cr, uid, survey_id, {'tot_comp_survey' : sur_rec['tot_comp_survey'] + 1}) - sur_response_obj = self.pool.get('survey.response') sur_response_obj.write(cr, uid, [sur_name_read['response']], {'state' : 'done'}) if sur_rec['send_response']: user_obj = self.pool.get('res.users') @@ -951,7 +976,7 @@ class survey_question_wiz(osv.osv_memory): if user_email and resp_email: mail = "Hello " + survey_data.responsible_id.name + ",\n\n " + str(user_obj.browse(cr, uid, uid).name) + " Give Response Of " + survey_data.title + " Survey.\n\n Thanks," tools.email_send(user_email, [resp_email], "Survey Response Of " + str(user_obj.browse(cr, uid, uid).name) , mail, attach = attachments) - + xml_form = etree.Element('form', {'string': _('Complete Survey Response')}) etree.SubElement(xml_form, 'separator', {'string': 'Complete Survey', 'colspan': "4"}) etree.SubElement(xml_form, 'label', {'string': 'Thanks for your response'}) @@ -987,7 +1012,8 @@ class survey_question_wiz(osv.osv_memory): value[field] = tot_per response_obj = self.pool.get('survey.response') if context.has_key('response_id') and context['response_id']: - response_ans = response_obj.browse(cr, uid, context['response_id']) + data = super(survey_question_wiz, self).default_get(cr, uid, fields_list, context) + response_ans = response_obj.browse(cr, uid, context['response_id'][context['response_no']]) fields_list.sort() for que in response_ans.question_ids: for field in fields_list: @@ -1068,7 +1094,7 @@ class survey_question_wiz(osv.osv_memory): survey_obj.write(cr, uid, sur_name_read['survey_id'], {'tot_start_survey' : sur_rec['tot_start_survey'] + 1}) if context.has_key('cur_id'): self.pool.get(context['object']).write(cr, uid, [int(context['cur_id'])], {'response' : response_id}) - + for key,val in sur_name_read['store_ans'].items(): for field in vals: if field.split('_')[0] == val['question_id']: @@ -1529,6 +1555,42 @@ class survey_question_wiz(osv.osv_memory): 'context': context } + def action_forward_previous(self, cr, uid, ids, context=None): + search_obj = self.pool.get('ir.ui.view') + surv_name_wiz = self.pool.get('survey.name.wiz') + search_id = search_obj.search(cr,uid,[('model','=','survey.question.wiz'),('name','=','Survey Search')]) + wiz_id = surv_name_wiz.create(cr,uid, {'survey_id' : context['survey_id'],'page_no' :-1,'page':'next','transfer' :1,'response':0}) + context.update({'sur_name_id' :wiz_id, 'response_no' : context['response_no'] - 1}) + if context['response_no'] + 1 > len(context['response_id']): + return {} + return { + 'view_type': 'form', + "view_mode": 'form', + 'res_model': 'survey.question.wiz', + 'type': 'ir.actions.act_window', + 'target': 'new', + 'search_view_id':search_id[0], + 'context': context + } + + def action_forward_next(self, cr, uid, ids, context=None): + search_obj = self.pool.get('ir.ui.view') + surv_name_wiz = self.pool.get('survey.name.wiz') + search_id = search_obj.search(cr,uid,[('model','=','survey.question.wiz'),('name','=','Survey Search')]) + wiz_id = surv_name_wiz.create(cr,uid, {'survey_id' : context['survey_id'],'page_no' :-1,'page':'next','transfer' :1,'response':0}) + context.update({'sur_name_id' :wiz_id, 'response_no' : context['response_no'] + 1}) + if context['response_no'] + 1 > len(context['response_id']): + return {} + return { + 'view_type': 'form', + "view_mode": 'form', + 'res_model': 'survey.question.wiz', + 'type': 'ir.actions.act_window', + 'target': 'new', + 'search_view_id':search_id[0], + 'context': context + } + def action_next(self, cr, uid, ids, context=None): surv_name_wiz = self.pool.get('survey.name.wiz') search_obj = self.pool.get('ir.ui.view') @@ -1622,12 +1684,17 @@ class survey_print_answer(osv.osv_memory): _columns = { 'survey_id': fields.selection(_get_survey, "Survey", required="1"), - 'response_id': fields.many2one("survey.response", "Survey Response", required="1"), + 'response_id': fields.many2one("survey.response", "Survey Response"), } def action_next(self, cr, uid, ids, context=None): - response_id = self.read(cr, uid, ids, [])[0] - context.update({'active' : True,'survey_id' : response_id['survey_id'], 'response_id' : response_id['response_id']}) + record = self.read(cr, uid, ids, [])[0] + if record['response_id']: + res_id = [(record['response_id'])] + else: + sur_response_obj = self.pool.get('survey.response') + res_id = sur_response_obj.search(cr, uid, [('survey_id', '=',int(record['survey_id']))]) + context.update({'active' : True,'survey_id' : record['survey_id'], 'response_id' : res_id, 'response_no' : 0}) search_obj = self.pool.get('ir.ui.view') search_id = search_obj.search(cr,uid,[('model','=','survey.question.wiz'),('name','=','Survey Search')]) return { diff --git a/addons/survey/survey_demo.xml b/addons/survey/survey_demo.xml index 6cc5a1acc59..3a41881fd2b 100644 --- a/addons/survey/survey_demo.xml +++ b/addons/survey/survey_demo.xml @@ -21,6 +21,8 @@ 20 + open + 1 @@ -492,6 +494,8 @@ 20 + open + 1 @@ -1280,6 +1284,7 @@ 20 + @@ -2819,4 +2824,621 @@ + + + + + + 2010-03-03 14:25:03 + + + + + + + 2010-03-03 14:29:36 + + + + + + + 2010-03-03 14:25:03.603599 + done + + + link + + + + + 2010-03-03 14:29:36.247905 + done + + + link + + + + + 2010-03-03 14:25:03.631622 + done + + + + + + + 2010-03-03 14:25:03.653849 + done + + + + + + + 2010-03-03 14:25:03.671836 + done + + + + + + + 2010-03-03 14:25:03.689999 + done + + + + + + + 2010-03-03 14:25:03.706175 + done + + Tiny ERP + + + + + + 2010-03-03 14:25:29.087116 + done + + + + + + + 2010-03-03 14:25:29.107571 + done + + + + + + + 2010-03-03 14:25:29.126023 + done + + + + + + + 2010-03-03 14:26:14.844451 + done + + + + + + + 2010-03-03 14:26:14.872224 + done + + + + + + + 2010-03-03 14:26:14.897764 + skip + + + + + + + 2010-03-03 14:26:14.918989 + done + + + + + + + 2010-03-03 14:29:36.27459 + done + + + + + + + 2010-03-03 14:29:36.301461 + done + + + + + + + 2010-03-03 14:29:36.33203 + done + + Tiny ERP + + + + + + 2010-03-03 14:29:36.35911 + done + + + + + + + 2010-03-03 14:30:11.376172 + done + + + + + + + 2010-03-03 14:30:11.397675 + done + + + + + + + 2010-03-03 14:30:11.414119 + done + + + + + + + 2010-03-03 14:31:18.637519 + done + + + + + + + 2010-03-03 14:31:18.653091 + done + + survey + + + + + + 2010-03-03 14:31:18.669619 + done + + + + + + + 2010-03-03 14:31:18.691933 + done + + + + + + + 2010-03-03 14:32:08.47899 + done + + + + + + + 2010-03-03 14:32:08.501274 + done + + + + + + + 2010-03-03 14:32:08.523878 + skip + + + + + + + 2010-03-03 14:32:08.538988 + done + + + + + + + 2010-03-03 14:32:08.555196 + done + + + + + + + + 1 + + + + + + + 1 + + + + + + + 1 + + + + + + + 1 + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + 1 + + + + + + + 1 + + + + + + + 1 + + + + + + + 1 + + + + + + + 1 + + + + + + + 1 + + + + + + + 1 + + + + + + + 1 + + + + + + + 1 + + + + + + + 1 + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/addons/survey/survey_que_wizard.xml b/addons/survey/survey_que_wizard.xml index 6b52bc66c23..3f2550d93ee 100644 --- a/addons/survey/survey_que_wizard.xml +++ b/addons/survey/survey_que_wizard.xml @@ -102,7 +102,7 @@ - Answer Survey Response + Answer Survey ir.actions.act_window survey.print.answer form diff --git a/addons/survey/survey_report.xml b/addons/survey/survey_report.xml index fc4caaa5180..ab057d16e33 100644 --- a/addons/survey/survey_report.xml +++ b/addons/survey/survey_report.xml @@ -12,7 +12,7 @@ + string="Print Survey Statistics"/> --> - - + - - + @@ -284,7 +282,7 @@ survey_question_wizard_test @@ -848,11 +845,11 @@ survey.response.line form -
+ - + @@ -889,7 +886,7 @@ survey.response.line tree - + @@ -907,7 +904,7 @@ survey.response form - + @@ -923,7 +920,7 @@ survey.response tree - + @@ -942,7 +939,7 @@ survey.response.answer form - + @@ -962,7 +959,7 @@ survey.response.answer tree - + @@ -1047,6 +1044,18 @@ + + Survey Request + survey.request + form + tree,form + + + + + @@ -1083,9 +1092,9 @@ - + groups="group_survey_manager"/--> - + parent="menu_reporting" type="wizard" icon="STOCK_PRINT" groups="group_survey_manager"/> + diff --git a/addons/survey/survey_wizard.xml b/addons/survey/survey_wizard.xml index 47db190e311..cacba61354b 100644 --- a/addons/survey/survey_wizard.xml +++ b/addons/survey/survey_wizard.xml @@ -10,5 +10,8 @@ + + diff --git a/addons/survey/wizard/__init__.py b/addons/survey/wizard/__init__.py index e0fd5999004..35f8cf03820 100755 --- a/addons/survey/wizard/__init__.py +++ b/addons/survey/wizard/__init__.py @@ -23,5 +23,6 @@ import wizard_survey import wizard_print_survey import wizard_browse_answer +import wizard_print_survey_statistics # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file diff --git a/addons/survey/wizard/wizard_browse_answer.py b/addons/survey/wizard/wizard_browse_answer.py index 6a81edce627..90cde78fec9 100644 --- a/addons/survey/wizard/wizard_browse_answer.py +++ b/addons/survey/wizard/wizard_browse_answer.py @@ -30,7 +30,7 @@ from tools.translate import _ _survey_form = ''' - + diff --git a/addons/survey/wizard/wizard_print_survey_statistics.py b/addons/survey/wizard/wizard_print_survey_statistics.py new file mode 100644 index 00000000000..0dcac11e01f --- /dev/null +++ b/addons/survey/wizard/wizard_print_survey_statistics.py @@ -0,0 +1,52 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2009 Tiny SPRL (). All Rights Reserved +# $Id$ +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU 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 General Public License +# along with this program. If not, see . +# +############################################################################## + +import wizard +import time +import pooler +from random import choice +import string +import tools +from tools.translate import _ + +_survey_form = ''' + + +''' + +_survey_fields = { + 'survey_ids': {'string': 'Survey', 'type': 'many2many', 'relation': 'survey','required':'1'}, + } + +class print_survey_statistics_wizard(wizard.interface): + states = { + 'init' : { + 'actions' : [], + 'result' : {'type' : 'form', 'arch' :_survey_form, 'fields' :_survey_fields,\ + 'state' : [('end', 'Cancel', 'gtk-cancel'), ('print', 'Print', 'gtk-print')]} + }, + 'print': { + 'actions': [], + 'result': {'type':'print', 'report':'survey.analysis', 'state':'end'} + } + } +print_survey_statistics_wizard('wizard.print.survey.statistics') From dd2d49073925498634988a6413bf3c513e1a3afe Mon Sep 17 00:00:00 2001 From: "Rvo (Open ERP)" Date: Thu, 4 Mar 2010 15:11:44 +0530 Subject: [PATCH 10/22] [IMP]:improved views on task_ids,editable = bottom and phase scheduling wizard bzr revid: rvo@tinyerp.co.in-20100304094144-8asg36h81hqqhtlb --- addons/project_long_term/project_view.xml | 42 ++++++++++++++++++- .../wizard/compute_phases_date.py | 16 ++++++- addons/resource/resource_view.xml | 4 +- 3 files changed, 55 insertions(+), 7 deletions(-) diff --git a/addons/project_long_term/project_view.xml b/addons/project_long_term/project_view.xml index d8f6cfe697f..7d0d0e3eb65 100644 --- a/addons/project_long_term/project_view.xml +++ b/addons/project_long_term/project_view.xml @@ -79,8 +79,46 @@ - - + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
+