resources.py 3.2 KB
# -*- coding: utf-8 -*-

from django.contrib.auth import get_user_model

from tastypie import fields
from tastypie.constants import ALL_WITH_RELATIONS, ALL
from tastypie.resources import ModelResource

from colab.super_archives.models import Message, EmailAddress
#from proxy.trac.models import Revision, Ticket, Wiki

User = get_user_model()


class UserResource(ModelResource):
    class Meta:
        queryset = User.objects.filter(is_active=True)
        resource_name = 'user'
        fields = ['username', 'institution', 'role', 'bio', 'first_name',
                  'last_name', 'email']
        allowed_methods = ['get', ]
        filtering = {
            'email': ('exact', ),
            'username': ALL,
            'institution': ALL,
            'role': ALL,
            'bio': ALL,
        }

    def dehydrate_email(self, bundle):
        return ''


class EmailAddressResource(ModelResource):
    user = fields.ForeignKey(UserResource, 'user', full=False, null=True)

    class Meta:
        queryset = EmailAddress.objects.all()
        resource_name = 'emailaddress'
        excludes = ['md5', ]
        allowed_methods = ['get', ]
        filtering = {
            'address': ('exact', ),
            'user': ALL_WITH_RELATIONS,
            'real_name': ALL,
        }

    def dehydrate_address(self, bundle):
        return ''


class MessageResource(ModelResource):
    from_address = fields.ForeignKey(EmailAddressResource, 'from_address',
                                     full=False)

    class Meta:
        queryset = Message.objects.all()
        resource_name = 'message'
        excludes = ['spam', 'subject_clean', 'message_id']
        filtering = {
            'from_address': ALL_WITH_RELATIONS,
            'subject': ALL,
            'body': ALL,
            'received_time': ALL,
        }


#class RevisionResource(ModelResource):
#    class Meta:
#        queryset = Revision.objects.all()
#        resource_name = 'revision'
#        excludes = ['collaborators', ]
#        filtering = {
#            'key': ALL,
#            'rev': ALL,
#            'author': ALL,
#            'message': ALL,
#            'repository_name': ALL,
#            'created': ALL,
#        }
#
#
#class TicketResource(ModelResource):
#    class Meta:
#        queryset = Ticket.objects.all()
#        resource_name = 'ticket'
#        excludes = ['collaborators', ]
#        filtering = {
#            'id': ALL,
#            'summary': ALL,
#            'description': ALL,
#            'milestone': ALL,
#            'priority': ALL,
#            'component': ALL,
#            'version': ALL,
#            'severity': ALL,
#            'reporter': ALL,
#            'author': ALL,
#            'status': ALL,
#            'keywords': ALL,
#            'created': ALL,
#            'modified': ALL,
#            'modified_by': ALL,
#        }
#
#
#class WikiResource(ModelResource):
#    class Meta:
#        queryset = Wiki.objects.all()
#        resource_name = 'wiki'
#        excludes = ['collaborators', ]
#        filtering = {
#            'name': ALL,
#            'wiki_text': ALL,
#            'author': ALL,
#            'name': ALL,
#            'created': ALL,
#            'modified': ALL,
#            'modified_by': ALL,
#        }