row_xml.py :  » Network » Twisted » Twisted-1.0.3 » Twisted-1.0.3 » doc » examples » Python Open Source

Home
Python Open Source
1.3.1.2 Python
2.Ajax
3.Aspect Oriented
4.Blog
5.Build
6.Business Application
7.Chart Report
8.Content Management Systems
9.Cryptographic
10.Database
11.Development
12.Editor
13.Email
14.ERP
15.Game 2D 3D
16.GIS
17.GUI
18.IDE
19.Installer
20.IRC
21.Issue Tracker
22.Language Interface
23.Log
24.Math
25.Media Sound Audio
26.Mobile
27.Network
28.Parser
29.PDF
30.Project Management
31.RSS
32.Search
33.Security
34.Template Engines
35.Test
36.UML
37.USB Serial
38.Web Frameworks
39.Web Server
40.Web Services
41.Web Unit
42.Wiki
43.Windows
44.XML
Python Open Source » Network » Twisted 
Twisted » Twisted 1.0.3 » Twisted 1.0.3 » doc » examples » row_xml.py
import random

from twisted.internet import reactor
from twisted.internet.app import Application

from twisted.enterprise import adbapi,row,sqlreflector,xmlreflector,reflector

from row_util import *

""" Load objects from postgres DB
    Writes the objects out to XML DB
    Loads the objects from the XML DB
"""

class DataException(Exception): pass

xmanager = None
manager = None

def runTests(ignore=0):
    global manager
    print "running tests."
    manager.loadObjectsFrom("testrooms").addCallbacks(gotDBRooms, fail)

def fail(failure):
    print "FAILURE"
    print failure.getErrorMessage()
    reactor.stop()

def dumpRooms(rooms):
    if not rooms:
        raise DataException, "no rooms found!"

    for room in rooms:
        print "  ", room
        for child in room.furniture:
            print "     ", child            
            if hasattr(child, "childRows"):
                for inner in child.childRows:
                    print "        ", inner
    
def gotDBRooms(rooms):
    print "------------ got rooms from database ------------"
    dumpRooms(rooms)
    for obj in manager.rowCache.values():
        xmanager.insertRow(obj)

    d = xmanager.loadObjectsFrom("testrooms", data=None,
                                 whereClause=[("roomId",reflector.EQUAL, 12)])
    d.addCallback(gotXMLRooms)
    d.addErrback(fail)

def gotXMLRooms(rooms):
    print "------------ got rooms from XML ------------"    
    dumpRooms(rooms)
    d = xmanager.loadObjectsFrom("testrooms", data=None,
                                 whereClause=[("roomId",reflector.EQUAL, 12)])
    d.addCallback(gotXMLRooms2)
    d.addErrback(fail)

def gotXMLRooms2(rooms):
    print "------------ got rooms from XML again! ------------"        
    reactor.stop()
    
def tick():
    reactor.callLater(0.5, tick)

dbpool = adbapi.ConnectionPool("pyPgSQL.PgSQL", database="test")
#dbpool = adbapi.ConnectionPool("psycopg", "dbname=test")

# Create Twisted application object
application = Application("testApp")

def kickOffTests(ignoredResult=0):
    global manager, xmanager
    xmanager = xmlreflector.XMLReflector("myXMLdb", [RoomRow, FurnitureRow, RugRow, LampRow] )    
    manager = sqlreflector.SQLReflector(dbpool, [RoomRow, FurnitureRow, RugRow, LampRow])
    runTests()

# make sure we can be shut down on windows.
reactor.callLater(0.5, tick)
reactor.callLater(0.4, kickOffTests)
reactor.run()
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.