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: 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 #4
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 #5
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 #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") queryset = queryset.filter( Q(latest_revision__name__contains=text) | Q(latest_revision__extra_filter_expression__contains=text) ) return queryset
Example #8
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 #9
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 #10
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 #11
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 #12
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 #13
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 #14
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 #15
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 #16
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 #17
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 #18
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 #19
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 #20
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 #21
Source File: managers.py From pinax-documents with 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
Source File: managers.py From pinax-documents with 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
Source File: multitenancy.py From openwisp-users with 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
Source File: utils.py From openwisp-users with 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
Source File: device.py From Servo with 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
Source File: search.py From Servo with 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
Source File: checkescalations.py From Servo with 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
Source File: lookups.py From gazetteer with 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
Source File: api_views.py From gazetteer with 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
Source File: signals.py From django-river with 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))