Advertisement
Guest User

Untitled

a guest
Jan 30th, 2015
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.34 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. from django.forms.util import ErrorList
  3. from django.utils.encoding import force_unicode
  4. from django.utils.html import conditional_escape
  5. from django.utils.safestring import mark_safe
  6.  
  7.  
  8. def get_object_or_none(model, *args, **kwargs):
  9.     try:
  10.         return model.objects.get(*args, **kwargs)
  11.     except model.DoesNotExist:
  12.         return None
  13.  
  14.  
  15. #функция получилось какой-то полукаррированной из-за использования в нескольких различных фильтрах
  16. #смотри templatetags.monitoringengine_iu_tags
  17. def has_perm(perm):
  18.     def has_perm_on_object(user, obj):
  19.         return (user.
  20.                 user_permissions.
  21.                 filter(pk=obj.perms.get(perm_type=perm).permission.id).
  22.                 exists())
  23.  
  24.     return has_perm_on_object
  25.  
  26.  
  27. def get_available_objects_of_type(t):
  28.     def objects_for_user(user):
  29.         return t.objects.filter(perms__permission__in=user.user_permissions.all()).distinct()
  30.  
  31.     return objects_for_user
  32.  
  33.  
  34. def get_users_for_object(obj, perm):
  35.     """
  36.    Получает пользователей, которые имеют право perm на объект obj
  37.  
  38.    @type perm: string
  39.    @param perm: тип доступа к объекту (чтение, запись либо управление пользователями)
  40.  
  41.    @param obj: объект, для которого поиск пользователей (на данный момент аккаунт, ресурс либо представление)
  42.    """
  43.     return obj.perms.get(perm_type=perm).permission.user_set.all()
  44.  
  45.  
  46. def filter_objects_for_user(objs, perm):
  47.     """
  48.    Получает объекты, на которые пользователь имеет право perm
  49.  
  50.    @type perm: string
  51.  
  52.  
  53.    @param obj: объекты для фильтрации (на данный момент аккаунт, ресурс либо представление)
  54.    """
  55.     return filter(lambda obj: has_perm(perm)(user, obj), objs)
  56.  
  57. class BootstrappedErrorList(ErrorList):
  58.     def as_ul(self):
  59.         if not self:
  60.             return u''
  61.         return mark_safe(u'<ul class="errorlist text-danger">%s</ul>'
  62.                          % ''.join([u'<li>%s</li>' % conditional_escape(force_unicode(e)) for e in self]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement