def get_urls(self): info = self.model._meta.app_label, self.model._meta.module_name urlpatterns = patterns('', url(r'^\.(?P<format>' + '|'.join(self.allowed_formats) + ')$', helpers.wrap_api_function( self.api_site, self.list_view, 1, self.list_allowed_methods ), name = '%s_%s_list' % info ), url(r'^/(?P<object_id>\d+)\.(?P<format>' + '|'.join(self.allowed_formats) + ')$', helpers.wrap_api_function( self.api_site, self.object_view, 2, self.object_allowed_methods ), name = '%s_%s_object' % info ) ) for inline in self.inline_instances: urlpatterns += patterns('', url( r'^/(?P<' + inline.rel_field.name + '>\d+)/' + inline.rel_name, include(inline.get_urls()) ) ) return urlpatterns
def get_urls(self): urlpatterns = super(UserAPI, self).get_urls() urlpatterns += patterns( '', url( r'login\.(?P<format>' + '|'.join(self.allowed_formats) + ')$', helpers.wrap_api_function(self.api_site, self.login_view, 1, ('GET', ), self.prepare_output_data))) if ALLOW_REGISTRATION: urlpatterns += patterns( '', url( r'unregister\.(?P<format>' + '|'.join(self.allowed_formats) + ')$', helpers.wrap_api_function(self.api_site, self.unregister_view, 1, ('POST', ), self.prepare_output_data)), url( r'register\.(?P<format>' + '|'.join(self.allowed_formats) + ')$', helpers.wrap_api_function(self.api_site, self.register_view, 1, ('POST', ), self.prepare_output_data))) return urlpatterns
def get_urls(self): urlpatterns = super(UserAPI, self).get_urls() urlpatterns += patterns('', url(r'login\.(?P<format>' + '|'.join(self.allowed_formats) + ')$', helpers.wrap_api_function( self.api_site, self.login_view, 1, ('GET',), self.prepare_output_data ) ) ) if ALLOW_REGISTRATION: urlpatterns += patterns('', url(r'unregister\.(?P<format>' + '|'.join(self.allowed_formats) + ')$', helpers.wrap_api_function( self.api_site, self.unregister_view, 1, ('POST',), self.prepare_output_data ) ), url(r'register\.(?P<format>' + '|'.join(self.allowed_formats) + ')$', helpers.wrap_api_function( self.api_site, self.register_view, 1, ('POST',), self.prepare_output_data ) ) ) return urlpatterns
def get_urls(self): urlpatterns = super(UserAPI, self).get_urls() urlpatterns += patterns('', url(r'login\.(?P<format>' + '|'.join(self.allowed_formats) + ')$', helpers.wrap_api_function( self.api_site, self.login_view, 1, ('GET',) ) ) ) return urlpatterns
def get_urls(self): """ Automatically creates URL patterns for the model the class is registered to, and then runs through each ``ModelInline`` specified in ``inlines`` to add its URL patterns to this list. It automatically provides basic descriptions for each argument, and creates required arguments for each inline API. For example, the 1 in the URL ``/api/polls/question/1/choices.json`` is a required argument for ``ChoiceInline.get_query_set()``. The relationship between the ``Choice`` and ``Question`` models is automatically discovered and the correct name given to the argument. For now, the argument is always considered to be an integer (the primary key of the parent object). """ info = self.model._meta.app_label, self.model._meta.module_name singular = unicode(self.model._meta.verbose_name) plural = unicode(self.model._meta.verbose_name_plural) if singular.islower(): singular = singular.capitalize() if plural.islower(): plural = plural.capitalize() this = self while this.parent: parent_singular = unicode(this.parent.model._meta.verbose_name) if parent_singular.islower(): parent_singular = parent_singular.capitalize() singular = '%s: %s' % (parent_singular, singular) plural = '%s: %s' % (parent_singular, plural) this = this.parent plural = '%s: %s' % (self.model._meta.app_label.capitalize(), plural) singular = '%s: %s' % (self.model._meta.app_label.capitalize(), singular) plural_view = helpers.wrap_api_function( self.api_site, self.list_view, 1, self.list_allowed_methods, self.prepare_output_data, plural ) single_view = helpers.wrap_api_function( self.api_site, self.object_view, 2, self.object_allowed_methods, self.prepare_output_data, singular ) single_view = decorators.argument('object_id', 'id', u'The ID of the %s to return' % self.model._meta.verbose_name)(single_view) single_view = decorators.argument('format', 'str', u'The data format to return')(single_view) plural_view = decorators.argument('format', 'str', u'The data format to return')(plural_view) if self.fields is None or not any(self.fields): fields = [] else: fields = list(self.fields) if self.exclude is None: exclude = [] else: exclude = list(self.exclude) returns = {} for f in self.model._meta.local_fields: if f.name in exclude: continue if any(fields) and not f.name in fields: continue ft = 'str' if isinstance(f, models.IntegerField): ft = 'int' elif isinstance(f, models.DecimalField): ft = 'float' elif isinstance(f, models.BooleanField): ft = 'bool' elif isinstance(f, models.ForeignKey): ft = 'int' elif isinstance(f, models.ManyToManyField): ft = 'list' description = self.return_values.get(f.name, f.help_text or (u'The %s\'s %s' % (self.model._meta.verbose_name, f.verbose_name)) ) returns[f.name] = (ft, description) single_view = decorators.returns(returns)(single_view) plural_view = decorators.returns(returns)(plural_view) urlpatterns = patterns('', url(r'^\.(?P<format>' + '|'.join(self.allowed_formats) + ')$', plural_view, name = '%s_%s_list' % info ), url(r'^/(?P<object_id>\d+)\.(?P<format>' + '|'.join(self.allowed_formats) + ')$', single_view, name = '%s_%s_single' % info ) ) for inline in self.inline_instances: vn = inline.rel_field.rel.to._meta.verbose_name urlpatterns += patterns('', decorators.argument( inline.rel_field.name, 'int', u'The ID of the parent %s' % vn )( url( r'^/(?P<' + inline.rel_field.name + '>\d+)/' + inline.rel_name, include(inline.get_urls()) ) ) ) return urlpatterns