检查用户是否在for循环遍历权限中具有特定权限

时间:2019-01-31 23:54:45

标签: django django-models django-views django-permissions

我目前正在遍历所有权限代号和与特殊模型关联的名称,并将它们放入标准html表中。该表假定用作每个帐户(帐户模型)的权限概述,并显示用户是否具有指定权限的检查。

models.py

class Account(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    site = models.CharField(max_length=50, choices=(('all', 'all'), ('danielk', 'danielk'), ('flis', 'flis'), ('vmusic', 'vmusic')), blank=True)
    site_role = models.CharField(max_length=50, choices=(('Administrator', 'Administrator'), ('Moderator', 'Moderator'), ('Editor', 'Editor')))
    phone_number = models.CharField(max_length=8)
    birth_date = models.DateField()
    street_adress = models.CharField(max_length=255)
    note = models.TextField(blank=True);
    zip_code = models.CharField(max_length=4)
    city = models.CharField(max_length=255)

    def formatedPhone(self, country=None):
        return phonenumbers.parse(Account.phone_number, "NO")

    """
    def __str__(self):
        return "%s %s" % (self.User.first_name, self.user.last_name)
    """

    def get_absolute_url(self):
        return reverse('account-detail', kwargs={'pk': self.pk})

    class Meta:
        verbose_name = 'Account meta'
        verbose_name_plural = 'Accounts meta'
        permissions = (
            ("has_user_hijack_permission", "Allows the user to log in as others"),
            ("has_user_management", "Allows a user to deactivate/delete other users"),
            ("has_user_site_edit", "Allows a user to edit site and role details"),
            ("has_user_takeout", "Can export user details"),
        )

views.py

class cms_users_user_permissions(generic.DetailView):
    model = Account
    template_name = 'cms/users/cms-users-user-permissions.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context["permissions"] = Permission.objects.filter(content_type=ContentType.objects.get_for_model(Account))
        #context['permissions'] = Permission.objects.filter(content_type_id=7)
        return context

table.html

<table class="table is-fullwidth">
            <tbody>
            {% for permission in permissions %}
                <tr>
                    <td style="width: 300px;">{{ permission.codename }}</td>
                    <td>{{ permission.name }}</td>
                    {% if perms.echo.permission.codename %}
                    <td>
                        <span class="icon is-small">
                            <i class="fas fa-check-circle has-text-success"></i>
                        </span>
                    </td>
                    {% else %}
                    <td>
                        <span class="icon is-small">
                            <i class="fas fa-times-circle has-text-danger"></i>
                        </span>
                    </td>
                    {% endif %}
                </tr>
              {% endfor %}      
            </tbody>
        </table>

0 个答案:

没有答案