예제 #1
0
def folder(folder_name):
    try:
        folder = Folder.get(Folder.name == folder_name)
    except peewee.DoesNotExist:
        return jsonify(message="error"), 404

    if request.method == "GET":
        return jsonify(message="OK", data=model_to_dict(folder, backrefs=True))

    if request.method == "POST":
        f = request.files["file"]
        if f:
            actual_filename = generate_filename(folder_name, f.filename)
            target_file = os.path.join(
                os.path.expanduser(config.UPLOAD_FOLDER), actual_filename)
            if os.path.exists(target_file):
                return jsonify(message="error"), 409

            try:
                f.save(target_file)
                f2 = File.create(folder=folder,
                                 filename=f.filename,
                                 public_share_url=generate_url(),
                                 open_public_share=False)
                f2.save()
            except Exception as e:
                print(e)
                return jsonify(message="error"), 500

            return jsonify(message="OK"), 201

    if request.method == "DELETE":
        try:
            for f in folder.files:
                actual_filename = generate_filename(folder_name, f.filename)
                target_file = os.path.join(
                    os.path.expanduser(config.UPLOAD_FOLDER), actual_filename)
                f2 = File.get(File.filename == f.filename)
                f2.delete_instance()
                if os.path.exists(target_file):
                    os.remove(target_file)
            folder.delete_instance()
        except Exception as e:
            return jsonify(message="error"), 409

    return jsonify(message="OK")
예제 #2
0
파일: app.py 프로젝트: kissthink/MyCloud
def folder(folder_name):
    try:
        f = Folder.get(name=folder_name)
    except peewee.DoesNotExist:
        return jsonify(message='error'), 404

    if request.method == 'POST':
        file = request.files['file']
        if file:
            actual_filename = secure_filename(
                folder_name + '_' + file.filename)
            if os.path.exists(os.path.join(app.config['UPLOAD_FOLDER'], actual_filename)):
                return jsonify(message='error'), 409
            file.save(
                os.path.join(app.config['UPLOAD_FOLDER'], actual_filename))
            f2 = File.create(folder=folder_name,
                             filename=file.filename,
                             public_share_url=generate_url(),
                             private_share_url=generate_url(),
                             private_share_password=generate_password(),
                             open_public_share=False,
                             open_private_share=False)
            f2.save()
            return jsonify(message='OK'), 201

    if request.method == 'GET':
        files = File.select().where(File.folder == folder_name)
        items = [{
            'filename': x.filename,
            'public': x.public_share_url,
            'private': x.private_share_url,
            'password': x.private_share_password,
            'openPublic': x.open_public_share,
            'openPrivate': x.open_private_share
        } for x in files]

        return jsonify(message='OK', items=items)

    if request.method == 'DELETE':
        try:
            f.delete_instance()
        except peewee.IntegrityError:
            return jsonify(message='error'), 409
        return jsonify(message='OK')
예제 #3
0
 def get(self, key):
     folder = Folder.get(key)
     self.render('views/admin/folderedit.html', {
         'folder': folder,
         'key': key
     })
예제 #4
0
 def get(self, key):
     folder = Folder.get(key)
     folder.delete()
     self.redirect('/admin/folder/', '302')
예제 #5
0
파일: admin.py 프로젝트: tenwx/gaed
 def get(self,key):
     folder=Folder.get(key)
     self.render('views/admin/folderedit.html', {'folder':folder,'key':key})
예제 #6
0
파일: admin.py 프로젝트: tenwx/gaed
 def get(self,key):
     folder = Folder.get(key)
     folder.delete()
     self.redirect('/admin/folder/', '302')