1
0
Fork 0
mirror of https://github.com/fastogt/fastocloud_admin.git synced 2025-03-09 23:38:52 +00:00

Message send

This commit is contained in:
topilski 2019-09-03 21:07:12 -04:00
parent 96c043ae02
commit ce1ee32ae4
6 changed files with 86 additions and 13 deletions

@ -1 +1 @@
Subproject commit 99e119d1facbd614f7f8307f9512578e79eead8a
Subproject commit 201c631c2464927690c3fe3b1c0d26853faa9586

View file

@ -212,3 +212,8 @@ class ServiceManager(IClientHandler):
connections.append(user)
return connections
def send_message(self, email: str, message: str, ttl: int):
for user in self._subscribers:
if user.info and user.info.email == email:
user.send_message(message, ttl * 1000)

View file

@ -4,9 +4,9 @@ from flask_classy import FlaskView, route
from flask import render_template, redirect, url_for, request, jsonify, Response
from flask_login import login_required, current_user
from app import get_runtime_folder
from app import get_runtime_folder, servers_manager
from app.common.service.forms import ServiceSettingsForm, ActivateForm, UploadM3uForm, ServerProviderForm
from app.common.subscriber.forms import SignupForm
from app.common.subscriber.forms import SignupForm, MessageForm
from app.common.service.entry import ServiceSettings, ProviderPair
from app.common.subscriber.entry import Subscriber
from app.common.utils.m3u_parser import M3uParser
@ -271,6 +271,17 @@ class ServiceView(FlaskView):
return jsonify(status='failed'), 404
@login_required
@route('/subscriber/send_message/<sid>', methods=['GET', 'POST'])
def subscriber_send_message(self, sid):
subscriber = Subscriber.objects(id=sid).first()
form = MessageForm()
if request.method == 'POST' and form.validate_on_submit():
servers_manager.send_message(subscriber.email, form.message.data, form.ttl.data)
return jsonify(status='ok'), 200
return render_template('service/subscriber/send_message.html', form=form)
@login_required
@route('/add', methods=['GET', 'POST'])
def add(self):

View file

@ -1087,15 +1087,5 @@ Dashboard | {{ config['PUBLIC_CONFIG'].site.title }}
}
});
}
</script>
{% endblock %}

View file

@ -0,0 +1,34 @@
{% from 'bootstrap/wtf.html' import form_field %}
{% macro render_bootstrap_field(field) %}
<div class="row">
<label class="col-md-4">{{ field.label }}</label>
<div class="col-md-8">
{{ field(class='form-control')|safe }}
</div>
</div>
{% endmacro %}
<form id="send_message_form" name="send_message_form" class="form" method="post">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title">
{% block title %}
{% endblock %}
</h4>
</div>
<div class="modal-body">
{{ form.hidden_tag() }}
<br>
{{ render_bootstrap_field(form.message) }}
<br>
{{ render_bootstrap_field(form.ttl) }}
</div>
<div class="modal-footer">
{% block footer %}
<button type="button" class="btn btn-danger" data-dismiss="modal">{% trans %}Cancel{% endtrans %}</button>
{{ form_field(form.apply, class="btn btn-success") }}
{% endblock %}
</div>
</form>

View file

@ -59,6 +59,10 @@ Activate service | {{ config['PUBLIC_CONFIG'].site.title }}
onclick="edit_subscriber('{{ subscriber.id }}')">
{% trans %}Edit{% endtrans %}
</button>
<button type="submit" class="btn btn-success btn-xs"
onclick="send_message_for_subscriber('{{ subscriber.id }}')">
{% trans %}Send message{% endtrans %}
</button>
<button type="submit" class="btn btn-danger btn-xs"
onclick="remove_subscriber('{{ subscriber.id }}')">
{% trans %}Remove{% endtrans %}
@ -168,6 +172,35 @@ Activate service | {{ config['PUBLIC_CONFIG'].site.title }}
});
}
function send_message(url) {
$.ajax({
url: url,
type: "POST",
dataType: 'json',
data: $('#send_message_form').serialize(),
success: function (response) {
console.log(response);
$('#service_dialog').modal('hide');
window.location.reload();
},
error: function (error) {
console.error(error);
$('#service_dialog .modal-content').html(data);
}
});
}
function send_message_for_subscriber(sid) {
var url = "/service/subscriber/send_message/" + sid;
$.get(url, function(data) {
$('#service_dialog .modal-content').html(data);
$('#service_dialog').modal();
$('#apply').click(function(event) {
event.preventDefault();
send_message(url);
})
});
}
</script>
{%- endblock %}