Exemplo n.º 1
0
def uploadFile(f, comment=None, groups=None):
    ''' Storing file and writing information into database.

    :param f: storing file.
    :param comment: comments for file.
    :param group: share with group.
    :return: True if ok, otherwise False.
    '''
    checksum = hashlib.md5(f.read()).hexdigest()

    # getting file size
    f.seek(0, os.SEEK_END)
    file_size = f.tell()

    # save file ot disk
    path = os.path.join(application.config.get('WEB_UPLOAD_DIR'), checksum)

    if not os.path.exists(path):
        f.seek(0)
        f.save(path)

    if not groups:
        upload_file = File(name=secure_filename(f.filename),
                           checksum=checksum,
                           timestamp=datetime.now(),
                           comment=comment,
                           size=file_size)

        upload_file.account = current_user

        try:
            db.session.add(upload_file)
            db.session.commit()
        except IntegrityError as ex:
            application.logger.error(ex)
            db.session.rollback()
    else:
        for group in groups:
            upload_file = File(name=secure_filename(f.filename),
                               checksum=checksum,
                               timestamp=datetime.now(),
                               comment=comment,
                               size=file_size)

            # owner & group
            upload_file.account = current_user
            upload_file.group = group

            try:
                db.session.add(upload_file)
                db.session.commit()
            except IntegrityError as ex:
                application.logger.error(ex)
                db.session.rollback()

    return checksum
Exemplo n.º 2
0
def saveFile(f, comment=None, groups=None):
    checksum = hashlib.md5(f.read()).hexdigest()

    file_size = writeFile(f, checksum)

    uploaded = File.query.filter_by(checksum=checksum).first()

    if not uploaded:
        uploaded = File(name=secure_filename(f.filename),
                        checksum=checksum,
                        timestamp=datetime.now(),
                        comment=comment,
                        size=file_size)
        uploaded.account = current_user
        db.session.add(uploaded)

    uploaded.groups.extend(groups)

    try:
        db.session.commit()
    except IntegrityError as ex:
        application.logger.error(ex)
        db.session.rollback()
        return False

    return True