def upload(): if request.method == 'POST': for f in request.files: handler = request.files[f] uid = uuid.uuid4().hex original_filename = splitext_(handler.filename)[0] print(original_filename, file=sys.stderr) try: filename = uid + splitext_(handler.filename)[1] handler.save(os.path.join(app.config['UPLOAD_PATH'], filename)) thumbnail.generate_thumbnail(filename) file_path = os.path.join(app.config['UPLOAD_PATH'] + '/', filename) print(file_path, file=sys.stderr) uploaded_file = models.File(file_path=file_path, description='', original_name=original_filename) current_user.add_files([(uploaded_file, 1)]) db.session.commit() logger.info("New file {} uploaded".format(filename), user=current_user.get_id()) except Exception as e: print('Error on line {}'.format(sys.exc_info()[-1].tb_lineno), type(e), e, file=sys.stderr) flash("Your files have been uploaded successfully!", "positive") return jsonify(dict(success=True, message='Files uploaded')) return render_template('upload.html')
def upload(): md5 = request.form['md5'] saveto = request.form['saveto'] name = request.form['name'] path = os.path.join(app.config['UPLOADED_FOLDER'], md5[0:2]) if not os.path.exists(path): os.makedirs(path) path = os.path.join(path, md5) files = getFiles(saveto) for file in files: if file[0] == name and file[1] is not None: flash("文件已存在") return redirect("index") if os.path.isfile(path): flash("秒传成功") file = models.File(userid=current_user.id, virtualpath=saveto + name, md5=md5) db.session.add(file) db.session.commit() else: form = forms.UploadForm(request.form) file = request.files[form.file.name] if file: file.save(path) status = models.Status(md5=md5, status=1) db.session.add(status) db.session.commit() file = models.File(userid=current_user.id, virtualpath=saveto + name, status=status) db.session.add(file) db.session.commit() flash("文件上传成功") else: flash("文件上传失败") return redirect(url_for('index', path=request.args.get('path')))
def enter_name_in_database(filtered_names,filename): success = True existing_names = [] names = models.File.query.order_by(models.File.id) for name in names: existing_names.append(name.name) for name in filtered_names: if name not in existing_names: new_name = models.File(name = name,filename = filename) # creating to do object else: continue try: db.session.add(new_name) db.session.commit() except: success = False return success
def newFolder(): path = request.args.get('path') name = request.args.get('name') next = request.args.get('next') exist = models.File.query.filter_by(userid=current_user.id, virtualpath=path + name + '/').first() if exist is not None: flash("Folder has exists") return redirect(url_for('index', path=path)) file = models.File(userid=current_user.id, virtualpath=path + name + '/', md5=None) db.session.add(file) db.session.commit() if next is not None: return redirect(next) else: return redirect(url_for('index', path=path + name))
def register(): form = forms.RegisterForm(request.form) if request.method == "POST" and form.validate(): db.create_all() find = models.User.query.filter_by(username=form.username.data).first() if (find): flash("该用户名已经被注册") return redirect('register') user = models.User(username=form.username.data, password=hashlib.sha1( form.password.data.encode('gbk')).hexdigest()) file = models.File(virtualpath='/', uploader=user) db.session.add(user) db.session.commit() db.session.add(file) db.session.commit() flash("注册成功") return redirect('login') return render_template('register.html', form=form)
def post(self, **kwargs): """ Add new incident """ post_data = request.get_json() new_incident = models.Incident(title=post_data['title'], description=post_data['description'], location=post_data['location'], reporter=kwargs['user'].id) db.session.add(new_incident) db.session.commit() if 'files' in post_data.keys(): for path in post_data['files']: new_file = models.File(path=path, incident_id=new_incident.id) db.session.add(new_file) db.session.commit() # avoid commiting 2 times response = new_incident.serialize() return make_response(jsonify(response)), 201
def copy(): src = request.args.get('src') dest = request.args.get('dest') path = request.args.get('path') srcpath = request.args.get('srcpath') next = request.args.get('next') if path is None: path = '/' if srcpath is None: srcpath = '/' if path[len(path) - 1] != '/': path = path + '/' if src is None: flash("错误: 不合法的参数") return render_template('jump.html', path=url_for('index', path=path)) elif dest is None: files = getFiles(path) return render_template('select.html', path=path, src=src, files=files, srcpath=srcpath, next=next) else: try: include = dest.index(src) == 0 except: include = False if include: flash("复制失败:目录有包含关系") return render_template('jump.html', path=url_for('index', path=path)) files = getFiles(dest) name = src.split('/') if name[len(name) - 1] == '': # Folder name = (name[len(name) - 2], 'Folder') else: # File name = (name[len(name) - 1], 'File') for file in files: if file[0] == name[0] and ( (name[1] == 'Folder' and file[1] is None) or (name[1] == 'File' and file[2] is not None)): flash("目的文件夹内有相同文件或目录") return render_template('jump.html', path=url_for('index', path=path)) if name[1] == 'File': srcFile = models.File.query.filter_by(userid=current_user.id, virtualpath=src).first() destFile = models.File(userid=current_user.id, virtualpath=dest + name[0], md5=srcFile.md5) db.session.add(destFile) db.session.commit() elif name[1] == 'Folder': srcFiles = models.File.query.filter( and_(models.File.userid == current_user.id, models.File.virtualpath.like(src + '%'))).all() for srcFile in srcFiles: destFile = models.File(userid=current_user.id, virtualpath=srcFile.virtualpath.replace( srcpath, dest, 1), md5=srcFile.md5) db.session.add(destFile) db.session.commit() if next is None: return render_template('jump.html', path=url_for('index', path=path)) else: return render_template('jump.html', path=next)