def setup_app(settings): # intialize our tornado instance app = tornado.web.Application([ (r"/", views.IndexHandler), (r"/signup", views.SignupHandler), (r"/signup/complete", views.SignupCompleteHandler), ], **settings) # couchdb setup if settings['db_user']: from restkit import BasicAuth server = Server( uri=settings['db_uri'], filters=[ BasicAuth(settings['db_user'], settings['db_pass']) ], ) db = server.get_or_create_db(settings['db_name']) # now attach our couchdb instance to the tornado app instance app.couchdb = db # setup couchdb views loader = FileSystemDocsLoader(path.join( path.dirname(__file__), '_design' ) ) loader.sync(db, verbose=True) return app
def loadDb( uri, db, filename ): httpagentparser.detectorshub.register( Google() ) httpagentparser.detectorshub.register( Netcraft() ) httpagentparser.detectorshub.register( Yahoo() ) httpagentparser.detectorshub.register( AideRss() ) httpagentparser.detectorshub.register( NetNewsWire() ) s = Server( uri ) database = s.get_or_create_db( db ) session = create_session( s, db ) for document in parse(filename): id = str( md5.new( ''.join( [document['time'].isoformat(), document['uri'], document['ip']] ) ).hexdigest() ) document['_id'] = id if document['_id'] not in database: session(document).save()
class MapperTestCase(unittest.TestCase): def setUp(self): self.server = Server(url) self.db = map(self.server.get_or_create_db(db_name)) # TODO: create greeting/all view design_doc = { '_id': '_design/greeting', 'language': 'javascript', 'views': { 'all': { "map": """ function (doc) { if (doc.doc_type == "Greeting") emit(doc._id, doc); } """ } } } self.db.save_doc(design_doc) def tearDown(self): self.server.delete_db(db_name) def testMapping(self): # introduce our class to the mapper self.db.add(Greeting) self.assert_(issubclass(self.db.classes['Greeting'], (Greeting, Document))) # TODO: more stuff g = Greeting('Jannis', 'welcome to the mapping world') self.db['g'] = g mapped_g = self.db['g'] self.assert_(mapped_g._id == 'g') self.assert_(isinstance(mapped_g, Greeting)) self.assert_(g == mapped_g) greetings = [ Greeting('Jannis', 'this is the first test greeting'), Greeting('Jannis again', 'this is the second test greeting') ] greetings[0]._id = 'first test greeting' greetings[1]._id = 'second test greeting' self.db.bulk_save(greetings) self.assert_([self.db['first test greeting'], self.db['second test greeting']] == greetings) h = Greeting('Xjs', 'Hi!') h2 = self.db.save_doc(h) h2_id = h2._id self.assertEquals(h, self.db[h2_id]) self.db.delete_doc(h2) self.assertRaises(ResourceNotFound, self.db.__getitem__, h2_id) self.db.copy_doc(mapped_g, 'another_g') self.assertEquals(g, self.db['another_g']) def testViewResults(self): def frobnicate(obj): """Helper function that returns a greeting which is ``frobnicated'' (this simulates an action being performed). Used as test for the wrapper func - because Mapper.view overwrites the mapper func passed to Database.view with a custom one in order to give back mapped objects but still retain the ability to pass a custom wrapper function.""" greeting = obj['value'] greeting.frobnicated = True return greeting # view generated in setUp all_greetings = self.db.view('greeting/all', wrapper=frobnicate) for greeting in all_greetings: # Test if we get a Greeting class back, not a Document or even dict self.assert_(isinstance(greeting, Greeting)) # Test if custom wrapper function worked though Mapper mapped the # document (i. e. set a wrapper function itself) self.assert_(greeting.frobnicated)