ordering = ['-date_modified']
+class Source(Model):
+ "Streaming source"
+
+ public_id = CharField(_('public_id'), max_length=255)
+ ip = GenericIPAddressField(_('IP'))
+ room = ForeignKey(Room, related_name='source', verbose_name=_('room')
+ blank=True, null=True, on_delete=models.SET_NULL)
+ monitors = ManyToManyField(Monitor, related_name="source",
+ verbose_name=_('monitors'), blank=True, null=True)
+ class Meta:
+ db_table = app_label + '_' + 'source'
+ ordering = ['public_id']
+
+ def __unicode__(self):
+ return '-'.join([self.public_id, self.room, self.ip])
+
+
+class Monitor(Model):
+ "Streaming source monitor"
+
+ mime_types = [('audio/ogg', 'audio/ogg'), ('audio/mp3', 'audio/mp3'),
+ ('video/webm', 'video/webm'), ('video/mp4', 'video/mp4')]
+
+ port = IntegerField(_('port'))
+ mount_point = CharField(_('public_id'), max_length=255)
+ mime_type = CharField(_('type'), choices=self.mime_types, max_length=255)
+
+ @property
+ def slug(self):
+ return ':' + str(self.port) + '/' + self.mount_point
+
+ class Meta:
+ db_table = app_label + '_' + 'monitor'
+
+ def __unicode__(self):
+ return self.slug + '(' + self.type + ')'
+
+
class NamePaginator(object):
"""Pagination for string-based objects"""
def dispatch(self, *args, **kwargs):
return super(HelpView, self).dispatch(*args, **kwargs)
+
+class SourcesStatusView(ListView):
+
+ model = Source
+ template_name='teleforma/source_monitors.html'
+
+ @jsonrpc_method('telecaster.get_source_status')
+ def get_source_status(request, public_id):
+ source = Source.objects.get(public_id=public_id)
+ url = 'http://' + source.ip + '/json/'
+ service = ServiceProxy(url)
+ status = s.teleforma.get_server_status()
+ return status
+
+ @jsonrpc_method('telecaster.get_source_station_status')
+ def get_source_station_status(request, public_id):
+ source = Source.objects.get(public_id=public_id)
+ url = 'http://' + source.ip + '/json/'
+ service = ServiceProxy(url)
+ station = s.teleforma.get_station_status()
+ return station
+
+ @jsonrpc_method('telecaster.source_station_start')
+ def start(request, station_dict):
+ pass
+
+ @jsonrpc_method('telecaster.source_station_stop')
+ def stop(request):
+ pass
+