def prokka_request(request): form = ProkkaForm() if request.method == 'POST': form = ProkkaForm(request.POST, request.FILES) if form.is_valid(): seqids, name, other_files = form.cleaned_data prokka_request_object = ProkkaRequest.objects.create( user=request.user, seqids=seqids, status='Processing') if name is None: prokka_request_object.name = prokka_request.pk else: prokka_request_object.name = name prokka_request_object.save() container_name = 'prokka-{}'.format(prokka_request_object.pk) blob_client = BlockBlobService( account_name=settings.AZURE_ACCOUNT_NAME, account_key=settings.AZURE_ACCOUNT_KEY) blob_client.create_container(container_name) file_names = list() for other_file in request.FILES.getlist('other_files'): file_name = os.path.join(container_name, other_file.name) file_names.append(file_name) blob_client.create_blob_from_bytes( container_name=container_name, blob_name=other_file.name, blob=other_file.read()) prokka_request_object.other_input_files = file_names prokka_request_object.save() run_prokka.apply_async(queue='cowbat', args=(prokka_request_object.pk, ), countdown=10) return redirect('geneseekr:prokka_result', prokka_request_pk=prokka_request_object.pk) return render(request, 'geneseekr/prokka_request.html', {'form': form})
def prokka_rename(request, prokka_request_pk): prokka_request_object = get_object_or_404(ProkkaRequest, pk=prokka_request_pk) name = {'name': prokka_request_object.name} form = ProkkaForm(initial=name) if request.method == "POST": prokka_request_object.name = request.POST["name"] prokka_request_object.save() return redirect('geneseekr:prokka_home') return render(request, 'rename.html', { 'prokka_request': prokka_request_object, 'form': form })
def test_invalid_form_wrong_seqid_does_not_exist(self): form = ProkkaForm({ 'seqids': '2222-SEQ-0711 2015-SEQ-0712' }, QueryDict()) self.assertFalse(form.is_valid())
def test_invalid_form_blank(self): form = ProkkaForm({ 'seqids': '' }, QueryDict()) self.assertFalse(form.is_valid())
def test_valid_form(self): form = ProkkaForm(QueryDict('seqids=2015-SEQ-0711 2015-SEQ-0712'), QueryDict()) self.assertTrue(form.is_valid()) seqids, name, other_files = form.cleaned_data self.assertEqual(seqids, ['2015-SEQ-0711', '2015-SEQ-0712'])