dabo Commit
Revision 5233
Date: 2009-05-26 19:28:29 -0700 (Tue, 26 May 2009)
Author: Ed
Trac: http://trac.dabodev.com/changeset/5233

Changed:
U   trunk/daboserver/config/routing.py
A   trunk/daboserver/controllers/webupdate.py
U   trunk/daboserver/model/__init__.py
A   trunk/daboserver/tests/functional/test_webupdate.py

Log:
Changes to the server to support web update

Diff:
Modified: trunk/daboserver/config/routing.py
===================================================================
--- trunk/daboserver/config/routing.py  2009-05-27 01:15:38 UTC (rev 5232)
+++ trunk/daboserver/config/routing.py  2009-05-27 02:28:29 UTC (rev 5233)
@@ -18,6 +18,10 @@
        map.connect('/error/:action', controller='error')
        map.connect('/error/:action/:id', controller='error')
 
+       # Web update controller
+       map.connect("wup", "/webupdate/:action/:val", controller="webupdate")
+       map.connect("wup", "/webupdate/:action", controller="webupdate")
+       
        # CUSTOM ROUTES HERE
        map.connect("man1", "/manifest/:app/:fnc/:id", controller="bizservers", 
action="manifest")
        map.connect("man2", "/manifest/:app/:fnc", controller="bizservers", 
action="manifest")

Added: trunk/daboserver/controllers/webupdate.py
===================================================================
--- trunk/daboserver/controllers/webupdate.py                           (rev 0)
+++ trunk/daboserver/controllers/webupdate.py   2009-05-27 02:28:29 UTC (rev 
5233)
@@ -0,0 +1,70 @@
+import logging
+import simplejson
+import os
+import tempfile
+from zipfile import ZipFile
+
+from pylons import request, response, session, tmpl_context as c
+from pylons.controllers.util import abort, redirect_to
+
+from daboserver.lib.base import BaseController, render
+from daboserver import model
+from daboserver.model import Versions
+
+log = logging.getLogger(__name__)
+
+
+
+class WebupdateController(BaseController):
+       """ Check for Web Update changes, and download the files when 
requested."""
+       _deletedFilesName = "DELETEDFILES"
+       
+       
+       def check(self, val):
+               return simplejson.dumps(Versions.changes(val))
+
+
+       def files(self, val):           
+               currdir = os.getcwd()
+               chgs = Versions.changes(val)["files"]
+               delfiles = []
+               goodPrefixes = ("dabo", "demo", "ide")
+               basepath = "%s%s" % (Versions.reposBase, Versions.repos)
+               os.chdir(basepath)
+               fd, tmpname = tempfile.mkstemp(suffix=".zip")
+               os.close(fd)
+               z = ZipFile(tmpname, "w")
+               zcount = dcount = 0
+               for chg in chgs:
+                       chgtype, pth = chg.split()
+                       try:
+                               prfx, fname = pth.split("/", 1)
+                       except ValueError:
+                               # A file in the trunk; ignore
+                               continue
+                       if prfx not in goodPrefixes:
+                               # Not a web update project
+                               continue
+                       if "D" in chgtype:
+                               delfiles.append(pth)
+                               dcount += 1
+                               continue
+                       # 'pth' must be str, not unicode
+                       if os.path.isfile(pth):
+                               z.write(str(pth))
+                               zcount += 1
+               if dcount:
+                       # Add the file with deletion paths
+                       fd, tmpdel = tempfile.mkstemp()
+                       os.close(fd)
+                       file(tmpdel, "w").write("\n".join(delfiles))
+                       z.write(tmpdel, self._deletedFilesName)
+                       os.remove(tmpdel)
+
+               z.close()
+               response.headers['content-type'] = 
"application/x-zip-compressed"
+               ret = file(tmpname).read()
+               os.remove(tmpname)
+               os.chdir(currdir)
+               return ret
+               
\ No newline at end of file

Modified: trunk/daboserver/model/__init__.py
===================================================================
--- trunk/daboserver/model/__init__.py  2009-05-27 01:15:38 UTC (rev 5232)
+++ trunk/daboserver/model/__init__.py  2009-05-27 02:28:29 UTC (rev 5233)
@@ -0,0 +1,4 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+from versions import Versions

Added: trunk/daboserver/tests/functional/test_webupdate.py
===================================================================
--- trunk/daboserver/tests/functional/test_webupdate.py                         
(rev 0)
+++ trunk/daboserver/tests/functional/test_webupdate.py 2009-05-27 02:28:29 UTC 
(rev 5233)
@@ -0,0 +1,7 @@
+from daboserver.tests import *
+
+class TestWebupdateController(TestController):
+
+    def test_index(self):
+        response = self.app.get(url(controller='webupdate', action='index'))
+        # Test response...



_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-dev
Searchable Archives: http://leafe.com/archives/search/dabo-dev
This message: 
http://leafe.com/archives/byMID/[email protected]

Reply via email to