def doDatabaseWrite(categories, previous_category, user_data, item=None): """ Método utilitário que checa se os campos do formulário estão preenchidos antes de salvar o item no banco de dados. Em caso de erro, retorna os redirects e erros correspondente à ação sendo executada (criação ou edição) Também checa se um item já existe na categoria informada com o mesmo nome. """ if item: form_name = "edititem.html" message = "Item edited" isInsert = False else: item = Items(title=None, description=None, category_id=None, user_id=login_session["user_id"]) form_name = "newitem.html" message = "New item created" isInsert = True if user_data["title"] \ and user_data["description"] \ and user_data["category_id"]: item.title = user_data["title"] item.description = user_data["description"] item.category_id = user_data["category_id"] try: session.add(item) session.commit() flash(message) category_name = session.query(Categories) \ .filter_by(id=user_data["category_id"]) \ .first().name if isInsert: return redirect(url_for("showAllItems", category_name=category_name)) else: return redirect(url_for("showItem", category_name=category_name, item_name=user_data["title"])) except IntegrityError: session.rollback() flash("Item '%s' already exists in selected category." % user_data["title"]) return render_template(form_name, categories=categories, item=user_data, previous_category=previous_category, previous_item=item.title) else: flash("There is missing data") return render_template(form_name, categories=categories, item=user_data, previous_category=previous_category, previous_item=item.title)