diff --git a/ietf/api/__init__.py b/ietf/api/__init__.py index e568c48e5..958a14ff1 100644 --- a/ietf/api/__init__.py +++ b/ietf/api/__init__.py @@ -5,9 +5,11 @@ import datetime from django.conf import settings from django.http import HttpResponse from django.core.urlresolvers import reverse +from django.utils.encoding import force_text from tastypie.api import Api -from tastypie.serializers import Serializer +from tastypie.bundle import Bundle +from tastypie.serializers import Serializer as BaseSerializer from tastypie.exceptions import BadRequest, ApiFieldError from tastypie.utils.mime import determine_format, build_content_type from tastypie.utils import is_valid_jsonp_callback_value @@ -17,6 +19,58 @@ import debug # pyflakes:ignore _api_list = [] +class Serializer(BaseSerializer): + def to_html(self, data, options=None): + """ + Reserved for future usage. + + The desire is to provide HTML output of a resource, making an API + available to a browser. This is on the TODO list but not currently + implemented. + """ + from django.template.loader import render_to_string as render + + options = options or {} + + serialized = self.to_simple_html(data, options) + return render("api/base.html", {"data": serialized}) + + def to_simple_html(self, data, options): + """ + """ + from django.template.loader import render_to_string as render + # + if isinstance(data, (list, tuple)): + return render("api/listitem.html", {"data": [self.to_simple_html(item, options) for item in data]}) + if isinstance(data, dict): + return render("api/dictitem.html", {"data": dict((key, self.to_simple_html(val, options)) for (key, val) in data.items())}) + elif isinstance(data, Bundle): + return render("api/dictitem.html", {"data":dict((key, self.to_simple_html(val, options)) for (key, val) in data.data.items())}) + elif hasattr(data, 'dehydrated_type'): + debug.show('data') + if getattr(data, 'dehydrated_type', None) == 'related' and data.is_m2m == False: + return render("api/relitem.html", {"fk": data.fk_resource, "val": self.to_simple_html(data.value, options)}) + elif getattr(data, 'dehydrated_type', None) == 'related' and data.is_m2m == True: + render("api/listitem.html", {"data": [self.to_simple_html(bundle, options) for bundle in data.m2m_bundles]}) + else: + return self.to_simple_html(data.value, options) + elif isinstance(data, datetime.datetime): + return self.format_datetime(data) + elif isinstance(data, datetime.date): + return self.format_date(data) + elif isinstance(data, datetime.time): + return self.format_time(data) + elif isinstance(data, bool): + return data + elif isinstance(data, (six.integer_types, float)): + return data + elif data is None: + return None + elif isinstance(data, basestring) and data.startswith("/api/v1/"): # XXX Will not work for Python 3 + return render("api/relitem.html", {"fk": data, "val": data.split('/')[-2]}) + else: + return force_text(data) + for _app in settings.INSTALLED_APPS: _module_dict = globals() if '.' in _app: @@ -119,4 +173,4 @@ class TimedeltaField(ApiField): return value - \ No newline at end of file + diff --git a/ietf/api/management/commands/makeresources.py b/ietf/api/management/commands/makeresources.py index e3dacabec..9997a69ba 100644 --- a/ietf/api/management/commands/makeresources.py +++ b/ietf/api/management/commands/makeresources.py @@ -32,6 +32,7 @@ class {{model.name}}Resource(ModelResource):{% if model.foreign_keys %}{% for fk {{fk.name|ljust:"16"}} = ToManyField({{fk.rmodel_name}}, '{{fk.name}}', null=True){% endfor %}{% endif %} class Meta: queryset = {{model.name}}.objects.all() + serializer = api.Serializer() #resource_name = '{{model.resource_name}}' filtering = { {% for name in model.plain_names %} "{{ name }}": ALL,{%endfor%}{% for name in model.fk_names%} diff --git a/ietf/api/templates/api/base.html b/ietf/api/templates/api/base.html new file mode 100644 index 000000000..a08032084 --- /dev/null +++ b/ietf/api/templates/api/base.html @@ -0,0 +1,24 @@ + + + + + +
+

+ This is a very simple html version of the JSON api, to make it easier to manually explore + the API.
+ To see the pure JSON version, add '?format=json' to the browser url, or access + the API with the "Accept:" http header set to "Accept: application/json". +

+
+ {% block content %}{{data}}{% endblock %} +
+
+ + diff --git a/ietf/api/templates/api/dictitem.html b/ietf/api/templates/api/dictitem.html new file mode 100644 index 000000000..49b08ac2b --- /dev/null +++ b/ietf/api/templates/api/dictitem.html @@ -0,0 +1,8 @@ +{ + +
+{% for key, value in data.items %} +"{{key}}": {{value}}{% if not forloop.last %},{% endif %}
+{% endfor %} +
+} diff --git a/ietf/api/templates/api/listitem.html b/ietf/api/templates/api/listitem.html new file mode 100644 index 000000000..996513e9f --- /dev/null +++ b/ietf/api/templates/api/listitem.html @@ -0,0 +1,8 @@ +[ + +
+{% for item in data %} +{{item}}{% if not forloop.last %},{% endif %} +{% endfor %} +
+] diff --git a/ietf/api/templates/api/relitem.html b/ietf/api/templates/api/relitem.html new file mode 100644 index 000000000..83a79d39b --- /dev/null +++ b/ietf/api/templates/api/relitem.html @@ -0,0 +1,2 @@ + +{{val}} diff --git a/ietf/community/resources.py b/ietf/community/resources.py index 1c86dc2b1..03a73d835 100644 --- a/ietf/community/resources.py +++ b/ietf/community/resources.py @@ -17,6 +17,7 @@ class CommunityListResource(ModelResource): added_ids = ToManyField(DocumentResource, 'added_ids', null=True) class Meta: queryset = CommunityList.objects.all() + serializer = api.Serializer() #resource_name = 'communitylist' filtering = { "id": ALL, @@ -34,6 +35,7 @@ class ExpectedChangeResource(ModelResource): document = ToOneField(DocumentResource, 'document') class Meta: queryset = ExpectedChange.objects.all() + serializer = api.Serializer() #resource_name = 'expectedchange' filtering = { "id": ALL, @@ -47,6 +49,7 @@ class DisplayConfigurationResource(ModelResource): community_list = ToOneField(CommunityListResource, 'community_list') class Meta: queryset = DisplayConfiguration.objects.all() + serializer = api.Serializer() #resource_name = 'displayconfiguration' filtering = { "id": ALL, @@ -61,6 +64,7 @@ class ListNotificationResource(ModelResource): event = ToOneField(DocEventResource, 'event') class Meta: queryset = ListNotification.objects.all() + serializer = api.Serializer() #resource_name = 'listnotification' filtering = { "id": ALL, @@ -75,6 +79,7 @@ class RuleResource(ModelResource): cached_ids = ToManyField(DocumentResource, 'cached_ids', null=True) class Meta: queryset = Rule.objects.all() + serializer = api.Serializer() #resource_name = 'rule' filtering = { "id": ALL, @@ -90,6 +95,7 @@ class EmailSubscriptionResource(ModelResource): community_list = ToOneField(CommunityListResource, 'community_list') class Meta: queryset = EmailSubscription.objects.all() + serializer = api.Serializer() #resource_name = 'emailsubscription' filtering = { "id": ALL, @@ -104,6 +110,7 @@ class DocumentChangeDatesResource(ModelResource): document = ToOneField(DocumentResource, 'document') class Meta: queryset = DocumentChangeDates.objects.all() + serializer = api.Serializer() #resource_name = 'documentchangedates' filtering = { "id": ALL, diff --git a/ietf/dbtemplate/resources.py b/ietf/dbtemplate/resources.py index e8bcc790e..1d03cc21f 100644 --- a/ietf/dbtemplate/resources.py +++ b/ietf/dbtemplate/resources.py @@ -15,6 +15,7 @@ class DBTemplateResource(ModelResource): group = ToOneField(GroupResource, 'group', null=True) class Meta: queryset = DBTemplate.objects.all() + serializer = api.Serializer() #resource_name = 'dbtemplate' filtering = { "id": ALL, diff --git a/ietf/doc/resources.py b/ietf/doc/resources.py index 35e837c15..96641e8b4 100644 --- a/ietf/doc/resources.py +++ b/ietf/doc/resources.py @@ -14,6 +14,7 @@ class BallotTypeResource(ModelResource): positions = ToManyField(BallotPositionNameResource, 'positions', null=True) class Meta: queryset = BallotType.objects.all() + serializer = api.Serializer() #resource_name = 'ballottype' filtering = { "id": ALL, @@ -34,6 +35,7 @@ class DeletedEventResource(ModelResource): by = ToOneField(PersonResource, 'by') class Meta: queryset = DeletedEvent.objects.all() + serializer = api.Serializer() #resource_name = 'deletedevent' filtering = { "id": ALL, @@ -47,6 +49,7 @@ api.doc.register(DeletedEventResource()) class StateTypeResource(ModelResource): class Meta: queryset = StateType.objects.all() + serializer = api.Serializer() #resource_name = 'statetype' filtering = { "slug": ALL, @@ -59,6 +62,7 @@ class StateResource(ModelResource): next_states = ToManyField('ietf.doc.resources.StateResource', 'next_states', null=True) class Meta: queryset = State.objects.all() + serializer = api.Serializer() #resource_name = 'state' filtering = { "id": ALL, @@ -89,6 +93,7 @@ class DocumentResource(ModelResource): rfc = CharField(attribute='rfc_number', null=True) class Meta: queryset = Document.objects.all() + serializer = api.Serializer() #resource_name = 'document' filtering = { "time": ALL, @@ -122,6 +127,7 @@ class DocumentAuthorResource(ModelResource): author = ToOneField(EmailResource, 'author') class Meta: queryset = DocumentAuthor.objects.all() + serializer = api.Serializer() #resource_name = 'documentauthor' filtering = { "id": ALL, @@ -137,6 +143,7 @@ class DocEventResource(ModelResource): doc = ToOneField(DocumentResource, 'doc') class Meta: queryset = DocEvent.objects.all() + serializer = api.Serializer() #resource_name = 'docevent' filtering = { "id": ALL, @@ -157,6 +164,7 @@ class StateDocEventResource(ModelResource): state = ToOneField(StateResource, 'state', null=True) class Meta: queryset = StateDocEvent.objects.all() + serializer = api.Serializer() #resource_name = 'statedocevent' filtering = { "id": ALL, @@ -178,6 +186,7 @@ class ConsensusDocEventResource(ModelResource): docevent_ptr = ToOneField(DocEventResource, 'docevent_ptr') class Meta: queryset = ConsensusDocEvent.objects.all() + serializer = api.Serializer() #resource_name = 'consensusdocevent' filtering = { "id": ALL, @@ -195,6 +204,7 @@ class DocAliasResource(ModelResource): document = ToOneField(DocumentResource, 'document') class Meta: queryset = DocAlias.objects.all() + serializer = api.Serializer() #resource_name = 'docalias' filtering = { "id": ALL, @@ -210,6 +220,7 @@ class TelechatDocEventResource(ModelResource): docevent_ptr = ToOneField(DocEventResource, 'docevent_ptr') class Meta: queryset = TelechatDocEvent.objects.all() + serializer = api.Serializer() #resource_name = 'telechatdocevent' filtering = { "id": ALL, @@ -230,6 +241,7 @@ class DocReminderResource(ModelResource): type = ToOneField(DocReminderTypeNameResource, 'type') class Meta: queryset = DocReminder.objects.all() + serializer = api.Serializer() #resource_name = 'docreminder' filtering = { "id": ALL, @@ -247,6 +259,7 @@ class LastCallDocEventResource(ModelResource): docevent_ptr = ToOneField(DocEventResource, 'docevent_ptr') class Meta: queryset = LastCallDocEvent.objects.all() + serializer = api.Serializer() #resource_name = 'lastcalldocevent' filtering = { "id": ALL, @@ -267,6 +280,7 @@ class NewRevisionDocEventResource(ModelResource): docevent_ptr = ToOneField(DocEventResource, 'docevent_ptr') class Meta: queryset = NewRevisionDocEvent.objects.all() + serializer = api.Serializer() #resource_name = 'newrevisiondocevent' filtering = { "id": ALL, @@ -287,6 +301,7 @@ class WriteupDocEventResource(ModelResource): docevent_ptr = ToOneField(DocEventResource, 'docevent_ptr') class Meta: queryset = WriteupDocEvent.objects.all() + serializer = api.Serializer() #resource_name = 'writeupdocevent' filtering = { "id": ALL, @@ -307,6 +322,7 @@ class InitialReviewDocEventResource(ModelResource): docevent_ptr = ToOneField(DocEventResource, 'docevent_ptr') class Meta: queryset = InitialReviewDocEvent.objects.all() + serializer = api.Serializer() #resource_name = 'initialreviewdocevent' filtering = { "id": ALL, @@ -328,6 +344,7 @@ class BallotDocEventResource(ModelResource): ballot_type = ToOneField(BallotTypeResource, 'ballot_type') class Meta: queryset = BallotDocEvent.objects.all() + serializer = api.Serializer() #resource_name = 'ballotdocevent' filtering = { "id": ALL, @@ -348,6 +365,7 @@ class RelatedDocumentResource(ModelResource): relationship = ToOneField(DocRelationshipNameResource, 'relationship') class Meta: queryset = RelatedDocument.objects.all() + serializer = api.Serializer() #resource_name = 'relateddocument' filtering = { "id": ALL, @@ -375,6 +393,7 @@ class DocHistoryResource(ModelResource): authors = ToManyField(EmailResource, 'authors', null=True) class Meta: queryset = DocHistory.objects.all() + serializer = api.Serializer() #resource_name = 'dochistory' filtering = { "id": ALL, @@ -416,6 +435,7 @@ class BallotPositionDocEventResource(ModelResource): pos = ToOneField(BallotPositionNameResource, 'pos') class Meta: queryset = BallotPositionDocEvent.objects.all() + serializer = api.Serializer() #resource_name = 'ballotpositiondocevent' filtering = { "id": ALL, @@ -441,6 +461,7 @@ class DocHistoryAuthorResource(ModelResource): author = ToOneField(EmailResource, 'author') class Meta: queryset = DocHistoryAuthor.objects.all() + serializer = api.Serializer() #resource_name = 'dochistoryauthor' filtering = { "id": ALL, @@ -457,6 +478,7 @@ class RelatedDocHistoryResource(ModelResource): relationship = ToOneField(DocRelationshipNameResource, 'relationship') class Meta: queryset = RelatedDocHistory.objects.all() + serializer = api.Serializer() #resource_name = 'relateddochistory' filtering = { "id": ALL, diff --git a/ietf/group/resources.py b/ietf/group/resources.py index 93112c34d..04f8090c5 100644 --- a/ietf/group/resources.py +++ b/ietf/group/resources.py @@ -20,6 +20,7 @@ class GroupResource(ModelResource): unused_tags = ToManyField(DocTagNameResource, 'unused_tags', null=True) class Meta: queryset = Group.objects.all() + serializer = api.Serializer() #resource_name = 'group' filtering = { "id": ALL, @@ -47,6 +48,7 @@ class GroupStateTransitionsResource(ModelResource): next_states = ToManyField('ietf.doc.resources.StateResource', 'next_states', null=True) class Meta: queryset = GroupStateTransitions.objects.all() + serializer = api.Serializer() #resource_name = 'groupstatetransitions' filtering = { "id": ALL, @@ -63,6 +65,7 @@ class GroupMilestoneResource(ModelResource): docs = ToManyField('ietf.doc.resources.DocumentResource', 'docs', null=True) class Meta: queryset = GroupMilestone.objects.all() + serializer = api.Serializer() #resource_name = 'groupmilestone' filtering = { "id": ALL, @@ -88,6 +91,7 @@ class GroupHistoryResource(ModelResource): unused_tags = ToManyField(DocTagNameResource, 'unused_tags', null=True) class Meta: queryset = GroupHistory.objects.all() + serializer = api.Serializer() #resource_name = 'grouphistory' filtering = { "id": ALL, @@ -113,6 +117,7 @@ class GroupURLResource(ModelResource): group = ToOneField(GroupResource, 'group') class Meta: queryset = GroupURL.objects.all() + serializer = api.Serializer() #resource_name = 'groupurl' filtering = { "id": ALL, @@ -131,6 +136,7 @@ class RoleResource(ModelResource): email = ToOneField(EmailResource, 'email') class Meta: queryset = Role.objects.all() + serializer = api.Serializer() #resource_name = 'role' filtering = { "id": ALL, @@ -147,6 +153,7 @@ class GroupEventResource(ModelResource): by = ToOneField(PersonResource, 'by') class Meta: queryset = GroupEvent.objects.all() + serializer = api.Serializer() #resource_name = 'groupevent' filtering = { "id": ALL, @@ -167,6 +174,7 @@ class RoleHistoryResource(ModelResource): email = ToOneField(EmailResource, 'email') class Meta: queryset = RoleHistory.objects.all() + serializer = api.Serializer() #resource_name = 'rolehistory' filtering = { "id": ALL, @@ -185,6 +193,7 @@ class GroupMilestoneHistoryResource(ModelResource): docs = ToManyField('ietf.doc.resources.DocumentResource', 'docs', null=True) class Meta: queryset = GroupMilestoneHistory.objects.all() + serializer = api.Serializer() #resource_name = 'groupmilestonehistory' filtering = { "id": ALL, @@ -207,6 +216,7 @@ class MilestoneGroupEventResource(ModelResource): milestone = ToOneField(GroupMilestoneResource, 'milestone') class Meta: queryset = MilestoneGroupEvent.objects.all() + serializer = api.Serializer() #resource_name = 'milestonegroupevent' filtering = { "id": ALL, @@ -229,6 +239,7 @@ class ChangeStateGroupEventResource(ModelResource): state = ToOneField(GroupStateNameResource, 'state') class Meta: queryset = ChangeStateGroupEvent.objects.all() + serializer = api.Serializer() #resource_name = 'changestategroupevent' filtering = { "id": ALL, diff --git a/ietf/iesg/resources.py b/ietf/iesg/resources.py index 1832f60fc..90e58ee09 100644 --- a/ietf/iesg/resources.py +++ b/ietf/iesg/resources.py @@ -10,6 +10,7 @@ from ietf.iesg.models import * # pyflakes:ignore class TelechatDateResource(ModelResource): class Meta: queryset = TelechatDate.objects.all() + serializer = api.Serializer() #resource_name = 'telechatdate' filtering = { "id": ALL, @@ -20,6 +21,7 @@ api.iesg.register(TelechatDateResource()) class TelechatResource(ModelResource): class Meta: queryset = Telechat.objects.all() + serializer = api.Serializer() #resource_name = 'telechat' filtering = { "telechat_id": ALL, @@ -36,6 +38,7 @@ api.iesg.register(TelechatResource()) class TelechatAgendaItemResource(ModelResource): class Meta: queryset = TelechatAgendaItem.objects.all() + serializer = api.Serializer() #resource_name = 'telechatagendaitem' filtering = { "id": ALL, diff --git a/ietf/ipr/resources.py b/ietf/ipr/resources.py index 17abbb196..02b88b124 100644 --- a/ietf/ipr/resources.py +++ b/ietf/ipr/resources.py @@ -18,6 +18,7 @@ class IprDisclosureBaseResource(ModelResource): rel = ToManyField('ietf.ipr.resources.IprDisclosureBaseResource', 'rel', null=True) class Meta: queryset = IprDisclosureBase.objects.all() + serializer = api.Serializer() #resource_name = 'iprdisclosurebase' filtering = { "id": ALL, @@ -42,6 +43,7 @@ class IprDocRelResource(ModelResource): document = ToOneField(DocAliasResource, 'document') class Meta: queryset = IprDocRel.objects.all() + serializer = api.Serializer() #resource_name = 'iprdocrel' filtering = { "id": ALL, @@ -64,6 +66,7 @@ class HolderIprDisclosureResource(ModelResource): rel = ToManyField(IprDisclosureBaseResource, 'rel', null=True) class Meta: queryset = HolderIprDisclosure.objects.all() + serializer = api.Serializer() #resource_name = 'holderiprdisclosure' filtering = { "id": ALL, @@ -105,6 +108,7 @@ class ThirdPartyIprDisclosureResource(ModelResource): rel = ToManyField(IprDisclosureBaseResource, 'rel', null=True) class Meta: queryset = ThirdPartyIprDisclosure.objects.all() + serializer = api.Serializer() #resource_name = 'thirdpartyiprdisclosure' filtering = { "id": ALL, @@ -136,6 +140,7 @@ class RelatedIprResource(ModelResource): relationship = ToOneField(DocRelationshipNameResource, 'relationship') class Meta: queryset = RelatedIpr.objects.all() + serializer = api.Serializer() #resource_name = 'relatedipr' filtering = { "id": ALL, @@ -156,6 +161,7 @@ class NonDocSpecificIprDisclosureResource(ModelResource): rel = ToManyField(IprDisclosureBaseResource, 'rel', null=True) class Meta: queryset = NonDocSpecificIprDisclosure.objects.all() + serializer = api.Serializer() #resource_name = 'nondocspecificiprdisclosure' filtering = { "id": ALL, @@ -192,6 +198,7 @@ class GenericIprDisclosureResource(ModelResource): rel = ToManyField(IprDisclosureBaseResource, 'rel', null=True) class Meta: queryset = GenericIprDisclosure.objects.all() + serializer = api.Serializer() #resource_name = 'genericiprdisclosure' filtering = { "id": ALL, @@ -226,6 +233,7 @@ class IprEventResource(ModelResource): in_reply_to = ToOneField(MessageResource, 'in_reply_to', null=True) class Meta: queryset = IprEvent.objects.all() + serializer = api.Serializer() #resource_name = 'iprevent' filtering = { "id": ALL, @@ -252,6 +260,7 @@ class LegacyMigrationIprEventResource(ModelResource): iprevent_ptr = ToOneField(IprEventResource, 'iprevent_ptr') class Meta: queryset = LegacyMigrationIprEvent.objects.all() + serializer = api.Serializer() #resource_name = 'legacymigrationiprevent' filtering = { "id": ALL, diff --git a/ietf/liaisons/resources.py b/ietf/liaisons/resources.py index 538851059..0911bf7fe 100644 --- a/ietf/liaisons/resources.py +++ b/ietf/liaisons/resources.py @@ -21,6 +21,7 @@ class LiaisonStatementResource(ModelResource): attachments = ToManyField(DocumentResource, 'attachments', null=True) class Meta: queryset = LiaisonStatement.objects.all() + serializer = api.Serializer() #resource_name = 'liaisonstatement' filtering = { "id": ALL, diff --git a/ietf/meeting/resources.py b/ietf/meeting/resources.py index cc6eb4e26..c81f55140 100644 --- a/ietf/meeting/resources.py +++ b/ietf/meeting/resources.py @@ -14,6 +14,7 @@ class MeetingResource(ModelResource): agenda = ToOneField('ietf.meeting.resources.ScheduleResource', 'agenda', null=True) class Meta: queryset = Meeting.objects.all() + serializer = api.Serializer() #resource_name = 'meeting' filtering = { "id": ALL, @@ -42,6 +43,7 @@ class ResourceAssociationResource(ModelResource): name = ToOneField(RoomResourceNameResource, 'name') class Meta: queryset = ResourceAssociation.objects.all() + serializer = api.Serializer() resource_name = 'resourceassociation' filtering = { "id": ALL, @@ -62,6 +64,7 @@ class ConstraintResource(ModelResource): name = ToOneField(ConstraintNameResource, 'name') class Meta: queryset = Constraint.objects.all() + serializer = api.Serializer() #resource_name = 'constraint' filtering = { "id": ALL, @@ -81,6 +84,7 @@ class RoomResource(ModelResource): session_types = ToManyField(TimeSlotTypeNameResource, 'session_types', null=True) class Meta: queryset = Room.objects.all() + serializer = api.Serializer() #resource_name = 'room' filtering = { "id": ALL, @@ -99,6 +103,7 @@ class ScheduleResource(ModelResource): owner = ToOneField(PersonResource, 'owner') class Meta: queryset = Schedule.objects.all() + serializer = api.Serializer() #resource_name = 'schedule' filtering = { "id": ALL, @@ -126,6 +131,7 @@ class SessionResource(ModelResource): requested_duration = api.TimedeltaField() class Meta: queryset = Session.objects.all() + serializer = api.Serializer() #resource_name = 'session' filtering = { "id": ALL, @@ -157,6 +163,7 @@ class TimeSlotResource(ModelResource): duration = api.TimedeltaField() class Meta: queryset = TimeSlot.objects.all() + serializer = api.Serializer() #resource_name = 'timeslot' filtering = { "id": ALL, @@ -179,6 +186,7 @@ class ScheduledSessionResource(ModelResource): extendedfrom = ToOneField('ietf.meeting.resources.ScheduledSessionResource', 'extendedfrom', null=True) class Meta: queryset = ScheduledSession.objects.all() + serializer = api.Serializer() #resource_name = 'scheduledsession' filtering = { "id": ALL, @@ -201,6 +209,7 @@ class SessionPresentationResource(ModelResource): document = ToOneField(DocumentResource, 'document') class Meta: queryset = SessionPresentation.objects.all() + serializer = api.Serializer() #resource_name = 'sessionpresentation' filtering = { "id": ALL, diff --git a/ietf/message/resources.py b/ietf/message/resources.py index 41033cebc..df506ecba 100644 --- a/ietf/message/resources.py +++ b/ietf/message/resources.py @@ -17,6 +17,7 @@ class MessageResource(ModelResource): related_docs = ToManyField(DocumentResource, 'related_docs', null=True) class Meta: queryset = Message.objects.all() + serializer = api.Serializer() #resource_name = 'message' filtering = { "id": ALL, @@ -41,6 +42,7 @@ class SendQueueResource(ModelResource): message = ToOneField(MessageResource, 'message') class Meta: queryset = SendQueue.objects.all() + serializer = api.Serializer() #resource_name = 'sendqueue' filtering = { "id": ALL, diff --git a/ietf/name/resources.py b/ietf/name/resources.py index 3bb2c09d3..97adac067 100644 --- a/ietf/name/resources.py +++ b/ietf/name/resources.py @@ -11,6 +11,7 @@ from ietf.name.models import * # pyflakes:ignore class TimeSlotTypeNameResource(ModelResource): class Meta: queryset = TimeSlotTypeName.objects.all() + serializer = api.Serializer() #resource_name = 'timeslottypename' filtering = { "slug": ALL, @@ -24,6 +25,7 @@ api.name.register(TimeSlotTypeNameResource()) class GroupStateNameResource(ModelResource): class Meta: queryset = GroupStateName.objects.all() + serializer = api.Serializer() #resource_name = 'groupstatename' filtering = { "slug": ALL, @@ -37,6 +39,7 @@ api.name.register(GroupStateNameResource()) class DocTagNameResource(ModelResource): class Meta: queryset = DocTagName.objects.all() + serializer = api.Serializer() #resource_name = 'doctagname' filtering = { "slug": ALL, @@ -50,6 +53,7 @@ api.name.register(DocTagNameResource()) class IntendedStdLevelNameResource(ModelResource): class Meta: queryset = IntendedStdLevelName.objects.all() + serializer = api.Serializer() #resource_name = 'intendedstdlevelname' filtering = { "slug": ALL, @@ -63,6 +67,7 @@ api.name.register(IntendedStdLevelNameResource()) class LiaisonStatementPurposeNameResource(ModelResource): class Meta: queryset = LiaisonStatementPurposeName.objects.all() + serializer = api.Serializer() #resource_name = 'liaisonstatementpurposename' filtering = { "slug": ALL, @@ -77,6 +82,7 @@ class DraftSubmissionStateNameResource(ModelResource): next_states = ToManyField('ietf.name.resources.DraftSubmissionStateNameResource', 'next_states', null=True) class Meta: queryset = DraftSubmissionStateName.objects.all() + serializer = api.Serializer() #resource_name = 'draftsubmissionstatename' filtering = { "slug": ALL, @@ -91,6 +97,7 @@ api.name.register(DraftSubmissionStateNameResource()) class DocTypeNameResource(ModelResource): class Meta: queryset = DocTypeName.objects.all() + serializer = api.Serializer() #resource_name = 'doctypename' filtering = { "slug": ALL, @@ -104,6 +111,7 @@ api.name.register(DocTypeNameResource()) class RoleNameResource(ModelResource): class Meta: queryset = RoleName.objects.all() + serializer = api.Serializer() #resource_name = 'rolename' filtering = { "slug": ALL, @@ -117,6 +125,7 @@ api.name.register(RoleNameResource()) class StdLevelNameResource(ModelResource): class Meta: queryset = StdLevelName.objects.all() + serializer = api.Serializer() #resource_name = 'stdlevelname' filtering = { "slug": ALL, @@ -130,6 +139,7 @@ api.name.register(StdLevelNameResource()) class GroupTypeNameResource(ModelResource): class Meta: queryset = GroupTypeName.objects.all() + serializer = api.Serializer() #resource_name = 'grouptypename' filtering = { "slug": ALL, @@ -143,6 +153,7 @@ api.name.register(GroupTypeNameResource()) class GroupMilestoneStateNameResource(ModelResource): class Meta: queryset = GroupMilestoneStateName.objects.all() + serializer = api.Serializer() #resource_name = 'groupmilestonestatename' filtering = { "slug": ALL, @@ -156,6 +167,7 @@ api.name.register(GroupMilestoneStateNameResource()) class SessionStatusNameResource(ModelResource): class Meta: queryset = SessionStatusName.objects.all() + serializer = api.Serializer() #resource_name = 'sessionstatusname' filtering = { "slug": ALL, @@ -169,6 +181,7 @@ api.name.register(SessionStatusNameResource()) class DocReminderTypeNameResource(ModelResource): class Meta: queryset = DocReminderTypeName.objects.all() + serializer = api.Serializer() #resource_name = 'docremindertypename' filtering = { "slug": ALL, @@ -182,6 +195,7 @@ api.name.register(DocReminderTypeNameResource()) class ConstraintNameResource(ModelResource): class Meta: queryset = ConstraintName.objects.all() + serializer = api.Serializer() #resource_name = 'constraintname' filtering = { "slug": ALL, @@ -196,6 +210,7 @@ api.name.register(ConstraintNameResource()) class MeetingTypeNameResource(ModelResource): class Meta: queryset = MeetingTypeName.objects.all() + serializer = api.Serializer() #resource_name = 'meetingtypename' filtering = { "slug": ALL, @@ -209,6 +224,7 @@ api.name.register(MeetingTypeNameResource()) class DocRelationshipNameResource(ModelResource): class Meta: queryset = DocRelationshipName.objects.all() + serializer = api.Serializer() #resource_name = 'docrelationshipname' filtering = { "slug": ALL, @@ -223,6 +239,7 @@ api.name.register(DocRelationshipNameResource()) class RoomResourceNameResource(ModelResource): class Meta: queryset = RoomResourceName.objects.all() + serializer = api.Serializer() resource_name = 'roomresourcename' # Needed because tastypie otherwise removes 'resource' from the name filtering = { "slug": ALL, @@ -236,6 +253,7 @@ api.name.register(RoomResourceNameResource()) class FeedbackTypeNameResource(ModelResource): class Meta: queryset = FeedbackTypeName.objects.all() + serializer = api.Serializer() #resource_name = 'feedbacktypename' filtering = { "slug": ALL, @@ -249,6 +267,7 @@ api.name.register(FeedbackTypeNameResource()) class StreamNameResource(ModelResource): class Meta: queryset = StreamName.objects.all() + serializer = api.Serializer() #resource_name = 'streamname' filtering = { "slug": ALL, @@ -262,6 +281,7 @@ api.name.register(StreamNameResource()) class BallotPositionNameResource(ModelResource): class Meta: queryset = BallotPositionName.objects.all() + serializer = api.Serializer() #resource_name = 'ballotpositionname' filtering = { "slug": ALL, @@ -276,6 +296,7 @@ api.name.register(BallotPositionNameResource()) class DBTemplateTypeNameResource(ModelResource): class Meta: queryset = DBTemplateTypeName.objects.all() + serializer = api.Serializer() #resource_name = 'dbtemplatetypename' filtering = { "slug": ALL, @@ -289,6 +310,7 @@ api.name.register(DBTemplateTypeNameResource()) class NomineePositionStateNameResource(ModelResource): class Meta: queryset = NomineePositionStateName.objects.all() + serializer = api.Serializer() #resource_name = 'nomineepositionstatename' filtering = { "slug": ALL, @@ -304,6 +326,7 @@ api.name.register(NomineePositionStateNameResource()) class IprDisclosureStateNameResource(ModelResource): class Meta: queryset = IprDisclosureStateName.objects.all() + serializer = api.Serializer() #resource_name = 'iprdisclosurestatename' filtering = { "slug": ALL, @@ -317,6 +340,7 @@ api.name.register(IprDisclosureStateNameResource()) class IprEventTypeNameResource(ModelResource): class Meta: queryset = IprEventTypeName.objects.all() + serializer = api.Serializer() #resource_name = 'ipreventtypename' filtering = { "slug": ALL, @@ -330,6 +354,7 @@ api.name.register(IprEventTypeNameResource()) class IprLicenseTypeNameResource(ModelResource): class Meta: queryset = IprLicenseTypeName.objects.all() + serializer = api.Serializer() #resource_name = 'iprlicensetypename' filtering = { "slug": ALL, diff --git a/ietf/nomcom/resources.py b/ietf/nomcom/resources.py index bf3284f75..61d10a2f0 100644 --- a/ietf/nomcom/resources.py +++ b/ietf/nomcom/resources.py @@ -13,6 +13,7 @@ class NomComResource(ModelResource): group = ToOneField(GroupResource, 'group') class Meta: queryset = NomCom.objects.all() + serializer = api.Serializer() #resource_name = 'nomcom' filtering = { "id": ALL, @@ -33,6 +34,7 @@ class PositionResource(ModelResource): incumbent = ToOneField(EmailResource, 'incumbent', null=True) class Meta: queryset = Position.objects.all() + serializer = api.Serializer() #resource_name = 'position' filtering = { "id": ALL, @@ -54,6 +56,7 @@ class NomineeResource(ModelResource): nominee_position = ToManyField(PositionResource, 'nominee_position', null=True) class Meta: queryset = Nominee.objects.all() + serializer = api.Serializer() #resource_name = 'nominee' filtering = { "id": ALL, @@ -68,6 +71,7 @@ class ReminderDatesResource(ModelResource): nomcom = ToOneField(NomComResource, 'nomcom') class Meta: queryset = ReminderDates.objects.all() + serializer = api.Serializer() #resource_name = 'reminderdates' filtering = { "id": ALL, @@ -83,6 +87,7 @@ class NomineePositionResource(ModelResource): state = ToOneField(NomineePositionStateNameResource, 'state') class Meta: queryset = NomineePosition.objects.all() + serializer = api.Serializer() #resource_name = 'nomineeposition' filtering = { "id": ALL, @@ -103,6 +108,7 @@ class FeedbackResource(ModelResource): nominees = ToManyField(NomineeResource, 'nominees', null=True) class Meta: queryset = Feedback.objects.all() + serializer = api.Serializer() #resource_name = 'feedback' filtering = { "id": ALL, @@ -126,6 +132,7 @@ class NominationResource(ModelResource): user = ToOneField(UserResource, 'user') class Meta: queryset = Nomination.objects.all() + serializer = api.Serializer() #resource_name = 'nomination' filtering = { "id": ALL, diff --git a/ietf/person/resources.py b/ietf/person/resources.py index 7404791c7..1ee58d3f9 100644 --- a/ietf/person/resources.py +++ b/ietf/person/resources.py @@ -13,6 +13,7 @@ class PersonResource(ModelResource): user = ToOneField(UserResource, 'user', null=True) class Meta: queryset = Person.objects.all() + serializer = api.Serializer() #resource_name = 'person' filtering = { "id": ALL, @@ -30,6 +31,7 @@ class EmailResource(ModelResource): person = ToOneField(PersonResource, 'person', null=True) class Meta: queryset = Email.objects.all() + serializer = api.Serializer() #resource_name = 'email' filtering = { "address": ALL, @@ -43,6 +45,7 @@ class AliasResource(ModelResource): person = ToOneField(PersonResource, 'person') class Meta: queryset = Alias.objects.all() + serializer = api.Serializer() #resource_name = 'alias' filtering = { "id": ALL, @@ -57,6 +60,7 @@ class PersonHistoryResource(ModelResource): user = ToOneField(UserResource, 'user', null=True) class Meta: queryset = PersonHistory.objects.all() + serializer = api.Serializer() #resource_name = 'personhistory' filtering = { "id": ALL, diff --git a/ietf/redirects/resources.py b/ietf/redirects/resources.py index eeb349aac..572b9a4cd 100644 --- a/ietf/redirects/resources.py +++ b/ietf/redirects/resources.py @@ -11,6 +11,7 @@ from ietf.redirects.models import * # pyflakes:ignore class RedirectResource(ModelResource): class Meta: queryset = Redirect.objects.all() + serializer = api.Serializer() #resource_name = 'redirect' filtering = { "id": ALL, @@ -24,6 +25,7 @@ api.redirects.register(RedirectResource()) class SuffixResource(ModelResource): class Meta: queryset = Suffix.objects.all() + serializer = api.Serializer() #resource_name = 'suffix' filtering = { "id": ALL, @@ -37,6 +39,7 @@ class CommandResource(ModelResource): suffix = ToOneField(SuffixResource, 'suffix', null=True) class Meta: queryset = Command.objects.all() + serializer = api.Serializer() #resource_name = 'command' filtering = { "id": ALL, diff --git a/ietf/submit/resources.py b/ietf/submit/resources.py index 2bf06f306..788780388 100644 --- a/ietf/submit/resources.py +++ b/ietf/submit/resources.py @@ -13,6 +13,7 @@ class PreapprovalResource(ModelResource): by = ToOneField(PersonResource, 'by') class Meta: queryset = Preapproval.objects.all() + serializer = api.Serializer() #resource_name = 'preapproval' filtering = { "id": ALL, @@ -29,6 +30,7 @@ class SubmissionResource(ModelResource): group = ToOneField(GroupResource, 'group', null=True) class Meta: queryset = Submission.objects.all() + serializer = api.Serializer() #resource_name = 'submission' filtering = { "id": ALL, @@ -61,6 +63,7 @@ class SubmissionEventResource(ModelResource): by = ToOneField(PersonResource, 'by', null=True) class Meta: queryset = SubmissionEvent.objects.all() + serializer = api.Serializer() #resource_name = 'submissionevent' filtering = { "id": ALL, diff --git a/ietf/utils/resources.py b/ietf/utils/resources.py index d24ee109b..03886179c 100644 --- a/ietf/utils/resources.py +++ b/ietf/utils/resources.py @@ -5,14 +5,18 @@ from tastypie.fields import CharField from django.contrib.auth.models import User from django.contrib.contenttypes.models import ContentType +from ietf import api + class UserResource(ModelResource): username = CharField() class Meta: queryset = User.objects.all() + serializer = api.Serializer() class ContentTypeResource(ModelResource): username = CharField() class Meta: queryset = ContentType.objects.all() + serializer = api.Serializer() - \ No newline at end of file +