Python django.db.models.Q Examples
The following are 30 code examples for showing how to use django.db.models.Q(). These examples are extracted from open source projects. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example.
You may check out the related API usage on the sidebar.
You may also want to check out all available functions/classes of the module
django.db.models
, or try the search function
.
Example 1
Project: Servo Author: fpsw File: product.py License: BSD 2-Clause "Simplified" License | 7 votes |
def choose_product(request, order_id, product_id=None, target_url="orders-add_product"): """ order_id can be either Service Order or Purchase Order """ data = {'order': order_id} data['action'] = request.path data['target_url'] = target_url if request.method == "POST": query = request.POST.get('q') if len(query) > 2: products = Product.objects.filter( Q(code__icontains=query) | Q(title__icontains=query) ) data['products'] = products return render(request, 'products/choose-list.html', data) return render(request, 'products/choose.html', data)
Example 2
Project: Servo Author: fpsw File: order.py License: BSD 2-Clause "Simplified" License | 6 votes |
def choose_customer(request, pk): """ Lets the user search for a customer for this order """ if request.method == "POST": customers = Customer.objects.none() kind = request.POST.get('kind') query = request.POST.get('name') if len(query) > 2: customers = Customer.objects.filter( Q(fullname__icontains=query) | Q(email__icontains=query) | Q(phone__contains=query) ) if kind == 'companies': customers = customers.filter(is_company=True) if kind == 'contacts': customers = customers.filter(is_company=False) data = {'customers': customers, 'order_id': pk} return render(request, "customers/choose-list.html", data) data = {'action': request.path} return render(request, 'customers/choose.html', data)
Example 3
Project: Servo Author: fpsw File: search.py License: BSD 2-Clause "Simplified" License | 6 votes |
def products(request): """ Searches our local inventory """ query = request.GET.get("q") request.session['search_query'] = query results = Product.objects.filter( Q(code__icontains=query) | Q(title__icontains=query) | Q(eee_code__icontains=query) ) page = request.GET.get("page") products = paginate(results, page, 50) title = _(u'Search results for "%s"') % query group = ProductCategory(title=_('All'), slug='all') return render(request, 'products/search.html', locals())
Example 4
Project: Servo Author: fpsw File: search.py License: BSD 2-Clause "Simplified" License | 6 votes |
def devices(request): """ Searching for devices from the main navbar """ query = request.GET.get("q", '').strip() request.session['search_query'] = query query = query.upper() valid_arg = gsxws.validate(query) if valid_arg in ('serialNumber', 'alternateDeviceId',): return redirect(search_gsx, "warranty", valid_arg, query) devices = Device.objects.filter( Q(sn__icontains=query) | Q(description__icontains=query) ) title = _(u'Devices matching "%s"') % query return render(request, "devices/search.html", locals())
Example 5
Project: django-river Author: javrasya File: orm_driver.py License: BSD 3-Clause "New" or "Revised" License | 6 votes |
def _authorized_approvals(self, as_user): group_q = Q() for g in as_user.groups.all(): group_q = group_q | Q(groups__in=[g]) permissions = [] for backend in auth.get_backends(): permissions.extend(backend.get_all_permissions(as_user)) permission_q = Q() for p in permissions: label, codename = p.split('.') permission_q = permission_q | Q(permissions__content_type__app_label=label, permissions__codename=codename) return TransitionApproval.objects.filter( Q(workflow=self.workflow, status=PENDING) & ( (Q(transactioner__isnull=True) | Q(transactioner=as_user)) & (Q(permissions__isnull=True) | permission_q) & (Q(groups__isnull=True) | group_q) ) )
Example 6
Project: yang-explorer Author: CiscoDevNet File: profile_view.py License: Apache License 2.0 | 6 votes |
def profile_handler(request): """ HTTP request handler for profile request """ profiles = ET.Element('profiles') if request.user.is_authenticated(): uid = request.user.id logging.debug("User Authenticated (%s)" % request.user.username) entries = DeviceProfile.objects.filter(Q(user=uid) | Q(shared=True)) for e in entries: profile = _build_device_profile(e) profiles.append(profile) entries = Collection.objects.all() for e in entries: profile = _build_collection_profile(e) profiles.append(profile) return HttpResponse(Response.success('profile', 'ok', xml=profiles))
Example 7
Project: normandy Author: mozilla File: views.py License: Mozilla Public License 2.0 | 6 votes |
def get_queryset(self): queryset = self.queryset if self.request.GET.get("status") == "enabled": queryset = queryset.only_enabled() elif self.request.GET.get("status") == "disabled": queryset = queryset.only_disabled() if "text" in self.request.GET: text = self.request.GET.get("text") if "\x00" in text: raise ParseError("Null bytes in text") queryset = queryset.filter( Q(latest_revision__name__contains=text) | Q(latest_revision__extra_filter_expression__contains=text) ) return queryset
Example 8
Project: normandy Author: mozilla File: views.py License: Mozilla Public License 2.0 | 6 votes |
def get_queryset(self): queryset = self.queryset if self.request.GET.get("status") == "enabled": queryset = queryset.only_enabled() elif self.request.GET.get("status") == "disabled": queryset = queryset.only_disabled() if "text" in self.request.GET: text = self.request.GET.get("text") if "\x00" in text: raise ParseError("Null bytes in text") tokens = set(re.split(r"[ /_-]", text)) query = Q() for token in tokens: query &= ( Q(latest_revision__name__icontains=token) | Q(latest_revision__extra_filter_expression__icontains=token) | Q(latest_revision__arguments_json__icontains=token) ) queryset = queryset.filter(query) return queryset
Example 9
Project: donation-tracker Author: GamesDoneQuick File: prize.py License: Apache License 2.0 | 6 votes |
def fix_prev_and_next_run(instance, using): prev_run = instance.order and ( SpeedRun.objects.filter(event=instance.event_id, order__lt=instance.order) .using(using) .order_by('order') .last() ) next_run = instance.order and ( SpeedRun.objects.filter(event=instance.event_id, order__gt=instance.order) .using(using) .order_by('order') .first() ) prizes = Prize.objects.using(using).filter( Q(prev_run=instance) | Q(next_run=instance) | Q(startrun=instance) | Q(endrun=instance) ) if prev_run: prizes = prizes | Prize.objects.using(using).filter( Q(startrun=next_run) | Q(endrun=prev_run) ) for prize in prizes: prize.save(using=using)
Example 10
Project: donation-tracker Author: GamesDoneQuick File: bid.py License: Apache License 2.0 | 6 votes |
def clean(self): sameBid = BidSuggestion.objects.filter( Q(name__iexact=self.name) & ( Q(bid__event=self.bid.get_event()) | Q(bid__speedrun__event=self.bid.get_event()) ) ) if sameBid.exists(): if sameBid.count() > 1 or sameBid[0].id != self.id: raise ValidationError( 'Cannot have a bid suggestion with the same name within the same event.' ) # If set, limit the length of suggestions based on the parent bid's # setting
Example 11
Project: donation-tracker Author: GamesDoneQuick File: search_feeds.py License: Apache License 2.0 | 6 votes |
def donation_feed_filter(feed_name, noslice, params, query, user): if ( feed_name not in ['recent', 'toprocess', 'toread', 'all'] and feed_name is not None ): raise ValueError(f'Unknown feed name `{feed_name}`') if feed_name == 'recent': query = get_recent_donations( **feed_params(noslice, params, {'donations': query}) ) elif feed_name == 'toprocess': if not user.has_perm('tracker.view_comments'): raise PermissionDenied query = query.filter((Q(commentstate='PENDING') | Q(readstate='PENDING'))) elif feed_name == 'toread': query = query.filter(Q(readstate='READY')) if feed_name != 'all': query = query.filter(transactionstate='COMPLETED', testdonation=False) elif not user.has_perm('tracker.view_pending'): raise PermissionDenied return query
Example 12
Project: donation-tracker Author: GamesDoneQuick File: search_feeds.py License: Apache License 2.0 | 6 votes |
def prize_feed_filter(feed_name, noslice, params, query, user): if feed_name == 'current': call_params = {} if 'time' in params: call_params['query_offset'] = default_time(params['time']) query = query.filter(current_prizes_filter(**call_params)) elif feed_name == 'future': query = query.filter(upcoming_prizes_filter(**feed_params(noslice, params))) elif feed_name == 'won': # TODO: are these used? doesn't seem to take multi-prizes into account query = query.filter(Q(prizewinner__isnull=False)) elif feed_name == 'unwon': query = query.filter(Q(prizewinner__isnull=True)) elif feed_name == 'todraw': query = query.filter(todraw_prizes_filter()) if feed_name != 'all': query = query.filter(state='ACCEPTED') elif not user.has_perm('tracker.change_prize'): raise PermissionDenied return query
Example 13
Project: donation-tracker Author: GamesDoneQuick File: search_filters.py License: Apache License 2.0 | 6 votes |
def model_specific_filter(model, params, user): query = Q() model = normalize_model_param(model) specifics = _SpecificFields[model] keys = list(params.keys()) filters = {k: single(params, k) for k in keys if k in specifics} if params: # anything leftover is unrecognized raise KeyError("Invalid search parameters: '%s'" % ','.join(params.keys())) for param, value in filters.items(): check_field_permissions(model, param, value, user) specific = specifics[param] field_query = Q() if isinstance(specific, str) or not hasattr(specific, '__iter__'): specific = [specific] for search_key in specific: field_query |= Q(**{search_key: value}) query &= field_query return query
Example 14
Project: open-synthesis Author: twschiller File: models.py License: GNU General Public License v3.0 | 6 votes |
def user_readable(self, user): """Queryset for boards that the user has read permissions for.""" base = super(BoardModelManager, self).get_queryset() if user.is_staff: return base if not user.is_authenticated: return base.filter(permissions__read_board=AuthLevels.anyone.key) else: public = Q(permissions__read_board=AuthLevels.anyone.key) registered = Q(permissions__read_board=AuthLevels.registered.key) created = Q(permissions__board__creator=user) collab = ( Q(permissions__read_board=AuthLevels.collaborators.key) & Q(permissions__collaborators=user) ) return base.filter(public | registered | created | collab)
Example 15
Project: seqr Author: macarthur-lab File: awesomebar_api.py License: GNU Affero General Public License v3.0 | 6 votes |
def _get_matching_hpo_terms(query, projects): """Returns OMIM records that match the given query string""" records = HumanPhenotypeOntology.objects.filter( Q(hpo_id__icontains=query) | Q(name__icontains=query) ).annotate( name_start=ExpressionWrapper(Q(name__istartswith=query), output_field=BooleanField()), hpo_id_start=ExpressionWrapper(Q(hpo_id__istartswith=query), output_field=BooleanField()), ).only('hpo_id', 'name', 'category_id').order_by( '-name_start', '-hpo_id_start', 'name').distinct()[:MAX_RESULTS_PER_CATEGORY] result = [] for record in records: result.append({ 'key': record.hpo_id, 'title': record.name, 'description': '({})'.format(record.hpo_id), 'category': record.category_id, }) return result
Example 16
Project: coursys Author: sfu-fas File: views.py License: GNU General Public License v3.0 | 6 votes |
def download_ras(request, current=True): ras = RAAppointment.objects.filter(Q(unit__in=request.units) | Q(hiring_faculty__userid=request.user.username))\ .select_related('person', 'hiring_faculty', 'unit', 'project', 'account').exclude(deleted=True) if current: today = datetime.date.today() slack = 14 # number of days to fudge the start/end ras = ras.filter(start_date__lte=today + datetime.timedelta(days=slack), end_date__gte=today - datetime.timedelta(days=slack)) response = HttpResponse(content_type='text/csv') response['Content-Disposition'] = 'inline; filename="ras-%s-%s.csv"' % (datetime.datetime.now().strftime('%Y%m%d'), 'current' if current else 'all') writer = csv.writer(response) writer.writerow(['Name', 'ID', 'Hiring Faculty', 'Unit', 'Project', 'Account', 'Start Date', 'End Date', 'Amount']) for ra in ras: writer.writerow([ra.person.sortname(), ra.person.emplid, ra.hiring_faculty.sortname(), ra.unit.label, ra.project, ra.account, ra.start_date, ra.end_date, ra.lump_sum_pay]) return response
Example 17
Project: coursys Author: sfu-fas File: views.py License: GNU General Public License v3.0 | 6 votes |
def index(request): person = get_person(request.user) # PERS, INST reminders for this person personal_reminders = Reminder.objects.filter(reminder_type__in=['PERS','INST'], person=person).select_related('course') # ROLE reminders for this person's current roles user_roles = Role.objects_fresh.filter(person=person) role_query = reduce( operator.or_, (Q(role=r.role) & Q(unit=r.unit) for r in user_roles) ) role_reminders = Reminder.objects.filter(role_query, reminder_type='ROLE').select_related('unit') reminders = set(personal_reminders) | set(role_reminders) context = { 'reminders': reminders, } return render(request, 'reminders/index.html', context)
Example 18
Project: coursys Author: sfu-fas File: views.py License: GNU General Public License v3.0 | 6 votes |
def view_submission(request: HttpRequest, course_slug: str, activity_slug: str, userid: str) -> HttpResponse: offering = get_object_or_404(CourseOffering, slug=course_slug) activity = get_object_or_404(Activity, slug=activity_slug, offering=offering, group=False) quiz = get_object_or_404(Quiz, activity=activity) questions = Question.objects.filter(quiz=quiz) member = get_object_or_404(Member, ~Q(role='DROP'), find_member(userid), offering__slug=course_slug) answers = QuestionAnswer.objects.filter(student=member, question__in=questions).select_related('question') versions = QuestionVersion.select(quiz=quiz, questions=questions, student=member, answers=answers) answer_lookup = {a.question_id: a for a in answers} version_answers = [(v, answer_lookup.get(v.question.id, None)) for v in versions] context = { 'offering': offering, 'activity': activity, 'quiz': quiz, 'member': member, 'version_answers': version_answers, } return render(request, 'quizzes/view_submission.html', context=context)
Example 19
Project: coursys Author: sfu-fas File: views.py License: GNU General Public License v3.0 | 6 votes |
def submission_history(request: HttpRequest, course_slug: str, activity_slug: str, userid: str) -> HttpResponse: offering = get_object_or_404(CourseOffering, slug=course_slug) activity = get_object_or_404(Activity, slug=activity_slug, offering=offering, group=False) quiz = get_object_or_404(Quiz, activity=activity) questions = Question.objects.filter(quiz=quiz) versions = QuestionVersion.objects.filter(question__in=questions) member = get_object_or_404(Member, ~Q(role='DROP'), find_member(userid), offering__slug=course_slug) quiz_submissions = QuizSubmission.objects.filter(quiz=quiz, student=member) [qs.annotate_questions(questions, versions) for qs in quiz_submissions] context = { 'offering': offering, 'activity': activity, 'quiz': quiz, 'member': member, 'quiz_submissions': quiz_submissions, 'can_photo': has_photo_agreement(request.member.person) } return render(request, 'quizzes/submission_history.html', context=context)
Example 20
Project: coursys Author: sfu-fas File: views.py License: GNU General Public License v3.0 | 6 votes |
def _marks_csv(activity: Activity, question_marks: List[Tuple[Question, int, List[QuestionVersion]]], student_mark_data: List[Tuple[Member, List]]) -> HttpResponse: # reproduce the table from the marking page, as CSV response = HttpResponse(content_type='text/csv; charset=utf-8') response['Content-Disposition'] = 'inline; filename="%s-results.csv"' % (activity.slug,) writer = csv.writer(response) header = ['Student', 'Userid', 'Emplid'] header.extend(['Q#%i' % (i+1,) for i,_ in enumerate(question_marks)]) writer.writerow(header) for student, marks in student_mark_data: row = [student.person.sortname(), student.person.userid, student.person.emplid] row.extend([m.value if m else None for m in marks]) writer.writerow(row) return response
Example 21
Project: pinax-documents Author: pinax File: managers.py License: MIT License | 5 votes |
def for_user(self, user): """ All folders the given user can do something with. """ qs = SharedMemberQuerySet(model=self.model, using=self._db, user=user) qs = qs.filter(Q(author=user) | Q(foldershareduser__user=user)) return qs.distinct() & self.distinct()
Example 22
Project: pinax-documents Author: pinax File: managers.py License: MIT License | 5 votes |
def for_user(self, user): """ All documents the given user can do something with. """ qs = SharedMemberQuerySet(model=self.model, using=self._db, user=user) qs = qs.filter(Q(author=user) | Q(documentshareduser__user=user)) return qs.distinct() & self.distinct()
Example 23
Project: openwisp-users Author: openwisp File: multitenancy.py License: BSD 3-Clause "New" or "Revised" License | 5 votes |
def _edit_form(self, request, form): """ Modifies the form querysets as follows; if current user is not superuser: * show only relevant organizations * show only relations associated to relevant organizations or shared relations else show everything """ fields = form.base_fields if not request.user.is_superuser: orgs_pk = request.user.organizations_dict.keys() # organizations relation; # may be readonly and not present in field list if 'organization' in fields: org_field = fields['organization'] org_field.queryset = org_field.queryset.filter(pk__in=orgs_pk) # other relations q = Q(organization__in=orgs_pk) | Q(organization=None) for field_name in self.multitenant_shared_relations: # each relation may be readonly # and not present in field list if field_name not in fields: continue field = fields[field_name] field.queryset = field.queryset.filter(q)
Example 24
Project: openwisp-users Author: openwisp File: utils.py License: BSD 3-Clause "New" or "Revised" License | 5 votes |
def get_operator_permissions(self): filters = Q() for filter in self.operator_permission_filters: filters = filters | Q(**filter) return Permission.objects.filter(filters)
Example 25
Project: Servo Author: fpsw File: device.py License: BSD 2-Clause "Simplified" License | 5 votes |
def choose(request, order_id): """ Choosing a device from within an SRO Does GSX lookup in case device is not found locally """ context = {'order': order_id} if request.method == "POST": query = request.POST.get('q').upper() results = Device.objects.filter(Q(sn__iexact=query) | Q(imei=query)) if len(results) < 1: try: current_order = request.session.get("current_order_id") current_order = Order.objects.get(pk=current_order) if current_order and current_order.queue: GsxAccount.default(request.user, current_order.queue) else: GsxAccount.default(request.user) results = [Device.from_gsx(query)] except Exception as e: context['error'] = e return render(request, "devices/choose-error.html", context) context['results'] = results return render(request, "devices/choose-list.html", context) return render(request, "devices/choose.html", context)
Example 26
Project: Servo Author: fpsw File: search.py License: BSD 2-Clause "Simplified" License | 5 votes |
def orders(request): """ Searches local service orders """ query = request.GET.get("q") if not query or len(query) < 3: messages.error(request, _('Search query is too short')) return redirect(reverse('orders-index')) request.session['search_query'] = query # Redirect Order ID:s to the order try: order = Order.objects.get(code__iexact=query) return redirect(order) except Order.DoesNotExist: pass orders = Order.objects.filter( Q(code=query) | Q(devices__sn__contains=query) | Q(customer__fullname__icontains=query) | Q(customer__phone__contains=query) | Q(repair__confirmation=query) | Q(repair__reference=query) ) data = { 'title': _('Orders'), 'subtitle': _(u'%d results for "%s"') % (orders.count(), query) } page = request.GET.get('page') data['orders'] = paginate(orders.distinct(), page, 100) return render(request, "orders/index.html", data)
Example 27
Project: Servo Author: fpsw File: checkescalations.py License: BSD 2-Clause "Simplified" License | 5 votes |
def handle(self, *args, **options): # get local user to create notes as uid = Configuration.conf('imap_act') if empty(uid): raise ConfigurationError('Incoming message user not defined') user = User.objects.get(pk=uid) tz = timezone.get_current_timezone() for i in Escalation.objects.exclude(Q(escalation_id='') | Q(status='C')): # connect per-user since the escalations can be under different ship-tos try: i.gsx_account.connect(i.created_by) except Exception: continue # skip auth errors so we don't get stuck r = i.get_escalation().lookup() aware = timezone.make_aware(r.lastModifiedTimestamp, tz) if aware < i.updated_at: # hasn't been updated continue try: parent = i.note_set.latest() except Note.DoesNotExist: continue bodies = [n.body for n in i.note_set.all()] for x in r.escalationNotes.iterchildren(): if x.text in bodies: # skip notes we already have continue note = Note(created_by=user, escalation=i, body=x.text) parent.add_reply(note) note.save() i.updated_at = timezone.now() i.status = r.escalationStatus i.save()
Example 28
Project: gazetteer Author: LibraryOfCongress File: lookups.py License: MIT License | 5 votes |
def get_query(self,q,request): """ return a query set. you also have access to request.user if needed """ return FeatureType.objects.filter(Q(code__icontains=q) | Q(name__icontains=q))
Example 29
Project: gazetteer Author: LibraryOfCongress File: api_views.py License: MIT License | 5 votes |
def feature_codes_autocomplete(request): ''' Used for autocomplete: return Feature Codes matching GET param 'q' ''' query = request.GET.get("q", "a") page_limit = int(request.GET.get("page_limit", 10)) page = int(request.GET.get("page", 1)) matched_codes = FeatureCode.objects.filter(Q(cls__icontains=query) | Q(typ__icontains=query) | Q(name__icontains=query) | Q(description__icontains=query)) paginator = Paginator(matched_codes, page_limit) results = paginator.page(page) items = [obj.to_json() for obj in results.object_list] return render_to_json_response({ 'items': items, 'has_next': results.has_next() })
Example 30
Project: django-river Author: javrasya File: signals.py License: BSD 3-Clause "New" or "Revised" License | 5 votes |
def __enter__(self): if self.status: for hook in OnTransitHook.objects.filter( (Q(object_id__isnull=True) | Q(object_id=self.workflow_object.pk, content_type=self.content_type)) & (Q(transition__isnull=True) | Q(transition=self.transition_approval.transition)) & Q( workflow__field_name=self.field_name, transition_meta=self.transition_approval.transition.meta, hook_type=BEFORE ) ): hook.execute(self._get_context(BEFORE)) LOGGER.debug("The signal that is fired right before the transition ( %s ) happened for %s" % (self.transition_approval.transition, self.workflow_object))