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
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