From 122a11f26a4bb31a9e81bc8dcb840219d10e21e2 Mon Sep 17 00:00:00 2001
From: Dominik George <dominik.george@teckids.org>
Date: Mon, 12 Oct 2020 16:52:22 +0200
Subject: [PATCH] Lookup existing fields in annotations to catch non-optional
 attributes

---
 bigbluebutton/api/attendee.py | 2 +-
 bigbluebutton/api/meeting.py  | 5 +++--
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/bigbluebutton/api/attendee.py b/bigbluebutton/api/attendee.py
index 4f563ae..9b6c27f 100644
--- a/bigbluebutton/api/attendee.py
+++ b/bigbluebutton/api/attendee.py
@@ -189,7 +189,7 @@ class Attendee:
                     raise ValueError("createTime does not match actual meeting parameters")
             else:
                 snake_name = camel_to_snake(name)
-                if hasattr(cls, snake_name):
+                if snake_name in cls.__annotations__:
                     kwargs[snake_name] = to_field_type(cls, snake_name, value)
 
         return kwargs
diff --git a/bigbluebutton/api/meeting.py b/bigbluebutton/api/meeting.py
index bf5e034..0583e84 100644
--- a/bigbluebutton/api/meeting.py
+++ b/bigbluebutton/api/meeting.py
@@ -227,7 +227,8 @@ class Meeting:
                 kwargs["meeting_name"] = value
             else:
                 snake_name = camel_to_snake(name)
-                kwargs[snake_name] = to_field_type(cls, snake_name, value)
+                if snake_name in cls.__annotations__:
+                    kwargs[snake_name] = to_field_type(cls, snake_name, value)
 
         return kwargs
 
@@ -258,5 +259,5 @@ class Meeting:
             else:
                 snake_name = camel_to_snake(name)
 
-                if hasattr(self, snake_name):
+                if hasattr(se:
                     setattr(self, snake_name, to_field_type(self, snake_name, value))
-- 
GitLab