You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							98 lines
						
					
					
						
							3.4 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							98 lines
						
					
					
						
							3.4 KiB
						
					
					
				
								# -*- coding: utf-8 -*-
							 | 
						|
								import imghdr
							 | 
						|
								import json
							 | 
						|
								import functools
							 | 
						|
								from odoo import http, tools
							 | 
						|
								import odoo, os, sys, jinja2
							 | 
						|
								from odoo.addons.web.controllers.main import Database
							 | 
						|
								from odoo.addons.web.controllers import main
							 | 
						|
								from odoo.addons.web.controllers.main import Binary
							 | 
						|
								from odoo.modules import get_resource_path
							 | 
						|
								from cStringIO import StringIO
							 | 
						|
								from odoo.http import request
							 | 
						|
								
							 | 
						|
								if hasattr(sys, 'frozen'):
							 | 
						|
								    # When running on compiled windows binary, we don't have access to package loader.
							 | 
						|
								    path = os.path.realpath(os.path.join(os.path.dirname(__file__), '..', 'views'))
							 | 
						|
								    loader = jinja2.FileSystemLoader(path)
							 | 
						|
								else:
							 | 
						|
								    loader = jinja2.PackageLoader('odoo.addons.odoo-debrand', "views")
							 | 
						|
								env = main.jinja2.Environment(loader=loader, autoescape=True)
							 | 
						|
								env.filters["json"] = json.dumps
							 | 
						|
								db_monodb = http.db_monodb
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								class BinaryCustom(Binary):
							 | 
						|
								    @http.route([
							 | 
						|
								        '/web/binary/company_logo',
							 | 
						|
								        '/logo',
							 | 
						|
								        '/logo.png',
							 | 
						|
								    ], type='http', auth="none")
							 | 
						|
								    def company_logo(self, dbname=None, **kw):
							 | 
						|
										imgname = 'logo'
							 | 
						|
										imgext = '.png'
							 | 
						|
										company_logo = request.env['website'].sudo().search([])[0].company_logo
							 | 
						|
										custom_logo = tools.image_resize_image(company_logo, (150, None))
							 | 
						|
										placeholder = functools.partial(get_resource_path, 'web', 'static', 'src', 'img')
							 | 
						|
										uid = None
							 | 
						|
										if request.session.db:
							 | 
						|
											dbname = request.session.db
							 | 
						|
											uid = request.session.uid
							 | 
						|
										elif dbname is None:
							 | 
						|
											dbname = db_monodb()
							 | 
						|
								
							 | 
						|
										if not uid:
							 | 
						|
											uid = odoo.SUPERUSER_ID
							 | 
						|
								
							 | 
						|
										if not dbname:
							 | 
						|
											response = http.send_file(placeholder(imgname + imgext))
							 | 
						|
										else:
							 | 
						|
											try:
							 | 
						|
												# create an empty registry
							 | 
						|
												registry = odoo.modules.registry.Registry(dbname)
							 | 
						|
												if custom_logo:
							 | 
						|
													image_base64 = custom_logo.decode('base64')
							 | 
						|
													image_data = StringIO(image_base64)
							 | 
						|
													imgext = '.' + (imghdr.what(None, h=image_base64) or 'png')
							 | 
						|
													response = http.send_file(image_data, filename=imgname + imgext, mtime=None)
							 | 
						|
												else:
							 | 
						|
													with registry.cursor() as cr:
							 | 
						|
														cr.execute("""SELECT c.logo_web, c.write_date
							 | 
						|
																		FROM res_users u
							 | 
						|
																   LEFT JOIN res_company c
							 | 
						|
																		  ON c.id = u.company_id
							 | 
						|
																	   WHERE u.id = %s
							 | 
						|
																   """, (uid,))
							 | 
						|
														row = cr.fetchone()
							 | 
						|
														if row and row[0]:
							 | 
						|
															image_base64 = str(row[0]).decode('base64')
							 | 
						|
															image_data = StringIO(image_base64)
							 | 
						|
															imgext = '.' + (imghdr.what(None, h=image_base64) or 'png')
							 | 
						|
															response = http.send_file(image_data, filename=imgname + imgext, mtime=row[1])
							 | 
						|
														else:
							 | 
						|
															response = http.send_file(placeholder('nologo.png'))
							 | 
						|
											except Exception:
							 | 
						|
												response = http.send_file(placeholder(imgname + imgext))
							 | 
						|
										return response
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								class OdooDebrand(Database):
							 | 
						|
									def _render_template(self, **d):
							 | 
						|
										d.setdefault('manage', True)
							 | 
						|
										d['insecure'] = odoo.tools.config['admin_passwd'] == 'admin'
							 | 
						|
										d['list_db'] = odoo.tools.config['list_db']
							 | 
						|
										d['langs'] = odoo.service.db.exp_list_lang()
							 | 
						|
										d['countries'] = odoo.service.db.exp_list_countries()
							 | 
						|
										website_id = request.env['website'].sudo().search([])
							 | 
						|
										d['company_name'] = website_id and website_id[0].company_name
							 | 
						|
										d['favicon_url'] = website_id and website_id[0].favicon_url or ''
							 | 
						|
										d['company_logo_url'] = website_id and website_id[0].company_logo_url or ''
							 | 
						|
										# databases list
							 | 
						|
										d['databases'] = []
							 | 
						|
										try:
							 | 
						|
												d['databases'] = http.db_list()
							 | 
						|
										except odoo.exceptions.AccessDenied:
							 | 
						|
												monodb = db_monodb()
							 | 
						|
												if monodb:
							 | 
						|
														d['databases'] = [monodb]
							 | 
						|
										return env.get_template("database_manager_extend.html").render(d)
							 | 
						|
								
							 |