Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions ifbcat_api/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -916,6 +916,20 @@ class Meta:
)


class TeamOnMapSerializer(TeamSerializer):
class Meta:
model = models.Team
fields = (
'id',
'name',
'logo_url',
'description',
'lat',
'lng',
'updated_at',
)


# Model serializer for service
class ServiceSerializer(serializers.HyperlinkedModelSerializer):
"""Serializes a service (Service object)."""
Expand Down
7 changes: 6 additions & 1 deletion ifbcat_api/tests/test_no_views_crash.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from django.contrib.contenttypes.models import ContentType
from django.core import management
from django.core.exceptions import FieldError
from django.db.models import Q
from django.test import TestCase
from django.urls import reverse, NoReverseMatch

Expand Down Expand Up @@ -125,6 +126,10 @@ def test_all_at_once_to_spare_resource(self):
# def test_detail(self):
#######################################################################
cpt = 0
failing_get_urls = [
reverse("team-on-map-detail", kwargs=dict(name=o.name))
for o in Team.annotate_is_active().filter(Q(is_active=False) | Q(lat__isnull=True) | Q(lng__isnull=True))
]
for url_instance in [u for u in router.urls if u.name.endswith("-detail")]:
lookup_field = getattr(url_instance.callback.cls, "lookup_field")
attr_field = lookup_field.replace("__unaccent", "")
Expand All @@ -143,7 +148,7 @@ def test_all_at_once_to_spare_resource(self):
] + [f'?format={fmt}' for fmt in available_formats]:
response = self.client.get(url_detail + suffix)
status_code = 200
if getattr(o, 'is_draft', False):
if getattr(o, 'is_draft', False) or url_detail in failing_get_urls:
status_code = 404
self.assertEqual(
response.status_code,
Expand Down
1 change: 1 addition & 0 deletions ifbcat_api/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
router.register('service', views.ServiceViewSet)
router.register('source-info', views.SourceInfoViewSet, basename='source_info')
router.register('team', views.TeamViewSet, basename='team')
router.register('team-on-map', views.TeamOnMapViewSet, basename='team-on-map')
router.register('team-cnp', CachedNoPaginationFactory(views.TeamViewSet), basename='team-cnp')
router.register('tool', views.ToolViewSet)
router.register('tool-cnp', CachedNoPaginationFactory(views.ToolViewSet), basename='tool-cnp')
Expand Down
24 changes: 24 additions & 0 deletions ifbcat_api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -785,6 +785,30 @@ def perform_create(self, serializer):
serializer.save(user_profile=self.request.user)


# Model ViewSet for teams
class TeamOnMapViewSet(PermissionInClassModelViewSet, viewsets.ReadOnlyModelViewSet):
"""Handles creating, reading and updating teams."""

serializer_class = serializers.TeamOnMapSerializer

queryset = models.Team.objects.all()
lookup_field = 'name'

def get_queryset(self):
"""
get team that are active, and have gps coordinate
:return:
"""
return models.Team.annotate_is_active(super().get_queryset()).filter(
is_active=True,
lat__isnull=False,
lng__isnull=False,
)

def paginate_queryset(self, queryset):
return None


# # Model ViewSet for teams
# class BioinformaticsTeamViewSet(TeamViewSet):
# """Handles creating, reading and updating bioinformatics teams."""
Expand Down