propagate error of connection with the tag server to the view

This commit is contained in:
Cayo Puigdefabregas 2022-03-04 13:32:37 +01:00
parent b737aaf50a
commit d98d09cc7d
2 changed files with 13 additions and 11 deletions

View file

@ -1,8 +1,6 @@
import copy
import json
from json.decoder import JSONDecodeError
from requests.exceptions import ConnectionError
from boltons.urlutils import URL
from flask import g, request
from flask_wtf import FlaskForm
@ -446,11 +444,7 @@ class TagUnnamedForm(FlaskForm):
def save(self):
num = self.amount.data
try:
tags_id, _ = g.tag_provider.post('/', {}, query=[('num', num)])
except ConnectionError:
pass
return []
tags_id, _ = g.tag_provider.post('/', {}, query=[('num', num)])
tags = [Tag(id=tag_id, provider=g.inventory.tag_provider) for tag_id in tags_id]
db.session.add_all(tags)
db.session.commit()

View file

@ -1,13 +1,15 @@
import csv
import logging
from io import StringIO
import flask
import flask_weasyprint
from flask import Blueprint, g, make_response, request, url_for
from flask import Blueprint, g, make_response, request, url_for, app
from flask.views import View
from flask_login import current_user, login_required
from werkzeug.exceptions import NotFound
from sqlalchemy import or_
from requests.exceptions import ConnectionError
from ereuse_devicehub import messages
from ereuse_devicehub.inventory.forms import (
@ -34,6 +36,8 @@ from ereuse_devicehub.resources.tag.model import Tag
# TODO(@slamora): rename base 'inventory.devices' --> 'inventory'
devices = Blueprint('inventory.devices', __name__, url_prefix='/inventory')
logger = logging.getLogger(__name__)
class DeviceListMix(View):
decorators = [login_required]
@ -287,10 +291,14 @@ class TagAddUnnamedView(View):
context = {'page_title': 'New Unnamed Tag', 'lots': lots}
form = TagUnnamedForm()
if form.validate_on_submit():
tags = form.save()
if not tags:
msg = 'Sorry, the communication with the tag server is not possible now!'
try:
form.save()
except ConnectionError as e:
logger.error("Error while trying to connect to tag server: {}".format(e))
msg = ("Sorry, we cannot create the unnamed tags requested because "
"some error happens while connecting to the tag server!")
messages.error(msg)
next_url = url_for('inventory.devices.taglist')
return flask.redirect(next_url)