def get_queryset(self): """ Method which returns queryset after filter. :param self: :return qs: """ required_values = ['id', self.obj_alias] qs = super(Select2Mixin, self).get_queryset() org_id = self.request.GET.get('org', '0') sSearch = self.request.GET.get('sSearch', None) tech_name = self.request.GET.get('tech_name', None) if str(org_id) == "0": # Create instance of 'NocoutUtilsGateway' class nocout_utils = NocoutUtilsGateway() organizations = nocout_utils.logged_in_user_organizations(self) qs = qs.filter(organization__id__in=organizations) else: qs = qs.filter(organization_id=org_id) if str(qs.model.__name__).strip().lower() == 'sector': sector_required_list = [ 'id', self.obj_alias, 'name', 'sector_configured_on__ip_address', 'sector_id' ] required_values = sector_required_list elif str(qs.model.__name__).strip().lower() == 'device': required_values = required_values = [ 'id', self.obj_alias, 'ip_address' ] if sSearch: #specific cases to handle #ask Anoop how to make it more generic if str(qs.model.__name__).strip().lower() == 'sector': #we have a search for sector #search for sector can happen on #sector id, sector configured on qs = qs.filter( Q(**{"%s__icontains" % self.obj_alias: sSearch}) | Q(**{ "sector_configured_on__ip_address__icontains": sSearch }) | Q(**{"sector_id__icontains": sSearch})) else: qs = qs.filter( Q(**{"%s__icontains" % self.obj_alias: sSearch})) if tech_name: try: tech_id = DeviceTechnology.objects.get( name__iexact=tech_name).id qs = qs.filter(device_technology=tech_id) except Exception, e: pass
def get_initial_queryset(self): """ Preparing Initial Queryset for the for rendering the data table. """ if not self.model: raise NotImplementedError("Need to provide a model.") qs = self.model.objects.all() if not self.request.user.is_superuser: # Create instance of 'NocoutUtilsGateway' class nocout_utils = NocoutUtilsGateway() qs = qs.filter( **{ self.organization_field + "__in": nocout_utils.logged_in_user_organizations(self) }) if self.values_queryset: qs = qs.values(*self.columns + ['id']) if self.extra_qs_kwargs: qs = qs.filter(**self.extra_qs_kwargs) return qs