def exp_drop(self, db_name):
        if db_name not in self.exp_list(True):
            return False
        openerp.modules.registry.RegistryManager.delete(db_name)
        sql_db.close_db(db_name)

        db = sql_db.db_connect('postgres')
        cr = db.cursor()
        cr.autocommit(True) # avoid transaction block
        try:
            # Try to terminate all other connections that might prevent
            # dropping the database
            try:

                # PostgreSQL 9.2 renamed pg_stat_activity.procpid to pid:
                # http://www.postgresql.org/docs/9.2/static/release-9-2.html#AEN110389
                pid_col = 'pid' if cr._cnx.server_version >= 90200 else 'procpid'

                cr.execute("""SELECT pg_terminate_backend(%(pid_col)s)
                              FROM pg_stat_activity
                              WHERE datname = %%s AND 
                                    %(pid_col)s != pg_backend_pid()""" % {'pid_col': pid_col},
                           (db_name,))
            except Exception:
                pass

            try:
                cr.execute('DROP DATABASE "%s"' % db_name)
            except Exception, e:
                _logger.error('DROP DB: %s failed:\n%s', db_name, e)
                raise Exception("Couldn't drop database %s: %s" % (db_name, e))
            else:
Exemple #2
0
    def exp_drop(self, db_name):
        if db_name not in self.exp_list(True):
            return False
        openerp.modules.registry.RegistryManager.delete(db_name)
        sql_db.close_db(db_name)

        db = sql_db.db_connect('postgres')
        cr = db.cursor()
        cr.autocommit(True)  # avoid transaction block
        try:
            # Try to terminate all other connections that might prevent
            # dropping the database
            try:

                # PostgreSQL 9.2 renamed pg_stat_activity.procpid to pid:
                # http://www.postgresql.org/docs/9.2/static/release-9-2.html#AEN110389
                pid_col = 'pid' if cr._cnx.server_version >= 90200 else 'procpid'

                cr.execute(
                    """SELECT pg_terminate_backend(%(pid_col)s)
                              FROM pg_stat_activity
                              WHERE datname = %%s AND 
                                    %(pid_col)s != pg_backend_pid()""" %
                    {'pid_col': pid_col}, (db_name, ))
            except Exception:
                pass

            try:
                cr.execute('DROP DATABASE "%s"' % db_name)
            except Exception, e:
                _logger.error('DROP DB: %s failed:\n%s', db_name, e)
                raise Exception("Couldn't drop database %s: %s" % (db_name, e))
            else:
Exemple #3
0
    def exp_drop(self, db_name):
        if not self.exp_db_exist(db_name):
            return False
        openerp.modules.registry.RegistryManager.delete(db_name)
        sql_db.close_db(db_name)

        db = sql_db.db_connect('template1')
        cr = db.cursor()
        cr.autocommit(True) # avoid transaction block
        try:
            # Try to terminate all other connections that might prevent
            # dropping the database
            try:
                cr.execute("""SELECT pg_terminate_backend(procpid)
                              FROM pg_stat_activity
                              WHERE datname = %s AND 
                                    procpid != pg_backend_pid()""",
                           (db_name,))
            except Exception:
                pass

            try:
                cr.execute('DROP DATABASE "%s"' % db_name)
            except Exception, e:
                _logger.error('DROP DB: %s failed:\n%s', db_name, e)
                raise Exception("Couldn't drop database %s: %s" % (db_name, e))
            else:
 def exp_duplicate_database(self, db_original_name, db_name):
     _logger.info('Duplicate database `%s` to `%s`.', db_original_name, db_name)
     sql_db.close_db(db_original_name)
     db = sql_db.db_connect('postgres')
     cr = db.cursor()
     try:
         cr.autocommit(True) # avoid transaction block
         cr.execute("""CREATE DATABASE "%s" ENCODING 'unicode' TEMPLATE "%s" """ % (db_name, db_original_name))
     finally:
         cr.close()
     return True
Exemple #5
0
 def exp_duplicate_database(self, db_original_name, db_name):
     _logger.info('Duplicate database `%s` to `%s`.', db_original_name, db_name)
     sql_db.close_db(db_original_name)
     db = sql_db.db_connect('postgres')
     cr = db.cursor()
     try:
         cr.autocommit(True) # avoid transaction block
         cr.execute("""CREATE DATABASE "%s" ENCODING 'unicode' TEMPLATE "%s" """ % (db_name, db_original_name))
     finally:
         cr.close()
     return True
    def exp_rename(self, old_name, new_name):
        openerp.modules.registry.RegistryManager.delete(old_name)
        sql_db.close_db(old_name)

        db = sql_db.db_connect('postgres')
        cr = db.cursor()
        cr.autocommit(True) # avoid transaction block
        try:
            try:
                cr.execute('ALTER DATABASE "%s" RENAME TO "%s"' % (old_name, new_name))
            except Exception, e:
                _logger.error('RENAME DB: %s -> %s failed:\n%s', old_name, new_name, e)
                raise Exception("Couldn't rename database %s to %s: %s" % (old_name, new_name, e))
            else:
Exemple #7
0
    def exp_rename(self, old_name, new_name):
        openerp.modules.registry.RegistryManager.delete(old_name)
        sql_db.close_db(old_name)

        db = sql_db.db_connect('template1')
        cr = db.cursor()
        cr.autocommit(True) # avoid transaction block
        try:
            try:
                cr.execute('ALTER DATABASE "%s" RENAME TO "%s"' % (old_name, new_name))
            except Exception, e:
                _logger.error('RENAME DB: %s -> %s failed:\n%s', old_name, new_name, e)
                raise Exception("Couldn't rename database %s to %s: %s" % (old_name, new_name, e))
            else:
    def exp_drop(self, db_name):
        openerp.modules.registry.RegistryManager.delete(db_name)
        sql_db.close_db(db_name)

        db = sql_db.db_connect('template1')
        cr = db.cursor()
        cr.autocommit(True) # avoid transaction block
        try:
            try:
                cr.execute('DROP DATABASE "%s"' % db_name)
            except Exception, e:
                _logger.error('DROP DB: %s failed:\n%s', db_name, e)
                raise Exception("Couldn't drop database %s: %s" % (db_name, e))
            else:
Exemple #9
0
    def exp_rename(self, old_name, new_name):
        sql_db.close_db(old_name)
        openerp.netsvc.Agent.cancel(db_name)
        logger = netsvc.Logger()

        db = sql_db.db_connect('template1')
        cr = db.cursor()
        cr.autocommit(True) # avoid transaction block
        try:
            try:
                cr.execute('ALTER DATABASE "%s" RENAME TO "%s"' % (old_name, new_name))
            except Exception, e:
                logger.notifyChannel("web-services", netsvc.LOG_ERROR,
                        'RENAME DB: %s -> %s failed:\n%s' % (old_name, new_name, e))
                raise Exception("Couldn't rename database %s to %s: %s" % (old_name, new_name, e))
            else:
Exemple #10
0
    def exp_drop(self, db_name):
        sql_db.close_db(db_name)
        openerp.netsvc.Agent.cancel(db_name)
        logger = netsvc.Logger()

        db = sql_db.db_connect('template1')
        cr = db.cursor()
        cr.autocommit(True) # avoid transaction block
        try:
            try:
                cr.execute('DROP DATABASE "%s"' % db_name)
            except Exception, e:
                logger.notifyChannel("web-services", netsvc.LOG_ERROR,
                        'DROP DB: %s failed:\n%s' % (db_name, e))
                raise Exception("Couldn't drop database %s: %s" % (db_name, e))
            else:
    def exp_drop(self, db_name):
        if db_name not in self.exp_list(True):
            return False
        openerp.modules.registry.RegistryManager.delete(db_name)
        sql_db.close_db(db_name)

        db = sql_db.db_connect('postgres')
        cr = db.cursor()
        try:
            cr.autocommit(True)  # avoid transaction block
            _drop_conn(cr, db_name)

            try:
                cr.execute('DROP DATABASE "%s"' % db_name)
            except Exception, e:
                _logger.error('DROP DB: %s failed:\n%s', db_name, e)
                raise Exception("Couldn't drop database %s: %s" % (db_name, e))
            else:
    def exp_drop(self, db_name):
        if db_name not in self.exp_list(True):
            return False
        openerp.modules.registry.RegistryManager.delete(db_name)
        sql_db.close_db(db_name)

        db = sql_db.db_connect('postgres')
        cr = db.cursor()
        try:
            cr.autocommit(True) # avoid transaction block
            _drop_conn(cr, db_name)

            try:
                cr.execute('DROP DATABASE "%s"' % db_name)
            except Exception, e:
                _logger.error('DROP DB: %s failed:\n%s', db_name, e)
                raise Exception("Couldn't drop database %s: %s" % (db_name, e))
            else:
Exemple #13
0
def index(self, req, action, token):
        action = simplejson.loads(action)

        report_srv = req.session.proxy("report")
        context = dict(req.context)
        context.update(action["context"])

        report_data = {}
        report_ids = context["active_ids"]
        if 'report_type' in action:
            report_data['report_type'] = action['report_type']
        if 'datas' in action:
            if 'ids' in action['datas']:
                report_ids = action['datas'].pop('ids')
            report_data.update(action['datas'])

        report_id = report_srv.report(
            req.session._db, req.session._uid, req.session._password,
            action["report_name"], report_ids,
            report_data, context)

        report_struct = None
        while True:
            report_struct = report_srv.report_get(
                req.session._db, req.session._uid, req.session._password, report_id)
            if report_struct["state"]:
                break

            time.sleep(self.POLLING_DELAY)

        report = base64.b64decode(report_struct['result'])
        if report_struct.get('code') == 'zlib':
            report = zlib.decompress(report)
        report_mimetype = self.TYPES_MAPPING.get(
            report_struct['format'], 'octet-stream')
        file_name = action.get('name', 'report')
        if 'name' not in action:
            reports = req.session.model('ir.actions.report.xml')
            res_id = reports.search([('report_name', '=', action['report_name']),],
                                    0, False, False, context)
            if len(res_id) > 0:
                file_name = reports.read(res_id[0], ['name'], context)['name']
            else:
                file_name = action['report_name']
                
        # This is to get the reference name of the purchase order
        purchase_order_name = context["active_id"]
        purchase_uid = context["uid"]        
        if file_name == 'Purchase Order':
            dbname = req.session._db
            db = sql_db.db_connect(dbname) 
            cr = db.cursor()            
            pool =  pooler.get_pool(cr.dbname)
            purchase_order_obj = pool['purchase.order'].browse(cr,purchase_uid, purchase_order_name, context)            
            print purchase_order_obj.name
            sql_db.close_db(dbname)  
            file_name = dbname+'_'+purchase_order_obj.name 
       
        # This is to get the reference name of the request for quotation
        purchase_order_name = context["active_id"]
        purchase_uid = context["uid"]        
        if file_name == 'Request for Quotation':
            dbname = req.session._db
            db = sql_db.db_connect(dbname) 
            cr = db.cursor()            
            pool =  pooler.get_pool(cr.dbname)
            purchase_order_obj = pool['purchase.order'].browse(cr,purchase_uid, purchase_order_name, context)            
            print purchase_order_obj.name
            sql_db.close_db(dbname)  
            file_name = dbname+ purchase_order_obj.name 

        # This is to get the reference name of the sale quotation
        sale_order_name = context["active_id"]
        sale_uid = context["uid"]        
        if file_name == 'Quotation / Order':
            dbname = req.session._db
            db = sql_db.db_connect(dbname) 
            cr = db.cursor()            
            pool =  pooler.get_pool(cr.dbname)
            sale_order_obj = pool['sale.order'].browse(cr,sale_uid, sale_order_name, context)            
            so_name=sale_order_obj.name
            sql_db.close_db(dbname)  
            file_name = dbname+'_QO-'+ so_name[3:] 

        # This is to get the reference name of the sale quotation
        sale_order_name = context["active_id"]
        sale_uid = context["uid"]        
        if file_name == 'Sale Quotation':
            dbname = req.session._db
            db = sql_db.db_connect(dbname) 
            cr = db.cursor()            
            pool =  pooler.get_pool(cr.dbname)
            sale_order_obj = pool['sale.order'].browse(cr,sale_uid, sale_order_name, context)            
            print sale_order_obj.name
            sql_db.close_db(dbname)  
            file_name = dbname+'_'+sale_order_obj.name

        # This is to get the reference name of the sale quotation with logo
        sale_order_name = context["active_id"]
        sale_uid = context["uid"]        
        if file_name == 'Sale Quotation With Logo':
            dbname = req.session._db
            db = sql_db.db_connect(dbname) 
            cr = db.cursor()            
            pool =  pooler.get_pool(cr.dbname)
            sale_order_obj = pool['sale.order'].browse(cr,sale_uid, sale_order_name, context)            
            print sale_order_obj.name
            sql_db.close_db(dbname)  
            file_name = dbname+'_'+sale_order_obj.name 

        
        file_name = '%s.%s' % (file_name , report_struct['format'])

        return req.make_response(report,
             headers=[
                 ('Content-Disposition', content_disposition(file_name, req)),
                 ('Content-Type', report_mimetype),
                 ('Content-Length', len(report))],
             cookies={'fileToken': token})