Example #1
0
 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 ""
Example #2
0
 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)
Example #3
0
 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 ""
Example #4
0
 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 ''
Example #5
0
 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)
Example #8
0
 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)
Example #9
0
 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)
Example #10
0
 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,))
Example #12
0
 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 ''
Example #13
0
 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 ''
Example #14
0
 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
     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
     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 ''
Example #17
0
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 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)
Example #20
0
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)
Example #21
0
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.")])
Example #22
0
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),
    )
Example #23
0
    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)
Example #24
0
 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 ""
Example #26
0
    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))
Example #27
0
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))),
            )
Example #28
0
    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)
Example #29
0
 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 ""
Example #30
0
    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))
Example #31
0
    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
Example #32
0
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'})
Example #33
0
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'})
Example #34
0
    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))
Example #35
0
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),
	}