Exemplo n.º 1
0
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')
Exemplo n.º 2
0
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')))
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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))
Exemplo n.º 5
0
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)
Exemplo n.º 6
0
    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
Exemplo n.º 7
0
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)