如何在django中撤消用户的自定义模型权限

时间:2014-05-21 14:19:19

标签: python django django-models django-views

我正在编写一个包含大量表单的应用程序,其中包含许多必须按顺序提交的字段。表单的每个部分仅在用户具有访问权限时才可用,这些权限在其中一个模型中定义,管理员用户在满足条件时将其提供给用户。

我现在要做的是,当用户提交表单的该部分时,该用户可以删除该用户的权限。有没有办法实现这个目标?

以下是模型:

class PartidosUsuarios(models.Model):
    idUsuario = models.ForeignKey(User)
    idFifa = models.ForeignKey(PartidosFifa, null=True)
    idPartido = models.CharField(max_length=20)
    PaisL = models.CharField(max_length=250)
    Local = models.IntegerField(max_length=11, default=0)
    Visita = models.IntegerField(max_length=11, default=0)
    PaisV = models.CharField(max_length=250)
    Resultado = models.CharField(max_length=250)
    Puntos = models.IntegerField(max_length=11, default=0)
    Capturado = models.CharField(max_length=10, default="No")
    class Meta:
        permissions = (
            ("grupos", "Puede ver partidos de grupos"),
            ("octavos", "Puede ver partidos de octavos"),
            ("cuartos", "Puede ver partidos de cuartos"),
            ("semis", "Puede ver partidos de semis"),
            ("final", "Puede ver partidos de final"),
        )
    def __unicode__(self):
        return unicode(self.idPartido)

以下是观点:

@login_required(login_url="/")
def inicio(request):
    if request.method == "POST":
        form = Pronosticos(request.POST)
        for i in range(47):
            pronostico, _ = PartidosUsuarios.objects.get_or_create(idUsuario=request.user, idPartido=request.POST.get("idPartido"+str(i), ""), PaisL=request.POST.get("PaisL"+str(i), ""), Local=request.POST.get("Local"+str(i), ""), Visita=request.POST.get("Visita"+str(i), ""), PaisV=request.POST.get("PaisV"+str(i), ""), Capturado="Si")
            if pronostico.Local > pronostico.Visita:
                pronostico.Resultado = "Local"
                pronostico.save()
            elif pronostico.Visita > pronostico.Local:
                pronostico.Resultado = "Visita"
                pronostico.save()
            elif pronostico.Local == pronostico.Visita:
                pronostico.Resultado = "Empate"
                pronostico.save()
    partidos_usuarios = PartidosUsuarios.objects.order_by("idPartido")
    partidos_fifa = PartidosFifa.objects.order_by("Partido")[:64]
    context = ({"partidos_fifa": partidos_fifa, "partidos_usuarios": partidos_usuarios})
    return render(request, "brasil/inicio.html", context)

在这种情况下,提交表单时应删除的权限是名为" grupos"

非常感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

嗯,如果您有一个名为 grupos role并且您想要删除role提交表单的权限,或者您是否愿意,那么对我来说并不是很清楚拥有一个名为 grupos 的自定义权限。但在这两种情况下,您都可以使用:permissions.utils.remove_permission(obj, role, permission)

其中:

<强> OBJ

应删除权限的内容对象。

<强>作用

应删除权限的角色。

<强>许可

应删除的权限。权限对象或权限的代号。

因此,在您看来,只需在方便时调用此功能。

有关处理权限的详细信息,请参阅:Django API for manage permissions