def clean_suffix(self): valid = get_valid_filename(self.cleaned_data['suffix']) if valid != self.cleaned_data['suffix']: raise forms.ValidationError( _('Suffix should be a valid, simple and lowercase filename part, like "%(valid)s".' ) % {'valid': valid}) return self.cleaned_data['suffix']
def get_logical_path(self): '''returns logical path like /directory/file.jpg''' folders = [f.quoted_logical_path for f in self.logical_path if hasattr(f, 'quoted_logical_path')] return os.path.join('/'.join(folders), get_valid_filename(self.original_filename))
def year_month(instance, filename): """ yyyy-mm/filename.jpg """ foldername = datetime.date.today().strftime('%Y-%m') filename = get_valid_filename(filename) return os.path.join(foldername, filename)
def get_logical_path(self): '''returns logical path like /directory/file.jpg''' folders = [ f.quoted_logical_path for f in self.logical_path if hasattr(f, 'quoted_logical_path') ] return os.path.join('/'.join(folders), get_valid_filename(self.original_filename))
def no_subfolders(instance, filename): """ for the minimalist attention, in case of filename collisions, files might get renamed to "originalname_huievad676asd.ext", which is automatically done by the django storage backend """ return get_valid_filename(filename)
def very_short_uuid4(instance, filename): """ very short (2chars) uuid4 path and the filename https://stackoverflow.com/a/13484764/1029469 at most about 1100 folders will be created, and files distributed within """ filename = get_valid_filename(filename) return os.path.join(str(uuid.uuid4())[:2], filename)
def short_uuid4(instance, filename): """ short (8chars) uuid4 path and the filename https://stackoverflow.com/a/13484764/1029469 should be safe enough for most cases """ filename = get_valid_filename(filename) return os.path.join(str(uuid.uuid4())[:8], filename)
def db_folder(instance, filename): """ tries to get the db folder's name, and use this. """ foldername = '' if instance.folder: foldername = slugify(instance.folder.name) filename = get_valid_filename(filename) return os.path.join(foldername, filename)
def complete_db_folder(instance, filename): """ get the db folder's name, it's parents, it's parents. etc. """ foldername = '' if instance.folder: folder = instance.folder foldername = slugify(instance.folder.name) while folder.parent: foldername = os.path.join(slugify(folder.parent.name), foldername) folder = folder.parent filename = get_valid_filename(filename) return os.path.join(foldername, filename)
def generate_filename_by_folder(instance, filename): filename = instance.name or filename folder_part = '' folders = [] folder = instance.folder if folder: while folder: folders.append(folder.name) folder = folder.parent folders.reverse() folder_part = '/'.join(folders) # check file for sub folder storage - [ image or video ] # file_type = filename.split('.')[1] # if file_type in ['dv', 'mov', 'mp4', 'avi', 'ywmv',]: # folder_part = folder_part +'/videos' # else: # folder_part = folder_part +'/images' return os.path.join(folder_part, get_valid_filename(filename))
def by_pca(instance, filename): if hasattr(instance, 'pcafile_set'): pca_file = instance.pcafile_set.all() if pca_file.count(): pca_file = pca_file[0] partner = pca_file.pca.partner.name pca_number = pca_file.pca.number file_type = pca_file.type file_path = u'{partner}/{pca}/{type}'.format(partner=partner, pca=pca_number, type=file_type) file_name = get_valid_filename(instance.name) return os.path.join(file_path, file_name) return by_date(instance, filename)
def by_pca(instance, filename): if hasattr(instance, 'pcafile_set'): pca_file = instance.pcafile_set.all() if pca_file.count(): pca_file = pca_file[0] partner = pca_file.pca.partner.name pca_number = pca_file.pca.number file_type = pca_file.type file_path = u'{partner}/{pca}/{type}'.format( partner=partner, pca=pca_number, type=file_type ) file_name = get_valid_filename(instance.name) return os.path.join(file_path, file_name) return by_date(instance, filename)
def by_date(instance, filename): datepart = force_text(now().strftime("%Y/%m/%d")) return os.path.join(datepart, get_valid_filename(filename))
def randomized(instance, filename): import uuid uuid_str = str(uuid.uuid4()) return os.path.join(uuid_str[0:2], uuid_str[2:4], uuid_str, get_valid_filename(filename))
def by_date(self, filename): datepart = force_unicode(datetime.datetime.now().strftime("/%Y/%m/%d/%H/%M")) return os.path.join(datepart, get_valid_filename(filename))
def randomized(instance, filename): import uuid uuid_str = str(uuid.uuid4()) random_path = u"%s/%s/%s" % (uuid_str[0:2], uuid_str[2:4], uuid_str) return os.path.join(random_path, get_valid_filename(filename))
def by_date(instance, filename): datepart = force_unicode(datetime.datetime.now().strftime( smart_str("%Y/%m/%d"))) return os.path.join(datepart, get_valid_filename(filename))
def filer_namer(_inst, filename): """ Organize files into folders based on year only """ return os.path.join("{}".format(date.today().year - 2000), get_valid_filename(filename))
def get_logical_path(self): '''returns logical path like /directory/file.jpg''' return os.path.join(self.folder.quoted_logical_path if self.folder else '', get_valid_filename(self.original_filename))
def by_date(instance, filename): datepart = force_unicode(datetime.datetime.now().strftime(smart_str("%Y/%m/%d"))) return os.path.join(datepart, get_valid_filename(filename))
def get_logical_path(self): '''returns logical path like /directory/file.jpg''' return os.path.join( self.folder.quoted_logical_path if self.folder else '', get_valid_filename(self.original_filename))
def clean_suffix(self): valid = get_valid_filename(self.cleaned_data['suffix']) if valid != self.cleaned_data['suffix']: raise forms.ValidationError(_('Suffix should be a valid, simple and lowercase filename part, like "%(valid)s".') % {'valid': valid}) return self.cleaned_data['suffix']
def get_logical_path(self): """returns logical path like /directory/file.jpg""" folders = [f.quoted_logical_path for f in self.logical_path if hasattr(f, "quoted_logical_path")] return os.path.join("/".join(folders), get_valid_filename(self.original_filename))