48 lines
1.8 KiB
Python
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)
|