Example #1
0
    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
Example #2
0
    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
Example #3
0
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
Example #4
0
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
Example #5
0
    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
Example #6
0
    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
Example #9
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