From 55ca04e1023d6e7f1a5ecad6e618dd7da3dce06f Mon Sep 17 00:00:00 2001
From: Martijn Vermaat <martijn@vermaat.name>
Date: Sat, 4 Oct 2014 00:14:33 +0200
Subject: [PATCH] Fix crash in position converter batch job

Fixes Trac#174
---
 mutalyzer/Scheduler.py  |  9 ++++++++-
 tests/test_scheduler.py | 18 ++++++++++++++++--
 2 files changed, 24 insertions(+), 3 deletions(-)

diff --git a/mutalyzer/Scheduler.py b/mutalyzer/Scheduler.py
index f8d0dee8..e6f102d3 100644
--- a/mutalyzer/Scheduler.py
+++ b/mutalyzer/Scheduler.py
@@ -19,6 +19,7 @@ import os                               # os.path.exists
 import smtplib                          # smtplib.STMP
 from email.mime.text import MIMEText    # MIMEText
 from sqlalchemy import func
+from sqlalchemy.orm.exc import NoResultFound
 
 import mutalyzer
 from mutalyzer.config import settings
@@ -557,7 +558,13 @@ Mutalyzer batch scheduler""" % url)
         if not skip :
             try :
                 #process
-                assembly = Assembly.get(int(batch_job.argument))
+                try:
+                    assembly = Assembly.by_name_or_alias(batch_job.argument)
+                except NoResultFound:
+                    O.addMessage(__file__, 3, 'ENOASSEMBLY',
+                                 'Not a valid assembly: ' + str(batch_job.argument))
+                    raise
+
                 converter = Converter(assembly, O)
 
                 #Also accept chr accNo
diff --git a/tests/test_scheduler.py b/tests/test_scheduler.py
index a722f331..fc5e4abe 100644
--- a/tests/test_scheduler.py
+++ b/tests/test_scheduler.py
@@ -17,7 +17,7 @@ from mutalyzer import File
 from mutalyzer import output
 from mutalyzer import Scheduler
 
-from fixtures import database, cache
+from fixtures import database, cache, hg19, hg19_transcript_mappings
 from utils import MutalyzerTest
 from utils import fix
 
@@ -36,7 +36,7 @@ class TestScheduler(MutalyzerTest):
         batch_file = StringIO.StringIO('\n'.join(variants) + '\n')
         job, columns = file_instance.parseBatchFile(batch_file)
         result_id = scheduler.addJob('test@test.test', job, columns,
-                                     job_type)
+                                     job_type, argument=argument)
 
         batch_job = BatchJob.query.filter_by(result_id=result_id).one()
 
@@ -229,3 +229,17 @@ class TestScheduler(MutalyzerTest):
 
         with patch.object(Entrez, 'efetch', mock_efetch):
             self._batch_job(variants, expected, 'name-checker')
+
+    @fix(hg19, hg19_transcript_mappings)
+    def test_position_converter(self):
+        """
+        Simple position converter batch job.
+        """
+        variants = ['chr11:g.111959695G>T']
+        expected = [['chr11:g.111959695G>T',
+                     '',
+                     'NC_000011.9:g.111959695G>T',
+                     'NM_003002.2:c.274G>T',
+                     'NM_012459.2:c.-2203C>A',
+                     'NR_028383.1:n.-2173C>A']]
+        self._batch_job(variants, expected, 'position-converter', 'hg19')
-- 
GitLab