Created
November 15, 2013 02:07
Revisions
-
akoumjian created this gist
Nov 15, 2013 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,138 @@ from django.db import models class ProcessorMake(models.Model): name = models.CharField(max_length=20) def __unicode__(self): return self.name class ProcessorLine(models.Model): processormake = models.ForeignKey(ProcessorMake) name = models.CharField(max_length=20) def __unicode__(self): return self.name class ProcessorModel(models.Model): processormodel = models.ForeignKey(ProcessorLine) name = models.CharField(max_length=20) def __unicode__(self): return self.name initial_data.yaml - model: paq.ProcessorMake pk: 1 fields: name: AMD - model: paq.ProcessorMake pk: 2 fields: name: Intel - model: paq.ProcessorLine pk: 1 fields: processormake: 1 name: FX - model: paq.ProcessorLine pk: 2 fields: processormake: 1 name: A-Series - model: paq.ProcessorLine pk: 3 fields: processormake: 1 name: Phenom II - model: paq.ProcessorLine pk: 4 fields: processormake: 1 name: Athlon II - model: paq.ProcessorLine pk: 5 fields: processormake: 1 name: Sempron views.py from django.shortcuts import render from models import ProcessorMake, ProcessorLine, ProcessorModel from forms import ProcessorMakeForm, ProcessorLineForm, ProcessorModelForm def chooseprocessor(request): make = request.session.get('make', None) line = request.session.get('line', None) model = request.session.get('model', None) if 'make' in request.session and 'line' in request.session and 'model' in request.session: pass if 'make' in request.session and 'line' in request.session: make=ProcessorMake.objects.get(id=request.session['make']) line=ProcessorLine.objects.get(id=request.session['line']) if request.method == 'GET': pass elif request.method == 'POST': pass # User chose Make just now or sometime in the past if 'make' in request.session: make=ProcessorMake.objects.get(id=request.session['make']) # User left and came back if request.method == 'GET': form = ProcessorLineForm() form.fields["name"]=ProcessorLine.objects.filter(processormake__id=make.pk) return render(request, 'chooseprocessorline.html', { 'form': form, 'make': make.name }) # User just chose Line on the previous screen elif request.method == 'POST': form = ProcessorLineForm(request.POST) if form.is_valid(): line=ProcessorLine.objects.get(name=form.cleaned_data['name']) request.session['line']=line.pk form = ProcessorModelForm() form.fields["name"]=ProcessorModel.objects.filter(processorline__id=line.pk) return render(request, 'chooseprocessormodel.html', { 'form': form, 'make': make.name, 'line': line.name }) else: return render(request, 'chooseprocessorline.html', { 'form': form, 'make': make.name }) # User either newly here or cookies were deleted if request.method == 'GET': form = ProcessorMakeForm() return render(request, 'chooseprocessormake.html', { 'form': form, }) if request.method == 'POST': # User just chose Make form = ProcessorMakeForm(request.POST) if form.is_valid(): make=ProcessorMake.objects.get(name=form.cleaned_data['name']) request.session['make']=make.pk form = ProcessorLineForm() form.fields["name"]=ProcessorLine.objects.filter(processormake__id=make.pk) return render(request, 'chooseprocessorline.html', { 'form': form, 'make': make.name }) return render(request, 'chooseprocessormake.html', { 'form': form, }) def chooseprocessorbak(request): if request.method == 'POST': form = ProcessorMakeForm(request.POST) if form.is_valid(): primarykey=ProcessorMake.objects.get(name=form.cleaned_data['name']) request.session['make']=primarykey request.session['started']=True return render(request, 'paqsuccess.html', { 'form': form.cleaned_data, 'primarykey': primarykey.pk }) else: form = ProcessorMakeForm() return render(request, 'paq.html', { 'form': form, })