Skip to content

Commit 2cfd6fd

Browse files
committed
Merge branch 'release/0.118.0'
2 parents f814002 + 88d4371 commit 2cfd6fd

40 files changed

+3841
-3177
lines changed

CHANGELOG

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22
Changelog
33
*********
44

5+
0.118.0 (2017-08-03)
6+
====================
7+
8+
- Support for custom taxonomies.
9+
510
0.117.0 (2017-07-13)
611
====================
712
- Profile: long Personal Website URLs run over in cause problems in display #5270

api/base/settings/defaults.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@
153153
'2.3',
154154
'2.4',
155155
'2.5',
156+
'2.6',
156157
),
157158
'DEFAULT_FILTER_BACKENDS': ('api.base.filters.ODMOrderingFilter',),
158159
'DEFAULT_PAGINATION_CLASS': 'api.base.pagination.JSONAPIPagination',

api/base/versioning.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,3 +105,18 @@ def reverse(self, viewname, args=None, kwargs=None, request=None, format=None, *
105105
return utils.absolute_reverse(
106106
viewname, query_kwargs=query_kwargs, args=args, kwargs=kwargs
107107
)
108+
109+
class DeprecatedEndpointMixin(object):
110+
@property
111+
def min_version(self):
112+
return '2.0'
113+
114+
@property
115+
def max_version(self):
116+
raise NotImplementedError('Deprecated endpoints must define `max_version`')
117+
118+
def determine_version(self, request, *args, **kwargs):
119+
version, scheme = super(DeprecatedEndpointMixin, self).determine_version(request, *args, **kwargs)
120+
if utils.is_deprecated(version, self.min_version, self.max_version):
121+
raise drf_exceptions.NotFound()
122+
return version, scheme

api/preprint_providers/serializers.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ class PreprintProviderSerializer(JSONAPISerializer):
3737
related_view_kwargs={'provider_id': '<_id>'}
3838
)
3939

40+
highlighted_taxonomies = RelationshipField(
41+
related_view='preprint_providers:highlighted-taxonomy-list',
42+
related_view_kwargs={'provider_id': '<_id>'}
43+
)
44+
4045
licenses_acceptable = RelationshipField(
4146
related_view='preprint_providers:license-list',
4247
related_view_kwargs={'provider_id': '<_id>'}

api/preprints/serializers.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ def update(self, preprint, validated_data):
209209

210210
def set_field(self, func, val, auth, save=False):
211211
try:
212-
func(val, auth, save=save)
212+
func(val, auth)
213213
except PermissionsError as e:
214214
raise exceptions.PermissionDenied(detail=e.message)
215215
except ValueError as e:
@@ -246,7 +246,8 @@ def create(self, validated_data):
246246
raise Conflict('Only one preprint per provider can be submitted for a node. Check `meta[existing_resource_id]`.', meta={'existing_resource_id': conflict._id})
247247

248248
preprint = PreprintService(node=node, provider=provider)
249-
self.set_field(preprint.set_primary_file, primary_file, auth, save=True)
249+
self.set_field(preprint.set_primary_file, primary_file, auth)
250+
preprint.save()
250251
preprint.node._has_abandoned_preprint = True
251252
preprint.node.save()
252253

api/taxonomies/serializers.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ class TaxonomySerializer(JSONAPISerializer):
3131
)
3232
parent = TaxonomyField()
3333
child_count = ser.IntegerField()
34+
share_title = ser.CharField(source='provider.share_title', read_only=True)
35+
path = ser.CharField(read_only=True)
3436

3537
links = LinksField({
3638
'parents': 'get_parent_urls',

api/taxonomies/views.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,13 @@
55
from api.base.filters import ODMFilterMixin
66
from api.base.pagination import NoMaxPageSizePagination
77
from api.base import permissions as base_permissions
8+
from api.base.versioning import DeprecatedEndpointMixin
89
from api.taxonomies.serializers import TaxonomySerializer
910
from osf.models import Subject
1011
from framework.auth.oauth_scopes import CoreScopes
1112

1213

13-
class TaxonomyList(JSONAPIBaseView, generics.ListAPIView, ODMFilterMixin):
14+
class TaxonomyList(DeprecatedEndpointMixin, JSONAPIBaseView, generics.ListAPIView, ODMFilterMixin):
1415
'''[BePress taxonomy subject](https://www.bepress.com/wp-content/uploads/2016/12/Digital-Commons-Disciplines-taxonomy-2017-01.pdf) instance. *Read-only*
1516
1617
##Note
@@ -47,6 +48,7 @@ class TaxonomyList(JSONAPIBaseView, generics.ListAPIView, ODMFilterMixin):
4748
pagination_class = NoMaxPageSizePagination
4849
view_category = 'taxonomies'
4950
view_name = 'taxonomy-list'
51+
max_version = '2.5'
5052

5153
# overrides ListAPIView
5254
def get_default_odm_query(self):

0 commit comments

Comments
 (0)