예제 #1
0
    def GET(self):
        inputs = sh.inputs()
        assert inputs.has_key('model_name'), u'请指定需要裁剪的数据类型'
        assert inputs.has_key('model_id'), u'请指定需要裁剪的数据ID'
        assert inputs.has_key('crop'), u'请设置裁剪配置'
        item = sh.model(inputs.model_name).get(inputs.model_id)
        if not item or not item.has_key('Imageid'): return sh.redirectTo404()

        column_name, settings = sh.unquote(inputs.crop).partition(' ')[::2]
        inputs.crop_width, settings = settings.strip().partition(' ')[::2]

        preview_size, settings = settings.strip().partition(' ')[::2]
        inputs.preview_width, inputs.preview_height = preview_size.split(':')

        inputs.column_name = column_name
        inputs.crop_settings = settings
        inputs.image = item.image

        if item.get(column_name):
            inputs.crop = item.get(column_name)
        else:
            inputs.crop = '0 0 %s %s' % tuple(preview_size.split(':'))

        if len(inputs.crop.split()) == 4:
            x1, y1, x2, y2 = map(int, inputs.crop.split(' '))
            inputs.fx_crop = 'x1=%s;y1=%s;x2=%s;y2=%s;' % (x1,y1,x1+x2,y1+y2)
        else:
            inputs.fx_crop = ''

        return sh.editor.CropImage(inputs)
예제 #2
0
파일: CropImage.py 프로젝트: lrbnew/zarkpy
    def GET(self):
        inputs = sh.inputs()
        assert inputs.has_key('model_name'), u'请指定需要裁剪的数据类型'
        assert inputs.has_key('model_id'), u'请指定需要裁剪的数据ID'
        assert inputs.has_key('crop'), u'请设置裁剪配置'
        item = sh.model(inputs.model_name).get(inputs.model_id)
        if not item or not item.has_key('Imageid'): return sh.redirectTo404()

        column_name, settings = sh.unquote(inputs.crop).partition(' ')[::2]
        inputs.crop_width, settings = settings.strip().partition(' ')[::2]

        preview_size, settings = settings.strip().partition(' ')[::2]
        inputs.preview_width, inputs.preview_height = preview_size.split(':')

        inputs.column_name = column_name
        inputs.crop_settings = settings
        inputs.image = item.image

        if item.get(column_name):
            inputs.crop = item.get(column_name)
        else:
            inputs.crop = '0 0 %s %s' % tuple(preview_size.split(':'))

        if len(inputs.crop.split()) == 4:
            x1, y1, x2, y2 = map(int, inputs.crop.split(' '))
            inputs.fx_crop = 'x1=%s;y1=%s;x2=%s;y2=%s;' % (x1, y1, x1 + x2,
                                                           y1 + y2)
        else:
            inputs.fx_crop = ''

        return sh.editor.CropImage(inputs)
예제 #3
0
    def GET(self, name):
        menu_config = sh.ctrl('Editor').getMenuConfig()
        # 禁止访问未公开的路径
        if not menu_config: return sh.redirectTo404()

        key = self.prefix_key + name
        value = sh.getSiteConfig(key)
        return sh.editor.IndentTable(value, menu_config)
예제 #4
0
    def GET(self, name):
        menu_config = sh.ctrl('Editor').getMenuConfig()
        # 禁止访问未公开的路径
        if not menu_config: return sh.redirectTo404()

        key = self.prefix_key + name
        value = sh.getSiteConfig(key)
        return sh.editor.IndentTable(value, menu_config)
예제 #5
0
파일: List.py 프로젝트: saturnisbig/zarkpy
    def GET(self, model_name):
        model = sh.model(model_name)
        menu_config = sh.ctrl('Editor').getMenuConfig()
        # 禁止访问未公开的路径
        if not menu_config: return sh.redirectTo404()

        env = self._getEnv(model, menu_config)

        items = model.all(env)
        pagination_html = model.getPaginationHtml(env) \
                if hasattr(model, 'getPaginationHtml') else ''

        return sh.editor.model.List(model_name, model.column_names + menu_config.append_column,
                model.getColumnTypes(), menu_config, items, pagination_html, )
예제 #6
0
파일: Validate.py 프로젝트: lrbnew/zarkpy
    def GET(self):
        inputs = sh.inputs()
        assert(inputs.has_key('Userid'))
        assert(inputs.has_key('code'))

        model = sh.model('UserValidation')
        exists = model.getOneByWhere('Userid=%s and code=%s', inputs.Userid, inputs.code)

        if exists:
            sh.model('User').update(inputs.Userid, dict(activated='yes'))
            model.delete(exists.id)
            return sh.alert('验证邮箱成功')
        else:
            return sh.redirectTo404()
예제 #7
0
파일: Edit.py 프로젝트: lrbnew/zarkpy
    def GET(self, model_name, model_id=None):
        menu_config = sh.ctrl('Editor').getMenuConfig()
        # 禁止访问未公开的路径
        if not menu_config: return sh.redirectTo404()

        model = sh.model(model_name)

        if model_id:
            item = model.get(model_id)
            action = 'update'
            assert item is not None
        else:
            item = None
            action = 'insert'

        return sh.editor.model.Edit(model_name, model.column_names + menu_config.append_column, model.getColumnTypes(), menu_config, item, action)
예제 #8
0
파일: List.py 프로젝트: ajiexw/zarkpy
    def GET(self, model_name):
        model = sh.model(model_name)
        menu_config = sh.ctrl('Editor').getMenuConfig()
        # 禁止访问未公开的路径
        if not menu_config: return sh.redirectTo404()

        env = self._getEnv(model, menu_config)
        if hasattr(model, '_usePrivate'):
            assert 'new' in menu_config.list_btn_hidden, '私有数据请关闭后台new功能'
            assert 'edit' in menu_config.list_btn_hidden, '私有数据请关闭后台edit功能'
            assert 'delete' in menu_config.list_btn_hidden, '私有数据请关闭后台delete功能'
            env['use_private'] = False # 不使用Private Decorator
        items = model.all(env)
        pagination_html = model.getPaginationHtml(env) \
                if hasattr(model, 'getPaginationHtml') else ''

        return sh.editor.model.List(model_name, model.column_names + menu_config.append_column,
                model.getColumnTypes(), menu_config, items, pagination_html, )
예제 #9
0
파일: SiteConfig.py 프로젝트: ajiexw/zarkpy
    def GET(self, name):
        inputs = sh.inputs()
        menu_config = sh.ctrl('Editor').getMenuConfig()
        # 禁止访问未公开的路径
        if not menu_config: return sh.redirectTo404()

        model = sh.model('SiteConfig')
        env = sh.storage()

        if menu_config.get('filter', None):
            env['where'] = ['name like %s', menu_config['filter']]

        if menu_config.get('orderby', None):
            env.orderby = model.replaceAttr(menu_config.orderby)

        if inputs.get('where', ''):
            env.where = [inputs.where]

        items = model.all(env)
        pagination_html = model.getPaginationHtml(env)

        return sh.editor.SiteConfig(items, pagination_html, menu_config)
예제 #10
0
    def GET(self, name):
        inputs = sh.inputs()
        menu_config = sh.ctrl('Editor').getMenuConfig()
        # 禁止访问未公开的路径
        if not menu_config: return sh.redirectTo404()

        model = sh.model('SiteConfig')
        env = sh.storage()

        if menu_config.get('filter', None):
            env['where'] = ['name like %s', menu_config['filter']]

        if menu_config.get('orderby', None):
            env.orderby = model.replaceAttr(menu_config.orderby)

        if inputs.get('where', ''):
            env.where = [inputs.where]

        items = model.all(env)
        pagination_html = model.getPaginationHtml(env)

        return sh.editor.SiteConfig(items, pagination_html, menu_config)
예제 #11
0
    def GET(self, path):
        mc = sh.ctrl("Editor").getMenuConfig()
        # 禁止访问未公开的路径
        if not mc:
            return sh.redirectTo404()

        inputs = sh.inputs()
        select = mc.get("select", "").replace("%", "%%")  # 因为MySQLdb会转义%
        db = sh.getDBHelper()

        if mc.get("paging", ""):
            if " limit " in select.lower():
                return sh.alert("使用paging选项时select中不能使用limit, 请检查后台配置", stay=10)
            # 如果使用了paging, select中就不允许出现limit
            if int(mc.get("paging")) <= 0:
                return sh.alert("paging配置参数应为正整数", stay=10)
            if " distinct " in select.lower():
                return sh.alert("抱歉, 暂不支持paging与distinct一起使用", stay=10)
            # 查询count(*)
            form_key = " from " if " from " in select else " FROM "
            total = self.__getTotal(select)
            # 设置limit获得数据
            select = select + " limit %d, %d" % self.__getLimit(inputs.get("page_num", 1), int(mc.paging))
            items = db.fetchSome(select)
            # 获得分页
            pagination_html = (
                '<div fx="paging[style=zarkpy;pageCount=%d;totalCount=%d;displayPages=10;firstText=第一页;lastText=末页;]"></div>'
                % (int(mc.paging), total)
            )

        else:
            items = db.fetchSome(select)
            pagination_html = ""

        keys = self.__getSortedKeys(select)
        if len(keys) == 0 and len(items) > 0:
            keys = items[0].keys()

        return sh.editor.ReportForms(items, pagination_html, keys, mc)
예제 #12
0
    def GET(self, path):
        mc = sh.ctrl('Editor').getMenuConfig()
        # 禁止访问未公开的路径
        if not mc: return sh.redirectTo404()

        inputs = sh.inputs()
        select = mc.get('select', '').replace('%', '%%') # 因为MySQLdb会转义%
        db = sh.getDBHelper()

        if mc.get('paging', ''):
            if ' limit ' in select.lower():
                return sh.alert('使用paging选项时select中不能使用limit, 请检查后台配置', stay=10)
            # 如果使用了paging, select中就不允许出现limit
            if int(mc.get('paging')) <= 0:
                return sh.alert('paging配置参数应为正整数', stay=10)
            if ' distinct ' in select.lower():
                return sh.alert('抱歉, 暂不支持paging与distinct一起使用', stay=10)
            # 查询count(*)
            form_key = ' from ' if ' from ' in select else ' FROM '
            total = self.__getTotal(select)
            # 设置limit获得数据
            select = select + ' limit %d, %d' % \
                self.__getLimit(inputs.get('page_num', 1), int(mc.paging))
            items = db.fetchSome(select)
            # 获得分页
            pagination_html = '<div fx="paging[style=zarkpy;pageCount=%d;totalCount=%d;displayPages=10;firstText=第一页;lastText=末页;]"></div>' % (int(mc.paging), total)

        else:
            items = db.fetchSome(select)
            pagination_html = ''

        keys = self.__getSortedKeys(select)
        if len(keys) == 0 and len(items) > 0:
            keys = items[0].keys()

        return sh.editor.ReportForms(items, pagination_html, keys, mc)
예제 #13
0
파일: List.py 프로젝트: lrbnew/zarkpy
    def GET(self, model_name):
        model = sh.model(model_name)
        menu_config = sh.ctrl('Editor').getMenuConfig()
        # 禁止访问未公开的路径
        if not menu_config: return sh.redirectTo404()

        env = self._getEnv(model, menu_config)
        if hasattr(model, '_usePrivate'):
            assert 'new' in menu_config.list_btn_hidden, '私有数据请关闭后台new功能'
            assert 'edit' in menu_config.list_btn_hidden, '私有数据请关闭后台edit功能'
            assert 'delete' in menu_config.list_btn_hidden, '私有数据请关闭后台delete功能'
            env['use_private'] = False  # 不使用Private Decorator
        items = model.all(env)
        pagination_html = model.getPaginationHtml(env) \
                if hasattr(model, 'getPaginationHtml') else ''

        return sh.editor.model.List(
            model_name,
            model.column_names + menu_config.append_column,
            model.getColumnTypes(),
            menu_config,
            items,
            pagination_html,
        )