def sequence(request, pk, spk): seq = Sequence.objects.get(pk=spk) form = SequenceForm(instance=seq, initial={'organism': seq.getOrganism()}) form.organism = seq.getOrganism() featureFormDic = {} qualifierFormDic = {} for f in seq.feature_set.all(): featureFormDic[f] = FeatureForm(instance=f, mt=seq.moltype, initial={'featureKey': f.featureKey}) qualifierFormList = [] for q in f.qualifier_set.all(): qualifierFormList.append(QualifierForm(feature=f, instance=q, initial={'qualifierName': q.qualifierName})) qualifierFormDic[f] = qualifierFormList # if request.method == 'POST': # if form.is_valid(): # cd = form.cleaned_data # # fk = cd['featureKey'] # fl = cd['location'] # f = Feature.objects.create(sequence=seq, featureKey=fk, location=fl) # f.save() # return HttpResponseRedirect(reverse('sequencelistings:detail', args=(pk,))) # else: # form = FeatureForm(mt=seq.moltype) return render(request, 'sequencelistings/sequence.html', {'form': form, 'seq': seq, 'featureFormDic': featureFormDic, 'qualifierFormDic': qualifierFormDic,})
def add_sequence(request, pk): # print 'add_sequence invoked' if request.method == 'POST': organism = request.POST.get('organism') form = SequenceForm(request.POST) if form.is_valid(): sl = SequenceListing.objects.get(pk=pk) cd = form.cleaned_data sequence_instance = Sequence(sequenceListing = sl, length = len(cd['residues']), moltype = cd['moltype'], residues = cd['residues'] ) sequence_instance.save() value_for_source = 'source' if cd['moltype'] == 'AA': value_for_source = 'SOURCE' value_for_organism = 'organism' if cd['moltype'] == 'AA': value_for_organism = 'ORGANISM' value_for_moltype = 'mol_type' if cd['moltype'] == 'AA': value_for_moltype = 'MOL_TYPE' feature_instance = Feature.objects.create(sequence=sequence_instance, featureKey=value_for_source, location='1..%s' % sequence_instance.length) feature_instance.save() organism_qualifier_instance = Qualifier.objects.create(feature=feature_instance, qualifierName=value_for_organism, qualifierValue=organism) organism_qualifier_instance.save() mol_type_qualifier_instance = Qualifier.objects.create(feature=feature_instance, qualifierName=value_for_moltype, qualifierValue=util.MOL_TYPE_QUALIFIER_VALUES[cd['moltype']]) mol_type_qualifier_instance.save() return HttpResponseRedirect(reverse('sequencelistings:detail', args=(pk,))) else: form = SequenceForm() return render(request, 'sequencelistings/add_seq.html', {'form': form, 'pk': pk})