Source code for q2_sdk.hq.db.form_to_group
import typing
from argparse import _SubParsersAction
from functools import partial
from q2_sdk.hq.db.user_property_data import UserPropertyData
from q2_sdk.core.dynamic_imports import (
api_ExecuteStoredProcedure as ExecuteStoredProcedure,
)
from .db_object import DbObject
PROPERTY_NAME = "Customer/CanSubmitForms"
[docs]
class FormToGroup(DbObject):
[docs]
def add_arguments(self, parser: _SubParsersAction):
subparser = parser.add_parser("get_form_to_group")
subparser.set_defaults(parser="get_form_to_group")
subparser.set_defaults(func=partial(self.get, serialize_for_cli=True))
subparser.add_argument(
"-g", "--group_id", help="Limit results to a single group"
)
subparser.add_argument("-f", "--form_id", help="Limit results to a single form")
subparser = parser.add_parser("add_form_to_group")
subparser.set_defaults(parser="add_form_to_group")
subparser.set_defaults(func=partial(self.add))
subparser.add_argument("form_id", help="Q2_Forms.FormID")
subparser.add_argument("group_id", help="Q2_Groups.GroupID")
subparser = parser.add_parser("remove_form_from_group")
subparser.set_defaults(parser="remove_form_from_group")
subparser.set_defaults(func=partial(self.delete))
subparser.add_argument("form_id", help="Q2_Forms.FormID")
subparser.add_argument("group_id", help="Q2_Groups.GroupID")
[docs]
async def get(
self,
serialize_for_cli=False,
form_id: typing.Optional[int] = None,
group_id: typing.Optional[int] = None,
):
response = await self.call_hq("sdk_GetFormToGroup")
if form_id:
form_id = int(form_id)
response = [x for x in response if x.find("FormID") == form_id]
if group_id:
group_id = int(group_id)
response = [x for x in response if x.find("GroupID") == group_id]
if serialize_for_cli:
columns = ["FormID", "GroupID", "ShortName", "GroupDesc"]
response = self.serialize_for_cli(response, columns)
return response
[docs]
async def add(self, form_id: int, group_id: int):
await self._enable_upd_for_group(group_id)
return await self.call_hq(
"sdk_AddFormToGroup",
ExecuteStoredProcedure.SqlParameters([
ExecuteStoredProcedure.SqlParam(
ExecuteStoredProcedure.DataType.Int, "form_id", form_id
),
ExecuteStoredProcedure.SqlParam(
ExecuteStoredProcedure.DataType.Int, "group_id", group_id
),
]),
)
[docs]
async def add_central(self, form_id: int, group_id: int):
return await self.call_hq(
"sdk_AddCentralFormToGroup",
ExecuteStoredProcedure.SqlParameters([
ExecuteStoredProcedure.SqlParam(
ExecuteStoredProcedure.DataType.Int, "form_id", form_id
),
ExecuteStoredProcedure.SqlParam(
ExecuteStoredProcedure.DataType.Int, "group_id", group_id
),
]),
)
[docs]
async def delete(self, form_id: int, group_id: int):
return await self.call_hq(
"sdk_RemoveFormFromGroup",
ExecuteStoredProcedure.SqlParameters([
ExecuteStoredProcedure.SqlParam(
ExecuteStoredProcedure.DataType.Int, "form_id", form_id
),
ExecuteStoredProcedure.SqlParam(
ExecuteStoredProcedure.DataType.Int, "group_id", group_id
),
]),
)
[docs]
async def delete_central(self, form_id: int, group_id: int):
return await self.call_hq(
"sdk_RemoveCentralFormFromGroup",
ExecuteStoredProcedure.SqlParameters([
ExecuteStoredProcedure.SqlParam(
ExecuteStoredProcedure.DataType.Int, "form_id", form_id
),
ExecuteStoredProcedure.SqlParam(
ExecuteStoredProcedure.DataType.Int, "group_id", group_id
),
]),
)
async def _enable_upd_for_group(self, group_id):
user_property_data_obj = UserPropertyData(
self.logger, hq_credentials=self.hq_credentials
)
existing = await user_property_data_obj.get(
PROPERTY_NAME, group_id=group_id, strict=True
)
create = True
does_exist = [
x
for x in existing
if x.findtext("GroupID") and x.GroupID.text == str(group_id)
]
if does_exist:
create = False
if create:
await user_property_data_obj.create(PROPERTY_NAME, True, group_id=group_id)
else:
if does_exist[0].PropertyValue.text.lower() != "true":
await user_property_data_obj.update(
PROPERTY_NAME, True, group_id=group_id
)