Zdravim,
Chcem vo svojom projekte umoznit uzivatelovi vytvorit si a udelit vlastnu permisnu, na urcite view-y. Mam vytvoreny model PermissionProviders, ktory je prepojeny pomocou OneToOneField-u na Permission a ManyToManyField-u na User-ov, ktory mozu danu permission-u udelit inym userom. Ak model PermissionProviders nebude existovat pre dany permission, tento permission moze udelit, len superuser (cize standarden spravanie sa djanga). Tato permisna bude zviazana vzdy s konkretnym linkom, moj napad je zobrat link k danemu view-u, urobit z neho md5 a doplnit ho do codename danej permissiony. Asi takto:
MD5 = hashlib.md5()
def link_related_permission_required(base_permission, raise_exception):
def decorator(view_func):
def _warapped_view(request, *args, **kwargs):
path = request.get_full_path()
MD5.update(path)
path_digest = MD5.hexdigest()
link_related_permission = '%s@link=%s' % base_permission, path_digest
if request.user.has_perm(link_related_permission):
return view_func(request, *args, **kwargs)
# Zvysok kodu ked nebude splnat podminky,
# Skopirovany prevazne s user_passes_test dekoratora
return wraps(view_func)(_wrapped_view)
return decorator
Je to dobry postup, alebo existuje lepsie riesenie?