def test_file_not_allowed(self) -> None: """Raise UploadNotAllowed for not allowed file extensions.""" uset = UploadSet('files', ('png')) uset._config = Config('/uploads') testing_filestorage = TestingFileStorage(filename='picture.gif') with pytest.raises(UploadNotAllowed): uset.save(testing_filestorage)
def upload(): if request.method == 'POST' and len(request.files) > 0: msg = "Log in with an Admin privlidged user to upload files!" if not oidc.user_loggedin: return msgHandler.createMessageJSON("danger", msg) elif oidc.user_loggedin: isAdmin = oidc.user_getfield("isAdmin") if isAdmin != "yes": return msgHandler.createMessageJSON("danger", msg) view = get_window_controller().get_window(1).get_view(0) folder = view.get_current_directory() UPLOADS_PTH = folder + '/' files = UploadSet('files', ALL, default_dest=lambda x: UPLOADS_PTH) configure_uploads(app, files) for file in request.files: try: files.save(request.files[file]) except Exception as e: print(repr(e)) msg = "[Error] Failed to upload some or all of the file(s)..." return msgHandler.createMessageJSON("danger", msg) msg = "[Success] Uploaded file(s)..." return msgHandler.createMessageJSON("success", msg) else: msg = "Can't manage the request type..." return msgHandler.createMessageJSON("danger", msg)
def test_non_ascii_filename(self): uset = UploadSet('files') uset._config = Config('/uploads') tfs = TestingFileStorage(filename=u'天安门.jpg') res = uset.save(tfs) assert res == 'jpg' res = uset.save(tfs, name='secret.') assert res == 'secret.jpg'
def test_secured_filename(self): uset = UploadSet('files', ALL) uset._config = Config('/uploads') tfs1 = TestingFileStorage(filename='/etc/passwd') tfs2 = TestingFileStorage(filename='../../myapp.wsgi') res1 = uset.save(tfs1) assert res1 == 'etc_passwd' assert tfs1.saved == '/uploads/etc_passwd' res2 = uset.save(tfs2) assert res2 == 'myapp.wsgi' assert tfs2.saved == '/uploads/myapp.wsgi'
def test_storage_is_not_a_werkzeug_datastructure(self) -> None: """UploadSet.save needs a valid FileStorage object. When something different is passed in, a TypeError gets raised. """ uset = UploadSet('files', ALL) uset._config = Config('/uploads') non_storage = 'this is no werkzeug.datastructure.FileStorage' with pytest.raises(TypeError): uset.save(non_storage) # type: ignore
def gallery_do_upload(): res = JsonResponse() res.resMsg = 'Upload start.' if 'photo' in request.files: try: photos = UploadSet('photos', IMAGES) configure_uploads(current_app, (photos)) filename = photos.save(request.files['photo']) gflag = GalleryMiddleware().save_one( link=photos.url(filename), tags=request.form.getlist('tags'), caption=request.form['caption'] ) if gflag: res.resMsg = 'Note: Photo saved successfully.' else: res.resMsg = 'Note: Failed to save photo.' res.data = { 'link': photos.url(filename), 'tags': request.form.getlist('tags'), 'caption': request.form['caption'] } except Exception: res.resCode = -1 res.resMsg = 'Error: Upload failed.\n\n' + \ 'The file size maybe exceeds limited size [' + \ '{0}'.format(current_app.config['MAX_CONTENT_LENGTH_MB']) + \ 'MB].' pass else: res.resCode = -1 res.resMsg = 'Error: Cannot find the file field in your upload form.' # print(res.outputJsonString()) # Print for test. return res.outputJsonString()
def pdf_upload(): files = UploadSet('files', ALL) task_id_str = request.form.get("task_id") if task_id_str: task_id = int(task_id_str) this_task = Task.query.filter_by(id=task_id).first() if request.method == 'POST' and 'file' in request.files: filename = files.save( request.files['file']) # get the file from front end request, return the file name(String) if this_task.pdf_url: pdf_id = this_task.pdf_id upload_file = drive.CreateFile({'id': pdf_id}) upload_file.SetContentFile("./uploads/files/" + filename) upload_file['title'] = filename # set the file name of this file upload_file.Upload() # upload this file else: upload_file = drive.CreateFile() # create the google drive file instance upload_file.SetContentFile("./uploads/files/" + filename) # set our file into this instance upload_file['title'] = filename # set the file name of this file upload_file.Upload() # upload this file permission = upload_file.InsertPermission({ 'type': 'anyone', 'value': 'anyone', 'role': 'reader'}) google_file_id = upload_file[ 'id'] # can get this file's google drive-id and use it to save the id into database google_url = "https://drive.google.com/uc?authuser=0&id=" + google_file_id + "&export=download" this_task.pdf_url = google_url this_task.pdf_id = google_file_id this_task.update() os.remove("./uploads/files/" + filename) # delete this file after uploading it to google drive flash("The file has been uploaded successfully.") return redirect(url_for('teacher_view', staff_number=current_user.user_number))
def test_save_namedext(self): uset = UploadSet('files') uset._config = Config('/uploads') tfs = TestingFileStorage(filename='boat.jpg') res = uset.save(tfs, name='photo_123.') assert res == 'photo_123.jpg' assert tfs.saved == '/uploads/photo_123.jpg'
def test_implicit_folder(self): uset = UploadSet('files') uset._config = Config('/uploads') tfs = TestingFileStorage(filename='boat.jpg') res = uset.save(tfs, name='someguy/photo_123.') assert res == 'someguy/photo_123.jpg' assert tfs.saved == '/uploads/someguy/photo_123.jpg'
def upload_logo(): """Upload shop logo""" form = UploadLogoForm() company = Company.query.first() if form.validate_on_submit(): images = UploadSet("images", IMAGES) f = form.image.data if f is None: flash("File required") else: filename = images.save(f) # symlink to active theme static directory img_src = "".join( [current_app.config["UPLOADED_IMAGES_DEST"], filename]) link = "".join([current_app.config["STATIC_FOLDER"], filename]) symlink(img_src, link, overwrite=True) src = url_for("static", filename=filename) company.logo_src = src database.session.commit() flash("Logo has been uploaded") return render_template("admin/upload_logo.html", form=form, company=company)
def test_conflict_without_extension(self) -> None: uset = UploadSet('files', extensions=('')) uset._config = Config('/uploads') tfs = TestingFileStorage(filename='foo') self.extant('/uploads/foo') res = uset.save(tfs) assert res == 'foo_1'
def test_conflict(self): uset = UploadSet('files') uset._config = Config('/uploads') tfs = TestingFileStorage(filename='foo.txt') self.extant('/uploads/foo.txt') res = uset.save(tfs) assert res == 'foo_1.txt'
def changeHeadImg(): if 'loginbean' in session: loginbean = session['loginbean'] try: if request.method == 'POST': f = request.files['headImg'] if f and allowed_file(f.filename): # 判断是否是允许上传的文件类型 app.config['UPLOADED_PHOTOS_DEST'] = os.getcwd( ) + '/static/photos/headImg/' # 文件储存地址 photos = UploadSet( 'photos', IMAGES) #创建UploadSet 拿到UploadSet对象 并设置文件类型为image configure_uploads( app, photos) #使用configure_uploads()方法注册并完成相应的配置 filename = photos.save(request.files['headImg']) headImg = '/static/photos/headImg/' + filename #路径字符串 h = Users.objects(_id=loginbean['id']).update( set__headImg=headImg) #更改路径 loginbean['headImg'] = headImg session['loginbean'] = loginbean return ('<script>alert("提交成功");location.href="/setting";</script>') except Exception as err: estr = str(err) if estr.find('before') > 0: return ( '<script>alert("图片不能为空");location.href="/setting";</script>' ) else: return ('<script>alert("账号信息过期,请重新登录");location.href="/";</script>')
def upload_files(file_list, user_name): up_list = list() if not file_list: return up_list ac_upload_set = UploadSet(upload_mark, ALL) folder = user_name destination = current_app.upload_set_config.get(upload_mark).destination tar_dir = os.path.join(destination, folder) map_path = os.path.join(tar_dir, map_file) try: with open(map_path, 'r') as f: map_dict = json.load(f) except Exception as e: print(e) map_dict = dict() for storage in file_list: print(storage) basename = 'y_' + ac_upload_set.get_basename(storage.filename) print(basename) upload_name = sign_st_name(basename) print(upload_name) save_name = ac_upload_set.save(storage, folder=folder, name=upload_name) print(os.path.basename(save_name)) map_dict[basename] = os.path.basename(save_name) up_list.append(basename) with open(map_path, 'w') as f: json.dump(map_dict, f) return up_list
def test_folder_namedext(self) -> None: uset = UploadSet('files') uset._config = Config('/uploads') tfs = TestingFileStorage(filename='boat.jpg') res = uset.save(tfs, folder='someguy', name='photo_123.') assert res == 'someguy/photo_123.jpg' assert tfs.saved == '/uploads/someguy/photo_123.jpg'
def test_save_named(self): uset = UploadSet('files') uset._config = Config('/uploads') tfs = TestingFileStorage(filename='foo.txt') res = uset.save(tfs, name='file_123.txt') assert res == 'file_123.txt' assert tfs.saved == '/uploads/file_123.txt'
def test_save_folders(self): uset = UploadSet('files') uset._config = Config('/uploads') tfs = TestingFileStorage(filename='foo.txt') res = uset.save(tfs, folder='someguy') assert res == 'someguy/foo.txt' assert tfs.saved == '/uploads/someguy/foo.txt'
def test_multi_conflict(self): uset = UploadSet('files') uset._config = Config('/uploads') tfs = TestingFileStorage(filename='foo.txt') self.extant('/uploads/foo.txt', *('/uploads/foo_%d.txt' % n for n in range(1, 6))) res = uset.save(tfs) assert res == 'foo_6.txt'
def test_conflict_without_extension(self): # Test case for issue #7. uset = UploadSet('files', extensions=('')) uset._config = Config('/uploads') tfs = TestingFileStorage(filename='foo') self.extant('/uploads/foo') res = uset.save(tfs) assert res == 'foo_1'
def update(id): data = get_data(id) con = db.connect() cursor = con.cursor(db.getDictCursor()) cursor.execute("SELECT * FROM promotions") promotions = cursor.fetchall() form = RewardForm(obj=data, csrf_enabled=False) if request.method == 'POST' and form.validate_on_submit(): promotion_id = request.form['promotion_id'] or 'NULL' name = request.form['name'] or 'NULL' info = request.form['info'] or 'NULL' point = request.form['point'] or 'NULL' value = request.form['value'] or 'NULL' type = request.form['type'] or 'NULL' updated_by = session['user_id'] or 'NULL' photo = request.files['photo'] con = db.connect() cursor = con.cursor(db.getDictCursor()) try: if 'photo' not in request.files: cursor.execute( "UPDATE rewards SET \ promotion_id=%s, name=%s, info=%s, \ point=%s, value=%s, updated_by=%s, type=%s \ WHERE id=%s", (promotion_id, name, info, point, value, updated_by, type, id)) else: if photo and allowed_file(photo.filename): photos = UploadSet('photos', IMAGES) configure_uploads(app, photos) filename = photos.save(request.files['photo']) file_url = photos.url(filename) cursor.execute( "UPDATE rewards SET \ promotion_id=%s, name=%s, info=%s, \ point=%s, value=%s, updated_by=%s, type=%s, path=%s \ WHERE id=%s", (promotion_id, name, info, point, value, updated_by, type, file_url, id)) con.commit() flash('Operation success') return redirect(url_for('reward.update', id=id)) except cursor.InternalError as e: code, message = e.args con.rollback() return redirect(url_for('reward.update', id=id)) finally: con.close() return render_template('back/reward/update.html', form=form, data=data, promotions=promotions)
def add_data(): if not current_user.is_authenticated: return redirect(url_for('base_blueprint.login')) data_form = UploadDataForm() docs = UploadSet('documents', ['xls', 'xlsx', 'csv']) if data_form.validate_on_submit(): filename = docs.save(data_form.file.data) file_url = docs.url(filename) print(docs.path(filename)) patients = pd.read_excel(docs.path(filename)) print(patients) added = 0 for index, row in patients.iterrows(): patient = Patient() patient.full_name = row["ФИО"] patient.iin = row["ИИН"] patient.dob = datetime.strptime(row["Дата рождения"], '%d.%m.%Y') patient.citizenship = row["Гражданство"] patient.pass_num = row["Номер паспорта"] patient.telephone = row["Номер мобильного телефона"] patient.arrival_date = datetime.strptime(row["Дата въезда"], '%d.%m.%Y') patient.flight_code = row["рейс"] patient.visited_country = row[ "Место и сроки пребывания в последние 14 дней до прибытия в Казахстан (укажите страну, область, штат и т.д.)"] patient.region = row["регион"] patient.home_address = row[ "Место жительство, либо предпологаемое место проживания"] patient.job = row["Место работы"] patient.is_found = True if row["Найден (да/нет)"].lower( ) == "да" else False patient.in_hospital = True if row[ "Госпитализирован (да/нет)"].lower() == "да" else False patient.hospital = row["Место госпитализации"] if not pd.isnull( row["Место госпитализации"]) else "" query = "{}, {}".format(patient.region, patient.home_address) results = geocoder.geocode(query) if len(results): patient.address_lat = results[0]['geometry']['lat'] patient.address_lng = results[0]['geometry']['lng'] db.session.add(patient) db.session.commit() added += 1 # # else we can create the user return route_template('add_data', form=data_form, added=added) # return render_template( 'login/register.html', success='User created please <a href="/login">login</a>', form=patient_form) else: return route_template('add_data', form=data_form, added=-1)
def upload_image(username): current_app.config['UPLOADED_PHOTOS_DEST'] = IMAGE_ROUTE photos = UploadSet('photos', IMAGES) configure_uploads(current_app, photos) user = User.query.filter_by(username=username).first_or_404() if request.method == 'POST' and 'photo' in request.files: filename = photos.save(request.files['photo']) resize_image(filename, username) return redirect(url_for('main.user', username=username)) return render_template('upload.html', username=username)
def upload(): photos = UploadSet('photos') configure_uploads(app, photos) if request.method == 'POST' and 'file' in request.files: filename = photos.save(request.files['file']) # rec = Photo(filename=filename, user=g.user.id) # rec.store() flash("Photo saved.") return redirect(url_for('upload')) return render_template('photo.html')
def upload(): files = UploadSet('files', ALL) student_number = current_user.user_number user_id = current_user.id question_id = request.form.get("question_id") user_question = User_question.query.filter_by(question_id=question_id, user_id=user_id).first() print(user_question) if question_id: question_id = int(request.form.get("question_id")) # get the question id from request post question_id_str = str(question_id) this_question = db.session.query(Question).filter(Question.id == question_id).one() task_id = this_question.task_id this_task = db.session.query(Task).filter(Task.id == task_id).one() user_task = User_task.query.filter_by(task_id=task_id, user_id=user_id).first() task_id_str = str(task_id) unit_id = db.session.query(Task).filter(Task.id == task_id).one().unit_id unit_id_str = str(unit_id) print(student_number) print(unit_id_str) print(task_id_str) print(question_id_str) name = student_number + '_' + unit_id_str + '_' + task_id_str + '_' + question_id_str + '.mp3' if not user_task: User_task.add_user_task(user=current_user, task=this_task) # save user_question to db if request.method == 'POST' and 'upfile' in request.files: filename = files.save( request.files['upfile']) # get the file from front end request, return the file name(String) if user_question: record_id = user_question.record_id upload_file = drive.CreateFile({'id': record_id}) upload_file.SetContentFile("./uploads/files/" + filename) upload_file['title'] = name # set the file name of this file upload_file.Upload() # upload this file else: upload_file = drive.CreateFile() # create the google drive file instance upload_file.SetContentFile("./uploads/files/" + filename) # set our file into this instance upload_file['title'] = name # set the file name of this file upload_file.Upload() # upload this file permission = upload_file.InsertPermission({ 'type': 'anyone', 'value': 'anyone', 'role': 'reader'}) google_file_id = upload_file[ 'id'] # can get this file's google drive-id and use it to save the id into database google_url = "https://drive.google.com/uc?authuser=0&id=" + google_file_id + "&export=download" User_question.add_user_question(user=current_user, question=this_question, record_url=google_url, record_id=google_file_id, record_title=name) # save user_question to db os.remove("./uploads/files/" + filename) # delete this file after uploading it to google drive return redirect(url_for('student_view', student_number=current_user.user_number))
def add_jamla_item(): form = ItemsForm() jamla = get_jamla() if form.validate_on_submit(): draftItem = {} draftItem["uuid"] = str(uuid.uuid4()) draftItem["requirements"] = {} draftItem["primary_icon"] = {"src": "", "type": ""} draftItem["title"] = form.title.data[0].strip() draftItem["requirements"]["subscription"] = bool( form.subscription.data[0]) draftItem["requirements"]["note_to_seller_required"] = bool( form.note_to_seller_required.data[0]) draftItem["requirements"]["note_to_buyer_message"] = str( form.note_to_buyer_message.data[0]) try: days_before_first_charge = int( form.days_before_first_charge.data[0]) except ValueError: days_before_first_charge = 0 draftItem["days_before_first_charge"] = days_before_first_charge if form.monthly_price.data[0] is None: draftItem["monthly_price"] = False else: draftItem["monthly_price"] = float( form.monthly_price.data[0]) * 100 draftItem["requirements"]["instant_payment"] = bool( form.instant_payment.data[0]) if form.sell_price.data[0] is None: draftItem["sell_price"] = False else: draftItem["sell_price"] = float(form.sell_price.data[0]) * 100 draftItem["selling_points"] = form.selling_points.data[0] # Create SKU draftItem["sku"] = form.title.data[0].replace(" ", "").strip() # Primary icon image storage f = form.image.data[0] if f: images = UploadSet("images", IMAGES) filename = images.save(f) # symlink to active theme static directory img_src = "".join( [current_app.config["UPLOADED_IMAGES_DEST"], filename]) link = "".join([current_app.config["STATIC_FOLDER"], filename]) os.symlink(img_src, link) src = url_for("static", filename=filename) draftItem["primary_icon"] = {"src": src, "type": ""} jamla["items"].append(draftItem) fp = open(current_app.config["JAMLA_PATH"], "w") yaml.safe_dump(jamla, fp, default_flow_style=False) flash("Item added.") return redirect(url_for("admin.dashboard")) return render_template("admin/add_jamla_item.html", jamla=jamla, form=form)
def set_patch(): user = User.create_from_db_obj.User( mongo.db.users.find_one({"sessionKey": request.form["apiKey"]})) photos = UploadSet('photos', IMAGES) if request.method == 'POST' and 'pic' in request.files: configure_uploads(app, photos) filename = photos.save(request.files['pic']) user.set_patch(filename) return Reply().ok() else: return Reply("could not save image!").error()
def upload_file(): structures = UploadSet(name='structures', extensions=current_app.config['UPLOADED_STRUCTURES_ALLOW']) form = SocketForm() if form.validate_on_submit(): if 'structure' not in request.files: flash('Please upload a structure file.') return redirect(request.url) structure = request.files['structure'] filename = secure_filename(structures.save(structure)) return redirect(url_for('structure_bp.uploaded_file', filename=filename, scut=form.scut.data, kcut=form.kcut.data)) return render_template('upload.html', form=form)
def teacher_recorder(): files = UploadSet('files', ALL) task_id_str = request.form.get("task_id") print(task_id_str) print(type(task_id_str)) student_id_str = request.form.get("student_id") user_task = User_task.query.filter_by(task_id=task_id_str, user_id=student_id_str).one() print(user_task) if task_id_str: print(task_id_str) print(student_id_str) print(user_task) print(type(user_task)) task_id = int(task_id_str) student_id = int(student_id_str) this_task = db.session.query(Task).filter(Task.id == task_id).one() this_student = db.session.query(User).filter(User.id == student_id).one() task_name = this_task.task_name student_number = this_student.user_number name = task_id_str + "_" + task_name + "_" + student_number + ".mp3" print(name) if request.method == 'POST' and 'upfile' in request.files: filename = files.save( request.files['upfile']) # get the file from front end request, return the file name(String) if user_task.record_url: record_id = user_task.record_id print(record_id) upload_file = drive.CreateFile({'id': record_id}) upload_file.SetContentFile("./uploads/files/" + filename) upload_file['title'] = name # set the file name of this file upload_file.Upload() # upload this file else: upload_file = drive.CreateFile() # create the google drive file instance upload_file.SetContentFile("./uploads/files/" + filename) # set our file into this instance upload_file['title'] = name # set the file name of this file upload_file.Upload() # upload this file permission = upload_file.InsertPermission({ 'type': 'anyone', 'value': 'anyone', 'role': 'reader'}) google_file_id = upload_file[ 'id'] # can get this file's google drive-id and use it to save the id into database print(google_file_id) google_url = "https://drive.google.com/uc?authuser=0&id=" + google_file_id + "&export=download" print(google_url) user_task.record_url = google_url user_task.record_id = google_file_id user_task.record_title = name user_task.update() os.remove("./uploads/files/" + filename) # delete this file after uploading it to google drive return redirect(url_for('teacher_view', staff_number=current_user.user_number))
def tfidf(): form = FileForm() text = UploadSet('text', TEXT) if form.validate_on_submit(): filename = text.save(form.text_file.data) flash(u'文件上传成功') BASE_DIR = os.path.dirname(__file__) file_dir = os.path.join(BASE_DIR, 'upload_files/') result = tfidf_calc(file_dir, filename) return render_template('tfidf.html', form=form, result=result) return render_template('tfidf.html', form=form)
def add_item(): form = ItemsForm() if form.validate_on_submit(): draftItem = Item() database.session.add(draftItem) item_requirements = ItemRequirements() draftItem.requirements.append(item_requirements) draftItem.uuid = str(uuid.uuid4()) draftItem.title = form.title.data[0].strip() item_requirements.subscription = bool(form.subscription.data[0]) item_requirements.note_to_seller_required = bool(form.note_to_seller_required.data[0]) item_requirements.note_to_buyer_message = str(form.note_to_buyer_message.data[0]) try: days_before_first_charge = int(form.days_before_first_charge.data[0]) except ValueError: days_before_first_charge = 0 draftItem.days_before_first_charge = days_before_first_charge if form.monthly_price.data[0] is None: draftItem.monthly_price = 0 else: draftItem.monthly_price = int(form.monthly_price.data[0]) * 100 item_requirements.instant_payment = bool( form.instant_payment.data[0] ) if form.sell_price.data[0] is None: draftItem.sell_price = 0 else: draftItem.sell_price = int(form.sell_price.data[0]) * 100 points = form.selling_points.data[0] for point in points: draftItem.selling_points.append(ItemSellingPoints(point=point)) # Primary icon image storage f = form.image.data[0] if f: images = UploadSet("images", IMAGES) filename = images.save(f) # symlink to active theme static directory img_src = "".join([current_app.config["UPLOADED_IMAGES_DEST"], filename]) link = "".join([current_app.config["STATIC_FOLDER"], filename]) os.symlink(img_src, link) src = url_for("static", filename=filename) draftItem.primary_icon = src database.session.commit() flash("Item added.") return redirect(url_for("admin.dashboard")) return render_template("admin/add_item.html", form=form)
def upload(): photos = UploadSet('photos', IMAGES) app.config['UPLOADED_PHOTOS_DEST'] = 'static/uploads' configure_uploads(app, photos) if request.method == 'POST' and 'photo' in request.files: filename = photos.save(request.files['photo']) photo_path = "/static/uploads/" + filename caption = request.form.get("caption") upload_photo(photo_path, caption) return render_template('upload.html')
def upload(): ''' ''' form = PseudoForm() if form.validate_on_submit(): docs = UploadSet('docs',DOCUMENTS) #filename = secure_filename(form.pseudo.data.filename) filename = docs.save(form.pseudo.data) #docs.url(filename) flash('You have save file',filename) else: filename = None return render_template('upload.html',form = form,filename= filename)