Projet

Général

Profil

0001-manager-handle-data-pk-row-attribute-at-view-level-5.patch

Valentin Deniaud, 21 décembre 2021 11:53

Télécharger (7,27 ko)

Voir les différences:

Subject: [PATCH 1/2] manager: handle data-pk row attribute at view level
 (#59664)

 src/authentic2/manager/tables.py              | 52 +++++++++++--------
 .../templates/authentic2/manager/table.html   |  5 +-
 2 files changed, 32 insertions(+), 25 deletions(-)
src/authentic2/manager/tables.py
30 30
User = get_user_model()
31 31

  
32 32

  
33
class Table(tables.Table):
34
    class Meta:
35
        row_attrs = {"data-pk": lambda record: record.pk}
36

  
37

  
33 38
class PermissionLinkColumn(tables.LinkColumn):
34 39
    def render(self, value, record, bound_column, **kwargs):
35 40
        request = StoreRequestMiddleware.get_request()
......
60 65
        return value
61 66

  
62 67

  
63
class UserTable(tables.Table):
68
class UserTable(Table):
64 69
    link = UserLinkColumn(
65 70
        verbose_name=_('User'),
66 71
        accessor='get_full_name',
......
70 75
    email = VerifiableEmailColumn()
71 76
    ou = tables.Column()
72 77

  
73
    class Meta:
78
    class Meta(Table.Meta):
74 79
        model = User
75 80
        attrs = {'class': 'main', 'id': 'user-table'}
76 81
        fields = ('username', 'email', 'first_name', 'last_name', 'ou')
......
99 104
        return value
100 105

  
101 106

  
102
class MixedUserRoleTable(tables.Table):
107
class MixedUserRoleTable(Table):
103 108
    name = UserOrRoleColumn(
104 109
        verbose_name=_('Members'),
105 110
        text=str,
106 111
        orderable=False,
107 112
    )
108 113

  
109
    class Meta:
114
    class Meta(Table.Meta):
110 115
        attrs = {'class': 'main', 'id': 'user-table'}
116
        row_attrs = {
117
            "data-pk": lambda record: '%s-%s' % ('user' if isinstance(record, User) else 'role', record.pk)
118
        }
111 119

  
112 120

  
113
class RoleTable(tables.Table):
121
class RoleTable(Table):
114 122
    name = tables.LinkColumn(
115 123
        viewname='a2-manager-role-members', kwargs={'pk': A('pk')}, accessor='name', verbose_name=_('label')
116 124
    )
......
123 131
            content = SafeText('%s (%s)' % (content, _('LDAP')))
124 132
        return content
125 133

  
126
    class Meta:
134
    class Meta(Table.Meta):
127 135
        model = Role
128 136
        attrs = {'class': 'main', 'id': 'role-table'}
129 137
        fields = ('name', 'slug', 'ou', 'member_count')
130 138

  
131 139

  
132
class PermissionTable(tables.Table):
140
class PermissionTable(Table):
133 141
    operation = tables.Column()
134 142
    scope = tables.Column()
135 143
    target = tables.Column()
136 144

  
137
    class Meta:
145
    class Meta(Table.Meta):
138 146
        model = Permission
139 147
        attrs = {'class': 'main', 'id': 'role-table'}
140 148
        fields = ('operation', 'scope', 'target')
141 149
        empty_text = _('None')
142 150

  
143 151

  
144
class OUTable(tables.Table):
152
class OUTable(Table):
145 153
    name = tables.Column(verbose_name=_('label'))
146 154
    default = tables.BooleanColumn()
147 155

  
148
    class Meta:
156
    class Meta(Table.Meta):
149 157
        model = OrganizationalUnit
150 158
        attrs = {'class': 'main', 'id': 'ou-table'}
151 159
        fields = ('name', 'slug', 'default')
152 160
        empty_text = _('None')
153 161

  
154 162

  
155
class OuUserRolesTable(tables.Table):
163
class OuUserRolesTable(Table):
156 164
    name = tables.LinkColumn(
157 165
        viewname='a2-manager-role-members', kwargs={'pk': A('pk')}, accessor='name', verbose_name=_('label')
158 166
    )
......
180 188
            content = SafeText('%s (%s)' % (content, _('LDAP')))
181 189
        return content
182 190

  
183
    class Meta:
191
    class Meta(Table.Meta):
184 192
        model = Role
185 193
        attrs = {'class': 'main plaintable', 'id': 'role-table'}
186 194
        fields = ('name', 'ou')
......
188 196
        order_by = ('name',)
189 197

  
190 198

  
191
class UserRolesTable(tables.Table):
199
class UserRolesTable(Table):
192 200
    name = tables.LinkColumn(
193 201
        viewname='a2-manager-role-members', kwargs={'pk': A('pk')}, accessor='name', verbose_name=_('label')
194 202
    )
......
206 214
            content = SafeText('%s (%s)' % (content, _('LDAP')))
207 215
        return content
208 216

  
209
    class Meta:
217
    class Meta(Table.Meta):
210 218
        model = Role
211 219
        attrs = {'class': 'main', 'id': 'role-table'}
212 220
        fields = ('name', 'ou')
......
214 222
        order_by = ('name', 'ou')
215 223

  
216 224

  
217
class ServiceTable(tables.Table):
225
class ServiceTable(Table):
218 226
    ou = tables.Column()
219 227
    name = tables.Column()
220 228
    slug = tables.Column()
221 229

  
222
    class Meta:
230
    class Meta(Table.Meta):
223 231
        model = Service
224 232
        attrs = {'class': 'main', 'id': 'service-table'}
225 233
        fields = ('ou', 'name', 'slug')
......
227 235
        order_by = ('ou', 'name', 'slug')
228 236

  
229 237

  
230
class ServiceRolesTable(tables.Table):
238
class ServiceRolesTable(Table):
231 239
    name = tables.Column(accessor='name', verbose_name=_('name'))
232 240

  
233
    class Meta:
241
    class Meta(Table.Meta):
234 242
        model = Role
235 243
        attrs = {'class': 'main', 'id': 'service-role-table'}
236 244
        fields = ('name',)
237 245
        empty_text = _('No access restriction. All users are allowed to connect to this service.')
238 246

  
239 247

  
240
class UserAuthorizationsTable(tables.Table):
248
class UserAuthorizationsTable(Table):
241 249
    client = tables.Column(orderable=False)
242 250
    created = tables.Column()
243 251
    expired = tables.Column()
244 252

  
245
    class Meta:
253
    class Meta(Table.Meta):
246 254
        model = OIDCAuthorization
247 255
        attrs = {'class': 'main plaintable', 'id': 'user-authorizations-table'}
248 256
        fields = ('client', 'created', 'expired')
249 257
        empty_text = _('This user has not granted profile data access to any service yet.')
250 258

  
251 259

  
252
class InheritanceRolesTable(tables.Table):
260
class InheritanceRolesTable(Table):
253 261
    name = tables.LinkColumn(
254 262
        viewname='a2-manager-role-members', kwargs={'pk': A('pk')}, accessor='name', verbose_name=_('label')
255 263
    )
......
264 272
        verbose_name='',
265 273
    )
266 274

  
267
    class Meta:
275
    class Meta(Table.Meta):
268 276
        model = Role
269 277
        attrs = {'class': 'main plaintable', 'id': 'inheritance-role-table'}
270 278
        fields = ('name', 'ou')
src/authentic2/manager/templates/authentic2/manager/table.html
20 20

  
21 21
{% block table.tbody.row %}
22 22
<tr 
23
     {{ row.attrs.as_html }}
23 24
     {% if table.context.row_link %}
24 25
       {% if popup_edit %}
25 26
         rel="popup"
......
29 30
       {% else %}
30 31
         data-url="{{ row.record.pk }}/"
31 32
       {% endif %}
32
     {% endif %}
33
     data-pk="{{ row.record.id }}"
34
     class="{{ forloop.counter|divisibleby:2|yesno:"even,odd" }}"> 
33
     {% endif %}>
35 34
            {% for column, cell in row.items %}
36 35
                <td {{ column.attrs.td.as_html }}>{% if column.localize == None %}{{ cell }}{% else %}{% if column.localize %}{{ cell|localize }}{% else %}{{ cell|unlocalize }}{% endif %}{% endif %}</td>
37 36
            {% endfor %}
38
-