import string
import random
+import re
+
+import urllib2
+
+from forum.models import Question
+from forum.settings import APP_URL
def generate_installation_key():
gen = lambda length: "".join( [random.choice(string.digits+string.letters) for i in xrange(length)])
- return '%s-%s-%s-%s' % (gen(4), gen(4), gen(4), gen(4))
\ No newline at end of file
+ return '%s-%s-%s-%s' % (gen(4), gen(4), gen(4), gen(4))
+
+# To get the site views count we get the SUM of all questions views.
+def get_site_views():
+ views = 0
+
+ # Go through all questions and increase the views count
+ for question in Question.objects.all():
+ views += question.view_count
+
+ return views
+
+def get_server_name():
+ url = '%s/' % APP_URL
+
+ try:
+ # Make the request
+ request = urllib2.Request(url)
+ response = urllib2.urlopen(request)
+
+ # Get the response information
+ response_info = response.info()
+
+ server_name = re.findall("Server: (?P<server_name>.*)$", str(response_info))[0]
+ server_name = ''.join(server_name.splitlines())
+
+ return server_name
+ except:
+ return 'Unknown'
from django.views.generic.simple import direct_to_template
from django.utils.translation import ugettext as _
-from views import updater_index
+from views import updater_index, updater_check
urlpatterns = patterns('',
- url(r'^%s%s$' % (_('admin/'), _('updater/')), updater_index, name='updater_index'),
+ url(r'^%s%s%s$' % (_('admin/'), _('updater/'), _('check/')), updater_check, name='updater_check'),
)
+import sys
+
+from django import VERSION as DJANGO_VERSION
from django.http import HttpResponse
-from base import generate_installation_key
+from django.utils.translation import ugettext as _
+from django.utils import simplejson
+
+from base import get_site_views, get_server_name
from settings import SITE_KEY
+from forum.settings import APP_URL, SVN_REVISION
from forum.views.admin import admin_tools_page, admin_page
-@admin_page
+@admin_tools_page(_('updater'), _('Update Checker'))
def updater_index(request):
return (
'modules/updater/index.html',
},
)
+
+def updater_check(request):
+ # Get the SVN Revision
+ try:
+ svn_revision = int(SVN_REVISION.replace('SVN-', ''))
+ except ValueError:
+ # Here we'll have to find another way of getting the SVN revision
+ svn_revision = 0
+
+ statistics = """<check>
+ <key value="%(site_key)s" />
+ <app_url value="%(app_url)s" />
+ <svn_revision value="%(svn_revision)d" />
+ <views value="%(site_views)d" />
+ <active_users value="11959" />
+ <server value="%(server_name)s" />
+ <python_version value="%(python_version)s" />
+ <django_version value="%(django_version)s" />
+ <database value="MySQL 5" />
+ <os value="Linux" />
+</check> """ % {
+ 'site_key' : SITE_KEY,
+ 'app_url' : APP_URL,
+ 'svn_revision' : svn_revision,
+ 'site_views' : get_site_views(),
+ 'server_name' : get_server_name(),
+ 'python_version' : ''.join(sys.version.splitlines()),
+ 'django_version' : str(DJANGO_VERSION),
+ }
+ return HttpResponse(statistics, mimetype='text/plain')
+
+
+ json = simplejson.dumps({'name' : 'Jordan'})
+ return HttpResponse(json, mimetype='application/json')
\ No newline at end of file