Download Install Tutorial Docs FAQ Tools WikiLicense Team IRC Planet Involvement Shop Book

Changeset 2054

Show
Ignore:
Timestamp:
10/30/08 11:50:25
Author:
lakin
Message:

#869 - Renaming 'model' to User to serve as a better example

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/dynamicnodedispatch-869/cherrypy/test/test_dynamicobjectmapping.py

    r2053 r2054  
    6666    # DynamicNodeAndMethodDispatcher example. 
    6767    # This example exposes a fairly naive HTTP api 
    68     class SomeModel(object): 
     68    class User(object): 
    6969        def __init__(self, id, name): 
    7070            self.id = id 
     
    7474            return unicode(self.name) 
    7575 
    76     model_lookup = { 
    77         1: SomeModel(1, 'foo'), 
    78         2: SomeModel(2, 'bar'), 
     76    user_lookup = { 
     77        1: User(1, 'foo'), 
     78        2: User(2, 'bar'), 
    7979    } 
    8080 
    81     def make_model(name, id=None): 
     81    def make_user(name, id=None): 
    8282        if not id: 
    83             id = max(*model_lookup.keys()) + 1 
    84         model_lookup[id] = SomeModel(id, name) 
     83            id = max(*user_lookup.keys()) + 1 
     84        user_lookup[id] = User(id, name) 
    8585        return id 
    8686 
    87     class ObjectNode(object): 
     87    class UserContainerNode(object): 
    8888        exposed = True 
    8989 
     
    9292            Allow the creation of a new Object 
    9393            """ 
    94             return "POST %d" % make_model(name) 
     94            return "POST %d" % make_user(name) 
    9595 
    9696        def GET(self): 
    97             return unicode(sorted(model_lookup.keys())) 
     97            return unicode(sorted(user_lookup.keys())) 
    9898 
    9999        def getsubnode(self, objname): 
     
    102102            except ValueError: 
    103103                return None 
    104             return ModelInstanceNode(id) 
    105  
    106     class ModelInstanceNode(object): 
     104            return UserInstanceNode(id) 
     105 
     106    class UserInstanceNode(object): 
    107107        exposed = True 
    108108        def __init__(self, id): 
    109109            self.id = id 
    110             self.model = model_lookup.get(id, None) 
     110            self.user = user_lookup.get(id, None) 
    111111 
    112112            # For all but PUT methods there MUST be a valid user identified 
    113113            # by self.id 
    114             if not self.model and cherrypy.request.method != 'PUT': 
     114            if not self.user and cherrypy.request.method != 'PUT': 
    115115                raise cherrypy.HTTPError(404) 
    116116 
     
    119119            Return the appropriate representation of the instance. 
    120120            """ 
    121             return unicode(self.model
     121            return unicode(self.user
    122122 
    123123        def POST(self, name): 
     
    125125            Update the fields of the user instance. 
    126126            """ 
    127             self.model.name = name 
    128             return "POST %d" % self.model.id 
     127            self.user.name = name 
     128            return "POST %d" % self.user.id 
    129129 
    130130        def PUT(self, name): 
     
    132132            Create a new user with the specified id, or edit it if it already exists 
    133133            """ 
    134             if self.model
    135                 # Edit the current model 
    136                 self.model.name = name 
    137                 return "PUT %d" % self.model.id 
     134            if self.user
     135                # Edit the current user 
     136                self.user.name = name 
     137                return "PUT %d" % self.user.id 
    138138            else: 
    139                 # Make a new model with said attributes. 
    140                 return "PUT %d" % make_model(name, self.id) 
     139                # Make a new user with said attributes. 
     140                return "PUT %d" % make_user(name, self.id) 
    141141 
    142142        def DELETE(self): 
     
    144144            Delete the user specified at the id. 
    145145            """ 
    146             id = self.model.id 
    147             del model_lookup[self.model.id] 
    148             del self.model 
     146            id = self.user.id 
     147            del user_lookup[self.user.id] 
     148            del self.user 
    149149            return "DELETE %d" % id 
    150150 
    151151 
    152     Root.models = ObjectNode() 
     152    Root.users = UserContainerNode() 
    153153 
    154154    d = cherrypy.dispatch.DynamicNodeDispatcher() 
     
    159159                    'user': (url or "/").split("/")[-2] 
    160160                }, 
    161                 '/models': { 
     161                '/users': { 
    162162                    'request.dispatch': md}, 
    163163                } 
     
    233233    def testMethodDispatch(self): 
    234234        # GET acts like a container 
    235         self.getPage("/models") 
     235        self.getPage("/users") 
    236236        self.assertBody("[1, 2]") 
    237237        self.assertHeader('Allow', 'GET, HEAD, POST') 
    238238 
    239239        # POST to the container URI allows creation 
    240         self.getPage("/models", method="POST", body="name=baz") 
     240        self.getPage("/users", method="POST", body="name=baz") 
    241241        self.assertBody("POST 3") 
    242242        self.assertHeader('Allow', 'GET, HEAD, POST') 
     
    244244        # POST to a specific instanct URI results in a 404 
    245245        # as the resource does not exit. 
    246         self.getPage("/models/5", method="POST", body="name=baz") 
     246        self.getPage("/users/5", method="POST", body="name=baz") 
    247247        self.assertStatus(404) 
    248248 
    249249        # PUT to a specific instanct URI results in creation 
    250         self.getPage("/models/5", method="PUT", body="name=boris") 
     250        self.getPage("/users/5", method="PUT", body="name=boris") 
    251251        self.assertBody("PUT 5") 
    252252        self.assertHeader('Allow', 'DELETE, GET, HEAD, POST, PUT') 
    253253 
    254254        # GET acts like a container 
    255         self.getPage("/models") 
     255        self.getPage("/users") 
    256256        self.assertBody("[1, 2, 3, 5]") 
    257257        self.assertHeader('Allow', 'GET, HEAD, POST') 
     
    264264        ) 
    265265        for id, name, updatedname, headers in test_cases: 
    266             self.getPage("/models/%d" % id) 
     266            self.getPage("/users/%d" % id) 
    267267            self.assertBody(name) 
    268268            self.assertHeader('Allow', headers) 
    269269 
    270270            # Make sure POSTs update already existings resources 
    271             self.getPage("/models/%d" % id, method='POST', body="name=%s" % updatedname) 
     271            self.getPage("/users/%d" % id, method='POST', body="name=%s" % updatedname) 
    272272            self.assertBody("POST %d" % id) 
    273273            self.assertHeader('Allow', headers) 
    274274 
    275275            # Make sure PUTs Update already existing resources. 
    276             self.getPage("/models/%d" % id, method='PUT', body="name=%s" % updatedname) 
     276            self.getPage("/users/%d" % id, method='PUT', body="name=%s" % updatedname) 
    277277            self.assertBody("PUT %d" % id) 
    278278            self.assertHeader('Allow', headers) 
    279279 
    280280            # Make sure DELETES Remove already existing resources. 
    281             self.getPage("/models/%d" % id, method='DELETE') 
     281            self.getPage("/users/%d" % id, method='DELETE') 
    282282            self.assertBody("DELETE %d" % id) 
    283283            self.assertHeader('Allow', headers) 
     
    285285 
    286286        # GET acts like a container 
    287         self.getPage("/models") 
     287        self.getPage("/users") 
    288288        self.assertBody("[]") 
    289289        self.assertHeader('Allow', 'GET, HEAD, POST') 

Hosted by WebFaction

Log in as guest/cpguest to create tickets