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 __init__( self, action=None, method=None, buttons=None, validators=None, html_attrs=None, data=None, errors=None, idtype="name", title="", vars=None, layout=None, id=None, _class="", **kwargs ): self.form_action = action or self.form_action or request_url() self.form_method = method or self.form_method self.form_title = title or self.form_title self.form_class = _class or self.form_class self.form_id = id or self.form_id self.kwargs = kwargs buttons = ( buttons or self.form_buttons or [str(Button(value=_("Submit"), _class="btn btn-primary", name="submit", type="submit"))] ) if buttons: if isinstance(buttons, (tuple, list)): self._buttons = list(buttons) else: self._buttons = [buttons] self.validators = validators or [] self.html_attrs = html_attrs or {} if "_class" in self.html_attrs: self.html_attrs["class"] = self.html_attrs.pop("_class") self.idtype = idtype self.layout = layout or self.layout self.vars = vars for name, obj in self.fields_list: obj.idtype = self.idtype if self.form_class: self.html_attrs["class"] = self.form_class # + ' ' + DEFAULT_FORM_CLASS if "class" not in self.html_attrs: self.html_attrs["class"] = "" if self.form_id: self.html_attrs["id"] = self.form_id self.form_class = self.html_attrs.get("class") self.form_id = self.html_attrs.get("id") self.bind(data or {}, errors or {}) self.__init_validators() self.ok = True
def get_language_from_request(request, settings): #check query_string, and the key will be defined in settings.ini #now only support GET method debug = '__debug__' in request.GET log = getLogger(__name__) url_lang_key = settings.get_var('I18N/URL_LANG_KEY') if url_lang_key: lang = request.GET.get(url_lang_key) if lang: if debug: log.info('Detect from URL=%s, lang_key=%s, lang=%s' % (request_url(), url_lang_key, lang)) return lang #check session if hasattr(request, 'session'): lang = request.session.get('uliweb_language') if lang: if debug: log.info('Detect from session=%s, lang=%s' % ('uliweb_language', lang)) return lang #check cookie lang = request.cookies.get(settings.I18N.LANGUAGE_COOKIE_NAME) if lang: if debug: log.info('Detect from cookie=%s, lang=%s' % (settings.I18N.LANGUAGE_COOKIE_NAME, lang)) return lang #check browser HTTP_ACCEPT_LANGUAGE head accept = request.environ.get('HTTP_ACCEPT_LANGUAGE', None) if not accept: if debug: log.info('Detect from settings of LANGUAGE_CODE=%s' % lang) return settings.I18N.get('LANGUAGE_CODE') languages = settings.I18N.get('SUPPORT_LANGUAGES', []) for accept_lang, unused in parse_accept_lang_header(accept): if accept_lang == '*': break normalized = format_locale(accept_lang) if not normalized: continue if normalized in languages: if debug: log.info('Detect from HTTP Header=%s, lang=%s' % ('HTTP_ACCEPT_LANGUAGE', normalized)) return normalized #return default lanaguage lang = settings.I18N.get('LANGUAGE_CODE') if debug: log.info('Detect from settings of LANGUAGE_CODE=%s' % lang) return lang
def __init__(self, action=None, method=None, buttons=None, validators=None, html_attrs=None, data=None, errors=None, idtype='name', title='', vars=None, layout=None, id=None, _class='', **kwargs): self.form_action = action or self.form_action or request_url() self.form_method = method or self.form_method self.form_title = title or self.form_title self.form_class = _class or self.form_class self.kwargs = kwargs buttons = buttons or self.form_buttons or [ str( Button(value=_('Submit'), _class="btn btn-primary", name="submit", type="submit")) ] if buttons: if isinstance(buttons, (tuple, list)): self._buttons = list(buttons) else: self._buttons = [buttons] self.validators = validators or [] self.html_attrs = html_attrs or {} if '_class' in self.html_attrs: self.html_attrs['class'] = self.html_attrs.pop('_class') self.idtype = idtype self.layout = layout or self.layout self.vars = vars for name, obj in self.fields_list: obj.idtype = self.idtype if self.form_class: self.html_attrs[ 'class'] = self.form_class # + ' ' + DEFAULT_FORM_CLASS if 'class' not in self.html_attrs: self.html_attrs['class'] = '' self.form_class = self.html_attrs.get('class') self.form_id = id or self.html_attrs.get('id') or self.form_id self.bind(data or {}, errors or {}) self.__init_validators() self.ok = True
def __init__(self, action=None, method=None, buttons=None, validators=None, html_attrs=None, data=None, errors=None, idtype='name', title='', vars=None, layout=None, id=None, _class='', **kwargs): self.form_action = action or self.form_action or request_url() self.form_method = method or self.form_method self.form_title = title or self.form_title self.form_class = _class or self.form_class self.form_id = id or self.form_id self.kwargs = kwargs buttons = buttons or self.form_buttons or [str(Button(value=_('Submit'), _class="btn btn-primary", name="submit", type="submit"))] if buttons: if isinstance(buttons, (tuple, list)): self._buttons = list(buttons) else: self._buttons = [buttons] self.validators = validators or [] self.html_attrs = html_attrs or {} if '_class' in self.html_attrs: self.html_attrs['class'] = self.html_attrs.pop('_class') self.idtype = idtype self.layout = layout or self.layout self.__class__.layout_class = get_form_layout_class(self.layout_class) self.vars = vars for name, obj in self.fields_list: obj.idtype = self.idtype if self.form_class: self.html_attrs['class'] = self.form_class# + ' ' + DEFAULT_FORM_CLASS if 'class' not in self.html_attrs: self.html_attrs['class'] = '' if self.form_id: self.html_attrs['id'] = self.form_id self.form_class = self.html_attrs.get('class') self.form_id = self.html_attrs.get('id') self.bind(data or {}, errors or {}) self.__init_validators() self.ok = True
def list(self): query_view = self._create_query_view() if 'data' in request.values: rows_data = [ {'c1': '大分类一', 'c2': '小分类1', 'c3': '数据', 'c4': '数据', 'c5': '数据'}, {'c1': '大分类一', 'c2': '小分类2', 'c3': '数据', 'c4': '数据', 'c5': '数据'}, {'c1': '大分类一', 'c2': '小分类2', 'c3': '数据', 'c4': '数据', 'c5': '数据'}, {'c1': '大分类二', 'c2': '小分类2', 'c3': '数据', 'c4': '数据', 'c5': '数据'}, {'c1': '大分类二', 'c2': '小分类3', 'c3': '数据', 'c4': '数据', 'c5': '数据'}, {'c1': '大分类二', 'c2': '小分类3', 'c3': '数据', 'c4': '数据', 'c5': '数据'} ] grid_data = { 'page_rows': 10, 'rows': rows_data, 'limit': 10, 'pageno': 1, 'table_id': 'test_table', 'total': '10', 'page': '1' } return json(grid_data) else: fields_list = [ {'name': 'c1', 'title': '字段1', 'width': 200, 'frozen': True}, {'name': 'c2', 'title': '字段2', 'width': 200, 'frozen': True}, {'name': 'c3', 'title': '字段3', 'width': 200}, {'name': 'c4', 'title': '字段4', 'width': 200}, {'name': 'c5', 'title': '字段5', 'width': 200}, ] result = { 'query_form': query_view.get_json(), 'table': { 'data_url': query_string(request_url(), data=1), 'table_info': { 'fields_list': fields_list } } } return result
def list(self): query_view = self._create_query_view() if 'data' in request.values: rows_data = [{ 'c1': '大分类一', 'c2': '小分类1', 'c3': '数据', 'c4': '数据', 'c5': '数据' }, { 'c1': '大分类一', 'c2': '小分类2', 'c3': '数据', 'c4': '数据', 'c5': '数据' }, { 'c1': '大分类一', 'c2': '小分类2', 'c3': '数据', 'c4': '数据', 'c5': '数据' }, { 'c1': '大分类二', 'c2': '小分类2', 'c3': '数据', 'c4': '数据', 'c5': '数据' }, { 'c1': '大分类二', 'c2': '小分类3', 'c3': '数据', 'c4': '数据', 'c5': '数据' }, { 'c1': '大分类二', 'c2': '小分类3', 'c3': '数据', 'c4': '数据', 'c5': '数据' }] grid_data = { 'page_rows': 10, 'rows': rows_data, 'limit': 10, 'pageno': 1, 'table_id': 'test_table', 'total': '10', 'page': '1' } return json(grid_data) else: fields_list = [ { 'name': 'c1', 'title': '字段1', 'width': 200, 'frozen': True }, { 'name': 'c2', 'title': '字段2', 'width': 200, 'frozen': True }, { 'name': 'c3', 'title': '字段3', 'width': 200 }, { 'name': 'c4', 'title': '字段4', 'width': 200 }, { 'name': 'c5', 'title': '字段5', 'width': 200 }, ] result = { 'query_form': query_view.get_json(), 'table': { 'data_url': query_string(request_url(), data=1), 'table_info': { 'fields_list': fields_list } } } return result
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