I should add that this initally loads a list of children without specifying either gender or age
On Friday, January 26, 2018 at 12:05:04 PM UTC-5, eil...@themaii.org wrote:
-- On Friday, January 26, 2018 at 12:05:04 PM UTC-5, eil...@themaii.org wrote:
I have a file: views.py which refers to two main fields on the page: age and genderRight now, the search requires that an age to be chosen whether or not the gender is, and I'd like to make the age optional as well. I.e get all the children.Additionally, I'd like to search for only males or females without selecting an age...-Eileenfrom __future__ import unicode_literalsfrom django.contrib.auth import get_user_modelfrom django.shortcuts import redirectfrom django.template.response import TemplateResponsefrom django.http import HttpResponsefrom django.db.models import Qfrom django.db.models import Ffrom mezzanine.conf import settingsfrom sponsorship.forms import FilterFormfrom sponsorship.models import Childfrom pinax.stripe.models import Customerimport jsonimport logginglogger = logging.getLogger(__name__)User = get_user_model()steps = [{'title': 'Find a child to sponsor', 'no': '1'}, {'title': 'Sign up or sign in', 'no': '2'}]def filterchain_all(request, app_name, model_name, method_name, gender):gender_dict = {'MALE': 0, 'FEMALE': 1}if gender in gender_dict:qs = Child.objects.filter(gender=gender_dict[gender]).order_by( 'age') results = list(qs)final = []for item in results:if int(item.age) not in [d['display'] for d in final]:final.append({'value': int(item.age), 'display': int(item.age)})return HttpResponse(json.dumps(final), content_type='application/ json') else:return HttpResponse(json.dumps({'success': True}), content_type='application/ json') def children_list(request, template="pages/sponsorship.html", extra_context=None): templates = []templates.append(template)children = Child.objects.filter(Q(has_photo=1) & Q(image__isnull=False) & Q(sponsor__isnull=True)) context = {"child_filter": children, "filter_form": FilterForm(), "steps": steps, "activestep": "1"}if request.method == "POST":if "id" in request.POST:child_id = context['child_filter'].filter(id=request.POST['id'])[ 0].child_id authenticated = request.user.is_authenticated() if settings.SHOP_CHECKOUT_ACCOUNT_REQUIRED and not authenticated: url = "/accounts/signup/?next=/donate/product/sponsor-a- child/new_customer/%s" % child_id return redirect(url)else:url = "/donate/product/sponsor-a-child/%s" % child_id return redirect(url)else:form = FilterForm(request.POST)gender_dict = {'MALE': 0, 'FEMALE': 1}search_message = "There are no children that match your selection"if form.is_valid() and form.data['gender'] != '-----':if form.data['gender'] is 0 or 1:q = context['child_filter'].filter(Q(gender=gender_dict[ request.POST['gender']])) import pdb; pdb.set_trace()if form['handicapped'].data == 1 or 2:q = context['child_filter'].filter(Q(handicapped= handicapped_dict[request.POST[ 'handicapped']])) if request.POST['age'] != '':q = context['child_filter'].filter(Q(age=request.POST[' age'])) # start of output using search parametersif q.count() > 1:search_message = "There are %s children that match your selection of %s" % (q.count(), request.POST['gender'])else:search_message = "There is 1 child that matches your selection of %s" % (request.POST['gender'])if q.count() > 1:search_message = ", age: %s" % (request.POST['age'])else:search_message = ", age: %s" % (request.POST['age'])context['child_filter'] = qcontext['filter_form'] = FilterForm()context['activestep'] = "1"context['search_message'] = search_messageextra_context = {"message": "Updating filter"}context.update(extra_context or {})return TemplateResponse(request, templates, context)else:context['filter_form'] = formextra_context = {"message":"Something went wrong"}context.update(extra_context or {})return TemplateResponse(request, templates, context)else:context.update(extra_context or {})return TemplateResponse(request, templates, context)def child_detail(request, template="pages/sponsorship.html", extra_context=None, pk=None): templates = []templates.append(template)children = Child.objects.filter(pk=pk)if request.method == "GET":context = {"child_filter": children, "filter_form": FilterForm(), "steps": steps, "activestep": "3"}else:context = {"child_filter": children, "filter_form": FilterForm(), "steps": steps, "activestep": "4"}context.update(extra_context or {})return TemplateResponse(request, templates, context)def final_order_handler(request, order_form, order):"""Default order handler - called when the order is complete andcontains its final data. Implement your own and specify the pathto import it from via the setting ``SHOP_HANDLER_ORDER``."""child_id = order.items.all()[0].child_idif child_id != "":child = Child.objects.get(child_id=child_id) current_customer = Customer.objects.get(user=request.user) child.sponsor = current_customerchild.save()
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/b2510159-5162-4c5b-9b57-7847f42b0a0a%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
No comments:
Post a Comment