コード例 #1
0
ファイル: commands.py プロジェクト: uliwebext/uliweb-ui
    def handle(self, options, global_options, *args):
        from uliweb.utils.pyini import Ini
        from uliweb.utils.common import pkg
        from uliweb.contrib.template.tags import find
        from uliweb.contrib.staticfiles import url_for_static
        from uliweb import json_dumps

        if not options.dest and not options.app:
            print 'Error: Please use -d to specify output app'
            sys.exit(1)

        app = self.get_application(global_options)

        if options.app:
            settings_file = pkg.resource_filename(options.app, 'settings.ini')
            x = Ini(settings_file)

        else:
            x = app.settings

        if options.dest:
            filename = pkg.resource_filename(options.dest, '/static/jsmodules.js')
        else:
            filename = pkg.resource_filename(options.app, '/static/jsmodules.js')

        d = {}
        for name in x.get('TEMPLATE_USE', {}).keys():
            s = find(name)
            m = s[0] + s[1]
            d[name] = [url_for_static(i) for i in m if not i.startswith('<!--')]

        print 'jsmodules.js is saved in {} please check'.format(filename)
        with open(filename, 'wb') as f:
            f.write('var jsmodules = ')
            f.write(json_dumps(d))
コード例 #2
0
ファイル: middle_recorder.py プロジェクト: znanl/uliweb
    def process_response(self, request, response):
        from uliweb import settings, functions, json_dumps
        import base64
        
        #if not debug status it'll quit
        if not settings.get_var('GLOBAL/DEBUG'):
            return response
        
        S = functions.get_model('uliwebrecorderstatus')
        s = S.all().one()
        if not s or s.status == 'E':
            return response
        
        if settings.get_var('ULIWEBRECORDER/response_text'):
            try:
                text = response.data
            except Exception as e:
                text = str(e)
        else:
            text = ''
        
        #test if post_data need to convert base64
        if not request.content_type:
            post_data_is_text = True
        else:
            post_data_is_text = self.test_text(request.content_type)
        if not post_data_is_text:
            post_data = base64.encodestring(request.data)
        else:
            post_data = json_dumps(request.POST.to_dict())

        #test if response.data need to convert base64
        response_data_is_text = self.test_text(response.content_type)
        if not response_data_is_text:
            response_data = base64.encodestring(text)
        else:
            response_data = text

        R = functions.get_model('uliwebrecorder')
        if request.user:
            user_id = request.user.id
        else:
            user_id = None
        max_content_length = settings.get_var('ULIWEBRECORDER/max_content_length')
        if len(response_data) > max_content_length:
            msg = "Content length is great than %d so it will be omitted." % max_content_length
            log.info(msg)
            response_data = msg
            response_data_is_text = True
        recorder = R(method=request.method,
            url=request_url(request),
            post_data_is_text=post_data_is_text,
            post_data=post_data, user=user_id,
            response_data=response_data,
            response_data_is_text=response_data_is_text,
            status_code=response.status_code,
            )
        recorder.save()
        return response
コード例 #3
0
ファイル: views.py プロジェクト: williammoterle10/plugs
    def _upload_file(self, image=False, show_filename=True):
        import os
        import Image
        if image:
            from forms import ImageUploadForm as Form
        else:
            from forms import FileUploadForm as Form
        from uliweb.utils.image import thumbnail_image, fix_filename
        from uliweb import json_dumps

        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 = functions.save_file(filename, f['file'])
                    if form.data['is_thumbnail']:
                        #process thumbnail
                        rfilename, thumbnail = thumbnail_image(
                            functions.get_filename(filename, filesystem=True),
                            filename,
                            settings.get_var('PARA/FORUM_THUMBNAIL_SIZE'))
                        _file = functions.get_href(thumbnail)
                    else:
                        _file = functions.get_href(filename)
                    name = functions.get_href(filename)
                else:
                    filename = functions.save_file(filename, f['file'])
                    name = form.data['title']
                    if not name:
                        name = _f
                    _file = functions.get_href(filename, alt=name)
                ff = File(slug=slug, file_name=filename, name=name)
                ff.save()
                name = json_dumps(name, unicode=True)
                if show_filename:
                    fargs = '||%s' % name[1:-1]
                else:
                    fargs = ''
                return '''<script type="text/javascript">
var url='%s%s';
setTimeout(function(){callback(url);},100);
</script>
''' % (_file, fargs)
            else:
                return {'form': form}
コード例 #4
0
ファイル: common.py プロジェクト: 08haozi/uliweb
    def dump(cls, v, protocal=None):
        from uliweb import json_dumps

        if not protocal:
            return cPickle.dumps(v, cPickle.HIGHEST_PROTOCOL)
        elif protocal == "json":
            return json_dumps(v)
        else:
            raise Exception("Can't support this protocal %s" % protocal)
コード例 #5
0
    def dump(cls, v, protocal=None):
        from uliweb import json_dumps

        if not protocal:
            return cPickle.dumps(v, cPickle.HIGHEST_PROTOCOL)
        elif protocal == 'json':
            return json_dumps(v)
        else:
            raise Exception("Can't support this protocal %s" % protocal)
コード例 #6
0
ファイル: common.py プロジェクト: limodou/uliweb3
    def dump(cls, v, protocal=None):
        from uliweb import json_dumps

        if not protocal:
            pl = cls.protocal_level if cls.protocal_level is not None else pickle.HIGHEST_PROTOCOL
            return pickle.dumps(v, pl)
        elif protocal == 'json':
            return json_dumps(v)
        else:
            raise Exception("Can't support this protocal %s" % protocal)
コード例 #7
0
ファイル: views.py プロジェクト: qq40660/forum2
    def _upload_file(self, image=False, show_filename=True):
        import os
        import Image
        if image:
            from forms import ImageUploadForm as Form
        else:
            from forms import FileUploadForm as Form
        from uliweb.utils.image import thumbnail_image, fix_filename
        from uliweb import json_dumps
        
        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_id>/<filename_yyyy_mm_dd>
                filename = fix_filename('%s/%s' % (forum_id, _f), suffix)
                if image:
                    filename = functions.save_file(filename, f['file'])
                    if form.data['is_thumbnail']:
                        #process thumbnail
                        rfilename, thumbnail = thumbnail_image(functions.get_filename(filename, filesystem=True), filename, settings.get_var('PARA/FORUM_THUMBNAIL_SIZE'))
                        _file = functions.get_href(thumbnail)
                    else:
                        _file = functions.get_href(filename)
                    name = functions.get_href(filename)
                else:
                    filename = functions.save_file(filename, f['file'])
                    name = form.data['title']
                    if not name:
                        name = _f
                    _file = functions.get_href(filename, alt=name)
                ff = File(slug=slug, file_name=filename, name=name)
                ff.save()
                name = json_dumps(name, unicode=True)
                if show_filename:
                    fargs = '||%s' % name[1:-1]
                else:
                    fargs = ''
                return '''<script type="text/javascript">
var url='%s%s';
setTimeout(function(){callback(url);},100);
</script>
''' % (_file, fargs)
            else:
                return {'form':form}
コード例 #8
0
def new_code_comment(visitor, block):
    """
    Format:
        
        {% code-comment target=pre element id %}
        key : value
        key : value
        {% endcode-comment %}    
        
        or
        
        {% code-comment pre element id %}
        key : value
        key : value
        {% endcode-comment %}    
        
    """
    from uliweb import json_dumps
    
    if 'new' in block:
        
        txt = []
        data = {}
        txt.append('<script type="text/code-comment">')
        d = {}
        for line in block['body'].splitlines():
            if line.strip():
                k, v = line.split(':', 1)
                k = k.strip()
                if '=' in v:
                    title, v = v.split('=', 1)
                    title = title.strip()
                else:
                    title = k
                v = visitor.parse_text(v.strip(), 'article')
                d[k] = {'title':title, 'content':v}
        if len(block['kwargs']) == 1 and block['kwargs'].keys()[0] != 'target':
            key = block['kwargs'].keys()[0]
        else:
            key = block['kwargs'].get('target', '')
        if key in data:
            data[key] = data[key].update(d)
        else:
            data[key] = d
        txt.append(json_dumps(data))
        txt.append('</script>')
        return '\n'.join(txt)
    else:
        return code_comment(visitor, block)
コード例 #9
0
def new_code_comment(visitor, block):
    """
    Format:
        
        {% code-comment target=pre element id %}
        key : value
        key : value
        {% endcode-comment %}    
        
        or
        
        {% code-comment pre element id %}
        key : value
        key : value
        {% endcode-comment %}    
        
    """
    from uliweb import json_dumps

    if 'new' in block:

        txt = []
        data = {}
        txt.append('<script type="text/code-comment">')
        d = {}
        for line in block['body'].splitlines():
            if line.strip():
                k, v = line.split(':', 1)
                k = k.strip()
                if '=' in v:
                    title, v = v.split('=', 1)
                    title = title.strip()
                else:
                    title = k
                v = visitor.parse_text(v.strip(), 'article')
                d[k] = {'title': title, 'content': v}
        if len(block['kwargs']) == 1 and block['kwargs'].keys()[0] != 'target':
            key = block['kwargs'].keys()[0]
        else:
            key = block['kwargs'].get('target', '')
        if key in data:
            data[key] = data[key].update(d)
        else:
            data[key] = d
        txt.append(json_dumps(data))
        txt.append('</script>')
        return '\n'.join(txt)
    else:
        return code_comment(visitor, block)
コード例 #10
0
ファイル: md_ext.py プロジェクト: nanguawu/parm
def code_comment(visitor, items):
    """
    Format:
        
        [[code-comment(target=pre element id)]]:
            key : value
            key : value
            
        or:
            
        [[code-comment(pre element id)]]:
            key : value
            key : value
        
    """
    from uliweb import json_dumps
    
    txt = []
    data = {}
    txt.append('<script type="text/code-comment">')
    for x in items:
        d = {}
        for line in x['body'].splitlines():
            if line.strip():
                k, v = line.split(':', 1)
                k = k.strip()
                if '=' in v:
                    title, v = v.split('=', 1)
                    title = title.strip()
                else:
                    title = k
                v = visitor.parse_text(v.strip(), 'article')
                d[k] = {'title':title, 'content':v}
        if len(x['kwargs']) == 1 and x['kwargs'].keys()[0] != 'target':
            key = x['kwargs'].keys()[0]
        else:
            key = x['kwargs'].get('target', '')
        if key in data:
            data[key] = data[key].update(d)
        else:
            data[key] = d
    txt.append(json_dumps(data))
    txt.append('</script>')
    return '\n'.join(txt)
コード例 #11
0
ファイル: md_ext.py プロジェクト: changheluor007/parm
def code_comment(visitor, items):
    """
    Format:
        
        [[code-comment(target=pre element id)]]:
            key : value
            key : value
            
        or:
            
        [[code-comment(pre element id)]]:
            key : value
            key : value
        
    """
    from uliweb import json_dumps

    txt = []
    data = {}
    txt.append('<script type="text/code-comment">')
    for x in items:
        d = {}
        for line in x['body'].splitlines():
            if line.strip():
                k, v = line.split(':', 1)
                k = k.strip()
                if '=' in v:
                    title, v = v.split('=', 1)
                    title = title.strip()
                else:
                    title = k
                v = visitor.parse_text(v.strip(), 'article')
                d[k] = {'title': title, 'content': v}
        if len(x['kwargs']) == 1 and x['kwargs'].keys()[0] != 'target':
            key = x['kwargs'].keys()[0]
        else:
            key = x['kwargs'].get('target', '')
        if key in data:
            data[key] = data[key].update(d)
        else:
            data[key] = d
    txt.append(json_dumps(data))
    txt.append('</script>')
    return '\n'.join(txt)
コード例 #12
0
ファイル: commands.py プロジェクト: zhangchunlin/uliweb-ui
    def handle(self, options, global_options, *args):
        from uliweb.utils.pyini import Ini
        from uliweb.utils.common import pkg
        from uliweb.contrib.template.tags import find
        from uliweb.contrib.staticfiles import url_for_static
        from uliweb import json_dumps

        if not options.dest and not options.app:
            print('Error: Please use -d to specify output app')
            sys.exit(1)

        app = self.get_application(global_options)

        if options.app:
            settings_file = pkg.resource_filename(options.app, 'settings.ini')
            x = Ini(settings_file)

        else:
            x = app.settings

        if options.dest:
            filename = pkg.resource_filename(options.dest,
                                             '/static/jsmodules.js')
        else:
            filename = pkg.resource_filename(options.app,
                                             '/static/jsmodules.js')

        d = {}
        for name in x.get('TEMPLATE_USE', {}).keys():
            s = find(name)
            m = s[0] + s[1]
            d[name] = [
                url_for_static(i) for i in m if not i.startswith('<!--')
            ]

        print('jsmodules.js is saved in {} please check'.format(filename))
        with open(filename, 'wb') as f:
            f.write('var jsmodules = ')
            f.write(json_dumps(d))
コード例 #13
0
    {"1":1}
    >>> print(json_dumps([1,2,3]))
    [1,2,3]
    >>> print(json_dumps((1,2,3)))
    [1,2,3]
    >>> print(json_dumps(12.2))
    12.2
    >>> import decimal
    >>> print(json_dumps(decimal.Decimal("12.3")))
    "12.3"
    >>> print(json_dumps(datetime.datetime(2011, 11, 8)))
    "2011-11-08 00:00:00"
    >>> print(json_dumps(['中文', u('中文', 'utf-8')]))
    ["中文","中文"]
    >>> from uliweb.core.html import Builder
    >>> b = Builder('head', 'body', 'end')
    >>> b.head << '<h1>'
    >>> b.body << 'test'
    >>> b.end << '</h1>'
    >>> print(str(b))
    <h1>
    test
    </h1>
    <BLANKLINE>
    """


from uliweb import json_dumps

print(json_dumps({'a': '中文'}, unicode=True))
コード例 #14
0
ファイル: views.py プロジェクト: tangjn/plugs
    def _upload_file(self, image=False, show_filename=True):
        import os
        import Image

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

        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 = functions.save_file(filename, f["file"])
                    if form.data["is_thumbnail"]:
                        # process thumbnail
                        rfilename, thumbnail = thumbnail_image(
                            functions.get_filename(filename, filesystem=True),
                            filename,
                            settings.get_var("PARA/FORUM_THUMBNAIL_SIZE"),
                        )
                        _file = functions.get_href(thumbnail)
                    else:
                        _file = functions.get_href(filename)
                    name = functions.get_href(filename)
                else:
                    filename = functions.save_file(filename, f["file"])
                    name = form.data["title"]
                    if not name:
                        name = _f
                    _file = functions.get_href(filename, alt=name)
                ff = File(slug=slug, file_name=filename, name=name)
                ff.save()
                name = json_dumps(name, unicode=True)
                if show_filename:
                    fargs = "||%s" % name[1:-1]
                else:
                    fargs = ""
                return """<script type="text/javascript">
var url='%s%s';
setTimeout(function(){callback(url);},100);
</script>
""" % (
                    _file,
                    fargs,
                )
            else:
                return {"form": form}
コード例 #15
0
    def process_response(self, request, response):
        from uliweb import settings, functions, json_dumps
        import base64

        begin_datetime = self.access_datetime
        end_datetime = datetime.now()
        # #if not debug status it'll quit
        # if not settings.get_var('GLOBAL/DEBUG'):
        #     return response

        S = functions.get_model('uliwebrecorderstatus')
        s = S.all().one()
        if not s or s.status == 'E':
            return response

        if settings.get_var('ULIWEBRECORDER/response_text'):
            try:
                text = response.data
            except Exception as e:
                text = str(e)
        else:
            text = ''

        #test if post_data need to convert base64
        if not request.content_type:
            post_data_is_text = True
        else:
            post_data_is_text = self.test_text(request.content_type)
        if not post_data_is_text:
            post_data = base64.encodestring(request.data)
        else:
            post_data = json_dumps(request.POST.to_dict())

        #test if response.data need to convert base64
        response_data_is_text = self.test_text(response.content_type)
        if not response_data_is_text:
            response_data = base64.encodestring(text)
        else:
            response_data = text

        R = functions.get_model('uliwebrecorder')
        if request.user:
            user_id = request.user.id
        else:
            user_id = None
        max_content_length = settings.get_var(
            'ULIWEBRECORDER/max_content_length')
        if len(response_data) > max_content_length:
            msg = "Content length is great than %d so it will be omitted." % max_content_length
            log.info(msg)
            response_data = msg
            response_data_is_text = True
        recorder = R(method=request.method,
                     url=request_url(request),
                     post_data_is_text=post_data_is_text,
                     post_data=post_data,
                     user=user_id,
                     response_data=response_data,
                     response_data_is_text=response_data_is_text,
                     status_code=response.status_code,
                     begin_datetime=begin_datetime,
                     end_datetime=end_datetime,
                     time_used=(end_datetime - begin_datetime).total_seconds())
        recorder_type = settings.get_var('ULIWEBRECORDER/recorder_type')
        if recorder_type == 'db':
            recorder.save()
        elif recorder_type == 'mq':
            mq_name = settings.get_var('ULIWEBRECORDER/mq_name',
                                       default='uliweb_recorder_mq')
            redis = functions.get_redis()
            redis.lpush(mq_name, recorder.dump())
        elif recorder_type == 'stream':
            log.info(recorder.dump())
        return response