# HG changeset patch
# User Jens-Uwe Grooss <j.-u.grooss@fz-juelich.de>
# Date 1457690684 -3600
# Node ID 04b941597cc4dc422359e83fcce2d7e582b4ad61
# Parent  ef878249fb517f413c3c7a471ec048b665f6f4d6# Parent  a4f39dc4db6a3dbc67b0c62c33561b53dcc0fd09
New menue entry for map projections of
Delta O3, column O3 column and UV index from CLaMS simulations

diff -r ef878249fb51 -r 04b941597cc4 eskp.py
--- a/eskp.py	Fri Mar 11 09:57:49 2016 +0100
+++ b/eskp.py	Fri Mar 11 11:04:44 2016 +0100
@@ -19,11 +19,12 @@
 import base64
 
 LANGUAGE_SELECTED = "de"
-#ToDo after engelish is implemented set LANGUAGE_SELECTED = None
+# ToDo after engelish is implemented set LANGUAGE_SELECTED = None
 
 # We need the path of this file to find templates to translate
 ESKP_PATH = os.path.dirname(os.path.abspath(__file__))
-logging.basicConfig(filename=os.path.join(ESKP_PATH, 'eskp-app.log'),level=logging.DEBUG)
+logging.basicConfig(filename=os.path.join(ESKP_PATH, 'eskp-app.log'), level=logging.DEBUG)
+FILES= os.listdir(os.path.join(ESKP_PATH, 'static/images/uvmap'))
 
 app = Flask(__name__)
 babel = Babel(app)
@@ -31,12 +32,10 @@
 app.config['BABEL_DEFAULT_LOCALE'] = 'de'
 
 
-
 def get_vcard(filename):
     filename = os.path.join(ESKP_PATH, filename)
     with codecs.open(filename, 'r', 'utf-8') as f:
-            vcard = f.read()
-            f.close()
+        vcard = f.read()
     return vobject.readOne(vcard)
 
 
@@ -46,25 +45,35 @@
     if os.path.isfile(filename):
         with codecs.open(filename, 'r', 'utf-8') as f:
             rst_data = f.read()
-        f.close()
         content = publish_parts(rst_data, writer_name='html', settings_overrides=overrides)['html_body']
     return content
 
+
+def get_newest_date():
+    getdates = get_valid_dates(FILES)
+    newest_date = getdates[-1]
+
+    return newest_date
+
+
 def get_topmenue():
+    newest_date = get_newest_date()
     menue = [
-             ('/ozoneloss', _(u'Ozoneloss'),
-             (('/ozoneloss', _(u'overview')),
-             ('/ozoneloss/clams/2016', _(u'calculations')),
-             ('/ozoneloss/vpsc/2016', _(u'estimations')),
-             ('/ozoneloss/uvi', _(u'uv increase')))),
-
-             ('/eskp', _(u'ESKP'),(None, None)),
-             ('/iek-7', _(u'IEK-7'),(None, None))
-            ]
+        ('/ozoneloss', _(u'Ozoneloss'),
+         (('/ozoneloss', _(u'overview')),
+          ('/ozoneloss/clams/2016', _(u'calculations')),
+          ('/ozoneloss/vpsc/2016', _(u'estimations')),
+          ('/ozoneloss/uvi', _(u'uv increase')),
+          ('/ozoneloss/uvmap/' + newest_date, _(u'uv index map')))),
+        ('/eskp', _(u'ESKP'), (None, None)),
+        ('/iek-7', _(u'IEK-7'), (None, None))
+    ]
     return menue
 
+
 app.jinja_env.globals.update(get_topmenue=get_topmenue)
 
+
 def get_o3lossclams_dates():
     menue = [
         ('/ozoneloss/clams/2016', _(u'2016')),
@@ -72,9 +81,46 @@
         ('/ozoneloss/clams/2012', _(u'2012')),
         ('/ozoneloss/clams/2011', _(u'2011')),
         ('/ozoneloss/clams/2010', _(u'2010')),
-        ]
+    ]
     return menue
 
+
+def get_valid_dates(files):
+    dates = []
+
+    for file in files:
+        if file.endswith('.png') and file.find('uvi') >= 0:
+            date = file[-12:-6]
+            dates.append(date)
+    dates.sort()
+    for date in dates:
+        i = 0
+        for param in ['uvi', 'o3col', 'do3col']:
+            testfile = 'clams_' + param + '_' + date + '12.png'
+            if files.count(testfile) > 0:
+                i = i + 1
+        if i <> 3:
+            dates.remove(date)
+    return dates
+
+
+def get_o3lossuvmap_dates(date_show):
+    dates = get_valid_dates(FILES)
+    ndates = len(dates)
+    ind = dates.index(date_show)
+    if ind ==0 :
+        chosendates = [dates[ind+1]]
+    elif ind >= ndates - 1:
+        chosendates= [dates[ind-1]]
+    else:
+        chosendates = [dates[ind-1], dates[ind+1]]
+    menue = []
+    for date in chosendates:
+        text_date = date[-2:] + '.' + date[-4:-2] + '.'
+        menue.append(('/ozoneloss/uvmap/' + date, _(text_date)))
+    return menue
+
+
 def get_vpsc_dates():
     menue = [
         ('/ozoneloss/vpsc/2016', _(u'2016')),
@@ -84,11 +130,13 @@
         ('/ozoneloss/vpsc/2012', _(u'2012')),
         ('/ozoneloss/vpsc/2011', _(u'2011')),
         ('/ozoneloss/vpsc/2010', _(u'2010')),
-        ]
+    ]
     return menue
 
+
 app.jinja_env.globals.update(get_o3lossclams_dates=get_o3lossclams_dates)
 app.jinja_env.globals.update(get_vpsc_dates=get_vpsc_dates)
+app.jinja_env.globals.update(get_o3lossuvmap_dates=get_o3lossuvmap_dates)
 
 
 def modal_info(template, act, title, filename):
@@ -118,6 +166,13 @@
     return render_template("/ozoneloss_clams.html", act="ozoneloss/clams/%s" % year, content=content, year=year)
 
 
+@app.route('/ozoneloss/uvmap/<date>')
+def ozoneloss_uvmap_date(date):
+    filename = os.path.join("templates", get_locale(), "rst", "ozoneloss_uvmap.rst")
+    content = get_content(filename)
+    return render_template("/ozoneloss_uvmap.html", act="ozoneloss/uvmap/%s" % date, content=content, date=date)
+
+
 @app.route('/ozoneloss/vpsc/<year>')
 def ozoneloss_vspc_year(year):
     filename = os.path.join("templates", get_locale(), "rst", "ozoneloss_vpsc.rst")
@@ -137,6 +192,7 @@
                            eskp_info=_(u'About ESKP'),
                            )
 
+
 @app.route('/en')
 def en():
     global LANGUAGE_SELECTED
@@ -145,6 +201,7 @@
                            eskp_info=_(u'About ESKP'),
                            )
 
+
 @app.route("/eskp")
 def eskp():
     filename = os.path.join("templates", get_locale(), "rst", "eskp.rst")
@@ -155,13 +212,13 @@
 
 
 def qr_image_data(card):
-    buf= StringIO.StringIO()
+    buf = StringIO.StringIO()
     qr = qrcode.QRCode(
         version=1,
         error_correction=qrcode.constants.ERROR_CORRECT_L,
         box_size=2,
         border=2,
-        )
+    )
     qr.add_data(card.serialize())
     qr.make(fit=True)
     img = qr.make_image()
@@ -172,12 +229,12 @@
 
 @app.route("/ozoneloss")
 def ozoneloss():
-
     filename = os.path.join("templates", get_locale(), "rst", "ozoneloss.rst")
     content = get_content(filename)
 
     vcard_file = os.path.join("vcards", "jug.vcf")
     author = u""
+
     try:
         card = get_vcard(vcard_file)
     except IOError:
@@ -185,12 +242,13 @@
     if card is not None:
         qr_image = qr_image_data(card)
         author = render_template("/author_info.html", act="author", title=_(u"Ozoneloss"),
-                                  card=card, image=qr_image, contact=_(u"Contact"), exit=_(u"Close"))
+                                 card=card, image=qr_image, contact=_(u"Contact"), exit=_(u"Close"))
 
     filename = os.path.join("templates", get_locale(), "rst", "ozoneloss_publications.rst")
     publications = modal_info("/publications_info.html", "publications", _(u"Ozoneloss"), filename)
     return render_template("/ozoneloss.html", act="ozoneloss", content=content,
-                           author=author,card=card, publications=publications )
+                           author=author, card=card, publications=publications)
+
 
 @app.route("/ozoneloss/clams")
 def ozoneloss_clams():
@@ -198,6 +256,14 @@
     content = get_content(filename)
     return render_template("/ozoneloss_clams.html", act="ozoneloss/clams", content=content)
 
+
+@app.route("/ozoneloss/uvmap")
+def ozoneloss_uvmap():
+    filename = os.path.join("templates", get_locale(), "rst", "ozoneloss_uvmap.rst")
+    content = get_content(filename)
+    return render_template("/ozoneloss_uvmap.html", act="ozoneloss/uvmap", content=content)
+
+
 @app.route("/ozoneloss/vpsc")
 def ozoneloss_vspc():
     filename = os.path.join("templates", get_locale(), "rst", "ozoneloss_vpsc.rst")
@@ -215,10 +281,10 @@
     o3offset = 50.
     figname = "uvincr_lat%0.3i_do3%0.3i.svg" % (lat, o3offset)
 
-
     return render_template('ozoneloss_uvi.html', act="ozoneloss/uvi", content=content, figname=figname,
                            alt=_(u"UV increase at {{lat}} degrees N for {{o3offset}} DU ozone depletion"))
 
+
 @app.route("/ozoneloss/uvi_graph", methods=['POST'])
 def ozoneloss_uvi_graph():
     filename = os.path.join("templates", get_locale(), "rst", "ozoneloss_uvi.rst")
@@ -236,17 +302,12 @@
         latstr2 = latstr2.replace(u'S', '')
         lat = -float(latstr2)
 
-
     figname = "uvincr_lat%0.3i_do3%0.3i.svg" % (lat, float(o3offsetstr))
 
     return render_template('graph.html', act="ozoneloss_uvi_graph", content=content, figname=figname,
                            o3offsetstr=o3offsetstr, latstr=latstr)
 
 
-
-
-
-
 @app.route("/iek-7")
 def institute():
     filename = os.path.join("templates", get_locale(), "rst", "iek-7.rst")
@@ -260,7 +321,7 @@
     if card is not None:
         qr_image = qr_image_data(card)
         author = render_template("/author_info.html", act="author", title=_(u"IEK-7"),
-                                  card=card, image=qr_image, contact=_(u"Contact"), exit=_(u"Close"))
+                                 card=card, image=qr_image, contact=_(u"Contact"), exit=_(u"Close"))
 
     return render_template("/iek-7.html", act="iek-7", content=content,
                            author=author, card=card, contact=u"IEK-7")
@@ -273,14 +334,12 @@
     return render_template("/content.html", act="imprint", content=content)
 
 
-
-
-
 @app.errorhandler(404)
 def page_not_found(e):
     msg = _(u"Url: %(url)s not found", url=request.url)
     info = _(u"This information is not available!")
     return render_template("404.html", msg=msg, info=info)
 
+
 if __name__ == "__main__":
-    app.run(host='localhost', port=5014)
+    app.run(host='localhost', port=5014, debug=True)
diff -r ef878249fb51 -r 04b941597cc4 static/images/uvmap/clams_do3col_16022912.png
Binary file static/images/uvmap/clams_do3col_16022912.png has changed
diff -r ef878249fb51 -r 04b941597cc4 static/images/uvmap/clams_do3col_16030112.png
Binary file static/images/uvmap/clams_do3col_16030112.png has changed
diff -r ef878249fb51 -r 04b941597cc4 static/images/uvmap/clams_do3col_16030212.png
Binary file static/images/uvmap/clams_do3col_16030212.png has changed
diff -r ef878249fb51 -r 04b941597cc4 static/images/uvmap/clams_do3col_16030312.png
Binary file static/images/uvmap/clams_do3col_16030312.png has changed
diff -r ef878249fb51 -r 04b941597cc4 static/images/uvmap/clams_do3col_16030412.png
Binary file static/images/uvmap/clams_do3col_16030412.png has changed
diff -r ef878249fb51 -r 04b941597cc4 static/images/uvmap/clams_do3col_16030512.png
Binary file static/images/uvmap/clams_do3col_16030512.png has changed
diff -r ef878249fb51 -r 04b941597cc4 static/images/uvmap/clams_do3col_16030612.png
Binary file static/images/uvmap/clams_do3col_16030612.png has changed
diff -r ef878249fb51 -r 04b941597cc4 static/images/uvmap/clams_do3col_16030712.png
Binary file static/images/uvmap/clams_do3col_16030712.png has changed
diff -r ef878249fb51 -r 04b941597cc4 static/images/uvmap/clams_do3col_16030812.png
Binary file static/images/uvmap/clams_do3col_16030812.png has changed
diff -r ef878249fb51 -r 04b941597cc4 static/images/uvmap/clams_do3col_16030912.png
Binary file static/images/uvmap/clams_do3col_16030912.png has changed
diff -r ef878249fb51 -r 04b941597cc4 static/images/uvmap/clams_do3col_16031012.png
Binary file static/images/uvmap/clams_do3col_16031012.png has changed
diff -r ef878249fb51 -r 04b941597cc4 static/images/uvmap/clams_o3col_16022912.png
Binary file static/images/uvmap/clams_o3col_16022912.png has changed
diff -r ef878249fb51 -r 04b941597cc4 static/images/uvmap/clams_o3col_16030112.png
Binary file static/images/uvmap/clams_o3col_16030112.png has changed
diff -r ef878249fb51 -r 04b941597cc4 static/images/uvmap/clams_o3col_16030212.png
Binary file static/images/uvmap/clams_o3col_16030212.png has changed
diff -r ef878249fb51 -r 04b941597cc4 static/images/uvmap/clams_o3col_16030312.png
Binary file static/images/uvmap/clams_o3col_16030312.png has changed
diff -r ef878249fb51 -r 04b941597cc4 static/images/uvmap/clams_o3col_16030412.png
Binary file static/images/uvmap/clams_o3col_16030412.png has changed
diff -r ef878249fb51 -r 04b941597cc4 static/images/uvmap/clams_o3col_16030512.png
Binary file static/images/uvmap/clams_o3col_16030512.png has changed
diff -r ef878249fb51 -r 04b941597cc4 static/images/uvmap/clams_o3col_16030612.png
Binary file static/images/uvmap/clams_o3col_16030612.png has changed
diff -r ef878249fb51 -r 04b941597cc4 static/images/uvmap/clams_o3col_16030712.png
Binary file static/images/uvmap/clams_o3col_16030712.png has changed
diff -r ef878249fb51 -r 04b941597cc4 static/images/uvmap/clams_o3col_16030812.png
Binary file static/images/uvmap/clams_o3col_16030812.png has changed
diff -r ef878249fb51 -r 04b941597cc4 static/images/uvmap/clams_o3col_16030912.png
Binary file static/images/uvmap/clams_o3col_16030912.png has changed
diff -r ef878249fb51 -r 04b941597cc4 static/images/uvmap/clams_o3col_16031012.png
Binary file static/images/uvmap/clams_o3col_16031012.png has changed
diff -r ef878249fb51 -r 04b941597cc4 static/images/uvmap/clams_uvi_16022912.png
Binary file static/images/uvmap/clams_uvi_16022912.png has changed
diff -r ef878249fb51 -r 04b941597cc4 static/images/uvmap/clams_uvi_16030112.png
Binary file static/images/uvmap/clams_uvi_16030112.png has changed
diff -r ef878249fb51 -r 04b941597cc4 static/images/uvmap/clams_uvi_16030212.png
Binary file static/images/uvmap/clams_uvi_16030212.png has changed
diff -r ef878249fb51 -r 04b941597cc4 static/images/uvmap/clams_uvi_16030312.png
Binary file static/images/uvmap/clams_uvi_16030312.png has changed
diff -r ef878249fb51 -r 04b941597cc4 static/images/uvmap/clams_uvi_16030412.png
Binary file static/images/uvmap/clams_uvi_16030412.png has changed
diff -r ef878249fb51 -r 04b941597cc4 static/images/uvmap/clams_uvi_16030512.png
Binary file static/images/uvmap/clams_uvi_16030512.png has changed
diff -r ef878249fb51 -r 04b941597cc4 static/images/uvmap/clams_uvi_16030612.png
Binary file static/images/uvmap/clams_uvi_16030612.png has changed
diff -r ef878249fb51 -r 04b941597cc4 static/images/uvmap/clams_uvi_16030712.png
Binary file static/images/uvmap/clams_uvi_16030712.png has changed
diff -r ef878249fb51 -r 04b941597cc4 static/images/uvmap/clams_uvi_16030812.png
Binary file static/images/uvmap/clams_uvi_16030812.png has changed
diff -r ef878249fb51 -r 04b941597cc4 static/images/uvmap/clams_uvi_16030912.png
Binary file static/images/uvmap/clams_uvi_16030912.png has changed
diff -r ef878249fb51 -r 04b941597cc4 static/images/uvmap/clams_uvi_16031012.png
Binary file static/images/uvmap/clams_uvi_16031012.png has changed
diff -r ef878249fb51 -r 04b941597cc4 templates/de/rst/ozoneloss_uvmap.rst
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/de/rst/ozoneloss_uvmap.rst	Fri Mar 11 11:04:44 2016 +0100
@@ -0,0 +1,16 @@
+Ozonverlust, Ozonsäule und UV-Index
+===================================
+
+Aus dem berechneten Ozonverlust [#]_ und der berechneten gesamten
+Ozonsäule kann man den UV-Index abschätzen [#]_.  Der UV Index ist
+maximal zur Mittagszeit bei wolkenfreiem Himmel.  Diese Größe ist hier
+auf der dritten Karte dargestellt.  Die schwarze Linie auf allen
+Karten markiert den Rand des Polarwirbels in 17 km Höhe.  Man kann
+sich die Entwicklung für mehrere Tage durch das Klicken auf das
+entsprechende Datum ansehen.  Wie sich der UV-Index normalerweise im
+Laufe des Jahres erhöht, und welchen Einfluss der Ozonverlust habe
+würde, kann man den Diagrammen `hier`_ entnehmen.
+
+.. _hier: /ozoneloss/uvi
+.. [#] Ozonverlust in der Teilsäule zwischen 12 und 23 km (350-600 K)
+.. [#] Berechnung des UV-Index für wolkenfreien Himmel nach der Methode von Allaart et al. (Meteorological Applications, 11, 59-65, 2004)
diff -r ef878249fb51 -r 04b941597cc4 templates/ozoneloss_uvmap.html
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/ozoneloss_uvmap.html	Fri Mar 11 11:04:44 2016 +0100
@@ -0,0 +1,23 @@
+{% extends "theme.html" %} 
+{% block body %}
+<div class="container">
+ <div class="col-lg-12">
+ 	<div class="row">
+     {{ content|safe }}
+ </div>
+
+<ul class="nav navbar-nav navbar-right">
+{% for href, caption in  get_o3lossuvmap_dates(date): %}
+     <span>&nbsp&nbsp<span class="span3"><a href="{{ href }}" >{{ caption }}</a></span></span>
+{% endfor %}
+</ul>
+<br>
+<img src="/static/images/uvmap/clams_do3col_{{date}}12.png" alt="O3 loss {{ date }}"whith="250" height="250" border="0" hspace=20>
+     <img src="/static/images/uvmap/clams_o3col_{{date}}12.png" alt="O3 column {{ date }}"whith="250" height="250" border="0" hspace=20>
+     <img src="/static/images/uvmap/clams_uvi_{{ date }}12.png" alt="UV Index {{ date }}" whith="250" height="250" border="0">
+   </div>
+
+
+ </div>
+
+{% endblock %}
diff -r ef878249fb51 -r 04b941597cc4 translations/de/LC_MESSAGES/messages.mo
Binary file translations/de/LC_MESSAGES/messages.mo has changed
diff -r ef878249fb51 -r 04b941597cc4 translations/de/LC_MESSAGES/messages.po
--- a/translations/de/LC_MESSAGES/messages.po	Fri Mar 11 09:57:49 2016 +0100
+++ b/translations/de/LC_MESSAGES/messages.po	Fri Mar 11 11:04:44 2016 +0100
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2016-01-30 08:09+0100\n"
+"POT-Creation-Date: 2016-03-11 10:40+0100\n"
 "PO-Revision-Date: 2014-05-05 11:10+0200\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language: de\n"
@@ -19,93 +19,93 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.2.0\n"
 
-#: eskp.py:55 eskp.py:187 eskp.py:191 eskp_old.py:55 eskp_old.py:185
-#: eskp_old.py:189
+#: eskp.py:62 eskp.py:244 eskp.py:248
 msgid "Ozoneloss"
 msgstr "Ozonverlust"
 
-#: eskp.py:56 eskp_old.py:56
+#: eskp.py:63
 msgid "overview"
 msgstr "Ãœbersicht"
 
-#: eskp.py:57 eskp_old.py:57
+#: eskp.py:64
 msgid "calculations"
 msgstr "Berechnungen"
 
-#: eskp.py:58 eskp_old.py:58
+#: eskp.py:65
 msgid "estimations"
 msgstr "Abschätzungen"
 
-#: eskp.py:59 eskp_old.py:59
+#: eskp.py:66
 msgid "uv increase"
 msgstr "UV-Anstieg"
 
-#: eskp.py:61 eskp_old.py:61
+#: eskp.py:67
+msgid "uv index map"
+msgstr "Kartendarstellung"
+
+#: eskp.py:68
 msgid "ESKP"
 msgstr "ESKP"
 
-#: eskp.py:62 eskp.py:262 eskp_old.py:62 eskp_old.py:224
+#: eskp.py:69 eskp.py:323
 msgid "IEK-7"
 msgstr "IEK-7"
 
-#: eskp.py:70 eskp.py:80
+#: eskp.py:79 eskp.py:126
 #, fuzzy
 msgid "2016"
 msgstr "2015"
 
-#: eskp.py:71 eskp.py:81 eskp_old.py:70 eskp_old.py:79
+#: eskp.py:80 eskp.py:127
 msgid "2015"
 msgstr "2015"
 
-#: eskp.py:72 eskp.py:84 eskp_old.py:71 eskp_old.py:82
+#: eskp.py:81 eskp.py:130
 msgid "2012"
 msgstr "2012"
 
-#: eskp.py:73 eskp.py:85 eskp_old.py:72 eskp_old.py:83
+#: eskp.py:82 eskp.py:131
 msgid "2011"
 msgstr "2011"
 
-#: eskp.py:74 eskp.py:86 eskp_old.py:73 eskp_old.py:84
+#: eskp.py:83 eskp.py:132
 msgid "2010"
 msgstr "2010"
 
-#: eskp.py:82 eskp_old.py:80
+#: eskp.py:128
 msgid "2014"
 msgstr "2014"
 
-#: eskp.py:83 eskp_old.py:81
+#: eskp.py:129
 msgid "2013"
 msgstr "2013"
 
-#: eskp.py:96 eskp.py:188 eskp.py:263 eskp_old.py:94 eskp_old.py:186
-#: eskp_old.py:225
+#: eskp.py:144 eskp.py:245 eskp.py:324
 msgid "Close"
 msgstr "Schließen"
 
-#: eskp.py:110 eskp.py:137 eskp.py:145 eskp_old.py:108 eskp_old.py:135
-#: eskp_old.py:143
+#: eskp.py:158 eskp.py:192 eskp.py:201
 msgid "About ESKP"
 msgstr "Ãœber ESKP"
 
-#: eskp.py:188 eskp.py:263 eskp_old.py:186 eskp_old.py:225
+#: eskp.py:245 eskp.py:324
 msgid "Contact"
 msgstr "Ansprechpartner"
 
-#: eskp.py:220
+#: eskp.py:285
 #, fuzzy
 msgid "UV increase at {{lat}} degrees N for {{o3offset}} DU ozone depletion"
 msgstr "UV Anstieg bei 52 Grad N für 50 DU Ozonverlust"
 
-#: eskp.py:281 eskp_old.py:243
+#: eskp.py:339
 #, python-format
 msgid "Url: %(url)s not found"
 msgstr "Url: %(url)s nicht gefunden"
 
-#: eskp.py:282 eskp_old.py:244
+#: eskp.py:340
 msgid "This information is not available!"
 msgstr "Diese Information steht nicht zur Verfügung"
 
-#: eskp_old.py:210
-msgid "UV increase at 52 degrees N for 50 DU ozone depletion"
-msgstr "UV Anstieg bei 52 Grad N für 50 DU Ozonverlust"
+#~ msgid "UV increase at 52 degrees N for 50 DU ozone depletion"
+#~ msgstr "UV Anstieg bei 52 Grad N für 50 DU Ozonverlust"
 
diff -r ef878249fb51 -r 04b941597cc4 translations/en/LC_MESSAGES/messages.po
--- a/translations/en/LC_MESSAGES/messages.po	Fri Mar 11 09:57:49 2016 +0100
+++ b/translations/en/LC_MESSAGES/messages.po	Fri Mar 11 11:04:44 2016 +0100
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2016-01-30 08:09+0100\n"
+"POT-Creation-Date: 2016-03-11 10:40+0100\n"
 "PO-Revision-Date: 2014-05-05 11:10+0200\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language: en\n"
@@ -19,94 +19,91 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.2.0\n"
 
-#: eskp.py:55 eskp.py:187 eskp.py:191 eskp_old.py:55 eskp_old.py:185
-#: eskp_old.py:189
+#: eskp.py:62 eskp.py:244 eskp.py:248
 msgid "Ozoneloss"
 msgstr ""
 
-#: eskp.py:56 eskp_old.py:56
+#: eskp.py:63
 msgid "overview"
 msgstr ""
 
-#: eskp.py:57 eskp_old.py:57
+#: eskp.py:64
 msgid "calculations"
 msgstr ""
 
-#: eskp.py:58 eskp_old.py:58
+#: eskp.py:65
 msgid "estimations"
 msgstr ""
 
-#: eskp.py:59 eskp_old.py:59
+#: eskp.py:66
 msgid "uv increase"
 msgstr ""
 
-#: eskp.py:61 eskp_old.py:61
+#: eskp.py:67
+msgid "uv index map"
+msgstr ""
+
+#: eskp.py:68
 msgid "ESKP"
 msgstr ""
 
-#: eskp.py:62 eskp.py:262 eskp_old.py:62 eskp_old.py:224
+#: eskp.py:69 eskp.py:323
 msgid "IEK-7"
 msgstr ""
 
-#: eskp.py:70 eskp.py:80
+#: eskp.py:79 eskp.py:126
 msgid "2016"
 msgstr ""
 
-#: eskp.py:71 eskp.py:81 eskp_old.py:70 eskp_old.py:79
+#: eskp.py:80 eskp.py:127
 msgid "2015"
 msgstr ""
 
-#: eskp.py:72 eskp.py:84 eskp_old.py:71 eskp_old.py:82
+#: eskp.py:81 eskp.py:130
 msgid "2012"
 msgstr ""
 
-#: eskp.py:73 eskp.py:85 eskp_old.py:72 eskp_old.py:83
+#: eskp.py:82 eskp.py:131
 msgid "2011"
 msgstr ""
 
-#: eskp.py:74 eskp.py:86 eskp_old.py:73 eskp_old.py:84
+#: eskp.py:83 eskp.py:132
 msgid "2010"
 msgstr ""
 
-#: eskp.py:82 eskp_old.py:80
+#: eskp.py:128
 msgid "2014"
 msgstr ""
 
-#: eskp.py:83 eskp_old.py:81
+#: eskp.py:129
 msgid "2013"
 msgstr ""
 
-#: eskp.py:96 eskp.py:188 eskp.py:263 eskp_old.py:94 eskp_old.py:186
-#: eskp_old.py:225
+#: eskp.py:144 eskp.py:245 eskp.py:324
 msgid "Close"
 msgstr ""
 
-#: eskp.py:110 eskp.py:137 eskp.py:145 eskp_old.py:108 eskp_old.py:135
-#: eskp_old.py:143
+#: eskp.py:158 eskp.py:192 eskp.py:201
 msgid "About ESKP"
 msgstr ""
 
-#: eskp.py:188 eskp.py:263 eskp_old.py:186 eskp_old.py:225
+#: eskp.py:245 eskp.py:324
 msgid "Contact"
 msgstr ""
 
-#: eskp.py:220
+#: eskp.py:285
 msgid "UV increase at {{lat}} degrees N for {{o3offset}} DU ozone depletion"
 msgstr ""
 
-#: eskp.py:281 eskp_old.py:243
+#: eskp.py:339
 #, python-format
 msgid "Url: %(url)s not found"
 msgstr ""
 
-#: eskp.py:282 eskp_old.py:244
+#: eskp.py:340
 msgid "This information is not available!"
 msgstr ""
 
-#: eskp_old.py:210
-msgid "UV increase at 52 degrees N for 50 DU ozone depletion"
-msgstr ""
-
 #~ msgid "The Zen of Python, by Tim Peters"
 #~ msgstr ""
 
@@ -182,3 +179,6 @@
 #~ msgid "quantification"
 #~ msgstr ""
 
+#~ msgid "UV increase at 52 degrees N for 50 DU ozone depletion"
+#~ msgstr ""
+
diff -r ef878249fb51 -r 04b941597cc4 translations/eskp.pot
--- a/translations/eskp.pot	Fri Mar 11 09:57:49 2016 +0100
+++ b/translations/eskp.pot	Fri Mar 11 11:04:44 2016 +0100
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2016-01-30 08:09+0100\n"
+"POT-Creation-Date: 2016-03-11 10:40+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,91 +17,88 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.2.0\n"
 
-#: eskp.py:55 eskp.py:187 eskp.py:191 eskp_old.py:55 eskp_old.py:185
-#: eskp_old.py:189
+#: eskp.py:62 eskp.py:244 eskp.py:248
 msgid "Ozoneloss"
 msgstr ""
 
-#: eskp.py:56 eskp_old.py:56
+#: eskp.py:63
 msgid "overview"
 msgstr ""
 
-#: eskp.py:57 eskp_old.py:57
+#: eskp.py:64
 msgid "calculations"
 msgstr ""
 
-#: eskp.py:58 eskp_old.py:58
+#: eskp.py:65
 msgid "estimations"
 msgstr ""
 
-#: eskp.py:59 eskp_old.py:59
+#: eskp.py:66
 msgid "uv increase"
 msgstr ""
 
-#: eskp.py:61 eskp_old.py:61
+#: eskp.py:67
+msgid "uv index map"
+msgstr ""
+
+#: eskp.py:68
 msgid "ESKP"
 msgstr ""
 
-#: eskp.py:62 eskp.py:262 eskp_old.py:62 eskp_old.py:224
+#: eskp.py:69 eskp.py:323
 msgid "IEK-7"
 msgstr ""
 
-#: eskp.py:70 eskp.py:80
+#: eskp.py:79 eskp.py:126
 msgid "2016"
 msgstr ""
 
-#: eskp.py:71 eskp.py:81 eskp_old.py:70 eskp_old.py:79
+#: eskp.py:80 eskp.py:127
 msgid "2015"
 msgstr ""
 
-#: eskp.py:72 eskp.py:84 eskp_old.py:71 eskp_old.py:82
+#: eskp.py:81 eskp.py:130
 msgid "2012"
 msgstr ""
 
-#: eskp.py:73 eskp.py:85 eskp_old.py:72 eskp_old.py:83
+#: eskp.py:82 eskp.py:131
 msgid "2011"
 msgstr ""
 
-#: eskp.py:74 eskp.py:86 eskp_old.py:73 eskp_old.py:84
+#: eskp.py:83 eskp.py:132
 msgid "2010"
 msgstr ""
 
-#: eskp.py:82 eskp_old.py:80
+#: eskp.py:128
 msgid "2014"
 msgstr ""
 
-#: eskp.py:83 eskp_old.py:81
+#: eskp.py:129
 msgid "2013"
 msgstr ""
 
-#: eskp.py:96 eskp.py:188 eskp.py:263 eskp_old.py:94 eskp_old.py:186
-#: eskp_old.py:225
+#: eskp.py:144 eskp.py:245 eskp.py:324
 msgid "Close"
 msgstr ""
 
-#: eskp.py:110 eskp.py:137 eskp.py:145 eskp_old.py:108 eskp_old.py:135
-#: eskp_old.py:143
+#: eskp.py:158 eskp.py:192 eskp.py:201
 msgid "About ESKP"
 msgstr ""
 
-#: eskp.py:188 eskp.py:263 eskp_old.py:186 eskp_old.py:225
+#: eskp.py:245 eskp.py:324
 msgid "Contact"
 msgstr ""
 
-#: eskp.py:220
+#: eskp.py:285
 msgid "UV increase at {{lat}} degrees N for {{o3offset}} DU ozone depletion"
 msgstr ""
 
-#: eskp.py:281 eskp_old.py:243
+#: eskp.py:339
 #, python-format
 msgid "Url: %(url)s not found"
 msgstr ""
 
-#: eskp.py:282 eskp_old.py:244
+#: eskp.py:340
 msgid "This information is not available!"
 msgstr ""
 
-#: eskp_old.py:210
-msgid "UV increase at 52 degrees N for 50 DU ozone depletion"
-msgstr ""
-
diff -r ef878249fb51 -r 04b941597cc4 vcards/jug.vcf
--- a/vcards/jug.vcf	Fri Mar 11 09:57:49 2016 +0100
+++ b/vcards/jug.vcf	Fri Mar 11 11:04:44 2016 +0100
@@ -1,7 +1,7 @@
 BEGIN:VCARD
 VERSION:3.0
 ORG:Institut für Energie- und Klimaforschung Stratosphäre (IEK-7)
-PHOTO;VALUE=URL;TYPE=JPG:https://www.fz-juelich.de/SharedDocs/Bilder/IEK/IEK-7/DE/Mitarbeiter/grooss_j_u.jpg?__blob=normal
+PHOTO;VALUE=URL;TYPE=JPG:http://www.fz-juelich.de/SharedDocs/Bilder/IEK/IEK-7/DE/Mitarbeiter/grooss_j_u.jpg?__blob=normal
 TITLE:Dr.
 TEL:
 FN:Jens-Uwe Grooß