Skip to content

Commit

Permalink
Jkmarx/create group invitations api (#3314)
Browse files Browse the repository at this point in the history
* Create invitation v2 api.

* Extend api to partial_update.

* Fix comments.

* Remove data packet from delete.

* Add get_group helper method. (#3316)

* Add get_group helper method.

* Jkmarx/update client to invite api v2 (#3317)

* Update client.

* Fix comment.

* Update delete call.

* Remove tasty pie. (#3318)
  • Loading branch information
jkmarx committed Apr 9, 2019
1 parent 8a98dcf commit 2f40abf
Show file tree
Hide file tree
Showing 18 changed files with 574 additions and 254 deletions.
2 changes: 0 additions & 2 deletions refinery/config/settings/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -189,8 +189,6 @@ def get_setting(name, settings=local_settings, default=None):
'haystack',
# NG: added for celery (task queue)
'djcelery', # django-celery
# NG: added for API
"tastypie",
'djangular',
'galaxy_connector',
'analysis_manager',
Expand Down
10 changes: 0 additions & 10 deletions refinery/config/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,8 @@
from django.contrib import admin

from registration.backends.default.views import ActivationView
from tastypie.api import Api

from config.utils import RouterCombiner
from core.api import InvitationResource
from core.forms import RegistrationFormWithCustomFields
from core.models import AuthenticationFormUsernameOrEmail
from core.urls import core_router
Expand All @@ -23,11 +21,6 @@

logger = logging.getLogger(__name__)

# NG: added for tastypie URL
v1_api = Api(api_name='v1')

v1_api.register(InvitationResource())


# patterns for all of the different applications
urlpatterns = patterns(
Expand Down Expand Up @@ -87,9 +80,6 @@

url(r'^accounts/', include('registration.backends.default.urls')),

# NG: tastypie API urls
url(r'^api/', include(v1_api.urls)),

user_files_url,
user_files_csv_url

Expand Down
151 changes: 0 additions & 151 deletions refinery/core/api.py

This file was deleted.

10 changes: 8 additions & 2 deletions refinery/core/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
from rest_framework import serializers
from rest_framework.validators import UniqueValidator

from .models import (Analysis, DataSet, Event, ExtendedGroup, SiteProfile,
SiteVideo, User, UserProfile, Workflow)
from .models import (Analysis, DataSet, Event, ExtendedGroup, Invitation,
SiteProfile, SiteVideo, User, UserProfile, Workflow)

logger = logging.getLogger(__name__)

Expand Down Expand Up @@ -183,6 +183,12 @@ class Meta:
'member_list', 'perm_list')


class InvitationSerializer(serializers.ModelSerializer):
class Meta:
model = Invitation
fields = ('created', 'expires', 'group_id', 'id', 'recipient_email')


class SiteVideoSerializer(serializers.ModelSerializer):
class Meta:
model = SiteVideo
Expand Down
22 changes: 0 additions & 22 deletions refinery/core/test_api.py

This file was deleted.

60 changes: 60 additions & 0 deletions refinery/core/test_serializers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
from datetime import datetime
from datetime import timedelta
import uuid

from django.conf import settings
from django.test.testcases import TestCase
from guardian.compat import get_user_model
from django.utils import timezone

from .models import ExtendedGroup, Invitation
from .serializers import InvitationSerializer

User = get_user_model()


class InvitationSerializerTests(TestCase):
def setUp(self):
self.username = 'coffee_lover'
self.password = 'coffeecoffee'
self.user = User.objects.create_user(self.username, 'user@example.com',
self.password)
self.group = ExtendedGroup.objects.create(name="Test Group")
self.group.manager_group.user_set.add(self.user)
self.group.user_set.add(self.user)
self.public_group = ExtendedGroup.objects.public_group()
self.public_group.manager_group.user_set.add(self.user)
self.invite = Invitation(token_uuid=uuid.uuid1(),
group_id=self.group.id)
self.time_duration = timedelta(days=settings.TOKEN_DURATION)
self.invite.expires = timezone.now() + self.time_duration
self.invite.sender = self.user
self.invite.recipient_email = 'non_member@example.com'
self.invite.save()

def test_serializer_returns_created_field(self):
serializer = InvitationSerializer(self.invite)
isoformat = datetime.isoformat(self.invite.created)
drf_isoformat = isoformat[:-6] + 'Z'
self.assertEqual(drf_isoformat,
serializer.data.get('created'))

def test_serializer_returns_expires_field(self):
serializer = InvitationSerializer(self.invite)
isoformat = datetime.isoformat(self.invite.expires)
drf_isoformat = isoformat[:-6] + 'Z'
self.assertEqual(drf_isoformat,
serializer.data.get('expires'))

def test_serializer_returns_group_id_field(self):
serializer = InvitationSerializer(self.invite)
self.assertEqual(self.invite.group_id, serializer.data.get('group_id'))

def test_serializer_returns_id_field(self):
serializer = InvitationSerializer(self.invite)
self.assertEqual(self.invite.id, serializer.data.get('id'))

def test_serializer_returns_recipient_email_field(self):
serializer = InvitationSerializer(self.invite)
self.assertEqual(self.invite.recipient_email,
serializer.data.get('recipient_email'))
23 changes: 22 additions & 1 deletion refinery/core/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@

from .models import ExtendedGroup
from .utils import (get_absolute_url, is_absolute_url,
get_non_manager_groups_for_user, get_data_set_for_view_set)
get_non_manager_groups_for_user, get_data_set_for_view_set,
get_group_for_view_set)


class TestIsAbsoluteURL(TestCase):
Expand Down Expand Up @@ -90,3 +91,23 @@ def test_get_data_set_for_view_set_returns_data_set(self):
def test_get_data_set_for_view_set_raises_404(self):
with self.assertRaises(Http404):
get_data_set_for_view_set('xxxxx7')


class GetGroupForViewSetTest(TestCase):
def setUp(self):
self.username = 'coffee_lover'
self.password = 'coffeecoffee'
self.user = User.objects.create_user(self.username,
'user@example.com',
self.password)
self.group = ExtendedGroup.objects.create(name="Test Group")
self.group.manager_group.user_set.add(self.user)
self.group.user_set.add(self.user)

def test_get_group_for_view_set_returns_data_set(self):
group = get_group_for_view_set(self.group.uuid)
self.assertEqual(group, self.group)

def test_get_group_for_view_set_raises_404(self):
with self.assertRaises(Http404):
get_group_for_view_set('xxxxx7')

0 comments on commit 2f40abf

Please sign in to comment.