Projet

Général

Profil

0001-manager-speed-up-user-role-view-53151.patch

Emmanuel Cazenave, 06 mai 2021 17:02

Télécharger (2,92 ko)

Voir les différences:

Subject: [PATCH] manager: speed up user role view (#53151)

 src/authentic2/manager/tables.py | 40 +++++++++++++++++++++-----------
 1 file changed, 26 insertions(+), 14 deletions(-)
src/authentic2/manager/tables.py
145 145
    name = tables.LinkColumn(
146 146
        viewname='a2-manager-role-members', kwargs={'pk': A('pk')}, accessor='name', verbose_name=_('label')
147 147
    )
148
    via = tables.TemplateColumn(
149
        '''{% for rel in record.via %}{{ rel.child }} {% if not forloop.last %}, {% endif %}{% endfor %}''',
148
    via = tables.Column(
150 149
        verbose_name=_('Inherited from'),
151 150
        orderable=False,
152 151
    )
153
    member = tables.TemplateColumn(
154
        '{%% load i18n %%}<input class="role-member{%% if not record.member and record.via %%} '
155
        'indeterminate{%% endif %%}"'
156
        ' name="role-{{ record.pk }}" type="checkbox" {%% if record.member %%}checked{%% endif %%} '
157
        '{%% if not record.has_perm %%}disabled '
158
        'title="{%% trans "%s" %%}"{%% endif %%} '
159
        '{%% if not record.can_manage_members %%}disabled '
160
        'title="{%% trans "%s" %%}"{%% endif %%}/>'
161
        % (
162
            ugettext_noop('You are not authorized to manage this role'),
163
            ugettext_noop('This role is synchronised from LDAP, changing members is not allowed.'),
164
        ),
152

  
153
    member = tables.Column(
165 154
        verbose_name=_('Member'),
166 155
        order_by=('member', 'via', 'name'),
167 156
    )
......
172 161
            content = SafeText('%s (%s)' % (content, _('LDAP')))
173 162
        return content
174 163

  
164
    def render_via(self, record, bound_column):
165
        return ', '.join([str(rel.child) for rel in record.via])
166

  
167
    def render_member(self, record, bound_column):
168
        input_class = 'role-member'
169
        if not record.member and record.via:
170
            input_class += ' indeterminate'
171
        name = 'role-%s' % record.pk
172
        checked = ''
173
        if record.member:
174
            checked = 'checked'
175
        disabled = ''
176
        if not record.has_perm:
177
            disabled = 'disabled title="%s" ' % _('You are not authorized to manage this role')
178
        if not record.can_manage_members:
179
            disabled = 'disabled title="%s" ' % _(
180
                'This role is synchronised from LDAP, changing members is not allowed.'
181
            )
182

  
183
        return SafeText(
184
            '<input class="%s" name="%s" type="checkbox" %s %s/>' % (input_class, name, checked, disabled)
185
        )
186

  
175 187
    class Meta:
176 188
        model = get_role_model()
177 189
        attrs = {'class': 'main', 'id': 'role-table'}
178
-