From f69c43a8900ac55218ec0fc9a6c00cf654190d6d Mon Sep 17 00:00:00 2001
From: Pjotr Prins
Date: Sun, 25 Sep 2016 10:43:38 +0000
Subject: Logger: use output for assessing mapping parameters

---
 wqflask/wqflask/views.py | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

(limited to 'wqflask')

diff --git a/wqflask/wqflask/views.py b/wqflask/wqflask/views.py
index 41e2c7be..b747654a 100644
--- a/wqflask/wqflask/views.py
+++ b/wqflask/wqflask/views.py
@@ -432,11 +432,12 @@ def marker_regression_page():
         'mapmethod_rqtl_geno',
         'mapmodel_rqtl_geno'
     )
-    logger.info("Marker regression called with initial_start_vars:", initial_start_vars)
+    logger.debug("Marker regression called with initial_start_vars:", initial_start_vars)
     start_vars = {}
     for key, value in initial_start_vars.iteritems():
         if key in wanted or key.startswith(('value:')):
             start_vars[key] = value
+    logger.debug("Marker regression called with start_vars:", start_vars)
 
     version = "v3"
     key = "marker_regression:{}:".format(version) + json.dumps(start_vars, sort_keys=True)
@@ -546,7 +547,7 @@ def network_graph_page():
         return render_template("network_graph.html", **template_vars.__dict__)
     else:
         return render_template("empty_collection.html", **{'tool':'Network Graph'})
-    
+
 @app.route("/corr_compute", methods=('POST',))
 def corr_compute_page():
     logger.info("In corr_compute, request.form is:", pf(request.form))
-- 
cgit v1.2.3


From ade0969bdc784d71d67d8422c6fd1238ed3ca391 Mon Sep 17 00:00:00 2001
From: Pjotr Prins
Date: Mon, 26 Sep 2016 08:14:42 +0000
Subject: Test: mechanical Rob executes scanone test

---
 test/data/input/mapping/1435395_s_at_HC_M2_0606_P.json |  8 +++++---
 test/lib/mapping.rb                                    | 14 +++++++++-----
 wqflask/wqflask/views.py                               |  2 +-
 3 files changed, 15 insertions(+), 9 deletions(-)

(limited to 'wqflask')

diff --git a/test/data/input/mapping/1435395_s_at_HC_M2_0606_P.json b/test/data/input/mapping/1435395_s_at_HC_M2_0606_P.json
index 027e4d82..9744e7b2 100644
--- a/test/data/input/mapping/1435395_s_at_HC_M2_0606_P.json
+++ b/test/data/input/mapping/1435395_s_at_HC_M2_0606_P.json
@@ -1,6 +1,8 @@
-{ "maf" : "0.01",
-  "control_marker" : "mCV24506226",
-  "dataset" : "HC_M2_0606_P",
+{
+    "temp_uuid" : "unknown",
+"maf" : "0.01",
+"control_marker" : "mCV24506226",
+"dataset" : "HC_M2_0606_P",
  "do_control" : "false",
  "maf" : "0.01",
  "manhattan_plot" : "False",
diff --git a/test/lib/mapping.rb b/test/lib/mapping.rb
index da580185..2678b127 100644
--- a/test/lib/mapping.rb
+++ b/test/lib/mapping.rb
@@ -5,16 +5,20 @@ end
 
 describe MappingTest do
   before do
-    @agent = Mechanize.new
-    @agent.agent.http.ca_file = '/etc/ssl/certs/ca-certificates.crt'
   end
 
   describe MappingTest do
     it "pyLMM mapping tool selection" do
-      url = $host+'/marker_regression?trait_id=1435395_s_at&dataset=HC_M2_0606_P'
-      page = @agent.post(url)
+      url = $host+'/marker_regression' # ?trait_id=1435395_s_at&dataset=HC_M2_0606_P'
+      @agent = Mechanize.new
+      @agent.agent.http.ca_file = '/etc/ssl/certs/ca-certificates.crt'
+      # @agent.idle_timeout = 0.01
+
       json = JSON::load(File.read('test/data/input/mapping/1435395_s_at_HC_M2_0606_P.json'))
-      p json
+      # p json
+      page = @agent.post(URI.encode(url),
+                         json,
+                         ({'Content-Type' => 'application/x-www-form-urlencoded'}))
       p page
       # get the form
       # form = @agent.page.form_with(:name => "my-form")
diff --git a/wqflask/wqflask/views.py b/wqflask/wqflask/views.py
index b747654a..7061e0f1 100644
--- a/wqflask/wqflask/views.py
+++ b/wqflask/wqflask/views.py
@@ -395,6 +395,7 @@ def mapping_results_container_page():
 @app.route("/marker_regression", methods=('POST',))
 def marker_regression_page():
     initial_start_vars = request.form
+    logger.debug("Marker regression called with initial_start_vars:", initial_start_vars.items())
     temp_uuid = initial_start_vars['temp_uuid']
     wanted = (
         'trait_id',
@@ -432,7 +433,6 @@ def marker_regression_page():
         'mapmethod_rqtl_geno',
         'mapmodel_rqtl_geno'
     )
-    logger.debug("Marker regression called with initial_start_vars:", initial_start_vars)
     start_vars = {}
     for key, value in initial_start_vars.iteritems():
         if key in wanted or key.startswith(('value:')):
-- 
cgit v1.2.3


From a14887e0c548e5d6b33a2f05092f82a9d4931b13 Mon Sep 17 00:00:00 2001
From: Lei Yan
Date: Thu, 29 Sep 2016 23:39:05 +0000
Subject: Fix global search "il6" for "Internal Server Error". Add single
 quotes into MySQL query.

---
 wqflask/base/trait.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'wqflask')

diff --git a/wqflask/base/trait.py b/wqflask/base/trait.py
index 900e050c..32032ba7 100644
--- a/wqflask/base/trait.py
+++ b/wqflask/base/trait.py
@@ -363,7 +363,7 @@ class GeneralTrait(object):
                             FROM
                                     Homologene, Species, InbredSet
                             WHERE
-                                    Homologene.GeneId =%s AND
+                                    Homologene.GeneId ='%s' AND
                                     InbredSet.Name = '%s' AND
                                     InbredSet.SpeciesId = Species.Id AND
                                     Species.TaxonomyId = Homologene.TaxonomyId
-- 
cgit v1.2.3


From 8f1b5b86a843ee2d17b427e2318eb13b29093d5d Mon Sep 17 00:00:00 2001
From: Pjotr Prins
Date: Fri, 30 Sep 2016 08:40:42 +0000
Subject: Add logging for qtlreaper

---
 .../wqflask/marker_regression/marker_regression.py   |  4 ++++
 .../marker_regression/marker_regression_gn1.py       | 20 ++++++++++++--------
 2 files changed, 16 insertions(+), 8 deletions(-)

(limited to 'wqflask')

diff --git a/wqflask/wqflask/marker_regression/marker_regression.py b/wqflask/wqflask/marker_regression/marker_regression.py
index d2b27991..d7c78db0 100644
--- a/wqflask/wqflask/marker_regression/marker_regression.py
+++ b/wqflask/wqflask/marker_regression/marker_regression.py
@@ -41,6 +41,9 @@ from utility.tools import locate, locate_ignore_error, PYLMM_COMMAND, GEMMA_COMM
 from utility.external import shell
 from base.webqtlConfig import TMPDIR, GENERATED_TEXT_DIR
 
+import utility.logger
+logger = utility.logger.getLogger(__name__ )
+
 class MarkerRegression(object):
 
     def __init__(self, start_vars, temp_uuid):
@@ -194,6 +197,7 @@ class MarkerRegression(object):
 
             self.control_marker = start_vars['control_marker']
             self.do_control = start_vars['do_control']
+            logger.info("Running qtlreaper")
             results = self.gen_reaper_results()
         elif self.mapping_method == "plink":
             results = self.run_plink()
diff --git a/wqflask/wqflask/marker_regression/marker_regression_gn1.py b/wqflask/wqflask/marker_regression/marker_regression_gn1.py
index 9cef3cec..bc147f75 100644
--- a/wqflask/wqflask/marker_regression/marker_regression_gn1.py
+++ b/wqflask/wqflask/marker_regression/marker_regression_gn1.py
@@ -44,6 +44,9 @@ from utility import Plot
 from wqflask.interval_analyst import GeneUtil
 from base.webqtlConfig import TMPDIR, GENERATED_TEXT_DIR, GENERATED_IMAGE_DIR
 
+import utility.logger
+logger = utility.logger.getLogger(__name__ )
+
 #########################################
 #      Inteval Mapping Plot Page
 #########################################
@@ -159,6 +162,7 @@ class MarkerRegression(object):
 
         #if not self.openMysql():
         #    return
+        logger.info("Running qtlreaper")
 
         #helper_functions.get_species_dataset_trait(self, start_vars)
 
@@ -211,7 +215,7 @@ class MarkerRegression(object):
             self.plotScale = start_vars['mapping_scale']
         else:
             self.plotScale = "physic"
-            
+
         self.manhattan_plot = start_vars['manhattan_plot']
 
         if 'permCheck' in start_vars.keys():
@@ -514,13 +518,13 @@ class MarkerRegression(object):
 
             if self.dataset.group.species == "mouse":
                 if self.selectedChr == 20:
-                    chrName = "X" 
+                    chrName = "X"
                 else:
                     chrName = self.selectedChr
                 self.geneCol = GeneUtil.loadGenes(chrName, self.diffCol, self.startMb, self.endMb, webqtldatabase, "mouse")
             elif self.dataset.group.species == "rat":
                 if self.selectedChr == 21:
-                    chrName = "X" 
+                    chrName = "X"
                 else:
                     chrName = self.selectedChr
                 self.geneCol = GeneUtil.loadGenes(chrName, self.diffCol, self.startMb, self.endMb, webqtldatabase, "rat")
@@ -860,7 +864,7 @@ class MarkerRegression(object):
         BootCoord = []
         i = 0
         startX = xLeftOffset
-     
+
         if self.selectedChr == -1: #ZS: If viewing full genome/all chromosomes
             for j, _chr in enumerate(self.genotype):
                 BootCoord.append( [])
@@ -883,8 +887,8 @@ class MarkerRegression(object):
                         else:
                             Xc = startX + (_locus.cM-_chr[0].cM)*plotXScale
                         BootCoord[-1].append([Xc, self.bootResult[i]])
-                    i += 1   
-                    
+                    i += 1
+
         #reduce bootResult
         if self.selectedChr > -1:
             maxBootBar = 80.0
@@ -1851,7 +1855,7 @@ class MarkerRegression(object):
                 if j == 0:
                     canvas.drawLine(startPosX,yZero,startPosX,yZero+40, color=lineColor)
                 startPosX += (self.ChrLengthDistList[j]+self.GraphInterval)*plotXScale
-                
+
             centimorganLabelFont = pid.Font(ttf="verdana", size=18*zoom*1.5, bold=0)
             canvas.drawString("Centimorgans", xLeftOffset + (plotWidth - canvas.stringWidth("Megabases", font=centimorganLabelFont))/2,
                     strYLoc + canvas.fontHeight(MBLabelFont)+ 10*(zoom%2) + 10, font=centimorganLabelFont, color=pid.black)
@@ -2963,7 +2967,7 @@ class MarkerRegression(object):
                     chr_as_int = 20
                 else:
                     chr_as_int = int(theGO["Chromosome"]) - 1
-                    
+
                 geneLength = (float(theGO["TxEnd"]) - float(theGO["TxStart"]))
                 #geneLengthURL = "javascript:centerIntervalMapOnRange2('%s', %f, %f, document.changeViewForm)" % (theGO["Chromosome"], float(theGO["TxStart"])-(geneLength*0.1), float(theGO["TxEnd"])+(geneLength*0.1))
                 geneLengthURL = "javascript:rangeView('%s', %f, %f)" % (theGO["Chromosome"], float(theGO["TxStart"])-(geneLength*0.1), float(theGO["TxEnd"])+(geneLength*0.1))
-- 
cgit v1.2.3


From 56ba5dcc2b2ba7ff2103b7b291db1aa610c24d11 Mon Sep 17 00:00:00 2001
From: Pjotr Prins
Date: Fri, 30 Sep 2016 04:58:15 -0500
Subject: Add missing __init__.py

---
 wqflask/maintenance/__init__.py | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 wqflask/maintenance/__init__.py

(limited to 'wqflask')

diff --git a/wqflask/maintenance/__init__.py b/wqflask/maintenance/__init__.py
new file mode 100644
index 00000000..e69de29b
-- 
cgit v1.2.3


From c3f3632230f40c86f422a72cd080e5eb1b56bbf1 Mon Sep 17 00:00:00 2001
From: Pjotr Prins
Date: Sun, 2 Oct 2016 10:34:21 +0000
Subject: Error screen improvements with animated gifs

---
 .../wqflask/static/gif/error/Wild-Type-Mouse.gif   | Bin 0 -> 37328 bytes
 .../static/gif/error/animated-gifs-aliens-29.gif   | Bin 0 -> 14088 bytes
 .../static/gif/error/animated-gifs-angels-04.gif   | Bin 0 -> 12155 bytes
 .../static/gif/error/animated-gifs-cats-016.gif    | Bin 0 -> 10388 bytes
 .../static/gif/error/animated-gifs-cats-031.gif    | Bin 0 -> 6937 bytes
 .../gif/error/animated-gifs-cell-phones-03.gif     | Bin 0 -> 14902 bytes
 .../gif/error/animated-gifs-cell-phones-16.gif     | Bin 0 -> 7307 bytes
 .../gif/error/animated-gifs-computers-13.gif       | Bin 0 -> 7616 bytes
 .../gif/error/animated-gifs-computers-28.gif       | Bin 0 -> 7566 bytes
 .../gif/error/animated-gifs-computers-32.gif       | Bin 0 -> 2970 bytes
 .../gif/error/animated-gifs-computers-42.gif       | Bin 0 -> 9391 bytes
 .../gif/error/animated-gifs-computers-60.gif       | Bin 0 -> 35873 bytes
 .../gif/error/animated-gifs-computers-64.gif       | Bin 0 -> 20728 bytes
 .../gif/error/animated-gifs-computers-65.gif       | Bin 0 -> 26358 bytes
 .../gif/error/animated-gifs-computers-72.gif       | Bin 0 -> 16361 bytes
 .../gif/error/animated-gifs-computers-74.gif       | Bin 0 -> 21087 bytes
 .../gif/error/animated-gifs-computers-75.gif       | Bin 0 -> 98317 bytes
 .../error/animated-gifs-construction-sites-038.gif | Bin 0 -> 949 bytes
 .../static/gif/error/animated-gifs-dogs-04.gif     | Bin 0 -> 9450 bytes
 .../static/gif/error/animated-gifs-dogs-14.gif     | Bin 0 -> 2532 bytes
 .../static/gif/error/animated-gifs-dogs-18.gif     | Bin 0 -> 3596 bytes
 .../static/gif/error/animated-gifs-dogs-47.gif     | Bin 0 -> 13920 bytes
 .../static/gif/error/animated-gifs-dogs-50.gif     | Bin 0 -> 7297 bytes
 .../gif/error/animated-gifs-lava-lamps-01.gif      | Bin 0 -> 27122 bytes
 .../static/gif/error/animated-gifs-mice-02.gif     | Bin 0 -> 73345 bytes
 .../static/gif/error/animated-gifs-mice-09.gif     | Bin 0 -> 27822 bytes
 .../static/gif/error/animated-gifs-mice-24.gif     | Bin 0 -> 10566 bytes
 .../static/gif/error/animated-gifs-smileys-063.gif | Bin 0 -> 2230 bytes
 .../static/gif/error/animated-gifs-smileys-068.gif | Bin 0 -> 11751 bytes
 .../static/gif/error/animated-gifs-smileys-134.gif | Bin 0 -> 21431 bytes
 .../static/gif/error/animated-gifs-smileys-211.gif | Bin 0 -> 11209 bytes
 .../static/gif/error/animated-gifs-smileys-234.gif | Bin 0 -> 8677 bytes
 .../gif/error/animated-gifs-stickmen-001.gif       | Bin 0 -> 6897 bytes
 .../gif/error/animated-gifs-stickmen-002.gif       | Bin 0 -> 14098 bytes
 .../gif/error/animated-gifs-stickmen-005.gif       | Bin 0 -> 13264 bytes
 .../gif/error/animated-gifs-stickmen-012.gif       | Bin 0 -> 12141 bytes
 .../gif/error/animated-gifs-stickmen-056.gif       | Bin 0 -> 5946 bytes
 .../gif/error/animated-gifs-stickmen-059.gif       | Bin 0 -> 16427 bytes
 .../gif/error/animated-gifs-stickmen-060.gif       | Bin 0 -> 14434 bytes
 .../gif/error/animated-gifs-stickmen-069.gif       | Bin 0 -> 7668 bytes
 wqflask/wqflask/templates/error.html               |  58 +++++++++++++++++++++
 wqflask/wqflask/views.py                           |  26 +++++++++
 42 files changed, 84 insertions(+)
 create mode 100644 wqflask/wqflask/static/gif/error/Wild-Type-Mouse.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-aliens-29.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-angels-04.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-cats-016.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-cats-031.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-cell-phones-03.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-cell-phones-16.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-computers-13.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-computers-28.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-computers-32.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-computers-42.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-computers-60.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-computers-64.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-computers-65.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-computers-72.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-computers-74.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-computers-75.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-construction-sites-038.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-dogs-04.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-dogs-14.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-dogs-18.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-dogs-47.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-dogs-50.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-lava-lamps-01.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-mice-02.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-mice-09.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-mice-24.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-smileys-063.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-smileys-068.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-smileys-134.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-smileys-211.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-smileys-234.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-stickmen-001.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-stickmen-002.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-stickmen-005.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-stickmen-012.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-stickmen-056.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-stickmen-059.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-stickmen-060.gif
 create mode 100644 wqflask/wqflask/static/gif/error/animated-gifs-stickmen-069.gif
 create mode 100644 wqflask/wqflask/templates/error.html

(limited to 'wqflask')

diff --git a/wqflask/wqflask/static/gif/error/Wild-Type-Mouse.gif b/wqflask/wqflask/static/gif/error/Wild-Type-Mouse.gif
new file mode 100644
index 00000000..2c68b5ee
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/Wild-Type-Mouse.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-aliens-29.gif b/wqflask/wqflask/static/gif/error/animated-gifs-aliens-29.gif
new file mode 100644
index 00000000..e9d38277
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-aliens-29.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-angels-04.gif b/wqflask/wqflask/static/gif/error/animated-gifs-angels-04.gif
new file mode 100644
index 00000000..94e11847
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-angels-04.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-cats-016.gif b/wqflask/wqflask/static/gif/error/animated-gifs-cats-016.gif
new file mode 100644
index 00000000..7e6ec9a3
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-cats-016.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-cats-031.gif b/wqflask/wqflask/static/gif/error/animated-gifs-cats-031.gif
new file mode 100644
index 00000000..af7ef655
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-cats-031.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-cell-phones-03.gif b/wqflask/wqflask/static/gif/error/animated-gifs-cell-phones-03.gif
new file mode 100644
index 00000000..89c79ddf
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-cell-phones-03.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-cell-phones-16.gif b/wqflask/wqflask/static/gif/error/animated-gifs-cell-phones-16.gif
new file mode 100644
index 00000000..7530d180
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-cell-phones-16.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-computers-13.gif b/wqflask/wqflask/static/gif/error/animated-gifs-computers-13.gif
new file mode 100644
index 00000000..afb05c62
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-computers-13.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-computers-28.gif b/wqflask/wqflask/static/gif/error/animated-gifs-computers-28.gif
new file mode 100644
index 00000000..f5b4a563
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-computers-28.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-computers-32.gif b/wqflask/wqflask/static/gif/error/animated-gifs-computers-32.gif
new file mode 100644
index 00000000..7258e594
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-computers-32.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-computers-42.gif b/wqflask/wqflask/static/gif/error/animated-gifs-computers-42.gif
new file mode 100644
index 00000000..ed1f8722
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-computers-42.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-computers-60.gif b/wqflask/wqflask/static/gif/error/animated-gifs-computers-60.gif
new file mode 100644
index 00000000..f58d69f1
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-computers-60.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-computers-64.gif b/wqflask/wqflask/static/gif/error/animated-gifs-computers-64.gif
new file mode 100644
index 00000000..5d5b4fdf
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-computers-64.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-computers-65.gif b/wqflask/wqflask/static/gif/error/animated-gifs-computers-65.gif
new file mode 100644
index 00000000..b4b10845
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-computers-65.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-computers-72.gif b/wqflask/wqflask/static/gif/error/animated-gifs-computers-72.gif
new file mode 100644
index 00000000..e60cb4fe
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-computers-72.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-computers-74.gif b/wqflask/wqflask/static/gif/error/animated-gifs-computers-74.gif
new file mode 100644
index 00000000..bd7b72f3
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-computers-74.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-computers-75.gif b/wqflask/wqflask/static/gif/error/animated-gifs-computers-75.gif
new file mode 100644
index 00000000..916d6b33
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-computers-75.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-construction-sites-038.gif b/wqflask/wqflask/static/gif/error/animated-gifs-construction-sites-038.gif
new file mode 100644
index 00000000..0ec782c4
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-construction-sites-038.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-dogs-04.gif b/wqflask/wqflask/static/gif/error/animated-gifs-dogs-04.gif
new file mode 100644
index 00000000..9515c18a
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-dogs-04.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-dogs-14.gif b/wqflask/wqflask/static/gif/error/animated-gifs-dogs-14.gif
new file mode 100644
index 00000000..f1e2e1f5
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-dogs-14.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-dogs-18.gif b/wqflask/wqflask/static/gif/error/animated-gifs-dogs-18.gif
new file mode 100644
index 00000000..572849d5
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-dogs-18.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-dogs-47.gif b/wqflask/wqflask/static/gif/error/animated-gifs-dogs-47.gif
new file mode 100644
index 00000000..d808c9ee
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-dogs-47.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-dogs-50.gif b/wqflask/wqflask/static/gif/error/animated-gifs-dogs-50.gif
new file mode 100644
index 00000000..9865ee45
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-dogs-50.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-lava-lamps-01.gif b/wqflask/wqflask/static/gif/error/animated-gifs-lava-lamps-01.gif
new file mode 100644
index 00000000..ee9c113d
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-lava-lamps-01.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-mice-02.gif b/wqflask/wqflask/static/gif/error/animated-gifs-mice-02.gif
new file mode 100644
index 00000000..5ca2ee5c
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-mice-02.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-mice-09.gif b/wqflask/wqflask/static/gif/error/animated-gifs-mice-09.gif
new file mode 100644
index 00000000..7cb361e4
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-mice-09.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-mice-24.gif b/wqflask/wqflask/static/gif/error/animated-gifs-mice-24.gif
new file mode 100644
index 00000000..96a26450
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-mice-24.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-smileys-063.gif b/wqflask/wqflask/static/gif/error/animated-gifs-smileys-063.gif
new file mode 100644
index 00000000..62de166c
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-smileys-063.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-smileys-068.gif b/wqflask/wqflask/static/gif/error/animated-gifs-smileys-068.gif
new file mode 100644
index 00000000..3550e978
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-smileys-068.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-smileys-134.gif b/wqflask/wqflask/static/gif/error/animated-gifs-smileys-134.gif
new file mode 100644
index 00000000..954ab614
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-smileys-134.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-smileys-211.gif b/wqflask/wqflask/static/gif/error/animated-gifs-smileys-211.gif
new file mode 100644
index 00000000..596174d7
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-smileys-211.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-smileys-234.gif b/wqflask/wqflask/static/gif/error/animated-gifs-smileys-234.gif
new file mode 100644
index 00000000..5aba636b
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-smileys-234.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-stickmen-001.gif b/wqflask/wqflask/static/gif/error/animated-gifs-stickmen-001.gif
new file mode 100644
index 00000000..7896ff1f
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-stickmen-001.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-stickmen-002.gif b/wqflask/wqflask/static/gif/error/animated-gifs-stickmen-002.gif
new file mode 100644
index 00000000..89da6441
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-stickmen-002.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-stickmen-005.gif b/wqflask/wqflask/static/gif/error/animated-gifs-stickmen-005.gif
new file mode 100644
index 00000000..b7887630
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-stickmen-005.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-stickmen-012.gif b/wqflask/wqflask/static/gif/error/animated-gifs-stickmen-012.gif
new file mode 100644
index 00000000..f6697d02
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-stickmen-012.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-stickmen-056.gif b/wqflask/wqflask/static/gif/error/animated-gifs-stickmen-056.gif
new file mode 100644
index 00000000..2b2496a4
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-stickmen-056.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-stickmen-059.gif b/wqflask/wqflask/static/gif/error/animated-gifs-stickmen-059.gif
new file mode 100644
index 00000000..f2188656
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-stickmen-059.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-stickmen-060.gif b/wqflask/wqflask/static/gif/error/animated-gifs-stickmen-060.gif
new file mode 100644
index 00000000..aa8f7bd3
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-stickmen-060.gif differ
diff --git a/wqflask/wqflask/static/gif/error/animated-gifs-stickmen-069.gif b/wqflask/wqflask/static/gif/error/animated-gifs-stickmen-069.gif
new file mode 100644
index 00000000..473212e4
Binary files /dev/null and b/wqflask/wqflask/static/gif/error/animated-gifs-stickmen-069.gif differ
diff --git a/wqflask/wqflask/templates/error.html b/wqflask/wqflask/templates/error.html
new file mode 100644
index 00000000..a2eaad5c
--- /dev/null
+++ b/wqflask/wqflask/templates/error.html
@@ -0,0 +1,58 @@
+{% extends "base.html" %}
+{% block title %}Error: {{message}}{% endblock %}
+{% block content %}
+<!-- Start of body -->
+
+<div class="col-md-8">
+<div class="form-group has-error">
+  <div class="control-label" for="inputError1">
+
+    <img src="/static/gif/error/{{ error_image }}">
+
+    <h1>ERROR</h1>
+
+    <p>
+      This error is not what we wanted to see. Unfortunately errors
+      are part of all software systems and we need to resolve this
+      together.
+    </p>
+    <p>
+      <b>It is important to report this so we
+      can fix it</b>.
+    </p>
+
+    <p>
+      Report to the GeneNetwork team by recording the steps you take
+      to reproduce this error. Next to those steps, copy-paste below
+      stack trace, either as
+      a <a href="https://github.com/genenetwork/genenetwork2/issues/new">new
+      issue</a> (GeneNetwork error: {{message}}) or E-mail this full page to one of the developers
+      directly.
+    </p>
+  </div>
+
+  <pre>
+    {{ message }} (error)
+    {{ stack[-3] }}
+    {{ stack[-2] }}
+  </pre>
+
+  <p>
+    To check if this already a known issue, search the
+    <a href="https://github.com/genenetwork/genenetwork2/issues">issue
+      tracker</a>.
+  </p>
+
+  <a href="#Stack" class="btn btn-default" data-toggle="collapse">Toggle full stack trace</a>
+  <div id="Stack" class="collapse">
+    <pre>
+      {% for line in stack %}
+        {{ line }}
+      {% endfor %}
+    </pre>
+  </div>
+</div>
+</div>
+
+
+{% endblock %}
diff --git a/wqflask/wqflask/views.py b/wqflask/wqflask/views.py
index 7061e0f1..c01056a8 100644
--- a/wqflask/wqflask/views.py
+++ b/wqflask/wqflask/views.py
@@ -4,6 +4,9 @@
 
 from __future__ import absolute_import, division, print_function
 
+import traceback # for error page
+import os        # for error gifs
+import random    # for random error gif
 import sys
 import csv
 import xlsxwriter
@@ -58,6 +61,8 @@ from wqflask import user_manager
 from wqflask import collect
 from wqflask.database import db_session
 
+import werkzeug
+
 import utility.logger
 logger = utility.logger.getLogger(__name__ )
 
@@ -82,6 +87,26 @@ def shutdown_session(exception=None):
 #    from wqflask import tracer
 #    tracer.turn_on()
 
+@app.errorhandler(Exception)
+def handle_bad_request(e):
+    logger.error(str(e))
+    exc_type, exc_value, exc_traceback = sys.exc_info()
+    # print "*** format_exc, first and last line:"
+    # logger.error(formatted_lines[0])
+    # logger.error(formatted_lines[-3])
+    # logger.error(formatted_lines[-2])
+    # logger.error(formatted_lines[-1])
+    logger.error(traceback.format_exc())
+    formatted_lines = traceback.format_exc().splitlines()
+
+    # for file in os.listdir("./wqflask/static/gif/error"):
+    #     if file.endswith(".gif"):
+    #         print(file)
+
+    list = [fn for fn in os.listdir("./wqflask/static/gif/error") if fn.endswith(".gif") ]
+    # print(list)
+    return render_template("error.html",message=str(e),stack=formatted_lines,error_image=random.choice(list))
+
 @app.route("/")
 def index_page():
     logger.info("Sending index_page")
@@ -394,6 +419,7 @@ def mapping_results_container_page():
 
 @app.route("/marker_regression", methods=('POST',))
 def marker_regression_page():
+    raise Exception("Just an error")
     initial_start_vars = request.form
     logger.debug("Marker regression called with initial_start_vars:", initial_start_vars.items())
     temp_uuid = initial_start_vars['temp_uuid']
-- 
cgit v1.2.3


From 9b3c087e46b6dfdc2fe686a60ac26e98c7cbe93d Mon Sep 17 00:00:00 2001
From: Pjotr Prins
Date: Sun, 2 Oct 2016 10:35:16 +0000
Subject: Error: remove test error

---
 wqflask/wqflask/views.py | 1 -
 1 file changed, 1 deletion(-)

(limited to 'wqflask')

diff --git a/wqflask/wqflask/views.py b/wqflask/wqflask/views.py
index c01056a8..85c2c824 100644
--- a/wqflask/wqflask/views.py
+++ b/wqflask/wqflask/views.py
@@ -419,7 +419,6 @@ def mapping_results_container_page():
 
 @app.route("/marker_regression", methods=('POST',))
 def marker_regression_page():
-    raise Exception("Just an error")
     initial_start_vars = request.form
     logger.debug("Marker regression called with initial_start_vars:", initial_start_vars.items())
     temp_uuid = initial_start_vars['temp_uuid']
-- 
cgit v1.2.3


From 3496c5eeae6d9d6064188720902b0cc1b415f610 Mon Sep 17 00:00:00 2001
From: Pjotr Prins
Date: Sun, 2 Oct 2016 11:06:02 +0000
Subject: Error page: use cookies to fixate the animation for one error

---
 wqflask/wqflask/templates/error.html |  3 +--
 wqflask/wqflask/views.py             | 28 +++++++++++++++-------------
 2 files changed, 16 insertions(+), 15 deletions(-)

(limited to 'wqflask')

diff --git a/wqflask/wqflask/templates/error.html b/wqflask/wqflask/templates/error.html
index a2eaad5c..9d9e66d4 100644
--- a/wqflask/wqflask/templates/error.html
+++ b/wqflask/wqflask/templates/error.html
@@ -17,8 +17,7 @@
       together.
     </p>
     <p>
-      <b>It is important to report this so we
-      can fix it</b>.
+      <b>It is important to report this error so we can fix it for everyone</b>.
     </p>
 
     <p>
diff --git a/wqflask/wqflask/views.py b/wqflask/wqflask/views.py
index 85c2c824..40a77df3 100644
--- a/wqflask/wqflask/views.py
+++ b/wqflask/wqflask/views.py
@@ -29,7 +29,7 @@ import base64
 import array
 import sqlalchemy
 from wqflask import app
-from flask import g, Response, request, render_template, send_from_directory, jsonify, redirect
+from flask import g, Response, request, make_response, render_template, send_from_directory, jsonify, redirect
 from wqflask import search_results
 from wqflask import gsearch
 from wqflask import update_search_results
@@ -89,23 +89,25 @@ def shutdown_session(exception=None):
 
 @app.errorhandler(Exception)
 def handle_bad_request(e):
-    logger.error(str(e))
+    err_msg = str(e)
+    logger.error(err_msg)
+    # get the stack trace and send it to the logger
     exc_type, exc_value, exc_traceback = sys.exc_info()
-    # print "*** format_exc, first and last line:"
-    # logger.error(formatted_lines[0])
-    # logger.error(formatted_lines[-3])
-    # logger.error(formatted_lines[-2])
-    # logger.error(formatted_lines[-1])
     logger.error(traceback.format_exc())
     formatted_lines = traceback.format_exc().splitlines()
 
-    # for file in os.listdir("./wqflask/static/gif/error"):
-    #     if file.endswith(".gif"):
-    #         print(file)
+    # Handle random animations
+    # Use a cookie to have one animation on refresh
+    animation = request.cookies.get(err_msg)
+    if not animation:
+        list = [fn for fn in os.listdir("./wqflask/static/gif/error") if fn.endswith(".gif") ]
+        animation = random.choice(list)
 
-    list = [fn for fn in os.listdir("./wqflask/static/gif/error") if fn.endswith(".gif") ]
-    # print(list)
-    return render_template("error.html",message=str(e),stack=formatted_lines,error_image=random.choice(list))
+    resp = make_response(render_template("error.html",message=err_msg,stack=formatted_lines,error_image=animation))
+
+    # logger.error("Set cookie %s with %s" % (err_msg, animation))
+    resp.set_cookie(err_msg,animation)
+    return resp
 
 @app.route("/")
 def index_page():
-- 
cgit v1.2.3


From b4521df539a9817ecf9d70fe5dbe41a5c39d64a0 Mon Sep 17 00:00:00 2001
From: Pjotr Prins
Date: Sun, 2 Oct 2016 11:21:44 +0000
Subject: Error page: also display the URL

---
 wqflask/wqflask/templates/error.html | 8 ++++----
 wqflask/wqflask/views.py             | 3 ++-
 2 files changed, 6 insertions(+), 5 deletions(-)

(limited to 'wqflask')

diff --git a/wqflask/wqflask/templates/error.html b/wqflask/wqflask/templates/error.html
index 9d9e66d4..95485f1e 100644
--- a/wqflask/wqflask/templates/error.html
+++ b/wqflask/wqflask/templates/error.html
@@ -17,12 +17,12 @@
       together.
     </p>
     <p>
-      <b>It is important to report this error so we can fix it for everyone</b>.
+      <b>It is important to report this ERROR so we can fix it for everyone</b>.
     </p>
 
     <p>
       Report to the GeneNetwork team by recording the steps you take
-      to reproduce this error. Next to those steps, copy-paste below
+      to reproduce this ERROR. Next to those steps, copy-paste below
       stack trace, either as
       a <a href="https://github.com/genenetwork/genenetwork2/issues/new">new
       issue</a> (GeneNetwork error: {{message}}) or E-mail this full page to one of the developers
@@ -31,6 +31,7 @@
   </div>
 
   <pre>
+    {{ stack[0] }}
     {{ message }} (error)
     {{ stack[-3] }}
     {{ stack[-2] }}
@@ -45,8 +46,7 @@
   <a href="#Stack" class="btn btn-default" data-toggle="collapse">Toggle full stack trace</a>
   <div id="Stack" class="collapse">
     <pre>
-      {% for line in stack %}
-        {{ line }}
+      {% for line in stack %} {{ line }}
       {% endfor %}
     </pre>
   </div>
diff --git a/wqflask/wqflask/views.py b/wqflask/wqflask/views.py
index 40a77df3..12d43052 100644
--- a/wqflask/wqflask/views.py
+++ b/wqflask/wqflask/views.py
@@ -91,10 +91,11 @@ def shutdown_session(exception=None):
 def handle_bad_request(e):
     err_msg = str(e)
     logger.error(err_msg)
+    logger.error(request.url)
     # get the stack trace and send it to the logger
     exc_type, exc_value, exc_traceback = sys.exc_info()
     logger.error(traceback.format_exc())
-    formatted_lines = traceback.format_exc().splitlines()
+    formatted_lines = [request.url]+traceback.format_exc().splitlines()
 
     # Handle random animations
     # Use a cookie to have one animation on refresh
-- 
cgit v1.2.3


From 1107259dc258d0cfcb447519cc36e59e78facdef Mon Sep 17 00:00:00 2001
From: Pjotr Prins
Date: Sun, 2 Oct 2016 11:52:47 +0000
Subject: Errors: added time stamps in UTC

---
 wqflask/utility/logger.py | 6 +++++-
 wqflask/wqflask/views.py  | 6 +++++-
 2 files changed, 10 insertions(+), 2 deletions(-)

(limited to 'wqflask')

diff --git a/wqflask/utility/logger.py b/wqflask/utility/logger.py
index ddc0ea82..b873e16f 100644
--- a/wqflask/utility/logger.py
+++ b/wqflask/utility/logger.py
@@ -31,6 +31,7 @@ import string
 from inspect import isfunction
 from pprint import pformat as pf
 from inspect import stack
+import datetime
 
 from utility.tools import LOG_LEVEL, LOG_LEVEL_DEBUG, LOG_SQL, LOG_FORMAT
 
@@ -66,7 +67,10 @@ LOG_LEVEL_DEBUG (NYI).
 
     def error(self,*args):
         """Call logging.error for multiple args"""
-        self.collect(self.logger.error,*args)
+        now = datetime.datetime.utcnow()
+        time_str = now.strftime('%H:%M:%S UTC %Y%m%d')
+        l = [time_str]+list(args)
+        self.collect(self.logger.error,*l)
 
     def infof(self,*args):
         """Call logging.info for multiple args lazily"""
diff --git a/wqflask/wqflask/views.py b/wqflask/wqflask/views.py
index 12d43052..7abcc17d 100644
--- a/wqflask/wqflask/views.py
+++ b/wqflask/wqflask/views.py
@@ -7,6 +7,8 @@ from __future__ import absolute_import, division, print_function
 import traceback # for error page
 import os        # for error gifs
 import random    # for random error gif
+import datetime  # for errors
+import time      # for errors
 import sys
 import csv
 import xlsxwriter
@@ -95,7 +97,9 @@ def handle_bad_request(e):
     # get the stack trace and send it to the logger
     exc_type, exc_value, exc_traceback = sys.exc_info()
     logger.error(traceback.format_exc())
-    formatted_lines = [request.url]+traceback.format_exc().splitlines()
+    now = datetime.datetime.utcnow()
+    time_str = now.strftime('%l:%M%p UTC %b %d, %Y')
+    formatted_lines = [request.url + " ("+time_str+")"]+traceback.format_exc().splitlines()
 
     # Handle random animations
     # Use a cookie to have one animation on refresh
-- 
cgit v1.2.3


From 2115fcfde74375252f556153d48f52f4d15fb298 Mon Sep 17 00:00:00 2001
From: Pjotr Prins
Date: Sun, 2 Oct 2016 12:02:46 +0000
Subject: Error page: trim error messages

---
 wqflask/wqflask/templates/error.html | 6 +++++-
 wqflask/wqflask/views.py             | 4 ++--
 2 files changed, 7 insertions(+), 3 deletions(-)

(limited to 'wqflask')

diff --git a/wqflask/wqflask/templates/error.html b/wqflask/wqflask/templates/error.html
index 95485f1e..7ab2bf2f 100644
--- a/wqflask/wqflask/templates/error.html
+++ b/wqflask/wqflask/templates/error.html
@@ -25,11 +25,15 @@
       to reproduce this ERROR. Next to those steps, copy-paste below
       stack trace, either as
       a <a href="https://github.com/genenetwork/genenetwork2/issues/new">new
-      issue</a> (GeneNetwork error: {{message}}) or E-mail this full page to one of the developers
+      issue</a> or E-mail this full page to one of the developers
       directly.
     </p>
   </div>
 
+  <p>
+  (GeneNetwork error: {{message[:128]}})
+  </p>
+
   <pre>
     {{ stack[0] }}
     {{ message }} (error)
diff --git a/wqflask/wqflask/views.py b/wqflask/wqflask/views.py
index 7abcc17d..cf316bee 100644
--- a/wqflask/wqflask/views.py
+++ b/wqflask/wqflask/views.py
@@ -103,7 +103,7 @@ def handle_bad_request(e):
 
     # Handle random animations
     # Use a cookie to have one animation on refresh
-    animation = request.cookies.get(err_msg)
+    animation = request.cookies.get(err_msg[:64])
     if not animation:
         list = [fn for fn in os.listdir("./wqflask/static/gif/error") if fn.endswith(".gif") ]
         animation = random.choice(list)
@@ -111,7 +111,7 @@ def handle_bad_request(e):
     resp = make_response(render_template("error.html",message=err_msg,stack=formatted_lines,error_image=animation))
 
     # logger.error("Set cookie %s with %s" % (err_msg, animation))
-    resp.set_cookie(err_msg,animation)
+    resp.set_cookie(err_msg[:64],animation)
     return resp
 
 @app.route("/")
-- 
cgit v1.2.3