import typing from apps.authentication.models import Organization, OrganizationType def get_users_of_organization(org: Organization) -> typing.Any: """ get users of an organizations """ user_relations = org.user_organization.all() users_list = [{ 'name': f"{rel.user.first_name} {rel.user.last_name}", 'national_code': rel.user.national_code, 'mobile': rel.user.mobile, 'phone': rel.user.phone, 'address': rel.user.address } for rel in user_relations] return users_list def get_all_org_child(org: Organization = None) -> typing.Any: """ get all child of an organization """ descendants = [] children = org.parents.all() for child in children: descendants.append(child) descendants.extend(get_all_org_child(child)) return descendants def get_all_org_type_child(org_type: OrganizationType = None) -> typing.Any: """ get all child of an organization """ descendants = [] children = org_type.children.all() for child in children: descendants.append(child) descendants.extend(get_all_org_type_child(child)) return descendants def get_bank_info(org, device=None): if device: # get organization bank account that set to a device bank_account_device_links = org.bank_account_device_links.filter(device=device) bank = bank_account_device_links.first().bank_account \ if bank_account_device_links.exists() else org.bank_information.first() else: bank = org.bank_information.first() if not bank: return {} return { "credit_card": bank.card, "sheba": f"IR{bank.sheba}", "account": bank.account, }