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))
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
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}
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)
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)
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)
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}
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)
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)
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)
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)
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))
{"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))
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}
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