Files
Hasscall/app/views/dynamic.py
T

48 lines
1.8 KiB
Python

from flask import render_template
from app import webapp
from app.homeassistant import HomeAssistant
from app.views.auth import login_required
@webapp.route('/dynamic/services/<domain>')
@login_required
def dynamic_services(domain:str):
services = HomeAssistant.getInstance().get_services(domain)
return render_template("dynamic/services.html", services=services)
@webapp.route('/dynamic/service/fields/<domain>/<service>')
@login_required
def dynamic_service_fields(domain:str, service:str):
service = HomeAssistant.getInstance().get_service(domain, service)
class Service():
def __init__(self, key, field):
self.name = key if field.name is None else (field.name + " (" + key + ")")
self.description = field.description
self.example = field.example
self.required = False if field.required is None else field.required
self.selector = ", ".join(field.selector)
self.fade = (key in ['target', 'entity_id'])
fields = []
field_ids = []
for key in service.fields:
field = service.fields[key]
fields.append(Service(key, field))
if key not in ['entity_id', 'target']:
field_ids.append(key + ":")
show_entity = (('entity_id' in service.fields or 'target' in service.fields) or len(fields) == 0 or HomeAssistant.getInstance().domain_has_entities(domain))
show_data = (len(fields) > 0)
return render_template("dynamic/service_fields.html", show_entity=show_entity, show_data=show_data, fields=fields, field_ids="\n".join(field_ids))
@webapp.route('/dynamic/entities/<domain>')
@login_required
def dynamic_entities(domain:str):
entities = HomeAssistant.getInstance().get_entities(domain)
return render_template("dynamic/entities.html", entities=entities)