Example #1
0
def check_version(request):
    if request.method != "POST":
        raise Http404()

    version = cache.get(VERSION_CHECK_CACHE_KEY, 'nada')

    if version == 'nada':
        try:
            api_url = 'https://api.github.com/repos/rafalp/Misago/releases'
            r = requests.get(api_url)

            if r.status_code != requests.codes.ok:
                r.raise_for_status()
            latest_version = json.loads(r.content)[0]['tag_name']

            latest = [int(v) for v in latest_version.split(".")]
            current = [int(v) for v in __version__.split(".")]

            for i in range(3):
                if latest[i] > current[i]:
                    message = _("Outdated: %(current)s < %(latest)s")
                    formats = {
                        'latest': latest_version,
                        'current': __version__,
                    }

                    version = {
                        'is_error': True,
                        'message': message % formats,
                    }
                    break
            else:
                formats = {
                    'current': __version__,
                }
                version = {
                    'is_error': False,
                    'message': _("Up to date! (%(current)s)") % formats,
                }

            cache.set(VERSION_CHECK_CACHE_KEY, version, 180)
        except (RequestException, IndexError, KeyError, ValueError):
            message = _("Failed to connect to GitHub API. Try again later.")
            version = {
                'is_error': True,
                'message': message,
            }

    return JsonResponse(version)
Example #2
0
def check_version(request):
    if request.method != "POST":
        raise Http404()
    version = cache.get(VERSION_CHECK_CACHE_KEY, 'nada')
    if version == 'nada':
        try:
            api_url = 'https://api.github.com/repos/rafalp/Misago/releases'
            r = requests.get(api_url)

            if r.status_code != requests.codes.ok:
                r.raise_for_status()
            latest_version = json.loads(r.content)[0]['tag_name']

            latest = [int(v) for v in latest_version.split(".")]
            current = [int(v) for v in __version__.split(".")]

            for i in xrange(3):
                if latest[i] > current[i]:
                    message = _("Outdated: %(current)s < %(latest)s")
                    formats = {
                        'latest': latest_version,
                        'current': __version__
                    }

                    version = {
                        'is_error': True,
                        'message': message % formats
                    }
                    break
            else:
                formats = {'current': __version__}
                version = {
                    'is_error': False,
                    'message': _("Up to date! (%(current)s)") % formats,
                }

            cache.set(VERSION_CHECK_CACHE_KEY, version, 180)
        except (RequestException, IndexError, KeyError, ValueError):
            message = _("Failed to connect to GitHub API. Try again later.")
            version = {
                'is_error': True,
                'message': message
            }
    return JsonResponse(version)