src: Add support for adding folders

Add support to create a folder able to contain multiple computers.

Add support for adding a folder able to contain rooms
master
Javier Hernandez 2024-01-10 11:23:36 +01:00 committed by OpenGnSys Support Team
parent 58b5b2eca0
commit 695fcfe625
4 changed files with 77 additions and 1 deletions

View File

@ -105,6 +105,13 @@ class RepoForm(FlaskForm):
ip = StringField(label=_l('IP'))
submit = SubmitField(label=_l('Submit'))
class FolderForm(FlaskForm):
server = HiddenField()
room = HiddenField()
center = HiddenField()
name = StringField(label=_l('Name'))
submit = SubmitField(label=_l('Submit'))
class ClientDetailsForm(FlaskForm):
server = HiddenField()
name = StringField(label=_l('Name'))

View File

@ -0,0 +1,19 @@
{% extends 'scopes.html' %}
{% import "bootstrap/wtf.html" as wtf %}
{% set sidebar_state = 'disabled' %}
{% set btn_back = true %}
{% block nav_folder %} active{% endblock %}
{% block nav_folder_add %} active{% endblock %}
{% block content %}
<h1 class="m-5">{{_('Add folder')}}</h1>
{{ wtf.quick_form(form,
method='post',
button_map={'submit': 'primary'},
extra_classes="mx-5") }}
{% endblock %}

View File

@ -56,6 +56,17 @@
form="scopesForm" formaction="{{ url_for('action_center_delete') }}" formmethod="get">
</div>
</div>
<div class="dropdown btn">
<button class="btn btn-secondary btn-light dropdown-toggle {% block nav_folder %}{% endblock %}" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-expanded="false">
{{ _('Folder') }}
</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<input class="btn btn-light dropdown-item {% block nav_folder_add %}{% endblock %}" type="submit" value="{{ _('Add folder') }}"
form="scopesForm" formaction="{{ url_for('action_folder_add') }}" formmethod="get">
</div>
</div>
{% endif %}
{% if btn_back %}
<button class="btn btn-danger ml-3" type="button" id="backButton" onclick="history.back()">

View File

@ -13,7 +13,7 @@ from ogcp.forms.action_forms import (
SessionForm, ImageRestoreForm, ImageCreateForm, SoftwareForm, BootModeForm,
RoomForm, DeleteRoomForm, CenterForm, DeleteCenterForm, OgliveForm,
GenericForm, SelectClientForm, ImageUpdateForm, ImportClientsForm,
ServerForm, DeleteRepositoryForm, RepoForm
ServerForm, DeleteRepositoryForm, RepoForm, FolderForm
)
from flask_login import (
current_user, LoginManager,
@ -990,6 +990,45 @@ def action_client_update():
return render_template('actions/client_details.html', form=form,
parent="scopes.html", scopes=scopes)
@app.route('/action/folder/add', methods=['GET'])
@login_required
def action_folder_add():
form = FolderForm()
params = request.args.to_dict()
room = params.get('scope-room')
center = params.get('scope-center')
if room and center:
flash(_('Please, select either a room or a center'), category='error')
return redirect(url_for('scopes'))
if not room and not center:
flash(_('Please, select a room or a center'), category='error')
return redirect(url_for('scopes'))
form.server.data = params['scope-server']
form.room.data = room
form.center.data = center
form.submit.render_kw = {"formaction": url_for('action_folder_add_post')}
scopes, _ = get_scopes()
return render_template('actions/folder_add.html', form=form,
parent="scopes.html", scopes=scopes)
@app.route('/action/folder/add', methods=['POST'])
def action_folder_add_post():
form = FolderForm(request.form)
payload = {"name": form.name.data}
if form.center.data:
payload["center"] = int(form.center.data)
if form.room.data:
payload["room"] = int(form.room.data)
server = get_server_from_ip_port(form.server.data)
r = server.post('/folder/add', payload)
if r.status_code != requests.codes.ok:
flash(_('ogServer: error adding folder'),
category='error')
else:
flash(_('Folder added successfully'), category='info')
return redirect(url_for("scopes"))
@app.route('/action/client/add', methods=['GET', 'POST'])
@login_required
def action_client_add():