I have a file: views.py which refers to two main fields on the page: age 
and gender
Right 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...

-Eileen
from __future__ import unicode_literals
from django.contrib.auth import get_user_model
from django.shortcuts import redirect
from django.template.response import TemplateResponse
from django.http import HttpResponse
from django.db.models import Q
from django.db.models import F
from mezzanine.conf import settings
from sponsorship.forms import FilterForm
from sponsorship.models import Child
from pinax.stripe.models import Customer
import json
import logging

logger = 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 parameters

            if 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'] = q
            context['filter_form'] = FilterForm()
            context['activestep'] = "1"
            context['search_message'] = search_message
            extra_context = {"message": "Updating filter"}
            context.update(extra_context or {})
            return TemplateResponse(request, templates, context)
          else:
              context['filter_form'] = form
              extra_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 and
    contains its final data. Implement your own and specify the path
    to import it from via the setting ``SHOP_HANDLER_ORDER``.
    """
    child_id = order.items.all()[0].child_id
    if child_id != "":
        child = Child.objects.get(child_id=child_id)
        current_customer = Customer.objects.get(user=request.user)
        child.sponsor = current_customer
        child.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+unsubscr...@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/08208d6f-7e80-40b9-98d5-f7cc1d52d3cd%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to