Ejemplo n.º 1
0
def upload_group_file(path):
    form = UploadForm()
    user = User.query.get(current_user.id)
    if form.validate_on_submit():
        f = request.files['upload']
        emails = form.email.data
        users = [user]
        for email in emails.split(","):
            u = User.query.filter_by(email=email).first()
            if not u or u not in currentFolder.AccessFolder:
                flash(
                    "Please enter correct user emails and users with rights to the directory"
                )
                return render_template(
                    'fileModification/upload_group/upload_group_file.html',
                    title='Upload Group File',
                    form=form,
                    path=path)
            users.append(u)
        currentFolder = Folder.query.filter_by(id=path).first()
        fileDb = File(name=f.filename,
                      parent=currentFolder,
                      AccessFile=users,
                      groupFile=True)
        fileDb.lastRequest = "upload"
        fileDb.idAcceptance = str(user.id)
        db.session.add(fileDb)
        f.save(os.path.join(returnPathOfFolder(currentFolder.id), f.filename))
        db.session.commit()
        return redirect(url_for('index'))
    return render_template(
        'fileModification/upload_group/upload_group_file.html',
        title='Upload Group File',
        form=form,
        path=path)
Ejemplo n.º 2
0
def upload_normal_file(path):
    form = UploadForm()
    user = User.query.get(current_user.id)
    if form.validate_on_submit():
        f = request.files['upload']
        emails = form.email.data
        users = [user]
        for email in emails.split(","):
            u = User.query.filter_by(email=email).first()
            if u and u in currentFolder.AccessFolder:
                users.append(u)
        currentFolder = Folder.query.filter_by(id=path).one()
        fileDb = File(name=f.filename, parent=currentFolder, AccessFile=users)
        db.session.add(fileDb)
        path = returnPathOfFolder(currentFolder.id)
        name = f.filename
        files = f.read()
        key = Fernet.generate_key()
        fernet = Fernet(key)
        fileDb.encryptionKey = key

        encrypted = fernet.encrypt(files)
        with open(os.path.join(path, name), 'wb') as fa:
            fa.write(encrypted)
        db.session.commit()
        return redirect(url_for('index'))
    return render_template(
        'fileModification/upload_normal/upload_normal_file.html',
        title='Upload Normal file',
        form=form,
        path=path)
Ejemplo n.º 3
0
def upload_normal_directory(path):
    form = UploadDirectoryForm()
    user = User.query.get(current_user.id)
    currentFolder = Folder.query.filter_by(id=path).first()
    if form.validate_on_submit():
        emails = form.email.data
        users = [user]
        for email in emails.split(","):
            u = User.query.filter_by(email=email).first()
            if u and u in currentFolder.AccessFolder:
                users.append(u)
        uploaded_files = request.files.getlist("files")
        for f in uploaded_files:
            filename = secure_filename(f.filename.split("/")[-1])
            uploadFile = File(name=filename,
                              parent=currentFolder,
                              AccessFile=users)
            db.session.add(uploadFile)
            db.session.commit()
            f.save(os.path.join(returnPathOfFolder(currentFolder.id),
                                filename))
        return redirect(url_for('index'))
    return render_template(
        'fileModification/upload_normal/upload_normal_directory.html',
        title='Upload Normal file',
        form=form,
        path=path)
Ejemplo n.º 4
0
def deleteFolder(id):
    f = Folder.query.filter_by(id=id).one()
    for subf in f.subFolders:
        deleteFolder(subf.id)
    for subf in f.subFiles:
        deleteFile(subf.id)
    folderPath = returnPathOfFolder(id)
    print(folderPath)
    os.rmdir(folderPath)
    db.session.delete(f)
    db.session.commit()
    flash(f.name + " has been deleted correctly")
    return redirect(url_for("currentPath", path=f.parent.id))
Ejemplo n.º 5
0
def recAddToZip(zipFile, itemId):
    files = File.query.filter_by(folderId=itemId)
    for f in files:
        if current_user in f.AccessFile and f.AccessFile.count() == 1:
            path = returnPathOfFolder(itemId)
            with open(os.path.join(path, f.name), 'rb') as fo:
                data = fo.read()
            fernet = Fernet(f.encryptionKey)
            decrypted = fernet.decrypt(data)

            zipFile.writestr(f.name,
                             decrypted,
                             compress_type=zipFile.compression)
    folder = Folder.query.get(itemId)
    for f in folder.subFolders:
        recAddToZip(zipFile, f.id)
Ejemplo n.º 6
0
def currentPath(path):
    form = CreateFolder()
    user = User.query.get(current_user.id)
    indexToSuppress = []
    currentFolder = Folder.query.get(path)
    currentFiles = []
    for i in range(len(user.files)):
        f = user.files[i]
        currentFiles.append(f)
        if f.parent.name != currentFolder.name:
            indexToSuppress.append(i)
    for i in range(len(indexToSuppress)):
        currentFiles.pop(indexToSuppress[i] - i)
    indexToSuppress = []
    currentFolders = []
    for i in range(len(user.folders)):
        f = user.folders[i]
        currentFolders.append(f)
        if f.parent.name != currentFolder.name:
            indexToSuppress.append(i)
    for i in range(len(indexToSuppress)):
        currentFolders.pop(indexToSuppress[i] - i)
    if form.validate_on_submit():
        dirName = returnPathOfFolder(
            currentFolder.id) + "/" + form.folderName.data
        if not os.path.exists(dirName):
            os.mkdir(dirName)
            flash("Directory " + form.folderName.data + " Created ")
        else:
            flash("Directory " + form.folderName.data + " already exists")
        newFolder = Folder(name=form.folderName.data, parent=currentFolder)
        newFolder.AccessFolder.append(user)
        db.session.add(newFolder)
        db.session.commit()
        return redirect(
            url_for("currentPath", title="Home", path=currentFolder.id))
    return render_template('home/home.html',
                           title="Home",
                           user=user,
                           files=currentFiles,
                           folders=currentFolders,
                           form=form,
                           parent=currentFolder.parent,
                           path=path)