2

I am trying to develop a database program for ticket tracking with screen shot uploads into a database. The code allowed no upload in the file-field up until I did FileAllowed and now it throws an error when ever the file-field is empty. I assume I need to check to see if the field is empty and have tried but I still can not get it to work without an error. If someone may guide me in the right direction it would be much appreciated.

# Flask #
from flask import Flask, request, render_template, url_for, flash, redirect
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.orm import relationship
from flask_wtf import FlaskForm
from flask_wtf.file import FileField, FileAllowed

app = Flask(__name__)
db = SQLAlchemy(app)


# Set Database Models
class Employee(db.Model):

    screenshot = db.Column(db.LargeBinary(length=(2**32)-1))

    def __init__(self,screenshot):

        self.screenshot = screenshot


class TicketField(FlaskForm):

    uScreenshot = FileField(
                            label='Screen shot:',
                            validators=[
                            FileAllowed(
                            upload_set=['gif','bmp','png','img','tif','jpg'],
                            message='Invalid image format.' )])
    uDescription = TextAreaField('Issue Description',
                            validators=[
                            InputRequired('Tell us your problem.')])
    uSubmit = SubmitField("Submit")

# Routes #
@app.route('/', methods=['GET', 'POST'])
def index():
    uField = TicketField()
    if uField.validate_on_submit():
        fname = request.form['uFName']
        lname = request.form['uLName']
        email = request.form['uEmail']
        phone = request.form['uPhone']
        location = request.form['uContracts']
        contact = request.form['uContact']
        description = request.form['uDescription']
        screenshot = request.files['uScreenshot']

        data = Employee(
                            fname=fname,
                            lname=lname,
                            email=email,
                            phone=phone,
                            location=location,
                            contact=contact,
                            ssname=screenshot.filename,
                            screenshot=screenshot.read(),
                            description=description
                            )

        try:
            db.session.add(data)
            db.session.commit()
            flash('Data submission was successfully!')
        except:
            flash('Data submission was unsuccessful!')

Traceback:

werkzeug.exceptions.BadRequestKeyError
werkzeug.exceptions.HTTPException.wrap.<locals>.newcls: 400 Bad Request: KeyError: 'uScreenshot'

Traceback (most recent call last)
File "C:\Program Files\Python36\lib\site-packages\flask\app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "C:\Program Files\Python36\lib\site-packages\flask\app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "C:\Program Files\Python36\lib\site-packages\flask\app.py", line 1741, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:\Program Files\Python36\lib\site-packages\flask\_compat.py", line 35, in reraise
raise value
File "C:\Program Files\Python36\lib\site-packages\flask\app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "C:\Program Files\Python36\lib\site-packages\flask\app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Program Files\Python36\lib\site-packages\flask\app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\Program Files\Python36\lib\site-packages\flask\_compat.py", line 35, in reraise
raise value
File "C:\Program Files\Python36\lib\site-packages\flask\app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Program Files\Python36\lib\site-packages\flask\app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "C:\Users\cnixon\Desktop\Project\app.py", line 160, in index
screenshot = request.files['uScreenshot']
File "C:\Program Files\Python36\lib\site-packages\werkzeug\datastructures.py", line 431, in __getitem__
raise exceptions.BadRequestKeyError(key)
werkzeug.exceptions.HTTPException.wrap.<locals>.newcls: 400 Bad Request: KeyError: 'uScreenshot'
roganjosh
  • 12,594
  • 4
  • 29
  • 46
Corey
  • 29
  • 3

0 Answers0