Mini Shell
from defence360agent.rpc_tools import lookup
from defence360agent.utils import Scope
from defence360agent.contracts.config import ControlPanelConfig
from defence360agent.myimunify.advice.advice_manager import (
get_advice_notifications,
make_advice,
)
from defence360agent.myimunify.advice.hosting_smart_advice_api import (
sync_advices,
)
class SmartAdviceEndpoints(lookup.RootEndpoints):
SCOPE = Scope.IM360
@lookup.bind("smart-advice", "notifications")
async def smart_advice_notifications(self):
if not ControlPanelConfig.SMART_ADVICE_ALLOWED:
return []
return await get_advice_notifications()
@lookup.bind("smart-advice", "get-options")
async def smart_advice_get_options(self):
return {
"mu_plugin_installation": ControlPanelConfig.SMART_ADVICE_ALLOWED,
"advice_email_notification": ControlPanelConfig.ADVICE_EMAIL_NOTIFICATION,
}
@lookup.bind("smart-advice", "sync")
async def sync_smart_advice(self):
if not ControlPanelConfig.SMART_ADVICE_ALLOWED:
return []
advices = await make_advice()
ok = await sync_advices(advices)
if ok:
return []
else:
raise Exception("Failed to sync advices")