From ba1514070dd80d08cc4ee8d52ee0dd9ff8c5be37 Mon Sep 17 00:00:00 2001
From: David Huss <dh@atoav.com>
Date: Wed, 30 Jun 2021 17:15:53 +0200
Subject: [PATCH] Add handling for counts on empty meetings

---
 bbbmeetings/__init__.py    |  2 +-
 bbbmeetings/bbbmeetings.py | 44 ++++++++++++++++++++++++++++++++++++++
 pyproject.toml             |  2 +-
 3 files changed, 46 insertions(+), 2 deletions(-)

diff --git a/bbbmeetings/__init__.py b/bbbmeetings/__init__.py
index 1e1206c..7f42bc3 100644
--- a/bbbmeetings/__init__.py
+++ b/bbbmeetings/__init__.py
@@ -1,4 +1,4 @@
-__version__ = '0.1.3'
+__version__ = '0.1.4'
 __all__ = ["bbbmeetings"]
 
 from .bbbmeetings import BBBServers, BBBServer, Meeting, Attendee
\ No newline at end of file
diff --git a/bbbmeetings/bbbmeetings.py b/bbbmeetings/bbbmeetings.py
index 25a460b..3a4e2ab 100644
--- a/bbbmeetings/bbbmeetings.py
+++ b/bbbmeetings/bbbmeetings.py
@@ -54,14 +54,20 @@ class BBBServers():
         """
         Returns the count of participants of a meeting
         """
+        if len(self.meetings) == 0:
+            return 0
         return sum([m.participantCount for m in self.meetings])
 
     @property
     def biggest_meeting(self) -> Optional['Meeting']:
+        if len(self.meetings) == 0:
+            return None
         return max(self.meetings, key=lambda m: m.people)
 
     @property
     def smallest_meeting(self) -> Optional['Meeting']:
+        if len(self.meetings) == 0:
+            return None
         return min(self.meetings, key=lambda m: m.people)
 
     @property
@@ -70,34 +76,50 @@ class BBBServers():
 
     @property
     def listeners(self) -> int:
+        if len(self.meetings) == 0:
+            return 0
         return sum([m.listenerCount for m in self.meetings])
 
     @property
     def connected_with_mic(self) -> int:
+        if len(self.meetings) == 0:
+            return 0
         return sum([m.voiceParticipantCount for m in self.meetings])
 
     @property
     def video_active(self) -> int:
+        if len(self.meetings) == 0:
+            return 0
         return sum([m.videoCount for m in self.meetings])
 
     @property
     def moderators(self) -> int:
+        if len(self.meetings) == 0:
+            return 0
         return sum([m.moderatorCount for m in self.meetings])
 
     @property
     def longest_duration(self) -> Optional['Meeting']:
+        if len(self.meetings) == 0:
+            return None
         return max(self.meetings, key=lambda m: m.duration)
 
     @property
     def most_listeners(self) -> Optional['Meeting']:
+        if len(self.meetings) == 0:
+            return None
         return max(self.meetings, key=lambda m: m.listeners)
 
     @property
     def most_video_active(self) -> Optional['Meeting']:
+        if len(self.meetings) == 0:
+            return None
         return max(self.meetings, key=lambda m: m.video_active)
 
     @property
     def most_moderators(self) -> Optional['Meeting']:
+        if len(self.meetings) == 0:
+            return None
         return max(self.meetings, key=lambda m: m.moderators)
 
     @property
@@ -154,46 +176,68 @@ class BBBServer():
 
     @property
     def biggest_meeting(self) -> Optional['Meeting']:
+        if len(self.meetings) == 0:
+            return None
         return max(self.meetings, key=lambda m: m.people)
 
     @property
     def smallest_meeting(self) -> Optional['Meeting']:
+        if len(self.meetings) == 0:
+            return None
         return min(self.meetings, key=lambda m: m.people)
 
     @property
     def n_meetings(self) -> int:
+        if len(self.meetings) == 0:
+            return 0
         return len(self.meetings)
 
     @property
     def listeners(self) -> int:
+        if len(self.meetings) == 0:
+            return 0
         return sum([m.listeners for m in self.meetings])
 
     @property
     def connected_with_mic(self) -> int:
+        if len(self.meetings) == 0:
+            return 0
         return sum([m.connected_with_mic for m in self.meetings])
 
     @property
     def video_active(self) -> int:
+        if len(self.meetings) == 0:
+            return 0
         return sum([m.cideo_active for m in self.meetings])
 
     @property
     def moderators(self) -> int:
+        if len(self.meetings) == 0:
+            return 0
         return sum([m.moderators for m in self.meetings])
 
     @property
     def longest_duration(self) -> Optional['Meeting']:
+        if len(self.meetings) == 0:
+            return None
         return max(self.meetings, key=lambda m: m.duration)
 
     @property
     def most_listeners(self) -> Optional['Meeting']:
+        if len(self.meetings) == 0:
+            return None
         return max(self.meetings, key=lambda m: m.listeners)
 
     @property
     def most_video_active(self) -> Optional['Meeting']:
+        if len(self.meetings) == 0:
+            return None
         return max(self.meetings, key=lambda m: m.video_active)
 
     @property
     def most_moderators(self) -> Optional['Meeting']:
+        if len(self.meetings) == 0:
+            return None
         return max(self.meetings, key=lambda m: m.moderators)
 
     @property
diff --git a/pyproject.toml b/pyproject.toml
index 367def6..9c71520 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
 [tool.poetry]
 name = "bbbmeetings"
-version = "0.1.3"
+version = "0.1.4"
 description = "A module for reading bbb meetings from bbb servers"
 authors = ["David Huss <david.huss@hfbk-hamburg.de>"]
 maintainers = ["David Huss <david.huss@hfbk-hamburg.de>"]
-- 
GitLab