From 1d35a31c9cb07e08fb196afd72b2826f782554b2 Mon Sep 17 00:00:00 2001 From: carlosp420 Date: Mon, 26 Jan 2015 14:44:38 +0200 Subject: [PATCH] start with forms --- Makefile | 4 +- voseq/create_dataset/__init__.py | 0 voseq/create_dataset/admin.py | 3 + voseq/create_dataset/forms.py | 66 +++++++++ voseq/create_dataset/migrations/__init__.py | 0 voseq/create_dataset/models.py | 3 + .../templates/create_dataset/index.html | 138 ++++++++++++++++++ voseq/create_dataset/tests.py | 3 + voseq/create_dataset/urls.py | 10 ++ voseq/create_dataset/views.py | 14 ++ .../templates/public_interface/base.html | 1 + voseq/voseq/settings/base.py | 1 + voseq/voseq/urls.py | 2 + 13 files changed, 243 insertions(+), 2 deletions(-) create mode 100644 voseq/create_dataset/__init__.py create mode 100644 voseq/create_dataset/admin.py create mode 100644 voseq/create_dataset/forms.py create mode 100644 voseq/create_dataset/migrations/__init__.py create mode 100644 voseq/create_dataset/models.py create mode 100644 voseq/create_dataset/templates/create_dataset/index.html create mode 100644 voseq/create_dataset/tests.py create mode 100644 voseq/create_dataset/urls.py create mode 100644 voseq/create_dataset/views.py diff --git a/Makefile b/Makefile index 5189a361..71d6eb12 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ help: - @echo "serve - remove build artifacts" + @echo "serve - runserver for development" @echo "test - use testing settings and SQlite3 database" serve: index stats @@ -16,7 +16,7 @@ import: python voseq/manage.py migrate_db --dumpfile=test_db_dump.xml --settings=voseq.settings.local index: - python voseq/manage.py rebuild_index + python voseq/manage.py rebuild_index --settings=voseq.settings.local stats: python voseq/manage.py create_stats --settings=voseq.settings.local diff --git a/voseq/create_dataset/__init__.py b/voseq/create_dataset/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/voseq/create_dataset/admin.py b/voseq/create_dataset/admin.py new file mode 100644 index 00000000..8c38f3f3 --- /dev/null +++ b/voseq/create_dataset/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/voseq/create_dataset/forms.py b/voseq/create_dataset/forms.py new file mode 100644 index 00000000..adff7614 --- /dev/null +++ b/voseq/create_dataset/forms.py @@ -0,0 +1,66 @@ +from django import forms + +from public_interface.models import Genes +from public_interface.models import GeneSets +from public_interface.models import TaxonSets + + +class CreateDatasetForm(forms.Form): + file_format = forms.ChoiceField( + label='Choose file format', + choices=[ + ('TNT', 'TNT format'), + ('NEXUS', 'NEXUS format'), + ('PHY', 'PHYLIP format'), + ('FASTA', 'Unaligned FASTA format'), + ] + ) + + outgroup = forms.CharField( + label='Outgroup (code, for NEXUS and TNT)', + help_text='Voucher code for using that specimen\'s sequence as ' + 'outgroup in NEXUS and TNT datasets.', + ) + """ + taxonset = forms.ModelChoiceField( + TaxonSets.objects.all(), + label='Choose taxonset', + required=False, + empty_label='Choose taxonset', + ) + geneset = forms.ModelChoiceField( + GeneSets.objects.all(), + label='Choose geneset', + required=False, + empty_label='Choose geneset', + ) + gene_codes = forms.ModelMultipleChoiceField( + Genes.objects.all(), + label='Check to select your alignment/gene', + required=False, + widget=forms.CheckboxSelectMultiple(), + ) + voucher_codes = forms.CharField( + widget=forms.Textarea, + label='... and/or a list of voucher codes', + required=False, + ) + """ + + def clean(self): + """Overwriting validator method of class form.""" + cleaned_data = super(GenBankFastaForm, self).clean() + taxonset = cleaned_data.get("taxonset") + voucher_codes = cleaned_data.get("voucher_codes") + + geneset = cleaned_data.get("geneset") + gene_codes = cleaned_data.get("gene_codes") + print(gene_codes) + + if taxonset is None and voucher_codes.strip() == '': + raise forms.ValidationError("You need to enter at least some " + "voucher codes or select a taxonset.") + + if geneset is None and len(gene_codes) < 1: + raise forms.ValidationError("You need to enter at least some " + "gene codes or select a geneset.") diff --git a/voseq/create_dataset/migrations/__init__.py b/voseq/create_dataset/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/voseq/create_dataset/models.py b/voseq/create_dataset/models.py new file mode 100644 index 00000000..71a83623 --- /dev/null +++ b/voseq/create_dataset/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/voseq/create_dataset/templates/create_dataset/index.html b/voseq/create_dataset/templates/create_dataset/index.html new file mode 100644 index 00000000..0c010bcf --- /dev/null +++ b/voseq/create_dataset/templates/create_dataset/index.html @@ -0,0 +1,138 @@ +{% extends 'public_interface/base.html' %} + + +{% block additional_css %} + {% load staticfiles %} + + + +{% endblock additional_css %} + + +{% block content %} +
+
+

Create dataset:

+ + + +
+
+ +
+ +
+
+
+

Enter the required info to make yourself a ready-to-run dataset

+
+ + + + {{ form.as_p }} + Warning! your dataset will not necessarily be properly aligned! + + {% csrf_token %} + + {% for i in form.non_field_errors %} +
{{ i }}
+ {% endfor %} + + + + + + + +
+ + + + + + + + + +
+ + + {% for i in form.taxonset.errors %} +
{{ i }}
+ {% endfor %} + {{ form.taxonset }} +
+ + + {% for i in form.voucher_codes.errors %} +
{{ i }}
+ {% endfor %} + {{ form.voucher_codes }} +
+
+ + + + + + + + + +
+ + + {% for i in form.geneset.errors %} +
{{ i }}
+ {% endfor %} + {{ form.geneset }} +
+ Check to select your alignment/gene:
+
+ (if geneset chosen, adds extra genes) +
+ + + {% for i in form.gene_codes %} + + {% endfor %} + +
+ {{ i }} +
+
+
+ +
+ + +
+ + + + + + + +
+ +
+
+ + +
+
+{% endblock content %} + + +{% block additional_javascript_footer %} + +{% endblock additional_javascript_footer %} diff --git a/voseq/create_dataset/tests.py b/voseq/create_dataset/tests.py new file mode 100644 index 00000000..7ce503c2 --- /dev/null +++ b/voseq/create_dataset/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/voseq/create_dataset/urls.py b/voseq/create_dataset/urls.py new file mode 100644 index 00000000..3c25349d --- /dev/null +++ b/voseq/create_dataset/urls.py @@ -0,0 +1,10 @@ +from django.conf.urls import patterns +from django.conf.urls import url + +from . import views + + +urlpatterns = patterns( + '', + url(r'^/$', views.index, name='index'), +) diff --git a/voseq/create_dataset/views.py b/voseq/create_dataset/views.py new file mode 100644 index 00000000..e4b13495 --- /dev/null +++ b/voseq/create_dataset/views.py @@ -0,0 +1,14 @@ +from django.shortcuts import render + +from .forms import CreateDatasetForm + + +def index(request): + form = CreateDatasetForm() + + return render(request, + 'create_dataset/index.html', + { + 'form': form, + }, + ) diff --git a/voseq/public_interface/templates/public_interface/base.html b/voseq/public_interface/templates/public_interface/base.html index 5c932766..260e9ded 100644 --- a/voseq/public_interface/templates/public_interface/base.html +++ b/voseq/public_interface/templates/public_interface/base.html @@ -104,6 +104,7 @@ diff --git a/voseq/voseq/settings/base.py b/voseq/voseq/settings/base.py index ec621924..9c5c41f9 100644 --- a/voseq/voseq/settings/base.py +++ b/voseq/voseq/settings/base.py @@ -40,6 +40,7 @@ # my apps 'core', 'public_interface', + 'create_dataset', 'blast_local', 'blast_local_full', 'blast_ncbi', diff --git a/voseq/voseq/urls.py b/voseq/voseq/urls.py index 67cdb819..c3e75c3f 100644 --- a/voseq/voseq/urls.py +++ b/voseq/voseq/urls.py @@ -3,6 +3,7 @@ urlpatterns = patterns( '', + url(r'^create_dataset', include('create_dataset.urls', namespace='create_dataset')), url(r'^genbank_fasta', include('genbank_fasta.urls', namespace='genbank_fasta')), url(r'^blast_local', include('blast_local.urls', namespace='blast_local')), url(r'^blast_local_full', include('blast_local_full.urls', namespace='blast_local_full')), @@ -10,5 +11,6 @@ url(r'^blast_new', include('blast_new.urls', namespace='blast_new')), url(r'^genes', include('view_genes.urls', namespace='view_genes')), url(r'^', include('public_interface.urls', namespace='public_interace')), + url(r'^admin/', include(admin.site.urls)), )