From a54bafc27b6d211adb5086fd9df76a573b552844 Mon Sep 17 00:00:00 2001
From: John Jones <jj@asu.edu>
Date: Mon, 16 Dec 2024 13:49:08 -0500
Subject: [PATCH 1/5] Catch more bits of data which may be missing

---
 lmfdb/local_fields/main.py | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/lmfdb/local_fields/main.py b/lmfdb/local_fields/main.py
index 7fe40c7510..24e4af7d08 100644
--- a/lmfdb/local_fields/main.py
+++ b/lmfdb/local_fields/main.py
@@ -455,8 +455,6 @@ def render_field_webpage(args):
                     'c': data['c'],
                     'e': data['e'],
                     'f': data['f'],
-                    't': data['t'],
-                    'u': data['u'],
                     'rf': lf_display_knowl( rflabel, name=printquad(data['rf'], p)),
                     'base': lf_display_knowl(str(p)+'.1.0.1', name='$%s$' % Qp),
                     'hw': data['hw'],
@@ -483,6 +481,10 @@ def render_field_webpage(args):
             info.update({'residual_polynomials': ",".join(f"${teXify_pol(poly)}$" for poly in data['residual_polynomials'])})
         if 'associated_inertia' in data:
             info.update({'associated_inertia': ",".join(f"${ai}$" for ai in data['associated_inertia'])})
+        if 't' in data:
+            info.update({'t': data['t']})
+        if 'u' in data:
+            info.update({'u': data['u']})
         if 'galois_label' in data:
             info.update({'gal': group_pretty_and_nTj(gn, gt, True),
                          'galphrase': galphrase,

From d06365241bfaf8226804f2d4fa7969e78f8e5033 Mon Sep 17 00:00:00 2001
From: John Jones <jj@asu.edu>
Date: Mon, 16 Dec 2024 17:27:46 -0500
Subject: [PATCH 2/5] Deal with not computed in search columns

---
 lmfdb/local_fields/main.py                    | 22 +++++++++++--------
 .../local_fields/templates/lf-show-field.html |  2 +-
 2 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/lmfdb/local_fields/main.py b/lmfdb/local_fields/main.py
index 24e4af7d08..0131e01c47 100644
--- a/lmfdb/local_fields/main.py
+++ b/lmfdb/local_fields/main.py
@@ -304,6 +304,13 @@ def galcolresponse(n,t,cache):
         return 'not computed'
     return group_pretty_and_nTj(n, t, cache=cache)
 
+def formatbracketcol(blist):
+    if blist == []:
+        return r'$[\ ]$'
+    if not blist:
+        return 'not computed'
+    return f'${blist}$'
+
 lf_columns = SearchColumns([
     LinkCol("label", "lf.field.label", "Label", url_for_label),
     MathCol("n", "lf.degree", "$n$", short_title="degree", default=False),
@@ -327,8 +334,8 @@ def galcolresponse(n,t,cache):
     # want apply_download for download conversion
     PolynomialCol("unram", "lf.unramified_subfield", "Unram. Ext.", default=lambda info:info.get("visible")),
     ProcessedCol("eisen", "lf.eisenstein_polynomial", "Eisen. Poly.", default=lambda info:info.get("visible"), mathmode=True, func=format_eisen),
-    MathCol("ind_of_insep", "lf.indices_of_inseparability", "Ind. of Insep.", default=lambda info: info.get("ind_of_insep")),
-    MathCol("associated_inertia", "lf.associated_inertia", "Assoc. Inertia", default=lambda info: info.get("associated_inertia"))],
+    ProcessedCol("ind_of_insep", "lf.indices_of_inseparability", "Ind. of Insep.", formatbracketcol, default=lambda info: info.get("ind_of_insep")),
+    ProcessedCol("associated_inertia", "lf.associated_inertia", "Assoc. Inertia", formatbracketcol, default=lambda info: info.get("associated_inertia"))],
     db_cols=["c", "coeffs", "e", "f", "gal", "label", "n", "p", "slopes", "t", "u", "visible", "ind_of_insep", "associated_inertia","unram","eisen"])
 
 def lf_postprocess(res, info, query):
@@ -446,7 +453,7 @@ def render_field_webpage(args):
         if 'wild_gap' in data and data['wild_gap'] != [0,0]:
             wild_inertia = abstract_group_display_knowl(f"{data['wild_gap'][0]}.{data['wild_gap'][1]}")
         else:
-            wild_inertia = 'data not computed'
+            wild_inertia = 'Not computed'
 
         info.update({
                     'polynomial': raw_typeset(polynomial),
@@ -473,18 +480,15 @@ def render_field_webpage(args):
             info.update({'slopes': show_slopes(data['slopes'])})
         if 'inertia' in data:
             info.update({'inertia': group_display_inertia(data['inertia'])})
-        if 'gms' in data:
-            info.update({'gms': data['gms']})
+        for k in ['gms', 't', 'u']:
+            if k in data:
+                info.update({k: data[k]})
         if 'ram_poly_vert' in data:
             info.update({'ram_polygon_plot': plot_polygon(data['ram_poly_vert'], data['residual_polynomials'], data['ind_of_insep'], p)})
         if 'residual_polynomials' in data:
             info.update({'residual_polynomials': ",".join(f"${teXify_pol(poly)}$" for poly in data['residual_polynomials'])})
         if 'associated_inertia' in data:
             info.update({'associated_inertia': ",".join(f"${ai}$" for ai in data['associated_inertia'])})
-        if 't' in data:
-            info.update({'t': data['t']})
-        if 'u' in data:
-            info.update({'u': data['u']})
         if 'galois_label' in data:
             info.update({'gal': group_pretty_and_nTj(gn, gt, True),
                          'galphrase': galphrase,
diff --git a/lmfdb/local_fields/templates/lf-show-field.html b/lmfdb/local_fields/templates/lf-show-field.html
index 013ed8f248..62a3d5802b 100644
--- a/lmfdb/local_fields/templates/lf-show-field.html
+++ b/lmfdb/local_fields/templates/lf-show-field.html
@@ -62,7 +62,7 @@ <h2>{{ KNOWL('lf.ramification_polygon_display', title='Ramification polygon') }}
       <tr><td>{{ KNOWL('lf.indices_of_inseparability', 'Indices of inseparability')}}:</td><td>{{info.ind_insep|safe}}</tr>
     </table>
   {% else %}
-     Data not computed
+     Not computed
   {% endif %}
 
 

From 79e64e0842627b4099d6659b6781c867171205e2 Mon Sep 17 00:00:00 2001
From: John Jones <jj@asu.edu>
Date: Mon, 16 Dec 2024 17:32:11 -0500
Subject: [PATCH 3/5] two more columns

---
 lmfdb/local_fields/main.py | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/lmfdb/local_fields/main.py b/lmfdb/local_fields/main.py
index 0131e01c47..9d38b12a17 100644
--- a/lmfdb/local_fields/main.py
+++ b/lmfdb/local_fields/main.py
@@ -311,6 +311,11 @@ def formatbracketcol(blist):
         return 'not computed'
     return f'${blist}$'
 
+def intcol(j):
+    if not j:
+        return 'not computed'
+    return f'${j}$'
+
 lf_columns = SearchColumns([
     LinkCol("label", "lf.field.label", "Label", url_for_label),
     MathCol("n", "lf.degree", "$n$", short_title="degree", default=False),
@@ -323,8 +328,8 @@ def formatbracketcol(blist):
                       ["n", "gal", "cache"],
                       galcolresponse,
                       apply_download=lambda n, t, cache: [n, t]),
-    MathCol("u", "lf.unramified_degree", "$u$", short_title="unramified degree", default=False),
-    MathCol("t", "lf.tame_degree", "$t$", short_title="tame degree", default=False),
+    ProcessedCol("u", "lf.unramified_degree", "$u$", intcol, short_title="unramified degree", default=False),
+    ProcessedCol("t", "lf.tame_degree", "$t$", intcol, short_title="tame degree", default=False),
     ListCol("visible", "lf.visible_slopes", "Visible slopes",
                     show_slopes2, default=lambda info: info.get("visible"), mathmode=True),
     MultiProcessedCol("slopes", "lf.slope_content", "Slope content",

From 3197322a5c15136c02a051358c0e9bf2d2c7f822 Mon Sep 17 00:00:00 2001
From: David Roe <roed.math@gmail.com>
Date: Mon, 16 Dec 2024 20:35:31 -0500
Subject: [PATCH 4/5] Fix handling of None

---
 lmfdb/local_fields/main.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/lmfdb/local_fields/main.py b/lmfdb/local_fields/main.py
index 9d38b12a17..bc490d5bf5 100644
--- a/lmfdb/local_fields/main.py
+++ b/lmfdb/local_fields/main.py
@@ -305,14 +305,14 @@ def galcolresponse(n,t,cache):
     return group_pretty_and_nTj(n, t, cache=cache)
 
 def formatbracketcol(blist):
+    if blist is None:
+        return 'not computed'
     if blist == []:
         return r'$[\ ]$'
-    if not blist:
-        return 'not computed'
     return f'${blist}$'
 
 def intcol(j):
-    if not j:
+    if j is None:
         return 'not computed'
     return f'${j}$'
 

From 54cf9e628a52264eab86298aec08d1f76153217c Mon Sep 17 00:00:00 2001
From: David Roe <roed.math@gmail.com>
Date: Mon, 16 Dec 2024 22:22:41 -0500
Subject: [PATCH 5/5] Fix Nones

---
 lmfdb/local_fields/main.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/lmfdb/local_fields/main.py b/lmfdb/local_fields/main.py
index bc490d5bf5..53c929346b 100644
--- a/lmfdb/local_fields/main.py
+++ b/lmfdb/local_fields/main.py
@@ -305,14 +305,14 @@ def galcolresponse(n,t,cache):
     return group_pretty_and_nTj(n, t, cache=cache)
 
 def formatbracketcol(blist):
-    if blist is None:
-        return 'not computed'
     if blist == []:
         return r'$[\ ]$'
+    if blist == '':
+        return 'not computed'
     return f'${blist}$'
 
 def intcol(j):
-    if j is None:
+    if j == '':
         return 'not computed'
     return f'${j}$'