From d09d0f727ba549958de9d267a7d584d0690f3917 Mon Sep 17 00:00:00 2001 From: Guillaume Pellerin Date: Fri, 4 Apr 2025 12:10:22 +0200 Subject: [PATCH] add Conference.stop() --- teleforma/models/core.py | 21 +++++++++++++++++++++ teleforma/views/core.py | 16 +--------------- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/teleforma/models/core.py b/teleforma/models/core.py index 5d4ad582..79a86bef 100644 --- a/teleforma/models/core.py +++ b/teleforma/models/core.py @@ -57,6 +57,8 @@ import jqchat.models from django.core.paginator import InvalidPage, EmptyPage from django.template.defaultfilters import slugify from sorl.thumbnail import default as sorl_default +from jsonrpc.proxy import ServiceProxy + app_label = 'teleforma' @@ -397,6 +399,25 @@ class Conference(Model): self.room, c = Room.objects.get_or_create(name=data['room'], organization=organization) + + def stop(self): + self.date_end = datetime.datetime.now() + self.save() + for stream in self.livestream.all(): + stream.delete() + for station in self.station.all(): + station.started = False + station.save() + station.stop() + if 'telecaster' in settings.INSTALLED_APPS: + try: + url = 'https://' + self.department.domain + '/json/' + s = ServiceProxy(url) + s.teleforma.stop_conference(self.public_id) + except: + pass + + class Meta(MetaCore): db_table = app_label + '_' + 'conference' verbose_name = _('conference') diff --git a/teleforma/views/core.py b/teleforma/views/core.py index 6c2be478..55f08831 100644 --- a/teleforma/views/core.py +++ b/teleforma/views/core.py @@ -525,21 +525,7 @@ class ConferenceView(CourseAccessMixin, DetailView): @jsonrpc_method('teleforma.stop_conference') def stop(request, public_id): conference = Conference.objects.get(public_id=public_id) - conference.date_end = datetime.datetime.now() - conference.save() - for stream in conference.livestream.all(): - stream.delete() - for station in conference.station.all(): - station.started = False - station.save() - station.stop() - if 'telecaster' in settings.INSTALLED_APPS: - try: - url = 'https://' + conference.department.domain + '/json/' - s = ServiceProxy(url) - s.teleforma.stop_conference(conference.public_id) - except: - pass + conference.stop() @method_decorator(login_required) def dispatch(self, *args, **kwargs): -- 2.39.5