src/ldt/ldt/security/utils.py
changeset 245 953228fcbb56
parent 242 bee98775a8e8
child 251 81417fd477b0
equal deleted inserted replaced
244:bc1dd5fea0b6 245:953228fcbb56
    44     cls.old_delete = cls.delete
    44     cls.old_delete = cls.delete
    45     class_name = cls.__name__.lower()
    45     class_name = cls.__name__.lower()
    46     cls.save = change_security(user, class_name)(cls.save)
    46     cls.save = change_security(user, class_name)(cls.save)
    47     cls.delete = change_security(user, class_name)(cls.delete)    
    47     cls.delete = change_security(user, class_name)(cls.delete)    
    48     
    48     
    49 def unprotect_model(cls):    
    49 def unprotect_model(cls): 
    50     if hasattr(cls, 'old_save'):
    50     if hasattr(cls, 'old_save'):
    51         cls.save = cls.old_save 
    51         cls.save = cls.old_save 
    52         cls.delete = cls.old_delete 
    52         cls.delete = cls.old_delete 
    53         del cls.old_save    
    53         del cls.old_save    
    54         del cls.old_delete 
    54         del cls.old_delete
       
    55         cls.safe_objects.user = None 
    55         
    56         
    56 def change_security(user, cls_name):
    57 def change_security(user, cls_name):
    57     def wrapper(func):
    58     def wrapper(func):
    58         def wrapped(self, *args, **kwargs):                      
    59         def wrapped(self, *args, **kwargs):                      
    59                         
    60                         
    62       
    63       
    63             return func(self, *args, **kwargs)
    64             return func(self, *args, **kwargs)
    64         return wrapped    
    65         return wrapped    
    65     return wrapper
    66     return wrapper
    66 
    67 
       
    68 def set_forbidden_stream(xml, user):
       
    69     cls = ContentType.objects.get(model='content')
       
    70     cls = cls.model_class()
       
    71     
       
    72     old_user = cls.safe_objects.user
       
    73     obj_list = cls.safe_objects.all()
       
    74     
       
    75     for elem in xml.xpath('/iri/medias/media'):
       
    76         if not obj_list.filter(iri_id=elem.get('id')):
       
    77             elem.set('video', settings.FORBIDDEN_STREAM_URL)
       
    78     
       
    79     cls.safe_objects.user = old_user 
       
    80     
       
    81     return xml
       
    82 
    67 def assign_project_to_groups(project, permissions):
    83 def assign_project_to_groups(project, permissions):
    68     for elem in permissions:
    84     for elem in permissions:
    69         group = Group.objects.get(id=elem['group'])
    85         group = Group.objects.get(id=elem['group'])
    70         if elem['share']:
    86         if elem['share']:
    71             assign('view_project', group, project)
    87             assign('view_project', group, project)