mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 07:03:55 +00:00 
			
		
		
		
	Hash dashboard resources
This commit is contained in:
		| @@ -296,7 +296,8 @@ class MainRequestHandler(BaseHandler): | ||||
|             'https://esphomelib.com/esphomeyaml/' | ||||
|  | ||||
|         self.render("templates/index.html", entries=entries, | ||||
|                     version=version, begin=begin, docs_link=docs_link) | ||||
|                     version=version, begin=begin, docs_link=docs_link, | ||||
|                     get_static_file_url=get_static_file_url) | ||||
|  | ||||
|  | ||||
| def _ping_func(filename, address): | ||||
| @@ -413,7 +414,8 @@ class LoginHandler(BaseHandler): | ||||
|         docs_link = 'https://beta.esphomelib.com/esphomeyaml/' if 'b' in version else \ | ||||
|             'https://esphomelib.com/esphomeyaml/' | ||||
|  | ||||
|         self.render("templates/login.html", version=version, docs_link=docs_link, error=error) | ||||
|         self.render("templates/login.html", version=version, docs_link=docs_link, error=error, | ||||
|                     get_static_file_url=get_static_file_url) | ||||
|  | ||||
|     def post_hassio_login(self): | ||||
|         import requests | ||||
| @@ -451,6 +453,21 @@ class LoginHandler(BaseHandler): | ||||
|         self.redirect("/") | ||||
|  | ||||
|  | ||||
| _STATIC_FILE_HASHES = {} | ||||
|  | ||||
|  | ||||
| def get_static_file_url(name): | ||||
|     static_path = os.path.join(os.path.dirname(__file__), 'static') | ||||
|     if name in _STATIC_FILE_HASHES: | ||||
|         hash_ = _STATIC_FILE_HASHES[name] | ||||
|     else: | ||||
|         path = os.path.join(static_path, name) | ||||
|         with open(path, 'rb') as f_handle: | ||||
|             hash_ = hash(f_handle.read()) | ||||
|         _STATIC_FILE_HASHES[name] = hash_ | ||||
|     return u'/static/{}?hash={}'.format(name, hash_) | ||||
|  | ||||
|  | ||||
| def make_app(debug=False): | ||||
|     def log_function(handler): | ||||
|         if handler.get_status() < 400: | ||||
| @@ -493,6 +510,10 @@ def make_app(debug=False): | ||||
|         (r"/wizard.html", WizardRequestHandler), | ||||
|         (r'/static/(.*)', StaticFileHandler, {'path': static_path}), | ||||
|     ], debug=debug, cookie_secret=COOKIE_SECRET, log_function=log_function) | ||||
|  | ||||
|     if debug: | ||||
|         _STATIC_FILE_HASHES.clear() | ||||
|  | ||||
|     return app | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -4,17 +4,17 @@ | ||||
|   <meta charset="UTF-8"> | ||||
|   <title>ESPHome Dashboard</title> | ||||
|   <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> | ||||
|   <link rel="stylesheet" href="/static/materialize.min.css?v=1"> | ||||
|   <link rel="stylesheet" href="/static/materialize-stepper.min.css?v=1"> | ||||
|   <link rel="stylesheet" href="/static/esphomeyaml.css?v=1"> | ||||
|   <link rel="shortcut icon" href="/static/favicon.ico?v=1"> | ||||
|   <link rel="stylesheet" href="{{ get_static_file_url('materialize.min.css') }}"> | ||||
|   <link rel="stylesheet" href="{{ get_static_file_url('materialize-stepper.min.css') }}"> | ||||
|   <link rel="stylesheet" href="{{ get_static_file_url('esphomeyaml.css') }}"> | ||||
|   <link rel="shortcut icon" href="{{ get_static_file_url('favicon.ico') }}"> | ||||
|  | ||||
|   <script src="/static/jquery.min.js?v=1"></script> | ||||
|   <script src="/static/jquery-ui.min.js?v=1"></script> | ||||
|   <script src="/static/materialize.min.js?v=1"></script> | ||||
|   <script src="/static/jquery.validate.min.js?v=1"></script> | ||||
|   <script src="{{ get_static_file_url('jquery.min.js') }}"></script> | ||||
|   <script src="{{ get_static_file_url('jquery-ui.min.js') }}"></script> | ||||
|   <script src="{{ get_static_file_url('materialize.min.js') }}"></script> | ||||
|   <script src="{{ get_static_file_url('jquery.validate.min.js') }}"></script> | ||||
|  | ||||
|   <script src="/static/materialize-stepper.min.js?v=1"></script> | ||||
|   <script src="{{ get_static_file_url('materialize-stepper.min.js') }}"></script> | ||||
|   <meta name="viewport" content="width=device-width, initial-scale=1.0"/> | ||||
| </head> | ||||
| <body> | ||||
| @@ -469,8 +469,8 @@ | ||||
|   </div> | ||||
| </footer> | ||||
|  | ||||
| <script src="/static/ace.js?v=1" type="text/javascript" charset="utf-8"></script> | ||||
| <script src="/static/esphomeyaml.js?v=1" type="text/javascript"></script> | ||||
| <script src="{{ get_static_file_url('ace.js') }}" type="text/javascript" charset="utf-8"></script> | ||||
| <script src="{{ get_static_file_url('esphomeyaml.js') }}" type="text/javascript"></script> | ||||
|  | ||||
| {% if len(entries) == 0 %} | ||||
| <script> | ||||
|   | ||||
| @@ -4,11 +4,11 @@ | ||||
|   <meta charset="UTF-8"> | ||||
|   <title>esphomeyaml Dashboard</title> | ||||
|   <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> | ||||
|   <link rel="stylesheet" href="/static/materialize.min.css?v=1"> | ||||
|   <link rel="stylesheet" href="/static/esphomeyaml.css?v=1"> | ||||
|   <link rel="shortcut icon" href="/static/favicon.ico?v=1"> | ||||
|   <link rel="stylesheet" href="{{ get_static_file_url('materialize.min.css') }}"> | ||||
|   <link rel="stylesheet" href="{{ get_static_file_url('esphomeyaml.css') }}"> | ||||
|   <link rel="shortcut icon" href="{{ get_static_file_url('favicon.ico') }}"> | ||||
|  | ||||
|   <script src="/static/materialize.min.js?v=1"></script> | ||||
|   <script src="{{ get_static_file_url('materialize.min.js') }}"></script> | ||||
|  | ||||
|   <meta name="viewport" content="width=device-width, initial-scale=1.0"/> | ||||
| </head> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user