40 title =
"Get applet by id"
54 self.
disp.log_debug(f
"Token = {token}", title)
55 user_id: Union[str, Response] = self.
runtime_data_initialised.boilerplate_non_http_initialised.get_user_id_from_token(
59 if isinstance(user_id, Response):
64 [f
"id='{applet_id}'", f
"user_id='{user_id}'"]
66 if not applet_data
or isinstance(applet_data, int):
69 message=
"Your applet was not found.",
76 content_type=CONST.CONTENT_TYPE,
79 applet_data[0][
"trigger"] = json.loads(applet_data[0][
"trigger"])
80 applet_data[0][
"consequences"] = json.loads(applet_data[0][
"consequences"])
81 self.
disp.log_debug(f
"Applet found: {applet_data}", title)
84 message=applet_data[0],
90 content_type=CONST.CONTENT_TYPE,
98 title =
"Get my applets"
112 self.
disp.log_debug(f
"Token = {token}", title)
117 if isinstance(user_id, Response):
122 f
"user_id='{user_id}'"
124 if not applets_data
or isinstance(applets_data, int):
127 message=
"Your applets were not found.",
132 return HCI.not_found(
134 content_type=CONST.CONTENT_TYPE,
137 for _, applet
in enumerate(applets_data):
138 applet[
"trigger"] = json.loads(applet[
"trigger"])
139 applet[
"consequences"] = json.loads(applet[
"consequences"])
142 message=applets_data,
148 content_type=CONST.CONTENT_TYPE,
154 Get my applets by tags
156 title =
"Get my applets by tags"
170 self.
disp.log_debug(f
"Token = {token}", title)
175 if isinstance(user_id, Response):
177 if not tags
or tags ==
"":
182 tags_list = tags.split(
"+")
186 f
"user_id='{user_id}'"
188 if not applets_data
or isinstance(applets_data, int):
191 message=
"Applets not found.",
196 return HCI.not_found(
198 content_type=CONST.CONTENT_TYPE,
201 self.
disp.log_debug(f
"Applet found: {applets_data}", title)
202 filtered_applets: list[dict] = []
203 for _, applet
in enumerate(applets_data):
204 for _, element
in enumerate(tags_list):
205 if element
in applet[
"tags"]:
206 filtered_applets.append(applet)
207 self.
disp.log_debug(f
"Applet found with tags: {filtered_applets}", title)
208 for _, applet
in enumerate(filtered_applets):
209 applet[
"trigger"] = json.loads(applet[
"trigger"])
210 applet[
"consequences"] = json.loads(applet[
"consequences"])
213 message=filtered_applets,
219 content_type=CONST.CONTENT_TYPE,
229 title =
"Create applet"
245 self.
disp.log_debug(f
"Token = {token}", title)
249 if not request_body
or not all(key
in request_body
for key
in (
"name",
"trigger",
"consequences",
"tags",
"description",
"colour")):
251 if request_body[
"name"] ==
"" or request_body[
"description"] ==
"" or request_body[
"colour"] ==
"" or len(request_body[
"trigger"]) == 0
or len(request_body[
"consequences"]) == 0:
253 self.
disp.log_debug(f
"Request body: {request_body}", title)
256 user_id: Union[str, Response] = self.
runtime_data_initialised.boilerplate_non_http_initialised.get_user_id_from_token(
260 if isinstance(user_id, Response):
265 table_name=CONST.TAB_ACTIONS
267 if isinstance(columns, int):
274 if (isinstance(request_body[
"trigger"], str)
is False):
275 request_body[
"trigger"] = json.dumps(request_body[
"trigger"], ensure_ascii=
False)
276 if (isinstance(request_body[
"consequences"], str)
is False):
277 request_body[
"consequences"] = json.dumps(request_body[
"consequences"], ensure_ascii=
False)
279 self.
disp.log_debug(f
"Before inserting in database: {request_body}", title)
283 table=CONST.TAB_ACTIONS,
285 request_body[
"name"],
286 request_body[
"trigger"],
287 request_body[
"consequences"],
289 request_body[
"tags"],
291 request_body[
"description"],
292 request_body[
"colour"]
296 self.
disp.log_debug(f
"Insert status: {status}", title)
297 if status == self.
error:
304 message=
"The applet was created successfully.",
310 content_type=CONST.CONTENT_TYPE,
318 title =
"Put applet by id"
334 self.
disp.log_debug(f
"Token = {token}", title)
338 self.
disp.log_debug(f
"Request body: {request_body}", title)
339 if not request_body
or not all(key
in request_body
for key
in (
"name",
"trigger",
"consequences",
"tags",
"description",
"colour")):
341 if request_body[
"name"] ==
"" or request_body[
"description"] ==
"" or request_body[
"colour"] ==
"" or len(request_body[
"trigger"]) == 0
or len(request_body[
"consequences"]) == 0:
345 user_id: Union[str, Response] = self.
runtime_data_initialised.boilerplate_non_http_initialised.get_user_id_from_token(
349 if isinstance(user_id, Response):
356 [f
"id='{applet_id}'", f
"user_id='{user_id}'"]
358 if not applet_data
or isinstance(applet_data, int):
361 message=
"Your applet was not found.",
366 return HCI.not_found(
368 content_type=CONST.CONTENT_TYPE,
374 table_name=CONST.TAB_ACTIONS
376 if isinstance(columns, int):
383 if (isinstance(request_body[
"trigger"], str)
is False):
384 request_body[
"trigger"] = json.dumps(request_body[
"trigger"], ensure_ascii=
False)
385 if (isinstance(request_body[
"consequences"], str)
is False):
386 request_body[
"consequences"] = json.dumps(request_body[
"consequences"], ensure_ascii=
False)
390 table=CONST.TAB_ACTIONS,
392 request_body[
"name"],
393 request_body[
"trigger"],
394 request_body[
"consequences"],
396 request_body[
"tags"],
398 request_body[
"description"],
399 request_body[
"colour"]
402 where=f
"id='{applet_id}'"
404 if status == self.
error:
411 message=
"The applet was updated successfully.",
417 content_type=CONST.CONTENT_TYPE,
423 Modify some applet by id
425 title =
"Modify some applet by id"
441 self.
disp.log_debug(f
"Token = {token}", title)
445 self.
disp.log_debug(f
"Request body: {request_body}", title)
448 user_id: Union[str, Response] = self.
runtime_data_initialised.boilerplate_non_http_initialised.get_user_id_from_token(
452 if isinstance(user_id, Response):
459 [f
"id='{applet_id}'", f
"user_id='{user_id}'"]
461 if not applet_data
or isinstance(applet_data, int):
464 message=
"Your applet was not found.",
469 return HCI.not_found(
471 content_type=CONST.CONTENT_TYPE,
477 table_name=CONST.TAB_ACTIONS
479 if isinstance(columns, int):
487 if "name" in request_body:
488 if request_body[
"name"] ==
"":
498 if "trigger" in request_body:
499 if len(request_body[
"trigger"]) == 0:
501 if (isinstance(request_body[
"trigger"], str)
is False):
502 request_body[
"trigger"] = json.dumps(request_body[
"trigger"], ensure_ascii=
False)
511 if "consequences" in request_body:
512 if len(request_body[
"consequences"]) == 0:
514 if (isinstance(request_body[
"consequences"], str)
is False):
515 request_body[
"consequences"] = json.dumps(request_body[
"consequences"], ensure_ascii=
False)
524 if "tags" in request_body:
533 if "colour" in request_body:
534 if request_body[
"colour"] ==
"":
544 if "description" in request_body:
545 if request_body[
"description"] ==
"":
557 message=
"The applet was updated successfully.",
563 content_type=CONST.CONTENT_TYPE,
567 def _search_services(self, type_to_search: str, title: str, token: str) -> Union[List[Dict[str, Any]], Response]:
569 Search for the services depending on if the type is trigger or action
573 CONST.TAB_ACTION_TEMPLATE,
575 f
"type='{type_to_search}'"
577 if not templates_data
or isinstance(templates_data, int):
580 message=
"The actions templates were not found.",
585 return HCI.not_found(
587 content_type=CONST.CONTENT_TYPE,
592 already_retrieved_services: List[int] = []
593 services: List[Dict[str, Any]] = []
594 for _, template
in enumerate(templates_data):
595 if template[
"service_id"]
in already_retrieved_services:
597 key: str =
"service_id"
601 f
"id='{template[key]}'"
603 if not service
or isinstance(service, int):
606 "id": service[0][
"id"],
607 "name": service[0][
"name"],
608 "colour": service[0][
"colour"],
609 "description": service[0][
"description"]
611 already_retrieved_services.append(service[0][
"id"])
616 Get triggers services
618 title =
"Get triggers services"
634 self.
disp.log_debug(f
"Token = {token}", title)
637 services: Union[List[Dict[str, Any]], Response] = self.
_search_services(
"trigger", title, token)
638 if (isinstance(services, Response)):
649 content_type=CONST.CONTENT_TYPE,
655 Get reactions services
657 title =
"Get reactions services"
673 self.
disp.log_debug(f
"Token = {token}", title)
676 services: Union[List[Dict[str, Any]], Response] = self.
_search_services(
"action", title, token)
677 if (isinstance(services, Response)):
688 content_type=CONST.CONTENT_TYPE,
694 Get triggers by research
696 title =
"Get triggers by research"
712 self.
disp.log_debug(f
"Token = {token}", title)
716 CONST.TAB_ACTION_TEMPLATE,
720 if not templates_data
or isinstance(templates_data, int):
723 message=
"The templates were not found.",
728 return HCI.not_found(
730 content_type=CONST.CONTENT_TYPE,
734 for _, template
in enumerate(templates_data):
735 template[
"json"] = json.loads(template[
"json"])
738 message=templates_data,
744 content_type=CONST.CONTENT_TYPE,
750 Get triggers by research
752 title =
"Get triggers by research"
768 self.
disp.log_debug(f
"Token = {token}", title)
772 CONST.TAB_ACTION_TEMPLATE,
776 if not templates_data
or isinstance(templates_data, int):
779 message=
"The templates were not found.",
784 return HCI.not_found(
786 content_type=CONST.CONTENT_TYPE,
790 for _, template
in enumerate(templates_data):
791 template[
"json"] = json.loads(template[
"json"])
794 message=templates_data,
800 content_type=CONST.CONTENT_TYPE,
806 Get triggers by service name
808 title =
"Get triggers by service name"
824 self.
disp.log_debug(f
"Token = {token}", title)
828 CONST.TAB_ACTION_TEMPLATE,
830 [
"type='trigger'", f
"service_id='{service_id}'"]
832 if not triggers_data
or isinstance(triggers_data, int):
835 message=
"The triggers were not found.",
840 return HCI.not_found(
842 content_type=CONST.CONTENT_TYPE,
846 for _, trigger
in enumerate(triggers_data):
847 trigger[
"json"] = json.loads(trigger[
"json"])
850 message=triggers_data,
856 content_type=CONST.CONTENT_TYPE,
862 Get reactions by service name
864 title =
"Get reactions by service name"
880 self.
disp.log_debug(f
"Token = {token}", title)
884 CONST.TAB_ACTION_TEMPLATE,
886 [
"type='action'", f
"service_id='{service_id}'"]
888 if not reactions_data
or isinstance(reactions_data, int):
891 message=
"The reactions were not found.",
896 return HCI.not_found(
898 content_type=CONST.CONTENT_TYPE,
901 for _, reaction
in enumerate(reactions_data):
902 reaction[
"json"] = json.loads(reaction[
"json"])
905 message=reactions_data,
911 content_type=CONST.CONTENT_TYPE,
917 Get reactions by service name
919 title =
"Delete service by id"
935 self.
disp.log_debug(f
"Token = {token}", title)
938 user_id: Union[str, Response] = self.
runtime_data_initialised.boilerplate_non_http_initialised.get_user_id_from_token(
942 if isinstance(user_id, Response):
949 [f
"id='{applet_id}'", f
"user_id='{user_id}'"]
951 if not applet_data
or isinstance(applet_data, int):
954 message=
"Your applet was not found or it's not your applet.",
959 return HCI.not_found(
961 content_type=CONST.CONTENT_TYPE,
964 self.
disp.log_debug(f
"Applet found: {applet_data}", title)
966 table=CONST.TAB_ACTIONS,
967 where=f
"id='{applet_id}'"
971 message=
"Your applet has been deleted successfully.",
977 content_type=CONST.CONTENT_TYPE,