Skip to content

Instantly share code, notes, and snippets.

@akoumjian
Created November 15, 2013 02:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save akoumjian/7477980 to your computer and use it in GitHub Desktop.
Save akoumjian/7477980 to your computer and use it in GitHub Desktop.
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=reques­t.session['make'])
line=ProcessorLine.objects.get(id=reques­t.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=reques­t.session['make'])
# User left and came back
if request.method == 'GET':
form = ProcessorLineForm()
form.fields["name"]=ProcessorL­ine.objects.filter(processormake__id=mak­e.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"]=ProcessorM­odel.objects.filter(processorline__id=li­ne.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"]=ProcessorL­ine.objects.filter(processormake__id=mak­e.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(nam­e=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