def render(self, context): try: source = self.src.resolve(context) except VariableDoesNotExist: return None if self.version_prefix: version_prefix = self.version_prefix else: try: version_prefix = self.version_prefix_var.resolve(context) except VariableDoesNotExist: return None directory = context.get('directory', DIRECTORY) try: if isinstance(source, FileObject): source = source.path source = force_unicode(source) version_path = get_version_path(source, version_prefix, directory=directory) if not os.path.isfile(version_path): version_path = version_generator(source, version_prefix, directory=directory) elif os.path.getmtime(source) > os.path.getmtime(version_path): version_path = version_generator(source, version_prefix, force=True, directory=directory) return path_to_url(version_path) except: return ""
def createVersions(self, path): print "generating versions for: ", path from filebrowser.conf import VERSIONS from filebrowser.functions import version_generator for version in VERSIONS: #print " ", version version_generator(path, version, True)
def render(self, context): try: source = self.src.resolve(context) except VariableDoesNotExist: return None if self.version_prefix: version_prefix = self.version_prefix else: try: version_prefix = self.version_prefix_var.resolve(context) except VariableDoesNotExist: return None site = context.get('site', get_default_site()) directory = site.directory try: if isinstance(source, FileObject): site = source.site source = source.path source = force_unicode(source) version_path = get_version_path(source, version_prefix, site=site) if not site.storage.isfile(version_path): version_path = version_generator(source, version_prefix, site=site) elif site.storage.modified_time(source) > site.storage.modified_time(version_path): version_path = version_generator(source, version_prefix, force=True, site=site) return site.storage.url(version_path) except: return ""
def render(self, context): try: source = self.src.resolve(context) except VariableDoesNotExist: return None if self.version_prefix: version_prefix = self.version_prefix else: try: version_prefix = self.version_prefix_var.resolve(context) except VariableDoesNotExist: return None try: if isinstance(source, FileObject): source = source.path source = force_unicode(source) version_path = get_version_path(source, version_prefix) if not os.path.isfile(version_path): version_path = version_generator(source, version_prefix) elif os.path.getmtime(source) > os.path.getmtime(version_path): version_path = version_generator(source, version_prefix, force=True) context[self.var_name] = FileObject(version_path) except: context[self.var_name] = "" return ''
def render(self, context): try: source = self.src.resolve(context) except VariableDoesNotExist: return None if self.version_prefix: version_prefix = self.version_prefix else: try: version_prefix = self.version_prefix_var.resolve(context) except VariableDoesNotExist: return None try: source = force_unicode(source) version_path = get_version_path(url_to_path(source), version_prefix) if not os.path.isfile(smart_str(os.path.join(MEDIA_ROOT, version_path))): # create version version_path = version_generator(url_to_path(source), version_prefix) elif os.path.getmtime(smart_str(os.path.join(MEDIA_ROOT, url_to_path(source)))) > os.path.getmtime(smart_str(os.path.join(MEDIA_ROOT, version_path))): # recreate version if original image was updated version_path = version_generator(url_to_path(source), version_prefix, force=True) context[self.var_name] = FileObject(version_path) except: context[self.var_name] = "" return ''
def render(self, context): try: source = self.src.resolve(context) except VariableDoesNotExist: return None if self.version_prefix: version_prefix = self.version_prefix else: try: version_prefix = self.version_prefix_var.resolve(context) except VariableDoesNotExist: return None site = context.get('site', get_default_site()) directory = site.directory try: if isinstance(source, FileObject): site = source.site source = source.path if isinstance(source, File): source = source.name source = force_unicode(source) if FORCE_PLACEHOLDER: source = PLACEHOLDER elif SHOW_PLACEHOLDER and not site.storage.isfile(source): source = PLACEHOLDER version_path = get_version_path(source, version_prefix, site=site) if not site.storage.isfile(version_path): version_path = version_generator(source, version_prefix, site=site) elif site.storage.modified_time(source) > site.storage.modified_time(version_path): version_path = version_generator(source, version_prefix, force=True, site=site) context[self.var_name] = FileObject(version_path, site=site) except: context[self.var_name] = "" return ''
def create_versions(path): print "generating versions for: ", path from filebrowser.settings import VERSIONS from filebrowser.functions import version_generator for version in VERSIONS: # print " ", version version_generator(path, version, True)
def version_generate(self, version_suffix): version_path = get_version_path(self.path, version_suffix) if not os.path.isfile(version_path): version_path = version_generator(self.path, version_suffix) elif os.path.getmtime(self.path) > os.path.getmtime(version_path): version_path = version_generator(self.path, version_suffix, force=True) return FileObject(version_path)
def version_generate(self, version_suffix): version_path = get_version_path(self.path, version_suffix, media_root=self.media_root) if not os.path.isfile(version_path): version_path = version_generator(self.path, version_suffix, media_root=self.media_root) elif os.path.getmtime(self.path) > os.path.getmtime(version_path): version_path = version_generator(self.path, version_suffix, force=True, media_root=self.media_root) return FileObject(version_path, media_root=self.media_root, media_url=self.media_url)
def version_generate(self, version_suffix): version_path = get_version_path(self.path, version_suffix, site=self.site) if not self.site.storage.isfile(version_path): version_path = version_generator(self.path, version_suffix, site=self.site) elif self.site.storage.modified_time(self.path) > self.site.storage.modified_time(version_path): version_path = version_generator(self.path, version_suffix, force=True, site=self.site) return FileObject(version_path, site=self.site)
def test_get_version_path(self): for version in settings.FILEBROWSER_VERSIONS: version_generator("2/rss.gif", version) for version in settings.FILEBROWSER_VERSIONS: path = get_version_path("2/rss.gif", version) ends = "rss_" + version + ".gif" print("Path [%s] have to ends with [%s], version [%s]\n" % (path, ends, version)) self.assertTrue(path.endswith(ends), "Path [%s] is not ends with [%s]" % (path, ends,)) for version2 in settings.FILEBROWSER_VERSIONS: path2 = get_version_path(path, version2) ends = "rss_" + version2 + ".gif" print("Path [%s] have to ends with [%s], version [%s->%s]\n" % (path2, ends, version, version2)) self.assertTrue(path2.endswith(ends), "Path [%s] is not ends with [%s]" % (path2, ends,)) ends = "rss.gif" orig_path = get_version_path(path, None) print("Path [%s] have to ends with [%s], version [%s->]\n" % (orig_path, ends, version)) self.assertTrue(orig_path.endswith(ends), "Path [%s] is not ends with [%s]" % (path2, ends,)) orig_path = get_version_path(path) print("Path [%s] have to ends with [%s], version [%s->]\n" % (orig_path, ends, version)) self.assertTrue(orig_path.endswith(ends), "Path [%s] is not ends with [%s]" % (path2, ends,))
def render(self, context): try: source = self.src.resolve(context) except VariableDoesNotExist: return None if self.version_prefix: version_prefix = self.version_prefix else: try: version_prefix = self.version_prefix_var.resolve(context) except VariableDoesNotExist: return None try: source = force_unicode(source) version_path = get_version_path(url_to_path(source), version_prefix) if not os.path.isfile( smart_str(os.path.join(MEDIA_ROOT, version_path))): # create version version_path = version_generator(url_to_path(source), version_prefix) elif os.path.getmtime( smart_str(os.path.join( MEDIA_ROOT, url_to_path(source)))) > os.path.getmtime( smart_str(os.path.join(MEDIA_ROOT, version_path))): # recreate version if original image was updated version_path = version_generator(url_to_path(source), version_prefix, force=True) context[self.var_name] = FileObject(version_path) except: context[self.var_name] = "" return ''
def render(self, context): try: source = self.src.resolve(context) except VariableDoesNotExist: return None if self.version_prefix: version_prefix = self.version_prefix else: try: version_prefix = self.version_prefix_var.resolve(context) except VariableDoesNotExist: return None site = context.get('filebrowser_site', get_default_site()) directory = site.directory try: if isinstance(source, FileObject): site = source.site source = source.path if isinstance(source, File): source = source.name source = force_unicode(source) if FORCE_PLACEHOLDER: source = PLACEHOLDER elif SHOW_PLACEHOLDER and not site.storage.isfile(source): source = PLACEHOLDER version_path = get_version_path(source, version_prefix, site=site) if not site.storage.isfile(version_path): version_path = version_generator(source, version_prefix, site=site) elif site.storage.modified_time(source) > site.storage.modified_time(version_path): version_path = version_generator(source, version_prefix, force=True, site=site) context[self.var_name] = FileObject(version_path, site=site) except: context[self.var_name] = "" return ''
def render(self, context): try: source = self.src.resolve(context) except VariableDoesNotExist: return None if self.version_prefix: version_prefix = self.version_prefix else: try: version_prefix = self.version_prefix_var.resolve(context) except VariableDoesNotExist: return None try: version_path = get_version_path( url_to_path(source), version_prefix ) if not os.path.isfile(smart_str(os.path.join(fb_settings.MEDIA_ROOT, version_path))): # create version version_path = version_generator( url_to_path(source), version_prefix ) elif os.path.getmtime(smart_str(os.path.join(fb_settings.MEDIA_ROOT, url_to_path(source)))) > os.path.getmtime(smart_str(os.path.join(fb_settings.MEDIA_ROOT, version_path))): # recreate version if original image was updated version_path = version_generator( url_to_path(source), version_prefix, force=True ) return path_to_url(version_path) except: return ""
def render(self, context): try: source = self.src.resolve(context) except VariableDoesNotExist: return None if self.version_prefix: version_prefix = self.version_prefix else: try: version_prefix = self.version_prefix_var.resolve(context) except VariableDoesNotExist: return None media_root = context.get('media_root', MEDIA_ROOT) media_url = context.get('media_url', MEDIA_URL) try: if isinstance(source, FileObject): source = source.path source = force_unicode(source) version_path = get_version_path(source, version_prefix, media_root=media_root) if not os.path.isfile(version_path): version_path = version_generator(source, version_prefix, media_root=media_root) elif os.path.getmtime(source) > os.path.getmtime(version_path): version_path = version_generator(source, version_prefix, force=True, media_root=media_root) context[self.var_name] = FileObject(version_path, media_root=media_root, media_url=media_url) except: context[self.var_name] = "" return ''
def generate_fb_version(image_path, version_suffix): from filebrowser.functions import get_version_path, version_generator version_path = get_version_path(image_path, version_suffix) if not os.path.isfile(version_path): version_path = version_generator(image_path, version_suffix) elif os.path.getmtime(image_path) > os.path.getmtime(version_path): version_path = version_generator(image_path, version_suffix, force=True) return version_path
def createVersions(self, path, selected_version): if selected_version: self.stdout.write('generating version "%s" for: %s\n' % (selected_version, path)) version_generator(path, selected_version, True) else: self.stdout.write('generating all versions for: %s\n' % path) for version in VERSIONS: version_generator(path, version, True)
def get_image_version(source, version_prefix): source = force_unicode(source) version_path = get_version_path(url_to_path(source), version_prefix) if not os.path.isfile(smart_str(os.path.join(MEDIA_ROOT, version_path))): # create version version_path = version_generator(url_to_path(source), version_prefix) elif os.path.getmtime(smart_str(os.path.join(MEDIA_ROOT, url_to_path(source)))) > os.path.getmtime(smart_str(os.path.join(MEDIA_ROOT, version_path))): # recreate version if original image was updated version_path = version_generator(url_to_path(source), version_prefix, force=True) return path_to_url(version_path)
def rename(request): """ Rename existing File/Directory. Includes renaming existing Image Versions/Thumbnails. """ from filebrowser.forms import RenameForm # QUERY / PATH CHECK query = request.GET path = get_path(query.get("dir", "")) filename = get_file(query.get("dir", ""), query.get("filename", "")) if path is None or filename is None: if path is None: msg = _("The requested Folder does not exist.") else: msg = _("The requested File does not exist.") request.user.message_set.create(message=msg) return HttpResponseRedirect(reverse("fb_browse")) abs_path = u"%s" % os.path.join(MEDIA_ROOT, DIRECTORY, path) file_extension = os.path.splitext(filename)[1].lower() if request.method == "POST": form = RenameForm(abs_path, file_extension, request.POST) if form.is_valid(): relative_server_path = os.path.join(DIRECTORY, path, filename) new_filename = form.cleaned_data["name"] + file_extension new_relative_server_path = os.path.join(DIRECTORY, path, new_filename) try: # PRE RENAME SIGNAL filebrowser_pre_rename.send(sender=request, path=path, filename=filename, new_filename=new_filename) # RENAME ORIGINAL os.rename(safe_join(MEDIA_ROOT, relative_server_path), safe_join(MEDIA_ROOT, new_relative_server_path)) # DELETE IMAGE VERSIONS/THUMBNAILS # regenerating versions/thumbs will be done automatically for version in VERSIONS: try: os.unlink(os.path.join(MEDIA_ROOT, get_version_path(relative_server_path, version))) except: pass if PRERENDER_VERSIONS: version_generator(new_relative_server_path, version) # POST RENAME SIGNAL filebrowser_post_rename.send(sender=request, path=path, filename=filename, new_filename=new_filename) # MESSAGE & REDIRECT msg = _("Renaming was successful.") request.user.message_set.create(message=msg) redirect_url = reverse("fb_browse") + query_helper(query, "", "filename") return HttpResponseRedirect(redirect_url) except OSError, (errno, strerror): form.errors["name"] = forms.util.ErrorList([_("Error.")])
def versions(request): """ Show all Versions for an Image according to ADMIN_VERSIONS. """ # QUERY / PATH CHECK query = request.GET path = get_path(query.get("dir", "")) filename = get_file(query.get("dir", ""), query.get("filename", "")) if path is None or filename is None: if path is None: msg = _("The requested Folder does not exist.") else: msg = _("The requested File does not exist.") request.user.message_set.create(message=msg) return HttpResponseRedirect(reverse("fb_browse")) # abs_path = u'%s' % os.path.join(MEDIA_ROOT, DIRECTORY, path) path = os.path.join(DIRECTORY, path, filename) settings_var = get_settings_var() if request.POST: formset = ImageCropDataFormSet(request.POST, queryset=ImageCropData.objects.filter(path=path)) if formset.is_valid(): formset.save() for version in settings_var.get("ADMIN_VERSIONS", {}): # TODO: or at least, only do if needed version_generator(path, version) else: raise Exception("Somehow formset became invalid: %s" % formset.errors) return HttpResponseRedirect("") # We have to create all the versions first, so the crop data form has something to fill with #TODO: this could work better somehow for version in VERSIONS: version_for_image(path, version) formset = ImageCropDataFormSet(queryset=ImageCropData.objects.filter(path=path)) return render_to_response( "filebrowser/versions.html", { "original": path_to_url(path), "query": query, "title": _(u'Versions for "%s"') % filename, "settings_var": settings_var, "breadcrumbs": get_breadcrumbs(query, path), "breadcrumbs_title": _(u'Versions for "%s"') % filename, "formset": formset, }, context_instance=Context(request), )
def version_generate(self, version_suffix): path = self.path if FORCE_PLACEHOLDER or ( SHOW_PLACEHOLDER and not self.site.storage.isfile(path)): path = PLACEHOLDER version_path = get_version_path(path, version_suffix, site=self.site) if not self.site.storage.isfile(version_path): version_path = version_generator(path, version_suffix, site=self.site) elif self.site.storage.modified_time(path) > self.site.storage.modified_time(version_path): version_path = version_generator(path, version_suffix, force=True, site=self.site) return FileObject(version_path, site=self.site)
def version_generate(self, version_suffix): version_path = get_version_path(self.path, version_suffix, site=self.site) if not self.site.storage.isfile(version_path): version_path = version_generator(self.path, version_suffix, site=self.site) elif self.site.storage.modified_time( self.path) > self.site.storage.modified_time(version_path): version_path = version_generator(self.path, version_suffix, force=True, site=self.site) return FileObject(version_path, site=self.site)
def render(self, context): try: source = self.src.resolve(context) except VariableDoesNotExist: return None if self.version_prefix: version_prefix = self.version_prefix else: try: version_prefix = self.version_prefix_var.resolve(context) except VariableDoesNotExist: return None site = context.get('filebrowser_site', get_default_site()) directory = site.directory try: if isinstance(source, FileObject): site = source.site source = source.path if isinstance(source, File): source = source.name source = force_unicode(source) if FORCE_PLACEHOLDER: source = PLACEHOLDER elif SHOW_PLACEHOLDER and not site.storage.isfile(source): source = PLACEHOLDER version_path = version_generator(source, version_prefix, site=site) return version_path except: return ""
def _upload_file(self, request): """ Upload file to the server. """ if request.method == "POST": folder = request.GET.get('folder', '') if request.is_ajax(): # Advanced (AJAX) submission filedata = ContentFile(request.raw_post_data) else: # Basic (iframe) submission if len(request.FILES) != 1: raise Http404('Invalid request! Multiple files included.') filedata = request.FILES.values()[0] try: filedata.name = convert_filename(request.GET['qqfile']) except KeyError: return HttpResponseBadRequest('Invalid request! No filename given.') fb_uploadurl_re = re.compile(r'^.*(%s)' % reverse("filebrowser:fb_upload", current_app=self.name)) folder = fb_uploadurl_re.sub('', folder) path = os.path.join(self.directory, folder) file_name = os.path.join(path, filedata.name) file_already_exists = self.storage.exists(file_name) # Check for name collision with a directory if file_already_exists and self.storage.isdir(file_name): ret_json = {'success': False, 'filename': filedata.name} return HttpResponse(json.dumps(ret_json)) signals.filebrowser_pre_upload.send(sender=request, path=request.POST.get('folder'), file=filedata, site=self) uploadedfile = handle_file_upload(path, filedata, site=self) if file_already_exists and OVERWRITE_EXISTING: old_file = smart_unicode(file_name) new_file = smart_unicode(uploadedfile) self.storage.move(new_file, old_file, allow_overwrite=True) else: file_name = smart_unicode(uploadedfile) fobj = FileObject(smart_unicode(file_name), site=self) signals.filebrowser_post_upload.send(sender=request, path=request.POST.get('folder'), file=fobj, site=self) if fobj.filetype == "Image": version_path = get_version_path(fobj.path,ADMIN_THUMBNAIL,site=self) if not self.storage.isfile(version_path): version_path = version_generator(fobj.path, ADMIN_THUMBNAIL, site=self) thumbnail_path = self.storage.url(version_path) else: thumbnail_path = '' # let Ajax Upload know whether we saved it or not ret_json = {'success': True, 'filename': filedata.name, 'path': fobj.path, 'url': fobj.url, 'thumbnail': thumbnail_path, 'filetype': fobj.filetype } return HttpResponse(json.dumps(ret_json))
def _upload_file(request): """ Upload file to the server. """ from django.core.files.move import file_move_safe if request.method == "POST": folder = request.POST.get("folder") fb_uploadurl_re = re.compile(r"^.*(%s)" % reverse("fb_upload")) folder = fb_uploadurl_re.sub("", folder) abs_path = os.path.join(MEDIA_ROOT, DIRECTORY, folder) if request.FILES: filedata = request.FILES["Filedata"] filedata.name = convert_filename(filedata.name) # PRE UPLOAD SIGNAL filebrowser_pre_upload.send(sender=request, path=request.POST.get("folder"), file=filedata) # HANDLE UPLOAD uploadedfile = handle_file_upload(os.path.join(DIRECTORY, folder), filedata) # MOVE UPLOADED FILE # if file already exists if os.path.isfile(smart_str(os.path.join(MEDIA_ROOT, DIRECTORY, folder, filedata.name))): old_file = smart_str(os.path.join(abs_path, filedata.name)) new_file = smart_str( os.path.join(MEDIA_ROOT, uploadedfile) ) # uploadedfile already contains 'directory, folder' try: file_move_safe(new_file, old_file, allow_overwrite=True) except Exception, exc: # print exc raise # Create versions if necessary if PRERENDER_VERSIONS: for version in VERSIONS: version_generator(uploadedfile, version) # POST UPLOAD SIGNAL filebrowser_post_upload.send( sender=request, path=request.POST.get("folder"), file=FileObject(smart_str(os.path.join(DIRECTORY, folder, filedata.name))), )
def version_generate(self, version_suffix): path = self.path if FORCE_PLACEHOLDER or (SHOW_PLACEHOLDER and not self.site.storage.isfile(path)): path = PLACEHOLDER version_path = get_version_path(path, version_suffix, site=self.site) if not self.site.storage.isfile(version_path): version_path = version_generator(path, version_suffix, site=self.site) elif self.site.storage.modified_time( path) > self.site.storage.modified_time(version_path): version_path = version_generator(path, version_suffix, force=True, site=self.site) return FileObject(version_path, site=self.site)
def render(self, context): try: source = self.src.resolve(context) except VariableDoesNotExist: return None if self.version_prefix: version_prefix = self.version_prefix else: try: version_prefix = self.version_prefix_var.resolve(context) except VariableDoesNotExist: return None try: source = force_unicode(source) version_path = get_version_path(source, version_prefix) if not os.path.isfile(version_path): version_path = version_generator(source, version_prefix) elif os.path.getmtime(source) > os.path.getmtime(version_path): version_path = version_generator(source, version_prefix, force=True) return path_to_url(version_path) except: return ""
def url_of_image_version(self, image_path, version): """ :type image_path: basestring :type version: basestring :return: unicode """ if not image_path or not isinstance(image_path, basestring): raise ValueError('image_path is null or not string') location = fbfunctions.get_version_path(fbfunctions.url_to_path(image_path), '') gallery_path = fbfunctions.version_generator(location, version) if not gallery_path: raise ValueError("invalid image %s" % (image_path,)) return self.full_url(fbfunctions.path_to_url(gallery_path))
def test_gallery_url(self): for key in settings.FILEBROWSER_VERSIONS: version_generator("1_gal.jpg", key) self.assertEqual(portal_service.url_of_gallery_image_version("1_gal.jpg"), "http://test.com/1_gal_gallery.jpg") self.assertLess( os.path.getsize(os.path.join(settings.FILEBROWSER_MEDIA_ROOT, "1_gal_gallery.jpg")), os.path.getsize(os.path.join(settings.FILEBROWSER_MEDIA_ROOT, "1_gal.jpg"))) self.assertEqual(portal_service.url_of_gallery_image_version("1_gal_ix.jpg"), "http://test.com/1_gal_gallery.jpg") self.assertGreater( os.path.getsize(os.path.join(settings.FILEBROWSER_MEDIA_ROOT, "1_gal_gallery.jpg")), os.path.getsize(os.path.join(settings.FILEBROWSER_MEDIA_ROOT, "1_gal_ix.jpg"))) self.assertEqual(portal_service.url_of_gallery_image_version("1_gal_smallIx.jpg"), "http://test.com/1_gal_gallery.jpg") self.assertGreater( os.path.getsize(os.path.join(settings.FILEBROWSER_MEDIA_ROOT, "1_gal_gallery.jpg")), os.path.getsize(os.path.join(settings.FILEBROWSER_MEDIA_ROOT, "1_gal_smallIx.jpg"))) # def test_gallery_url # class ImagesUrlsTest
def generate_images(request, city, data): """生成不同版本图片""" v.dataDict = simplejson.loads(data) v.cityDict = simplejson.loads(city) type = v.cityDict['type'] places = v.dataDict[0] area = Area.objects.get(zh_name=v.cityDict['zh_name']) resource_path = os.path.join(settings.MEDIA_ROOT, 'uploads', area.en_name) area_dir_path = os.path.join(settings.STATIC_ROOT, 'cities', area.en_name) if not os.path.isdir(area_dir_path): os.mkdir(area_dir_path) export_path = os.path.join(area_dir_path, 'images') if not os.path.isdir(export_path): os.mkdir(export_path) for place in places: #首先通过英文名称查找 findit = True count = 0 while findit: count += 1 if type == 'en': file_name = convert_name(place['en_name'] + '_%d' % count) elif type == 'zh': file_name = convert_name(place['zh_name'] + '_%d' % count) full_path = resource_path + '/' + file_name if os.path.isfile(full_path + '.jpg'): file_ext = '.jpg' elif os.path.isfile(full_path + '.jpeg'): file_ext = '.jpeg' else: findit = False if findit: for path in [ version_generator(full_path + file_ext, version, force=True) for version in ['thumbnail', 'small', 'medium', 'big'] ]: try: shutil.move(path, export_path) except: raise IOError return simplejson.dumps({'message': 'ok'})
def generate_images(request,city, data): """生成不同版本图片""" v.dataDict = simplejson.loads(data) v.cityDict = simplejson.loads(city) type = v.cityDict['type'] places = v.dataDict[0] area = Area.objects.get(zh_name=v.cityDict['zh_name']) resource_path = os.path.join(settings.MEDIA_ROOT, 'uploads', area.en_name) area_dir_path = os.path.join(settings.STATIC_ROOT,'cities',area.en_name) if not os.path.isdir(area_dir_path): os.mkdir(area_dir_path) export_path = os.path.join(area_dir_path,'images') if not os.path.isdir(export_path): os.mkdir(export_path) for place in places: #首先通过英文名称查找 findit = True count = 0 while findit: count += 1 if type == 'en': file_name = convert_name(place['en_name'] + '_%d' % count) elif type == 'zh': file_name = convert_name(place['zh_name'] + '_%d' % count) full_path = resource_path + '/' + file_name if os.path.isfile(full_path + '.jpg'): file_ext = '.jpg' elif os.path.isfile(full_path + '.jpeg'): file_ext = '.jpeg' else: findit = False if findit: for path in [version_generator(full_path+file_ext, version, force=True) for version in ['thumbnail', 'small', 'medium', 'big']]: try: shutil.move(path, export_path) except: raise IOError return simplejson.dumps({'message':'ok'})
def _upload_file(self, request): """ Upload file to the server. """ if request.method == "POST": folder = request.GET.get('folder', '') if request.is_ajax(): # Advanced (AJAX) submission filedata = ContentFile(request.raw_post_data) else: # Basic (iframe) submission if len(request.FILES) != 1: raise Http404('Invalid request! Multiple files included.') filedata = request.FILES.values()[0] try: filedata.name = convert_filename(request.GET['qqfile']) except KeyError: return HttpResponseBadRequest( 'Invalid request! No filename given.') fb_uploadurl_re = re.compile( r'^.*(%s)' % reverse("filebrowser:fb_upload", current_app=self.name)) folder = fb_uploadurl_re.sub('', folder) path = os.path.join(self.directory, folder) file_name = os.path.join(path, filedata.name) file_already_exists = self.storage.exists(file_name) # Check for name collision with a directory if file_already_exists and self.storage.isdir(file_name): ret_json = {'success': False, 'filename': filedata.name} return HttpResponse(json.dumps(ret_json)) signals.filebrowser_pre_upload.send( sender=request, path=request.POST.get('folder'), file=filedata, site=self) uploadedfile = handle_file_upload(path, filedata, site=self) if file_already_exists and OVERWRITE_EXISTING: old_file = smart_unicode(file_name) new_file = smart_unicode(uploadedfile) self.storage.move(new_file, old_file, allow_overwrite=True) else: file_name = smart_unicode(uploadedfile) fobj = FileObject(smart_unicode(file_name), site=self) signals.filebrowser_post_upload.send( sender=request, path=request.POST.get('folder'), file=fobj, site=self) if fobj.filetype == "Image": version_path = get_version_path(fobj.path, ADMIN_THUMBNAIL, site=self) if not self.storage.isfile(version_path): version_path = version_generator(fobj.path, ADMIN_THUMBNAIL, site=self) thumbnail_path = self.storage.url(version_path) else: thumbnail_path = '' # let Ajax Upload know whether we saved it or not ret_json = { 'success': True, 'filename': filedata.name, 'path': fobj.path, 'url': fobj.url, 'thumbnail': thumbnail_path, 'filetype': fobj.filetype } return HttpResponse(json.dumps(ret_json))
def natural_key(self): profile = self.profile return { 'name': self.get_full_name() if self.first_name else self.username, 'profile_image': version_generator(profile.profile_image.path, 'profile-image-thumb').replace(settings.MEDIA_ROOT, settings.MEDIA_URL), }