1
0
Fork 0
mirror of https://github.com/fastogt/fastocloud_admin.git synced 2025-03-09 23:38:52 +00:00
fastocloud_admin/app/subscriber/view.py
2020-02-16 13:15:58 -05:00

64 lines
2 KiB
Python

from flask_classy import FlaskView, route
from flask import render_template, request, jsonify
from flask_login import login_required
from bson.objectid import ObjectId
from app.common.subscriber.forms import SignupForm
from pyfastocloud_models.subscriber.login.entry import SubscriberUser
from pyfastocloud_models.service.entry import ServiceSettings
def _get_subscriber_by_id(sid: str):
try:
subscriber = SubscriberUser.objects.get({'_id': ObjectId(sid)})
except SubscriberUser.DoesNotExist:
return None
else:
return subscriber
# routes
class SubscriberView(FlaskView):
route_base = "/subscriber/"
@login_required
def show(self):
return render_template('subscriber/show.html', subscribers=SubscriberUser.objects.all())
@login_required
@route('/add', methods=['GET', 'POST'])
def add(self):
form = SignupForm()
if request.method == 'POST' and form.validate_on_submit():
new_entry = form.make_entry()
servers = ServiceSettings.objects.all()
for server in servers:
new_entry.add_server(server)
new_entry.save()
return jsonify(status='ok'), 200
return render_template('subscriber/add.html', form=form)
@login_required
@route('/edit/<sid>', methods=['GET', 'POST'])
def edit(self, sid):
subscriber = _get_subscriber_by_id(sid)
form = SignupForm(obj=subscriber)
if request.method == 'POST' and form.validate_on_submit():
subscriber = form.update_entry(subscriber)
subscriber.save()
return jsonify(status='ok'), 200
return render_template('subscriber/edit.html', form=form)
@login_required
@route('/remove', methods=['POST'])
def remove(self):
data = request.get_json()
sid = data['sid']
subscriber = _get_subscriber_by_id(sid)
if subscriber:
subscriber.delete()
return jsonify(status='ok'), 200
return jsonify(status='failed'), 404