def occupations(request, category_id=None): if category_id: category = OCCUPATIONS[int(category_id)] data = [(occ['id'], occ['name']) for occ in category['occupations']] else: data = [(cat_id, cat['name']) for cat_id, cat in OCCUPATIONS.iteritems()] return HttpResponse(json.dumps(data), mimetype='application/json')
def preferences_form(zipcode=None, category_id=None, occupation_id=None, weights=None): categories = EMPTY_CHOICE + [(k, v["name"]) for k, v in OCCUPATIONS.iteritems() if k != 0] categories.sort(lambda x, y: cmp(x[1], y[1])) fields = { "zipcode": forms.CharField(max_length=5, initial=zipcode), "category": forms.ChoiceField(choices=categories, initial=category_id), "occupation": forms.ChoiceField(choices=EMPTY_CHOICE), "weights": forms.MultipleChoiceField( choices=WEIGHT_CHOICES, widget=CheckboxSelectMultiple, required=False, initial=weights ), } if category_id and occupation_id: occupations = EMPTY_CHOICE + [(occ["id"], occ["name"]) for occ in OCCUPATIONS[int(category_id)]["occupations"]] fields["occupation"] = forms.ChoiceField(choices=occupations, initial=occupation_id) return type("PreferencesForm", (forms.BaseForm,), {"base_fields": fields})