Esempio n. 1
0
    def _upload_file(self, image=False):
        import os
        import Image
        from uliweb.contrib.upload import get_url, save_file, get_filename

        if image:
            from forms import ImageUploadForm as Form
        else:
            from forms import FileUploadForm as Form
        from uliweb.utils.image import thumbnail_image, fix_filename

        File = get_model("forumattachment")

        forum_id = request.GET.get("forum_id")
        slug = request.GET.get("slug")
        form = Form()
        suffix = date.now().strftime("_%Y_%m_%d")
        if request.method == "GET":
            form.bind({"is_thumbnail": True})
            return {"form": form}
        else:
            flag = form.validate(request.values, request.files)
            if flag:
                f = form.data["filedata"]
                _f = os.path.basename(f["filename"])
                # 文件格式为forum/<forum_id>/<filename_yyyy_mm_dd>
                filename = fix_filename("forum/%s/%s" % (forum_id, _f), suffix)
                if image:
                    filename = save_file(filename, f["file"])
                    if form.data["is_thumbnail"]:
                        # process thumbnail
                        rfilename, thumbnail = thumbnail_image(
                            get_filename(filename, filesystem=True),
                            filename,
                            settings.get_var("PARA/FORUM_THUMBNAIL_SIZE"),
                        )
                        _file = get_url(thumbnail)
                    else:
                        _file = get_url(filename)
                    name = get_url(filename)
                else:
                    filename = save_file(filename, f["file"])
                    _file = get_url(filename)
                    name = form.data["title"]
                    if not name:
                        name = _f
                ff = File(slug=slug, file_name=filename, name=name)
                ff.save()
                return """<script type="text/javascript">
var url='%s||%s';
setTimeout(function(){callback(url);},100);
</script>
""" % (
                    _file,
                    name,
                )
            else:
                return {"form": form}
Esempio n. 2
0
    def _upload_file(self, image=False, show_filename=True):
        import os
        import Image
        from uliweb.contrib.upload import get_url, save_file, get_filename
        if image:
            from forms import ImageUploadForm as Form
        else:
            from forms import FileUploadForm as Form
        from uliweb.utils.image import thumbnail_image, fix_filename

        File = get_model('forumattachment')

        forum_id = request.GET.get('forum_id')
        slug = request.GET.get('slug')
        form = Form()
        suffix = date.now().strftime('_%Y_%m_%d')
        if request.method == 'GET':
            form.bind({'is_thumbnail': True})
            return {'form': form}
        else:
            flag = form.validate(request.values, request.files)
            if flag:
                f = form.data['filedata']
                _f = os.path.basename(f['filename'])
                #文件格式为forum/<forum_id>/<filename_yyyy_mm_dd>
                filename = fix_filename('forum/%s/%s' % (forum_id, _f), suffix)
                if image:
                    filename = save_file(filename, f['file'])
                    if form.data['is_thumbnail']:
                        #process thumbnail
                        rfilename, thumbnail = thumbnail_image(
                            get_filename(filename, filesystem=True), filename,
                            settings.get_var('PARA/FORUM_THUMBNAIL_SIZE'))
                        _file = get_url(thumbnail)
                    else:
                        _file = get_url(filename)
                    name = get_url(filename)
                else:
                    filename = save_file(filename, f['file'])
                    _file = get_url(filename)
                    name = form.data['title']
                    if not name:
                        name = _f
                ff = File(slug=slug, file_name=filename, name=name)
                ff.save()
                if show_filename:
                    fargs = '||%s' % name
                else:
                    fargs = ''
                return '''<script type="text/javascript">
var url='%s%s';
setTimeout(function(){callback(url);},100);
</script>
''' % (_file, fargs)
            else:
                return {'form': form}
Esempio n. 3
0
    def _upload_file(self, image=False, show_filename=True):
        import os
        import Image
        from uliweb.contrib.upload import get_url, save_file, get_filename
        if image:
            from forms import ImageUploadForm as Form
        else:
            from forms import FileUploadForm as Form
        from uliweb.utils.image import thumbnail_image, fix_filename
        
        File = get_model('forumattachment')
        
        forum_id = request.GET.get('forum_id')
        slug = request.GET.get('slug')
        form = Form()
        suffix = date.now().strftime('_%Y_%m_%d')
        if request.method == 'GET':
            form.bind({'is_thumbnail':True})
            return {'form':form}
        else:
            flag = form.validate(request.values, request.files)
            if flag:
                f = form.data['filedata']
                _f = os.path.basename(f['filename'])
                #文件格式为forum/<forum_id>/<filename_yyyy_mm_dd>
                filename = fix_filename('forum/%s/%s' % (forum_id, _f), suffix)
                if image:
                    filename = save_file(filename, f['file'])
                    if form.data['is_thumbnail']:
                        #process thumbnail
                        rfilename, thumbnail = thumbnail_image(get_filename(filename, filesystem=True), filename, settings.get_var('PARA/FORUM_THUMBNAIL_SIZE'))
                        _file = get_url(thumbnail)
                    else:
                        _file = get_url(filename)
                    name = get_url(filename)
                else:
                    filename = save_file(filename, f['file'])
                    _file = get_url(filename)
                    name = form.data['title']
                    if not name:
                        name = _f
                ff = File(slug=slug, file_name=filename, name=name)
                ff.save()
                if show_filename:
                    fargs = '||%s' % name
                else:
                    fargs = ''
                return '''<script type="text/javascript">
var url='%s%s';
setTimeout(function(){callback(url);},100);
</script>
''' % (_file, fargs)
            else:
                return {'form':form}
Esempio n. 4
0
 def edit_image(self):
     from forms import UploadImageForm
     from uliweb.utils.generic import EditView
     from uliweb.contrib.upload import get_url, get_filename
     import os
     import Image
     
     def pre_save(obj, data):
         if 'image' in data and data['image']:
             data['image'].filename = _get_portrait_image_filename(request.user.id)
             
     image = _get_portrait_image_filename(request.user.id)
     f = get_filename(image)
     if os.path.exists(f):
         url = get_url(image)
         img = Image.open(f)
         template_data = {'image_url':url, 'size':img.size}
     else:
         url = None
         template_data = {'image_url':url, 'size':(0, 0)}
         
     view = EditView('user', condition=request.user.id, ok_url=url_for(UserView.edit_image),
         pre_save=pre_save, fields=['image'], template_data=template_data)
     
     return view.run()
Esempio n. 5
0
 def view(self, id):
     from uliweb.utils.generic import DetailView
     from uliweb import orm
     from uliweb.contrib.upload import get_filename, get_url
     import os
     
     User = orm.get_model('user')
     
     def boolean_convert(b, obj):
         if b:
             return '<div class="ui-icon ui-icon-check"></div>'
         else:
             return '<div class="ui-icon ui-icon-closethick"></div>'
     
     user = User.get(int(id))
     if not user:
         error(_('User is not exists!'))
         
     image = get_filename(_get_portrait_image_thumbnail(user.id))
     if os.path.exists(image):
         image_url = get_url(_get_portrait_image_thumbnail(user.id))
     else:
         image_url = user.get_image_url()
     can_modify = user.id == request.user.id
     template_data = {'image_url':image_url, 'can_modify':can_modify}
     view = DetailView('user', obj=user, template_data=template_data)
     view.types_convert_map = {orm.BooleanProperty:boolean_convert}
     return view.run()
Esempio n. 6
0
    def _clear_files(self, slug, text):
        import re
        import itertools
        from uliweb.contrib.upload import get_filename, get_url
        from uliweb.utils.image import fix_filename
        File = get_model('forumattachment')

        r_links = re.compile(
            r'<a.*?href=\"([^"]+)\"|<img.*?src=\"([^"]+)\"|<embed.*?src=\"([^"]+)\"',
            re.DOTALL)
        files = filter(None, itertools.chain(*re.findall(r_links, text)))
        for row in File.filter(File.c.slug == slug):
            _f = get_filename(row.file_name)
            url = get_url(row.file_name)
            if url in files:
                row.enabled = True
                row.save()
            else:
                if os.path.exists(_f):
                    os.unlink(_f)
                thumbnail = fix_filename(_f, '.thumbnail')
                if os.path.exists(thumbnail):
                    os.unlink(thumbnail)

        File.filter(File.c.slug == slug).filter(
            File.c.enabled == False).remove()
Esempio n. 7
0
 def get_image_url(self):
     from uliweb.contrib.upload import get_url
     from uliweb.contrib.staticfiles import url_for_static
     
     if self.image:
         return get_url(self.image)
     else:
         return url_for_static('images/user%dx%d.jpg' % (50, 50))
Esempio n. 8
0
 def delete(self, id):
     from uliweb.utils.generic import DeleteView
     
     if request.user.is_superuser:
         view = DeleteView('user', condition=int(id), ok_url=get_url('list'))
         return view.run()
     else:
         flash(_('You have no previlege to delete user.'), 'error')
         return redirect(url_for(users_view, id=id))
Esempio n. 9
0
 def delete(self, id):
     from uliweb.utils.generic import DeleteView
     
     if request.user.is_superuser:
         view = DeleteView('user', condition=int(id), ok_url=get_url('list'))
         return view.run()
     else:
         flash(_('You have no previlege to delete user.'), 'error')
         return redirect(url_for(users_view, id=id))
Esempio n. 10
0
def get_user_image(user, size=50):
    from uliweb.contrib.upload import get_filename, get_url
    import os
    
    image = get_filename(_get_portrait_image_thumbnail(user.id, size))
    if os.path.exists(image):
        image_url = get_url(_get_portrait_image_thumbnail(user.id, size))
    else:
        image_url = user.get_default_image_url(size)
    return image_url
Esempio n. 11
0
def get_user_image(user, size=50):
    from uliweb.contrib.upload import get_filename, get_url
    import os

    image = get_filename(_get_portrait_image_thumbnail(user.id, size))
    if os.path.exists(image):
        image_url = get_url(_get_portrait_image_thumbnail(user.id, size))
    else:
        image_url = user.get_default_image_url(size)
    return image_url
Esempio n. 12
0
    def edit(self, id):
        from uliweb.utils.generic import EditView
        from forms import EditUserForm

        if request.user.is_superuser:
            view = EditView('user', condition=int(id), ok_url=get_url('view', id=id),
                form_cls=EditUserForm, meta='AdminEditForm')
            return view.run()
        else:
            flash(_('You have no previlege to edit user.'), 'error')
            return redirect(request.referrer)
Esempio n. 13
0
    def edit(self, id):
        from uliweb.utils.generic import EditView
        from forms import EditUserForm

        if request.user.is_superuser:
            view = EditView('user', condition=int(id), ok_url=get_url('view', id=id),
                form_cls=EditUserForm)
            return view.run()
        else:
            flash(_('You have no previlege to edit user.'), 'error')
            return redirect(request.referrer)
Esempio n. 14
0
 def add(self):
     from uliweb.utils.generic import AddView
     from uliweb.orm import get_model
     from forms import AddUserForm
     
     
     def post_save(obj, data):
         obj.set_password(settings.USER_ADMIN.DEFAULT_PASSWORD)
         
     if request.user.is_superuser:
         view = AddView('user', get_url('view'), post_save=post_save, form_cls=AddUserForm)
         return view.run()
     else:
         flash(_('You have no previlege to create user.'), 'error')
         return redirect(url_for(config_users_list))
Esempio n. 15
0
 def _clear_files(self, slug, text):
     import re
     import itertools
     from uliweb.contrib.upload import get_filename, get_url
     from uliweb.utils.image import fix_filename
     File = get_model('forumattachment')
     
     r_links = re.compile(r'<a.*?href=\"([^"]+)\"|<img.*?src=\"([^"]+)\"|<embed.*?src=\"([^"]+)\"', re.DOTALL)
     files = filter(None, itertools.chain(*re.findall(r_links, text)))
     for row in File.filter(File.c.slug==slug):
         _f = get_filename(row.file_name)
         url = get_url(row.file_name)
         if url in files:
             row.enabled = True
             row.save()
         else:
             if os.path.exists(_f):
                 os.unlink(_f)
             thumbnail = fix_filename(_f, '.thumbnail')
             if os.path.exists(thumbnail):
                 os.unlink(thumbnail)
             
     File.filter(File.c.slug==slug).filter(File.c.enabled==False).remove()