def get_queryset(self): """ This view should return a list of user with view_project permission. """ if 'layer_id' in self.kwargs: # get 'context' GET parameter if is present possible values: [v (view), e (editing), ve (view + editing)] context = self.request.GET.get('context', 'v') # get viewer users layer = Layer.objects.get(pk=self.kwargs['layer_id']) with_anonymous = getattr(settings, 'EDITING_ANONYMOUS', False) if context == 'e': # get viewer users with change_layer grant qs = get_viewers_for_object(layer, self.request.user, 'change_layer', with_anonymous=with_anonymous) else: # get viewer users with view_project and change_layer qs = get_viewers_for_object(layer.project, self.request.user, 'view_project', with_anonymous=True) else: qs = [] return qs
def get_form_kwargs(self): kwargs = super(G3WACLViewMixin, self).get_form_kwargs() kwargs['request'] = self.request # get editor level 1 users editor_user_pk = None editor_users = get_users_for_object(self.object, self.editor_permission, [G3W_EDITOR2, G3W_EDITOR1]) if editor_users: editor_user_pk = editor_users[0].id if self.request.user.is_superuser: kwargs['initial']['editor_user'] = editor_users[0].id # get editor level2 users editor2_user_pk = None editor2_users = get_users_for_object(self.object, self.editor2_permission, [G3W_EDITOR2]) if editor2_users: editor2_user_pk = editor2_users[0].id if self.request.user.is_superuser or userHasGroups(self.request.user, [G3W_EDITOR1]): kwargs['initial']['editor2_user'] = editor2_users[0].id # get viewer users viewers = get_viewers_for_object(self.object, self.request.user, self.viewer_permission) # get only user id and check if user is group or project editor kwargs['initial']['viewer_users'] = [o.id for o in viewers if o.id not in [editor_user_pk, editor2_user_pk]] # get initial editor user_groups group_editors = get_user_groups_for_object(self.object, self.request.user, self.editor2_permission, 'editor') kwargs['initial']['editor_user_groups'] = [o.id for o in group_editors] group_viewers = get_user_groups_for_object(self.object, self.request.user, self.viewer_permission, 'viewer') kwargs['initial']['viewer_user_groups'] = [o.id for o in group_viewers] return kwargs
def get_form_kwargs(self): kwargs = super(ActiveEditingLayerView, self).get_form_kwargs() # get model by app Layer = apps.get_app_config(self.app_name).get_model('layer') self.layer = Layer.objects.get(pk=self.layer_id) # try to find notes config try: self.activated = G3WEditingLayer.objects.get( app_name=self.app_name, layer_id=self.layer_id) kwargs['initial']['active'] = True kwargs['initial']['scale'] = self.activated.scale except: self.activated = None kwargs['initial']['active'] = False # get viewer users with_anonymous = getattr(settings, 'EDITING_ANONYMOUS', False) viewers = get_viewers_for_object(self.layer, self.request.user, 'change_layer', with_anonymous=with_anonymous) editor_pk = self.layer.project.editor.pk if self.layer.project.editor else None self.initial_viewer_users = kwargs['initial']['viewer_users'] = [ int(o.id) for o in viewers if o.id != editor_pk ] group_viewers = get_user_groups_for_object(self.layer, self.request.user, 'change_layer', 'viewer') self.initial_viewer_user_groups = kwargs['initial'][ 'user_groups_viewer'] = [o.id for o in group_viewers] return kwargs
def get_form_kwargs(self): kwargs = super(ActiveEditingLayerView, self).get_form_kwargs() # get model by app Layer = apps.get_app_config(self.app_name).get_model('layer') self.layer = Layer.objects.get(pk=self.layer_id) # Add project for form kwargs['layer'] = self.layer # try to find notes config try: self.activated = G3WEditingLayer.objects.get( app_name=self.app_name, layer_id=self.layer_id) kwargs['initial']['active'] = True kwargs['initial']['scale'] = self.activated.scale kwargs['initial']['add_user_field'] = self.activated.add_user_field kwargs['initial'][ 'edit_user_field'] = self.activated.edit_user_field except: self.activated = None kwargs['initial']['active'] = False # get viewer users with_anonymous = getattr(settings, 'EDITING_ANONYMOUS', False) viewers = get_viewers_for_object(self.layer, self.request.user, 'change_layer', with_anonymous=with_anonymous) editor_pk = self.layer.project.editor.pk if self.layer.project.editor else None self.initial_viewer_users = kwargs['initial']['viewer_users'] = [ int(o.id) for o in viewers if o.id != editor_pk ] self.initial_atomic_capabilitites['user'][ 'change_layer'] = self.initial_viewer_users group_viewers = get_user_groups_for_object(self.layer, self.request.user, 'change_layer', 'viewer') self.initial_viewer_user_groups = kwargs['initial'][ 'user_groups_viewer'] = [o.id for o in group_viewers] self.initial_atomic_capabilitites['group'][ 'change_layer'] = self.initial_viewer_user_groups # Get atomic editing capabilities for users and user_groups form data self.get_initial_atomic_capabilitites(with_anonymous, editor_pk) if 'data' in kwargs: self.get_atomic_capabilities(kwargs['data']) return kwargs
def _setViewerUserQueryset(self, **kwargs): """ Set queryset for viewers chosen fields Take Viewers level 1 from Group :return: None """ # get viewers from groups viewers = get_viewers_for_object( self.group, self.request.user, 'view_group') # get queryset self.fields['viewer_users'].queryset = User.objects.filter(groups__name__in=self.viewer_groups, pk__in=[v.pk for v in viewers])
def get_queryset(self): """ This view should return a list o user with editing grant layer on qdjango editing layer id. """ qs = super(EditingLayerUserInfo, self).get_queryset() if 'editing_layer_id' in self.kwargs: # get viewer users layer = Layer.objects.get(pk=self.kwargs['editing_layer_id']) with_anonymous = getattr(settings, 'EDITING_ANONYMOUS', False) qs = get_viewers_for_object(layer, self.request.user, 'change_layer', with_anonymous=with_anonymous) return qs
def _set_viewer_users_choices(self): """ Set choices for viewer_users select by permission on project and by user main role """ viewers = get_viewers_for_object( self.project, self.request.user, 'view_project', with_anonymous=True) # get Editor Level 1 and Editor level 2 to clear from list editor_pk = self.project.editor.pk if self.project.editor else None editor2_pk = self.project.editor2.pk if self.project.editor2 else None self.fields['viewer_users'].choices = [(v.pk, label_users(v)) for v in viewers if v.pk not in (editor_pk, editor2_pk)]
def get_queryset(self): """ This view should return a list o user with view_project permission. """ if 'layer_id' in self.kwargs: # get viewer users layer = Layer.objects.get(pk=self.kwargs['layer_id']) with_anonymous = getattr(settings, 'EDITING_ANONYMOUS', False) qs = get_viewers_for_object(layer.project, self.request.user, 'view_project', with_anonymous=with_anonymous) else: qs = [] return qs
def get_initial_atomic_capabilitites(self, with_anonymous, editor_pk): """Set initial users and user_groups atomic capabilities""" for ap in EDITING_ATOMIC_PERMISSIONS: viewers = get_viewers_for_object(self.layer, self.request.user, ap, with_anonymous=with_anonymous) self.initial_atomic_capabilitites['user'][ap] = [ int(o.id) for o in viewers if o.id != editor_pk ] group_viewers = get_user_groups_for_object(self.layer, self.request.user, ap, 'viewer') self.initial_atomic_capabilitites['group'][ap] = [ o.id for o in group_viewers ]