def _get_file_type(self): "Get file type as defined in EXTENSIONS." file_type = '' for k, v in EXTENSIONS.iteritems(): for extension in v: if self.extension.lower() == extension.lower(): file_type = k return file_type
def _get_file_type(self): "Get file type as defined in EXTENSIONS." file_type = '' for k, v in EXTENSIONS.items(): for extension in v: if self.extension.lower() == extension.lower(): file_type = k return file_type
def __init__(self, max_length=None, min_length=None, site=None, directory=None, extensions=None, format=None, *args, **kwargs): self.max_length, self.min_length = max_length, min_length self.site = kwargs.pop('filebrowser_site', site) self.directory = directory self.extensions = extensions if format: self.format = format or '' self.extensions = extensions or EXTENSIONS.get(format) super(FileBrowseFormField, self).__init__(*args, **kwargs)
def __init__(self, max_length=None, min_length=None, site=None, directory=None, extensions=None, format=None, upload_to=None, temp_upload_dir=None, *args, **kwargs): self.max_length, self.min_length = max_length, min_length self.site = kwargs.pop('filebrowser_site', site) self.directory = directory self.format = format or '' self.extensions = extensions or EXTENSIONS.get(format.title()) self.upload_to = upload_to self.temp_upload_dir = temp_upload_dir super(FileBrowseAndUploadFormField, self).__init__(*args, **kwargs)
def _get_format_type(self): "Get format type as defined in SELECT_FORMATS." format_type = [] for k, v in SELECT_FORMATS.items(): for item in v: for extension in EXTENSIONS.get(item, None): if self.extension.lower() == extension.lower(): format_type.append(k) return format_type
def get_file_extensions(qs): extensions = [] if "type" in qs and qs.get("type") in SELECT_FORMATS: for format in SELECT_FORMATS.get(qs.get("type"), []): extensions.extend(EXTENSIONS[format]) else: for k, v in EXTENSIONS.items(): for item in v: if item: extensions.append(item) return extensions
def __init__(self, max_length=None, min_length=None, site=None, directory=None, extensions=None, format=None, upload_to=None, temp_upload_dir=None, *args, **kwargs): self.max_length, self.min_length = max_length, min_length self.site = site self.directory = directory self.extensions = extensions if format: self.format = format or '' self.extensions = extensions or EXTENSIONS.get(format) self.upload_to = upload_to self.temp_upload_dir = temp_upload_dir super(FileBrowseUploadFormField, self).__init__(*args, **kwargs)
def get_file_type(filename): """ Get file type as defined in EXTENSIONS. """ file_extension = os.path.splitext(filename)[1].lower() file_type = '' for k, v in EXTENSIONS.items(): for extension in v: if file_extension == extension.lower(): file_type = k return file_type
def get_file_extensions(qs): extensions = [] if "type" in qs and qs.get("type") in SELECT_FORMATS: for format in SELECT_FORMATS.get(qs.get("type"), []): extensions.extend(EXTENSIONS[format]) else: for k, v in EXTENSIONS.items(): for item in v: if item: extensions.append(item) extensions = '","'.join(extensions) extensions = '["%s"]' % extensions return mark_safe(extensions)
def __init__(self, max_length=None, min_length=None, extensions=None, format=None, *args, **kwargs): self.max_length, self.min_length = max_length, min_length self.directory = kwargs.pop('directory', '') self.extensions = extensions self.format = format or '' self.extensions = extensions or EXTENSIONS.get(format) attrs = { "directory": self.directory, "extensions": self.extensions, "format": self.format } self.widget = FileBrowseWidget(attrs) super(FileBrowseFormField, self).__init__(*args, **kwargs)
def clean(self, value): value = super(FileBrowseFormField, self).clean(value) if value == '': return value file_extension = os.path.splitext(value)[1].lower() if isinstance(self.extensions, basestring): extensions_list = EXTENSIONS.get(self.extensions) else: extensions_list = self.extensions if self.extensions and file_extension not in extensions_list: raise forms.ValidationError(self.error_messages['extension'] % { 'ext': file_extension, 'allowed': ", ".join(self.extensions) }) return value
def browse(request): """ Browse Files/Directories. """ # QUERY / PATH CHECK query = request.GET.copy() path = get_path(query.get('dir', '')) directory = get_path('') if 'pop' in query: is_popup = True else: is_popup = False if path is not None: abs_path = _check_access(request, path) if path is None: msg = _('The requested Folder does not exist.') messages.warning(request, message=msg) if directory is None: # The DIRECTORY does not exist, # raise an error to prevent eternal redirecting. raise ImproperlyConfigured( _("Error finding Upload-Folder. Maybe it does not exist?")) redirect_url = reverse("fb_browse") + query_helper(query, "", "dir") return HttpResponseRedirect(redirect_url) # INITIAL VARIABLES results_var = { 'results_total': 0, 'results_current': 0, 'delete_total': 0, 'images_total': 0, 'select_total': 0 } counter = {} for k, v in EXTENSIONS.items(): counter[k] = 0 dir_list = os.listdir(abs_path) files = [] for file in dir_list: # EXCLUDE FILES MATCHING VERSIONS_PREFIX OR ANY OF THE EXCLUDE PATTERNS filtered = file.startswith('.') for re_prefix in filter_re: if re_prefix.search(file): filtered = True if filtered: continue results_var['results_total'] += 1 # CREATE FILEOBJECT fileobject = FileObject(os.path.join(fb_settings.DIRECTORY, path, file)) # FILTER / SEARCH append = False if fileobject.filetype == request.GET.get('filter_type', fileobject.filetype) and \ get_filterdate(request.GET.get('filter_date', ''), fileobject.date): append = True if request.GET.get('q') and not re.compile( request.GET.get('q').lower(), re.M).search(file.lower()): append = False # APPEND FILE_LIST if append: _type = query.get('type') try: # COUNTER/RESULTS if fileobject.filetype == 'Image': results_var['images_total'] += 1 if fileobject.filetype != 'Folder': results_var['delete_total'] += 1 elif fileobject.filetype == 'Folder' and fileobject.is_empty: results_var['delete_total'] += 1 if _type and _type in SELECT_FORMATS and \ fileobject.filetype in SELECT_FORMATS[_type]: results_var['select_total'] += 1 elif not _type: results_var['select_total'] += 1 except OSError: # Ignore items that have problems continue else: files.append(fileobject) results_var['results_current'] += 1 # COUNTER/RESULTS if fileobject.filetype: counter[fileobject.filetype] += 1 # SORTING query['o'] = request.GET.get('o', DEFAULT_SORTING_BY) query['ot'] = request.GET.get('ot', DEFAULT_SORTING_ORDER) files = sort_by_attr(files, request.GET.get('o', DEFAULT_SORTING_BY)) if not request.GET.get( 'ot') and DEFAULT_SORTING_ORDER == "desc" or request.GET.get( 'ot') == "desc": files.reverse() p = Paginator(files, LIST_PER_PAGE) try: page_nr = int(request.GET.get('p', '1')) except ValueError: page_nr = 1 try: page = p.page(page_nr) except (EmptyPage, InvalidPage): page = p.page(p.num_pages) return render( request, _template() + 'index.html', { 'dir': path, 'p': p, 'page': page, 'results_var': results_var, 'counter': counter, 'query': query, 'title': _(u'FileBrowser'), 'settings_var': get_settings_var(), 'breadcrumbs': get_breadcrumbs(query, path), 'breadcrumbs_title': "", 'is_popup': is_popup })