Browse Source

Merge pull request #1097 from rafalp/fix-admin-version-check

Fix version check in the admin
Rafał Pitoń 6 years ago
parent
commit
8bc56553cf
2 changed files with 15 additions and 35 deletions
  1. 11 24
      misago/admin/views/index.py
  2. 4 11
      misago/templates/misago/admin/index.html

+ 11 - 24
misago/admin/views/index.py

@@ -1,12 +1,6 @@
 import requests
 import requests
 from requests.exceptions import RequestException
 from requests.exceptions import RequestException
 
 
-try:
-    from packaging.version import parse as parse_version
-    ALLOW_VERSION_CHECK = True
-except ImportError:
-    ALLOW_VERSION_CHECK = False
-
 from django.contrib.auth import get_user_model
 from django.contrib.auth import get_user_model
 from django.http import Http404, JsonResponse
 from django.http import Http404, JsonResponse
 from django.utils.translation import ugettext as _
 from django.utils.translation import ugettext as _
@@ -40,8 +34,6 @@ def admin_index(request):
         request, 'misago/admin/index.html', {
         request, 'misago/admin/index.html', {
             'db_stats': db_stats,
             'db_stats': db_stats,
             'address_check': check_misago_address(request),
             'address_check': check_misago_address(request),
-
-            'allow_version_check': ALLOW_VERSION_CHECK,
             'version_check': cache.get(VERSION_CHECK_CACHE_KEY),
             'version_check': cache.get(VERSION_CHECK_CACHE_KEY),
         }
         }
     )
     )
@@ -59,36 +51,31 @@ def check_misago_address(request):
 
 
 
 
 def check_version(request):
 def check_version(request):
-    if not ALLOW_VERSION_CHECK or request.method != "POST":
+    if request.method != "POST":
         raise Http404()
         raise Http404()
 
 
     version = cache.get(VERSION_CHECK_CACHE_KEY, 'nada')
     version = cache.get(VERSION_CHECK_CACHE_KEY, 'nada')
 
 
     if version == 'nada':
     if version == 'nada':
         try:
         try:
-            api_url = 'https://api.github.com/repos/rafalp/Misago/releases'
+            api_url = 'https://pypi.org/pypi/Misago/json'
             r = requests.get(api_url)
             r = requests.get(api_url)
+            r.raise_for_status()
 
 
-            if r.status_code != requests.codes.ok:
-                r.raise_for_status()
-
-            latest_version = r.json()[0]['tag_name']
-
-            latest = parse_version(latest_version)
-            current = parse_version(__version__)
+            latest_version = r.json()['info']['version']
 
 
-            if latest > current:
+            if latest_version == __version__:
                 version = {
                 version = {
-                    'is_error': True,
-                    'message': _("Outdated: %(current)s! (latest: %(latest)s)") % {
-                        'latest': latest_version,
+                    'is_error': False,
+                    'message': _("Up to date! (%(current)s)") % {
                         'current': __version__,
                         'current': __version__,
                     },
                     },
                 }
                 }
             else:
             else:
                 version = {
                 version = {
-                    'is_error': False,
-                    'message': _("Up to date! (%(current)s)") % {
+                    'is_error': True,
+                    'message': _("Outdated: %(current)s! (latest: %(latest)s)") % {
+                        'latest': latest_version,
                         'current': __version__,
                         'current': __version__,
                     },
                     },
                 }
                 }
@@ -97,7 +84,7 @@ def check_version(request):
         except (RequestException, IndexError, KeyError, ValueError) as e:
         except (RequestException, IndexError, KeyError, ValueError) as e:
             version = {
             version = {
                 'is_error': True,
                 'is_error': True,
-                'message': _("Failed to connect to GitHub API. Try again later."),
+                'message': _("Failed to connect to pypi.org API. Try again later."),
             }
             }
 
 
     return JsonResponse(version)
     return JsonResponse(version)

+ 4 - 11
misago/templates/misago/admin/index.html

@@ -56,7 +56,6 @@
           <tr>
           <tr>
             <th colspan="2">
             <th colspan="2">
               <h4>
               <h4>
-                <span class="fa fa-github"></span>
                 {% trans "Misago version" %}
                 {% trans "Misago version" %}
               </h4>
               </h4>
             </th>
             </th>
@@ -65,17 +64,16 @@
         <tbody>
         <tbody>
           <tr>
           <tr>
             <td class="text-center">
             <td class="text-center">
-              {% if allow_version_check %}
-                {% if version_check %}
+              {% if version_check %}
                 <p class="lead text-{% if version_check.is_error %}danger{% else %}success{% endif %}">
                 <p class="lead text-{% if version_check.is_error %}danger{% else %}success{% endif %}">
                   {% if version_check.is_error %}
                   {% if version_check.is_error %}
-                  <span class="fa fa-times fa-lg fa-fw"></span>
+                    <span class="fa fa-times fa-lg fa-fw"></span>
                   {% else %}
                   {% else %}
-                  <span class="fa fa-check fa-lg fa-fw"></span>
+                    <span class="fa fa-check fa-lg fa-fw"></span>
                   {% endif %}
                   {% endif %}
                   {{ version_check.message }}
                   {{ version_check.message }}
                 </p>
                 </p>
-                {% else %}
+              {% else %}
                 <form method="POST">
                 <form method="POST">
                   {% csrf_token %}
                   {% csrf_token %}
                   <button type="submit" class="btn btn-default">
                   <button type="submit" class="btn btn-default">
@@ -83,11 +81,6 @@
                     <span class="name">{% trans "Check version" %}</span>
                     <span class="name">{% trans "Check version" %}</span>
                   </button>
                   </button>
                 </form>
                 </form>
-                {% endif %}
-              {% else %}
-                <p class="lead">
-                  {% trans 'This feature requires "packaging" python module.' %}
-                </p>
               {% endif %}
               {% endif %}
             </td>
             </td>
           </tr>
           </tr>