--- /dev/null
+{% extends "../base.html" %}
+
+{% block title %}{{ _("Hangup Channel") }}{% end block %}
+
+{% block body %}
+ <form action="" method="POST">
+ {% raw xsrf_form_html() %}
+
+ <div class="row">
+ <div class="col-md-4 col-md-offset-4">
+ <div class="well well-sm ac">
+ <h4>{{ _("Hangup Channel") }}</h4>
+
+ <p>
+ {{ _("You are about to hangup this channel") }}
+ </p>
+
+ <hr>
+
+ <p>
+ {% module TalkContact(channel.caller, name=channel.caller_name) %}
+ </p>
+
+ <p>
+ <i class="glyphicon glyphicon-arrow-right text-success"></i>
+ </p>
+
+ <p>
+ {% module TalkContact(channel.callee, application=channel.application) %}
+ </p>
+
+ <br>
+
+ <input class="btn btn-danger btn-block" type="submit" value="{{ _("Hangup Channel") }}">
+ </div>
+ </div>
+ </div>
+ </form>
+{% end block %}
</td>
<td class="ar">{{ format_time(c.duration) }}</td>
+
+ <td class="ar">
+ <a class="btn btn-xs btn-danger" title="{{ _("Hangup") }}" href="/hangup/{{ c.id }}">
+ <i class="fa fa-times"></i>
+ </a>
+ </td>
</tr>
{% end %}
</tbody>
(r"/", TalkIndexHandler),
(r"/conferences", TalkConferencesHandler),
(r"/diagnosis", TalkDiagnosisHandler),
+ (r"/hangup/(.*)", TalkHangupChannelHandler),
(r"/phonebook/(\w+)", TalkPhonebookAccountHandler),
(r"/phonebook", TalkPhonebookHandler),
(r"/profile", TalkProfileHandler),
return sorted(channels)
+ def get_channel(self, channel_id, account=None):
+ channels = self.get_channels(account=account)
+
+ for channel in channels:
+ if channel.id == channel_id:
+ return channel
+
def get_ongoing_calls(self, account=None, sip_id=None):
if account and sip_id is None:
sip_id = account.sip_id
return self.render("talk/diagnosis.html")
+class TalkHangupChannelHandler(BaseHandler):
+ def _get_channel(self, channel_id):
+ account = None if self.current_user.is_admin() else self.current_user
+
+ channel = self.talk.get_channel(channel_id, account=account)
+ if not channel:
+ raise tornado.web.HTTPError(404)
+
+ return channel
+
+ @tornado.web.authenticated
+ def get(self, channel_id):
+ channel = self._get_channel(channel_id)
+
+ self.render("talk/confirm-hangup.html", channel=channel)
+
+ @tornado.web.authenticated
+ def post(self, channel_id):
+ channel = self._get_channel(channel_id)
+
+ # Hangup
+ channel.hangup()
+
+ self.redirect("/")
+
+
class TalkConferencesHandler(BaseHandler):
@tornado.web.authenticated
def get(self):