def test_prepare_subpreparer(self): subpreparer = FieldsPreparer(fields={ 'id': 'id', 'data': 'data', }) preparer = FieldsPreparer(fields={ 'flying': 'say', 'wale': SubPreparer('moof.buried', subpreparer), }) preped = preparer.prepare(self.obj_data)
def test_prepare_subsubpreparer(self): subsubpreparer = FieldsPreparer(fields={ 'really': 'yes', }) subpreparer = FieldsPreparer(fields={ 'data': SubPreparer('data', subsubpreparer), }) preparer = FieldsPreparer(fields={ 'wale': SubPreparer('moof.buried', subpreparer), }) preped = preparer.prepare(self.obj_data) self.assertEqual(preped, {'wale': {'data': {'really': 'no'}}})
def test_prepare_collection_subpreparer(self): subpreparer = FieldsPreparer(fields={ 'name': 'name', }) preparer = FieldsPreparer(fields={ 'who': CollectionSubPreparer('who', subpreparer), }) preped = preparer.prepare(self.dict_data) self.assertEqual(preped, {'who': [ {'name': 'Ford'}, {'name': 'Arthur'}, {'name': 'Beeblebrox'}, ]})
class TicketResource(DjangoResource): def __init__(self, *args, **kwargs): super(TicketResource, self).__init__(*args, **kwargs) self.http_methods.update({ 'issue': { 'GET': 'issue', } }) self.ticket_preparer = FieldsPreparer(fields={ 'record_locator': 'record_locator' }) def prepare_tickets(self, tickets): locators = [] for t in tickets: locators.append(self.ticket_preparer.prepare(t)) data = { 'locators': locators } return data @skip_prepare def issue(self, num_locators=1, zip_code=None): if self.request and 'num_locators' in self.request.GET: num_locators = self.request.GET.get('num_locators', 1) num_locators = int(num_locators) if self.request and 'zip' in self.request.GET: zip_code = self.request.GET.get('zip', '00000') tickets, _ = create_tickets(zip_code, num_locators) response = self.prepare_tickets(tickets) return response # Finally, extend the URLs @classmethod def urls(cls, name_prefix=None): urlpatterns = super(TicketResource, cls).urls(name_prefix=name_prefix) new = [ url( r'^issue/', cls.as_view('issue'), name=cls.build_url_name('issue', name_prefix)), ] + urlpatterns return new
class TicketResource(DjangoResource): def __init__(self, *args, **kwargs): super(TicketResource, self).__init__(*args, **kwargs) self.http_methods.update({'issue': { 'GET': 'issue', }}) self.ticket_preparer = FieldsPreparer( fields={'record_locator': 'record_locator'}) def prepare_tickets(self, tickets): locators = [] for t in tickets: locators.append(self.ticket_preparer.prepare(t)) data = {'locators': locators} return data @skip_prepare def issue(self, num_locators=1, zip_code=None): if self.request and 'num_locators' in self.request.GET: num_locators = self.request.GET.get('num_locators', 1) num_locators = int(num_locators) if self.request and 'zip' in self.request.GET: zip_code = self.request.GET.get('zip', '00000') tickets, _ = create_tickets(zip_code, num_locators) response = self.prepare_tickets(tickets) return response # Finally, extend the URLs @classmethod def urls(cls, name_prefix=None): urlpatterns = super(TicketResource, cls).urls(name_prefix=name_prefix) return urlpatterns + patterns( '', url(r'^issue/', cls.as_view('issue'), name=cls.build_url_name('issue', name_prefix)), )
def test_prepare_simple(self): preparer = FieldsPreparer(fields={ 'flying': 'say', }) preped = preparer.prepare(self.obj_data) self.assertEqual(preped, {'flying': 'what'})