예제 #1
0
파일: app.py 프로젝트: JeffAMcGee/tornskel
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
예제 #2
0
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()
예제 #3
0
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)