~camptocamp/openobject-client-web/7.0-c2c-official

« back to all changes in this revision

Viewing changes to addons/web/controllers/main.py

  • Committer: Yannick Vaucher
  • Date: 2013-03-11 12:05:25 UTC
  • mfrom: (3656.1.42 openerp-web)
  • Revision ID: yannick.vaucher@camptocamp.com-20130311120525-0xm8sj0t2mn3zex1
[MRG] from official

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
import time
16
16
import urllib
17
17
import urllib2
18
 
import xmlrpclib
19
18
import zlib
20
19
from xml.etree import ElementTree
21
20
from cStringIO import StringIO
98
97
        dbs = db_list(req)
99
98
        if len(dbs) == 1:
100
99
            return dbs[0]
101
 
    except xmlrpclib.Fault:
 
100
    except Exception:
102
101
        # ignore access denied
103
102
        pass
104
103
    return False
550
549
    def login(self, req, db, login, key):
551
550
        return login_and_redirect(req, db, login, key)
552
551
 
 
552
    @openerpweb.jsonrequest
 
553
    def jsonrpc(self, req, service, method, args):
 
554
        """ Method used by client APIs to contact OpenERP. """
 
555
        return getattr(req.session.proxy(service), method)(*args)
 
556
 
553
557
class WebClient(openerpweb.Controller):
554
558
    _cp_path = "/web/webclient"
555
559
 
680
684
 
681
685
    @openerpweb.jsonrequest
682
686
    def version_info(self, req):
683
 
        return openerp.service.web_services.RPC_VERSION_1
 
687
        return openerp.service.common.exp_version()
684
688
 
685
689
class Proxy(openerpweb.Controller):
686
690
    _cp_path = '/web/proxy'
745
749
 
746
750
        try:
747
751
            return req.session.proxy("db").drop(password, db)
748
 
        except xmlrpclib.Fault, e:
749
 
            if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied':
750
 
                return {'error': e.faultCode, 'title': 'Drop Database'}
751
 
        return {'error': _('Could not drop database !'), 'title': _('Drop Database')}
 
752
        except openerp.exceptions.AccessDenied:
 
753
            return {'error': 'AccessDenied', 'title': 'Drop Database'}
 
754
        except Exception:
 
755
            return {'error': _('Could not drop database !'), 'title': _('Drop Database')}
752
756
 
753
757
    @openerpweb.httprequest
754
758
    def backup(self, req, backup_db, backup_pwd, token):
765
769
               ('Content-Disposition', content_disposition(filename, req))],
766
770
               {'fileToken': int(token)}
767
771
            )
768
 
        except xmlrpclib.Fault, e:
769
 
            return simplejson.dumps([[],[{'error': e.faultCode, 'title': _('Backup Database')}]])
 
772
        except Exception, e:
 
773
            return simplejson.dumps([[],[{'error': openerp.tools.ustr(e), 'title': _('Backup Database')}]])
770
774
 
771
775
    @openerpweb.httprequest
772
776
    def restore(self, req, db_file, restore_pwd, new_db):
774
778
            data = base64.b64encode(db_file.read())
775
779
            req.session.proxy("db").restore(restore_pwd, new_db, data)
776
780
            return ''
777
 
        except xmlrpclib.Fault, e:
778
 
            if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied':
779
 
                raise Exception("AccessDenied")
 
781
        except openerp.exceptions.AccessDenied, e:
 
782
            raise Exception("AccessDenied")
780
783
 
781
784
    @openerpweb.jsonrequest
782
785
    def change_password(self, req, fields):
785
788
                dict(map(operator.itemgetter('name', 'value'), fields)))
786
789
        try:
787
790
            return req.session.proxy("db").change_admin_password(old_password, new_password)
788
 
        except xmlrpclib.Fault, e:
789
 
            if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied':
790
 
                return {'error': e.faultCode, 'title': _('Change Password')}
791
 
        return {'error': _('Error, password not changed !'), 'title': _('Change Password')}
 
791
        except openerp.exceptions.AccessDenied:
 
792
            return {'error': 'AccessDenied', 'title': _('Change Password')}
 
793
        except Exception:
 
794
            return {'error': _('Error, password not changed !'), 'title': _('Change Password')}
792
795
 
793
796
class Session(openerpweb.Controller):
794
797
    _cp_path = "/web/session"
1190
1193
 
1191
1194
            image_data = base64.b64decode(image_base64)
1192
1195
 
1193
 
        except (TypeError, xmlrpclib.Fault):
 
1196
        except Exception:
1194
1197
            image_data = self.placeholder(req)
1195
1198
        headers.append(('ETag', retag))
1196
1199
        headers.append(('Content-Length', len(image_data)))
1307
1310
                'filename': ufile.filename,
1308
1311
                'id':  attachment_id
1309
1312
            }
1310
 
        except xmlrpclib.Fault, e:
1311
 
            args = {'error':e.faultCode }
 
1313
        except Exception:
 
1314
            args = {'error': "Something horrible happened"}
1312
1315
        return out % (simplejson.dumps(callback), simplejson.dumps(args))
1313
1316
 
1314
1317
    @openerpweb.httprequest