]> git.parisson.com Git - teleforma.git/commitdiff
merge
authorYoan Le Clanche <yoanl@pilotsystems.net>
Thu, 7 May 2020 12:18:17 +0000 (14:18 +0200)
committerYoan Le Clanche <yoanl@pilotsystems.net>
Thu, 7 May 2020 12:18:17 +0000 (14:18 +0200)
1  2 
teleforma/models/core.py

index be420823c8dc9b59358e0e34e5871fca2512b410,4c5317492128f53c2b0c8ab3d982fe592cb17bcf..f35bfd80fe25c84f2b3bb948fe629601504d5841
mode 100644,100755..100755
@@@ -561,21 -546,89 +546,107 @@@ class WebclassMixin(Model)
              self.webclass_id = meeting_id
              self.webclass_password = password
  
++<<<<<<< HEAD
 +    @property
 +    def participant_slot_available(self):
 +        """
 +        is there any slot available for another participants
 +        """
 +        if self.webclass and self.webclass_max_participants:
 +            auditors = self.auditor.count()
 +            return auditors < self.webclass_max_participants
 +        return True
 +    
 +    def join_webclass(self):
 +        """ """
 +
 +    def get_webclass_info(self):
 +        """ """
++=======
+     def create_webclass_room(self):
+         """ create a BBB room and generate meeting id and moderator password """
+         if self.webclass_id and self.webclass:
+             try:
+                 # check if meeting already exists
+                 self.get_webclass_info()
+             except BBBException:
+                 params = {
+                     'moderatorPW':self.webclass_password,
+                     'attendeePW':'pwattendee',
+                     # 'maxParticipants':self.webclass_max_participants + 1,
+                     'welcome':"Bienvenue sur la confĂ©rence \"%s\"." % (str(self.title),),
+                     'record':True,
+                     # 'autoStartRecording':True,
+                     'muteOnStart':True,
+                     'allowModsToUnmuteUsers':True,
+                     # 'guestPolicy':'ALWAYS_ACCEPT'
+                 }
+              
+                 try:
+                     result = bbb.create_meeting(self.webclass_id, params=params)
+                     register_web_hook()
+                 except BBBException as e:
+                     print(e)
+                     raise
+             
+     
+     def get_join_webclass_url(self, user):
+         """ 
+         Get url to BBB meeting.
+         If user are professor or staff, provide the url with the moderator password
+         """
+         self.create_webclass_room()
+         username = user.get_full_name()
+         is_professor = len(user.professor.all()) >= 1
+         is_staff = user.is_staff or user.is_superuser
+         password = 'pwattendee'
+         if is_professor or is_staff:
+             password = self.webclass_password
+         params = {'userID': user.username}
+         print(bbb.get_join_meeting_url(username, self.webclass_id, password, params))
+         return bbb.get_join_meeting_url(username, self.webclass_id, password, params)
+     def is_webclass_running(self):
+         """ Is webclass currently running ? """
+         # print(self.get_webclass_info())
+         return bbb.is_meeting_running(self.webclass_id).get_field('running').decode() == 'true' or False
+     def get_webclass_info(self):
+         """ """
+         print(self.webclass_id)
+         print(bbb.get_meeting_info(self.webclass_id))
+         return bbb.get_meeting_info(self.webclass_id)
+     def get_record(self):
+         """ get longest published record for the current conference """
+         all_records = []
+         for recording in bbb.get_recordings(self.webclass_id).get_field('recordings')['recording']:
+             recording.prettyprint()
+             url = recording.get('playback', {}).get('format', {}).get('url')
+             if url:
+                 url = url.decode()
+             data = {
+                 'start': int(recording['startTime'].decode()),
+                 'end': int(recording['endTime'].decode()),
+                 'url': url,
+                 'state': recording['state'].decode(),
+             }
+             data['duration'] = data['end'] - data['start']
+             all_records.append(data)
+         print('all_records')
+         print(all_records)
+         if not all_records:
+             return None
+         all_records = sorted(all_records, key=lambda record:-record['duration'])
+         longest_record = all_records[0]
+         if not longest_record['url'] or longest_record['state'] != 'published':
+             return None
+         return longest_record
++>>>>>>> fdfea86b7089c1634487e00b3ca8465c8f9ff762
  
  
  class Conference(Displayable, WebclassMixin):