Created
November 15, 2013 02:07
-
-
Save akoumjian/7477980 to your computer and use it in GitHub Desktop.
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 characters
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, }) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment