Python django.db.models.Q Examples
The following are 30
code examples of django.db.models.Q().
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 also want to check out all available functions/classes of the module
django.db.models
, or try the search function
.

Example #1
Source File: product.py From Servo with BSD 2-Clause "Simplified" License | 8 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
Source File: search.py From Servo with BSD 2-Clause "Simplified" License | 7 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 #3
Source File: bid.py From donation-tracker with 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 #4
Source File: views.py From normandy with 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 #5
Source File: search_filters.py From donation-tracker with 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 #6
Source File: profile_view.py From yang-explorer with 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
Source File: views.py From normandy with 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 #8
Source File: models.py From open-synthesis with 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 #9
Source File: search_feeds.py From donation-tracker with 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 #10
Source File: search_feeds.py From donation-tracker with 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 #11
Source File: orm_driver.py From django-river with 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 #12
Source File: awesomebar_api.py From seqr with 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 #13
Source File: views.py From coursys with 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 #14
Source File: views.py From coursys with 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 #15
Source File: prize.py From donation-tracker with 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 #16
Source File: views.py From coursys with 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 #17
Source File: views.py From coursys with 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 #18
Source File: order.py From Servo with 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 #19
Source File: search.py From Servo with 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 #20
Source File: views.py From coursys with 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 #21
Source File: gene_utils.py From seqr with GNU Affero General Public License v3.0 | 5 votes |
def get_queried_genes(query, max_results): matching_genes = GeneInfo.objects.filter( Q(gene_id__icontains=query) | Q(gene_symbol__icontains=query) ).only('gene_id', 'gene_symbol').order_by(Length('gene_symbol').asc()).distinct() return [{'gene_id': gene.gene_id, 'gene_symbol': gene.gene_symbol} for gene in matching_genes[:max_results]]
Example #22
Source File: prizemail.py From donation-tracker with Apache License 2.0 | 5 votes |
def prizes_with_winner_accept_email_pending(event): return PrizeWinner.objects.filter( Q(prize__event=event) & Q(prize__state='ACCEPTED') & Q(acceptcount__gt=F('acceptemailsentcount')) )
Example #23
Source File: locus_list_api.py From seqr with GNU Affero General Public License v3.0 | 5 votes |
def locus_lists(request): if request.user.is_staff: locus_list_models = LocusList.objects.all() else: locus_list_models = LocusList.objects.filter(Q(is_public=True) | Q(created_by=request.user)) locus_list_models = locus_list_models.annotate(num_projects=Count('projects')) locus_lists_json = get_json_for_locus_lists(locus_list_models, request.user, include_project_count=True) return create_json_response({ 'locusListsByGuid': {locus_list['locusListGuid']: locus_list for locus_list in locus_lists_json} })
Example #24
Source File: search_filters.py From donation-tracker with Apache License 2.0 | 5 votes |
def build_general_query_piece(rootmodel, key, text, user): if text: # These can throw if somebody is trying to access, say, the lookups endpoints without being logged in check_field_permissions(rootmodel, key, text, user) return Q(**{key + '__icontains': text}) return Q()
Example #25
Source File: search_feeds.py From donation-tracker with Apache License 2.0 | 5 votes |
def todraw_prizes_filter(query_offset=None): offset = default_time(query_offset) return Q(state='ACCEPTED') & ( Q(prizewinner__isnull=True) & ( Q(endrun__endtime__lte=offset) | Q(endtime__lte=offset) | (Q(endtime=None) & Q(endrun=None)) ) )
Example #26
Source File: search_feeds.py From donation-tracker with Apache License 2.0 | 5 votes |
def current_prizes_filter(query_offset=None): offset = default_time(query_offset) return Q(prizewinner__isnull=True) & ( Q(startrun__starttime__lte=offset, endrun__endtime__gte=offset) | Q(starttime__lte=offset, endtime__gte=offset) | Q( startrun__isnull=True, endrun__isnull=True, starttime__isnull=True, endtime__isnull=True, ) )
Example #27
Source File: search_feeds.py From donation-tracker with Apache License 2.0 | 5 votes |
def upcoming_bid_filter(**kwargs): runs = [ run.id for run in get_upcoming_runs( SpeedRun.objects.filter(Q(bids__state='OPENED')).distinct(), **kwargs ) ] return Q(speedrun__in=runs)
Example #28
Source File: test_search_filters.py From donation-tracker with Apache License 2.0 | 5 votes |
def test_to_read_feed_with_permission(self): actual = apply_feed_filter(self.query, 'donation', 'toread') expected = self.query.filter(Q(readstate='READY')) self.assertSetEqual(set(actual), set(expected))
Example #29
Source File: test_search_filters.py From donation-tracker with Apache License 2.0 | 5 votes |
def test_to_process_feed_with_permission(self): actual = apply_feed_filter( self.query, 'donation', 'toprocess', user=self.donation_user ) expected = self.query.filter(Q(commentstate='PENDING') | Q(readstate='PENDING')) self.assertSetEqual(set(actual), set(expected))
Example #30
Source File: prizemail.py From donation-tracker with Apache License 2.0 | 5 votes |
def prizes_with_shipping_email_pending(event): return PrizeWinner.objects.filter( Q(prize__event=event) & Q(shippingstate='SHIPPED') & Q(shippingemailsent=False) )