Skip to content

Commit

Permalink
Merge pull request #46 from Lightmatter/release/v0.0.7
Browse files Browse the repository at this point in the history
Release/v0.0.7
  • Loading branch information
samamorgan authored Sep 27, 2022
2 parents 2026622 + 34dd435 commit 5e1d697
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 13 deletions.
12 changes: 12 additions & 0 deletions test/test_client.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import inspect

from welkin.models import __all__ as all_models


def test_build_resources(client):
for class_name in all_models:
assert hasattr(client, class_name)

attr = getattr(client, class_name)
assert inspect.isclass(attr)
assert attr._client == client
43 changes: 32 additions & 11 deletions welkin/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@
from requests.compat import urljoin
from requests.packages.urllib3.util.retry import Retry # type: ignore

from welkin import __version__
from welkin import __version__, models
from welkin.authentication import WelkinAuth
from welkin.exceptions import WelkinHTTPError
from welkin.models import *
from welkin.models.base import Collection, Resource
from welkin.util import clean_request_params, clean_request_payload

logger = logging.getLogger(__name__)
Expand Down Expand Up @@ -122,18 +122,39 @@ def __init__(

def __build_resources(self) -> None:
"""Add each resource with a reference to this instance."""
for k, v in globals().items():
self.Assessment = models.Assessment
self.AssessmentRecord = models.AssessmentRecord
self.AssessmentRecordAnswers = models.AssessmentRecordAnswers
self.AssessmentRecords = models.AssessmentRecords
self.Assessments = models.Assessments
self.CalendarEvent = models.CalendarEvent
self.CalendarEvents = models.CalendarEvents
self.Schedules = models.Schedules
self.CarePlan = models.CarePlan
self.CarePlanOverview = models.CarePlanOverview
self.CDT = models.CDT
self.CDTs = models.CDTs
self.Chat = models.Chat
self.Chats = models.Chats
self.SearchChats = models.SearchChats
self.Disposition = models.Disposition
self.Encounter = models.Encounter
self.Encounters = models.Encounters
self.Formations = models.Formations
self.Patient = models.Patient
self.Patients = models.Patients
self.User = models.User
self.Users = models.Users

for k, v in vars(self).items():
try:
for base in v.__bases__:
if base.__name__ not in ["Collection", "Resource"]:
continue

v._client = self
setattr(self, k, v)

except AttributeError:
issubclass(v, (Collection, Resource))
except TypeError:
# Failed because `issubclass` expects a class.
continue

getattr(self, k)._client = self

def prepare_request(self, request):
if request.json:
request.json = clean_request_payload(request.json)
Expand Down
2 changes: 0 additions & 2 deletions welkin/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@
from welkin.models.patient import Patient, Patients
from welkin.models.user import User, Users

# NOTE: If a class isn't imported here and added to __all__, it will not be callable
# from a `Client` instance. Also, for legibility, keep this list alphabetical.
__all__ = [
"Assessment",
"AssessmentRecord",
Expand Down

0 comments on commit 5e1d697

Please sign in to comment.