def _get_date_filter(request, context, df, dt, date_fields): query = models.Q() GET = request.GET has_df = (df in GET) and GET[df].strip() has_dt = (dt in GET) and GET[dt].strip() if has_df and has_dt: query_date_from_string = GET[df] query_date_to_string = GET[dt] context[df] = query_date_from_string context[dt] = query_date_to_string query = search.get_date_query(query_date_from_string, query_date_to_string, date_fields) elif has_df: query_date_from_string = GET[df] context[df] = query_date_from_string query = search.get_date_query(query_date_from_string, None, date_fields) elif has_dt: query_date_to_string = GET[dt] context[dt] = query_date_to_string query = search.get_date_query(None, query_date_to_string, date_fields) if query is None: query = models.Q() messages.add_message(request, messages.WARNING, "Invalid date. Please use MM/DD/YYYY.") return query
def _date_search(request, fields, model, queryset=None): if not queryset: queryset = model.objects.all() if ("df" in request.GET) and request.GET["df"].strip() and ("dt" in request.GET) and request.GET["dt"].strip(): query_date_from_string = request.GET["df"] query_date_to_string = request.GET["dt"] date_query = get_date_query(query_date_from_string, query_date_to_string, fields) if date_query: if queryset: queryset = queryset.filter(date_query) else: queryset = model.objects.filter(date_query) else: messages.add_message(request, messages.WARNING, "Invalid date. Please use MM/DD/YYYY.") elif ("df" in request.GET) and request.GET["df"].strip(): query_date_from_string = request.GET["df"] date_query = get_date_query(query_date_from_string, None, fields) if date_query: if queryset: queryset = queryset.filter(date_query) else: queryset = model.objects.filter(date_query) else: messages.add_message(request, messages.WARNING, "Invalid date. Please use MM/DD/YYYY.") elif ("dt" in request.GET) and request.GET["dt"].strip(): query_date_to_string = request.GET["dt"] date_query = get_date_query(None, query_date_to_string, fields) if date_query: if queryset: queryset = queryset.filter(date_query) else: queryset = model.objects.filter(date_query) else: messages.add_message(request, messages.WARNING, "Invalid date. Please use MM/DD/YYYY.") return queryset