]> git.openstreetmap.org Git - osqa.git/blobdiff - forum_modules/updates/base.py
Merge pull request #26 from udacity/remove_dj_version
[osqa.git] / forum_modules / updates / base.py
index 2303152fc38c29f47aea73f5d9e06d08177aab83..fe7a003dd836e9660b18a6246ae218cba5edda0c 100644 (file)
@@ -1,3 +1,5 @@
+# -*- coding: utf-8 -*-
+
 import os
 import sys
 import platform
@@ -16,9 +18,8 @@ import logging
 from xml.dom.minidom import parse, parseString
 from forum.base import get_database_engine
 from forum.models import Question, Answer, Comment, User
-from forum.settings import APP_URL, SVN_REVISION, APP_TITLE, APP_DESCRIPTION
+from forum.settings import APP_URL, VCS_REVISION, APP_TITLE, APP_DESCRIPTION
 from django import VERSION as DJANGO_VERSION
-from django.utils import simplejson
 from django.utils.html import escape
 from django.utils.encoding import smart_unicode
 from django.conf import settings as django_settings
@@ -80,7 +81,7 @@ def get_admin_emails():
 def check_for_updates():
     # Get the SVN Revision
     try:
-        svn_revision = int(SVN_REVISION.replace('SVN-', ''))
+        svn_revision = int(VCS_REVISION.replace('SVN-', ''))
     except ValueError:
         # Here we'll have to find another way of getting the SVN revision
         svn_revision = 0
@@ -92,7 +93,7 @@ def check_for_updates():
 
     database_type = get_database_engine()
 
-    statistics = """<check>
+    statistics = u"""<check>
     <key value="%(site_key)s" />
     <app_url value="%(app_url)s" />
     <app_title value="%(app_title)s" />
@@ -129,6 +130,7 @@ def check_for_updates():
     }
 
     # Compress the statistics XML dump
+    statistics = statistics.encode('ascii', 'xmlcharrefreplace')
     statistics_compressed = bz2.compress(statistics)
 
     # Pass the compressed statistics to the update server
@@ -175,7 +177,10 @@ def update_trigger():
     # Trigger the update process
     now = datetime.datetime.now()
     if (now - settings.LATEST_UPDATE_DATETIME) > datetime.timedelta(days=1):
-        update_status = check_for_updates()
-
-        logging.error(smart_unicode("Update process has been triggered: %s" % update_status))
-        settings.LATEST_UPDATE_DATETIME.set_value(now)
+        try:
+            update_status = check_for_updates()
+            logging.log(logging.INFO, smart_unicode("Update process has been triggered: %s" % update_status))
+        except Exception, e:
+            logging.errror(smart_unicode(e))
+        finally:
+            settings.LATEST_UPDATE_DATETIME.set_value(now)