Esempio n. 1
0
class FreqStrategyTable(tables.Table):
    strategy_name = columns.Column(verbose_name=_(u"策略名称"), orderable=False)
    strategy_desc = columns.Column(verbose_name=_(u"策略描述"), orderable=False)
    strategy_source = columns.Column(verbose_name=_(u"数据源"), orderable=False)
    strategy_body = columns.Column(verbose_name=_(u"主体名称"), orderable=False)
    strategy_time = columns.Column(verbose_name=_(u"时段(单位:秒)"),
                                   orderable=False)
    strategy_limit = columns.Column(verbose_name=_(u"最大值"), orderable=False)

    action = columns.TemplateColumn("""
    <a class="strategy-destroy" data-uri="{% url 'strategy:freq_strategy_destroy' %}" data-id="{{ record.uuid }}">删除</a>
    """,
                                    orderable=False,
                                    verbose_name=_(u"操作"))

    class Meta:
        attrs = {'class': 'table table-striped table-hover'}

    def render_strategy_source(self, value):
        client = get_redis_client()
        data = client.hget("CONFIG_SOURCE_MAP", value)
        if data:
            try:
                name = json.loads(data).get('name_show', '')
            except ValueError:
                return value
            if name:
                return u"{0}({1})".format(name, value)
        return value
Esempio n. 2
0
class MenuStrategyTable(tables.Table):
    strategy_name = columns.Column(verbose_name=_(u"策略名称"), orderable=False)
    strategy_desc = columns.Column(verbose_name=_(u"策略描述"), orderable=False)
    dimension = columns.Column(verbose_name=_(u"维度"), orderable=False)
    menu_op = columns.Column(verbose_name=_(u"操作码"), orderable=False)
    event = columns.Column(verbose_name=_(u"项目"), orderable=False)
    menu_type = columns.Column(verbose_name=_(u"名单类型"), orderable=False)
    action = columns.TemplateColumn("""
    <a class="strategy-destroy" data-uri="{% url 'strategy:menu_strategy_destroy' %}" data-id="{{ record.uuid }}">删除</a>
    """,
                                    orderable=False,
                                    verbose_name=_(u"操作"))

    class Meta:
        attrs = {'class': 'table table-striped table-hover'}

    def render_menu_type(self, value):
        return TYPE_MAP_MENU.get(value, value)

    def render_menu_op(self, value):
        return OP_MAP_MENU.get(value, value)

    def render_dimension(self, value):
        return DIM_MAP_MENU.get(value, value)

    def render_event(self, value):
        db = get_mongo_client()
        res = db['menu_event'].find_one({'event_code': value}) or {}
        return res.get('event_name', value)
Esempio n. 3
0
class RulesTable(tables.Table):
    id = columns.Column(verbose_name=_(u"规则ID"), orderable=False)
    title = columns.Column(verbose_name=_(u"规则名称"), orderable=False)
    status = columns.Column(verbose_name=_(u"状态"), orderable=False)
    update_time = columns.Column(verbose_name=_(u"更新时间"), orderable=False)
    user = columns.Column(verbose_name=_(u"更新人"), orderable=False)
    action = columns.TemplateColumn("""
    <span class="action-button">
        <a class="rules-on" data-uri="{% url 'rule:change' %}" data-id="{{ record.uuid }}" data-title="{{ record.title }}" data-status="{{ record.status }}">启用</a>
    </span>
    <span class="action-button">
        <a class="rules-off" data-uri="{% url 'rule:change' %}" data-id="{{ record.uuid }}" data-title="{{ record.title }}" data-status="{{ record.status }}">停用</a>
    </span>
    <span class="action-button">
        <a class="rules-detail" data-uri="{% url 'rule:detail' %}" data-id="{{ record.uuid }}" >详情</a>
    </span>
    <span class="action-button">
        <a class="rules-edit" data-uri="{% url 'rule:edit' %}" data-id="{{ record.uuid }}" >编辑</a>
    </span>
    """,
                                    orderable=False,
                                    verbose_name=_(u"操作"))

    class Meta:
        attrs = {'class': 'table table-striped table-hover'}

    def render_update_time(self, value):
        return datetime.fromtimestamp(int(value))

    def render_status(self, value):
        return u"启用" if value == 'on' else u"停用"
Esempio n. 4
0
class BoolStrategyTable(tables.Table):
    strategy_name = columns.Column(verbose_name=_(u"策略名称"), orderable=False)
    strategy_desc = columns.Column(verbose_name=_(u"策略描述"), orderable=False)
    strategy_var = columns.Column(verbose_name=_(u"内置变量"), orderable=False)
    strategy_op = columns.Column(verbose_name=_(u"操作码"), orderable=False)
    strategy_func = columns.Column(verbose_name=_(u"内置函数"), orderable=False)
    strategy_threshold = columns.Column(verbose_name=_(u"阈值"), orderable=False)
    action = columns.TemplateColumn("""
    <a class="strategy-destroy" data-uri="{% url 'strategy:bool_strategy_destroy' %}" data-id="{{ record.uuid }}">删除</a>
    """,
                                    orderable=False,
                                    verbose_name=_(u"操作"))

    class Meta:
        attrs = {'class': 'table table-striped table-hover'}

    def render_strategy_var(self, value):
        name = VAR_MAP.get(value, "")
        if name:
            return u"{0}({1})".format(name, value)
        return value

    def render_strategy_op(self, value):
        name = OP_MAP.get(value, "")
        if name:
            return u"{0}({1})".format(name, value)
        return value

    def render_strategy_func(self, value):
        name = FUNC_MAP.get(value, "")
        if name:
            return u"{0}({1})".format(name, value)
        return value
Esempio n. 5
0
class UserStrategyTable(tables.Table):
    strategy_name = columns.Column(verbose_name=_("PolicyName"),
                                   orderable=False)
    strategy_desc = columns.Column(verbose_name=_("PolicyDescription"),
                                   orderable=False)
    strategy_source = columns.Column(verbose_name=_("DataSources"),
                                     orderable=False)
    strategy_body = columns.Column(verbose_name=_("BodyName"), orderable=False)
    strategy_day = columns.Column(verbose_name=_("Nature Day (In Individual)"),
                                  orderable=False)
    strategy_limit = columns.Column(verbose_name=_("Maximum"), orderable=False)

    action = columns.TemplateColumn("""
        <a class="strategy-destroy" 
        data-uri="{% url 'strategy:user_strategy_destroy' %}" 
        data-id="{{ record.uuid }}">delete</a>
        """,
                                    orderable=False,
                                    verbose_name=_("Confirm"))

    class Meta:
        attrs = {'class': 'table table-striped table-hover'}

    @staticmethod
    def render_strategy_source(value):
        client = get_redis_client()
        data = client.hget("CONFIG_SOURCE_MAP", value)
        if data:
            try:
                name = json.loads(data).get('name_show', '')
            except ValueError:
                return value
            if name:
                return "{0}({1})".format(name, value)
        return value
Esempio n. 6
0
class BaseMenuTable(tables.Table):
    check_all = columns.TemplateColumn("""
        {% load reverse_tags %}
        <input class="menu-item" data-id="{{ record|mongo_id }}" type="checkbox" \>
        """,
                                       orderable=False,
                                       verbose_name="")
    value = columns.Column(verbose_name=_(u"值"))
    event_code = columns.Column(verbose_name=_(u"项目"))
    menu_type = columns.Column(verbose_name=_(u"名单类型"))
    menu_status = columns.Column(verbose_name=_(u"状态"))
    menu_desc = TruncateColumn(verbose_name=_(u"备注"))
    end_time = columns.DateTimeColumn(format="Y-m-d H:i:s",
                                      verbose_name=_(u"结束时间"))
    create_time = columns.DateTimeColumn(format="Y-m-d H:i:s",
                                         verbose_name=_(u"更新时间"))
    creator = columns.Column(verbose_name=_(u"操作人"))

    def __init__(self, *args, **kwargs):
        super(BaseMenuTable, self).__init__(*args, **kwargs)
        self.deletable = True

    def render_menu_type(self, value):
        return MENU_TYPE_NAME_MAP.get(value, value)

    def render_event_code(self, value):
        db = get_mongo_client()
        res = db.menu_event.find_one({'event_code': value})
        if not res:
            return value
        return res.get('event_name', value)
Esempio n. 7
0
class ScheduleTable(tables.Table):
    course_name = columns.Column(verbose_name="Course")
    actions = columns.TemplateColumn(template_name="schedules/buttons.html", orderable=False)
    class Meta:
        model = Schedule
        template_name = 'django_tables2/bootstrap.html'
        fields = ('id', 'course_name', 'location', 'start_date', 'end_date', 'time', 'hours', 'instructor', 'actions')
Esempio n. 8
0
class BaseMenuTable(tables.Table):
    check_all = columns.TemplateColumn("""
        {% load reverse_tags %}
        <input class="menu-item" data-id="{{ record|mongo_id }}" type="checkbox" />
        """,
                                       orderable=False,
                                       verbose_name="")
    value = columns.Column(verbose_name=_("Value"))
    event_code = columns.Column(verbose_name=_("Project"))
    menu_type = columns.Column(verbose_name=_("ListType"))
    menu_status = columns.Column(verbose_name=_("Status"))
    menu_desc = TruncateColumn(verbose_name=_("Note"))
    end_time = columns.DateTimeColumn(format="Y-m-d H:i:s",
                                      verbose_name=_("EndTime"))
    create_time = columns.DateTimeColumn(format="Y-m-d H:i:s",
                                         verbose_name=_("UpdateTime"))
    creator = columns.Column(verbose_name=_("Operator"))

    def __init__(self, *args, **kwargs):
        super(BaseMenuTable, self).__init__(*args, **kwargs)
        self.deletable = True

    @staticmethod
    def render_menu_type(value):
        return MENU_TYPE_NAME_MAP.get(value, value)

    @staticmethod
    def render_event_code(value):
        db = get_mongo_client()
        res = db.menu_event.find_one({'event_code': value})
        if not res:
            return value
        return res.get('event_name', value)
Esempio n. 9
0
class EventTable(tables.Table):
    event_name = columns.Column(verbose_name=_(u"项目名称"))
    action = columns.TemplateColumn("""
    <a class="event-destroy" data-uri="{% url 'menus:event_destroy' %}" data-id="{{ record.event_code }}">删除</a>
    """, orderable=False, verbose_name=_(u"操作"))

    class Meta:
        attrs = {'class': 'table table-striped table-hover'}
Esempio n. 10
0
class ClientTable(tables.Table):
    postings = columns.TemplateColumn(template_name="jobs/client_buttons.html",
                                      orderable=False)

    class Meta:
        model = Client
        template_name = 'django_tables2/bootstrap.html'
        fields = ('company', 'contactName', 'contactEmail', 'companyAddress')
Esempio n. 11
0
class EditTable(tables.Table):
    postings = columns.TemplateColumn(template_name="jobs/edit_buttons.html",
                                      orderable=False)

    class Meta:
        model = Posting
        template_name = 'django_tables2/bootstrap.html'
        fields = ('title', 'location', 'deadline', 'postedDate', 'position')
Esempio n. 12
0
class PostingTable(tables.Table):
    postings = columns.TemplateColumn(
        template_code=
        "<a href='/jobs/{{ record.pk }}/apply' class='btn btn-light'>Apply</a>",
        orderable=False)

    class Meta:
        model = Posting
        template_name = 'django_tables2/bootstrap.html'
        fields = ('title', 'location', 'deadline', 'postedDate', 'position')
Esempio n. 13
0
class ConfigSourceTable(tables.Table):
    name_key = columns.Column(verbose_name=_(u"配置名称key"), orderable=False)
    name_show = columns.Column(verbose_name=_(u"配置名称"), orderable=False)
    content = columns.Column(verbose_name=_(u"配置内容"), orderable=False)
    action = columns.TemplateColumn("""
        {% load reverse_tags %}
        <a class="source-destroy" data-uri="{% url 'config:source_destroy' %}"
           data-name_key="{{ record.name_key }}">删除
        </a>
        """,
                                    orderable=False,
                                    verbose_name=_(u"操作"))

    class Meta:
        attrs = {'class': 'table table-striped table-hover'}
Esempio n. 14
0
File: tables.py Progetto: onisama/-
class UriGroupPermissionTable(tables.Table):
    desc = columns.Column(verbose_name=_('uri组名称'))
    pk = columns.Column(verbose_name=_('唯一标识'))
    uris = columns.Column(verbose_name=_('uri列表'))
    entity_id = columns.Column(verbose_name=_('创建时间'))
    action = columns.TemplateColumn(str('x'), orderable=False,
                                    verbose_name=_('操作'))

    @classmethod
    def render_action(cls, record):
        url = reverse('permissions:uri_group_update')
        html = (
            '''
            <a href="{1}?entity_id={0}"
               style="margin-right: 10px">变更权限
            </a>
            <a data-entity_id={0}
               class="perms-uri-group-delete">删除
            </a>
            '''
        ).format(record.get('entity_id', ''), url)
        return format_html(html)

    @classmethod
    def render_desc(cls, value, record):
        url = reverse('permissions:uri_group_update')
        html = '<a href="{}?entity_id={}">{}</a>'.format(
            url, record.get('entity_id', ''), value,
        )
        return format_html(html)

    @classmethod
    def render_uris(cls, record):
        html = (
            '<pre>{}</pre>'.format('\n'.join(record['uris']))
        )
        return format_html(html)

    @classmethod
    def render_entity_id(cls, value):
        return UserPermissionTable.render_entity_id(value)

    class Meta:
        attrs = {'class': 'table table-hover'}
Esempio n. 15
0
class BoolStrategyTable(tables.Table):
    strategy_name = columns.Column(verbose_name=_("PolicyName"),
                                   orderable=False)
    strategy_desc = columns.Column(verbose_name=_("PolicyDescription"),
                                   orderable=False)
    strategy_var = columns.Column(verbose_name=_("Built_In_Variables"),
                                  orderable=False)
    strategy_op = columns.Column(verbose_name=_("ActionCode"), orderable=False)
    strategy_func = columns.Column(verbose_name=_("Built_In_Functions"),
                                   orderable=False)
    strategy_threshold = columns.Column(verbose_name=_("Thresholds"),
                                        orderable=False)
    action = columns.TemplateColumn("""
    <a class="strategy-destroy" data-uri="{% url 'strategy:bool_strategy_destroy' %}" data-id="{{ record.uuid }}">delete</a>
    """,
                                    orderable=False,
                                    verbose_name=_("Confirm"))

    class Meta:
        attrs = {'class': 'table table-striped table-hover'}

    @staticmethod
    def render_strategy_var(value):
        name = VAR_MAP.get(value, "")
        if name:
            return "{0}({1})".format(name, value)
        return value

    @staticmethod
    def render_strategy_op(value):
        name = OP_MAP.get(value, "")
        if name:
            return "{0}({1})".format(name, value)
        return value

    @staticmethod
    def render_strategy_func(value):
        name = FUNC_MAP.get(value, "")
        if name:
            return "{0}({1})".format(name, value)
        return value
Esempio n. 16
0
class GroupPermissionTable(tables.Table):
    desc = columns.Column(verbose_name=_('Sub_Group_Name'))
    pk = columns.Column(verbose_name=_('Unique_Identification'))
    entity_id = columns.Column(verbose_name=_('Creation_Time'))
    action = columns.TemplateColumn(str('x'), orderable=False,
                                    verbose_name=_('Confirm'))

    @classmethod
    def render_action(cls, record):
        url = reverse('permissions:group_update')
        myca = _("Change Authority")
        mydel = _("delete")
        html = (
            '''
            <a href="{1}?entity_id={0}"
               style="margin-right: 10px">Change Authority
            </a>
            
            <a data-entity_id={0}
               class="perms-group-delete">delete
            </a>
            '''
        ).format(record.get('entity_id', ''), url)
        return format_html(html)

    @classmethod
    def render_desc(cls, value, record):
        url = reverse('permissions:group_update')
        html = '<a href="{}?entity_id={}">{}</a>'.format(
            url, record.get('entity_id', ''), value,
        )
        return format_html(html)

    @classmethod
    def render_entity_id(cls, value):
        return UserPermissionTable.render_entity_id(value)

    class Meta:
        attrs = {'class': 'table table-hover'}
Esempio n. 17
0
class UserTable(django_tables2.Table):
    """User table to showcase django tables 2."""

    export_formats = ('csv', 'json', 'latex', 'ods', 'tsv', 'xls', 'xlsx', 'yml')
    {%- raw %}
    username = columns.TemplateColumn(
        """<a href="{% url 'accounts:user-detail' username=value %}">{{value}}</a>"""
    )
    {% endraw %}
    first_name_is_long = columns.Column(
        verbose_name='First name is long',
        accessor='username',
        orderable=False,
        exclude_from_export=True
    )

    class Meta:
        model = User
        template_name = 'django_tables2/bootstrap.html'
        fields = ['username', 'email', 'first_name', 'last_name', 'first_name_is_long']

    @staticmethod
    def render_first_name_is_long(value) -> str:
        """Checks if the user's name is longer than 10 characters and returns html."""

        if len(value) > 10:
            uri = static('feather/alert-triangle.svg')
            {% raw %}
            element = f"""
                <div>
                    <img src="{uri}" alt="warning">
                </div>
            """
            {%- endraw %}
        else:
            element = ''

        return format_html(element)
Esempio n. 18
0
class MenuStrategyTable(tables.Table):
    strategy_name = columns.Column(verbose_name=_("PolicyName"),
                                   orderable=False)
    strategy_desc = columns.Column(verbose_name=_("PolicyDescription"),
                                   orderable=False)
    dimension = columns.Column(verbose_name=_("Dimensions"), orderable=False)
    menu_op = columns.Column(verbose_name=_("ActionCode"), orderable=False)
    event = columns.Column(verbose_name=_("Project"), orderable=False)
    menu_type = columns.Column(verbose_name=_("ListType"), orderable=False)
    action = columns.TemplateColumn("""
    <a class="strategy-destroy" 
       data-uri="{% url 'strategy:menu_strategy_destroy' %}" 
       data-id="{{ record.uuid }}">delete</a>
    """,
                                    orderable=False,
                                    verbose_name=_("Confirm"))

    class Meta:
        attrs = {'class': 'table table-striped table-hover'}

    @staticmethod
    def render_menu_type(value):
        return TYPE_MAP_MENU.get(value, value)

    @staticmethod
    def render_menu_op(value):
        return OP_MAP_MENU.get(value, value)

    @staticmethod
    def render_dimension(value):
        return DIM_MAP_MENU.get(value, value)

    @staticmethod
    def render_event(value):
        db = get_mongo_client()
        res = db['menu_event'].find_one({'event_code': value}) or {}
        return res.get('event_name', value)
Esempio n. 19
0
class AuditLogTable(tables.Table):
    username = columns.Column(verbose_name=_(u"用户名"), orderable=False)
    email = columns.Column(verbose_name=_(u"邮箱"), orderable=False)
    role = columns.Column(verbose_name=_(u"角色"), empty_values=(),
                          orderable=False)
    path = columns.Column(verbose_name=_(u"请求地址"), orderable=False)
    operation = columns.Column(verbose_name=_(u"操作类型"), empty_values=(),
                               orderable=False)
    method = columns.Column(verbose_name=_(u"请求方式"), orderable=False)
    status = columns.Column(verbose_name=_(u"响应码"), orderable=False)
    req_body = columns.TemplateColumn("""
    <div style="max-width: 600px;">
        {% if record.req_body|length > 128 %}
            <a data-toggle="modal" data-target="#req_body_{{ record.id }}">
                查看
            </a>
            <div class="modal inmodal" id="req_body_{{ record.id }}" tabindex="-1" role="dialog"  aria-hidden="true">
                <div class="modal-dialog">
                    <div class="modal-content animated fadeIn">
                        <div class="modal-header">
                            <h2>请求参数</h2>
                        </div>
                        <div class="modal-body">
                        {{ record.req_body }}
                        </div>
                        <div class="modal-footer">
                            <button type="button" class="btn btn-white" data-dismiss="modal">关闭</button>
                        </div>
                    </div>
                </div>
            </div>
        {% else %}
            {{ record.req_body }}
        {% endif %}
    </div>
    """, orderable=False, verbose_name=_(u"请求参数"))
    time = columns.DateTimeColumn(verbose_name=_(u"请求时间"),
                                  format="Y-m-d H:i:s")

    class Meta:
        attrs = {'class': 'table table-striped table-hover'}

    def before_render(self, request):
        pk_user_map = {}
        for d in UserPermission.objects.all_fields():
            pk = d.get('pk')
            if pk:
                pk_user_map[pk] = d
        self.pk_user_map = pk_user_map

        group_name_desc_map = {}
        for d in GroupPermission.objects.all_fields():
            name = d.get('name')
            if name:
                group_name_desc_map[name] = d.get('desc', '')
        self.group_name_desc_map = group_name_desc_map

        uri_descs_map = defaultdict(list)
        for d in UriGroupPermission.objects.all_fields():
            uris = d.get('uris', [])
            for uri in uris:
                desc = d.get('desc', '')
                uri_descs_map[uri].append(desc)

        uri_desc_map = {}
        for uri, descs in uri_descs_map.items():
            rw = None
            r = None
            for desc in descs:
                if desc.endswith(u'-读写'):
                    rw = desc
                if desc.endswith(u'-读'):
                    r = desc
            if rw and r:
                uri_desc_map[uri] = r
            elif rw and not r:
                uri_desc_map[uri] = rw.rstrip(u'-读写') + u'-写'
            else:
                uri_desc_map[uri] = descs[0]

        self.uri_desc_map = uri_desc_map

    def render_role(self, value, record):
        user = self.pk_user_map.get(record.email)
        if not user:
            return u'未知'

        if user.get('is_superuser'):
            return u'超级管理员'

        groups = user.get('groups', [])
        descs = [self.group_name_desc_map.get(name, '') for name in groups]
        return ', '.join(descs)

    def render_operation(self, value, record):
        return self.uri_desc_map.get(record.path, '')