Skip to content

Commit

Permalink
server: add versioninfo list view rebuild button
Browse files Browse the repository at this point in the history
  • Loading branch information
bodik committed Oct 23, 2023
1 parent bbe4f55 commit 66e8f71
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 3 deletions.
20 changes: 18 additions & 2 deletions sner/server/storage/views/versioninfo.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,16 @@

import json
from datatables import ColumnDT, DataTables
from flask import jsonify, render_template, request, Response
from flask import jsonify, redirect, render_template, request, Response, url_for
from sqlalchemy import func

from sner.server.auth.core import session_required
from sner.server.extensions import db
from sner.server.forms import ButtonForm
from sner.server.storage.forms import VersionInfoQueryForm
from sner.server.storage.models import VersionInfo
from sner.server.storage.version_parser import is_in_version_range, parse as versionspec_parse
from sner.server.storage.versioninfo import VersionInfoManager
from sner.server.storage.views import blueprint
from sner.server.utils import filter_query, SnerJSONEncoder

Expand All @@ -26,7 +28,8 @@ def versioninfo_list_route():

return render_template(
'storage/versioninfo/list.html',
form=VersionInfoQueryForm(request.values)
form=VersionInfoQueryForm(request.values),
button_form=ButtonForm()
)


Expand Down Expand Up @@ -66,3 +69,16 @@ def versioninfo_list_json_route():
versioninfos["recordsFiltered"] = len(versioninfos["data"])

return Response(json.dumps(versioninfos, cls=SnerJSONEncoder), mimetype='application/json')


@blueprint.route('/versioninfo/rebuild', methods=['GET', 'POST'])
@session_required('operator')
def versioninfo_rebuild_route():
"""rebuild versioninfo route"""

form = ButtonForm()
if form.validate_on_submit():
VersionInfoManager.rebuild()
return redirect(url_for('storage.versioninfo_list_route'))

return render_template('button-generic.html', form=form, button_caption='Rebuild')
2 changes: 1 addition & 1 deletion sner/server/templates/button-generic.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
{% import "bootstrap_wtf.html" as bwtf %}
<form class="form-inline" style="display: inline;" {% if form_url %}action="{{ form_url }}"{% endif %} method="post">
{{ bwtf.bootstrap_form(form) }}
<button class="btn btn-outline-secondary" type="submit">{{ button_caption }}</button>
<button class="btn {{ button_class | default('btn-outline-secondary') }}" type="submit">{{ button_caption }}</button>
</form>
1 change: 1 addition & 0 deletions sner/server/templates/storage/versioninfo/list.html
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
{% block content %}
{% call cm.heading(['Versioninfo']) %}
<div class="breadcrumb-buttons pl-2">
{% with form=button_form, form_url=url_for('storage.versioninfo_rebuild_route'), button_caption='Rebuild', button_class='btn-outline-primary' %}{% include 'button-generic.html' %}{% endwith %}
<a class="btn btn-outline-secondary" data-toggle="collapse" href="#filter_form"><i class="fas fa-filter"></i></a>
</div>
{% endcall %}
Expand Down
14 changes: 14 additions & 0 deletions tests/server/storage/views/test_versioninfo.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@

from flask import url_for

from sner.server.storage.models import VersionInfo


def test_versioninfo_list_route(cl_operator):
"""versioninfo list route test"""
Expand Down Expand Up @@ -44,3 +46,15 @@ def test_versioninfo_list_json_route(cl_operator, versioninfo):

response = cl_operator.post(url_for('storage.versioninfo_list_json_route', filter='invalid'), {'draw': 1, 'start': 0, 'length': 1}, status='*')
assert response.status_code == HTTPStatus.BAD_REQUEST


def test_versioninfo_rebuild_route(cl_operator, versioninfo_notes):
"""test versioninfo rebuild route"""

assert VersionInfo.query.count() == 0

form = cl_operator.get(url_for('storage.versioninfo_rebuild_route')).form
response = form.submit()
assert response.status_code == HTTPStatus.FOUND

assert VersionInfo.query.count() > 0

0 comments on commit 66e8f71

Please sign in to comment.