def perform_create(self, serializer):
'''Add a new tileset
When adding a new dataset, we need to enforce permissions as well as
other rules like the uniqueness of uuids.
Args:
serializer (tilsets.serializer.TilesetSerializer): The serializer
to use to save the request.
'''
if 'uid' in self.request.data:
try:
self.queryset.get(uuid=self.request.data['uid'])
# this uid already exists, return an error
raise rfe.APIException("UID already exists")
except tm.Tileset.DoesNotExist:
uid = self.request.data['uid']
else:
uid = slugid.nice().decode('utf-8')
if 'filetype' not in self.request.data:
raise rfe.APIException('Missing filetype')
datafile_name = self.request.data.get('datafile').name
if 'name' in self.request.data:
name = self.request.data['name']
else:
name = op.split(datafile_name)[1]
if self.request.user.is_anonymous:
# can't create a private dataset as an anonymous user
serializer.save(
owner=gu.get_anonymous_user(),
private=False,
name=name,
uuid=uid
)
else:
serializer.save(owner=self.request.user, name=name, uuid=uid)
评论列表
文章目录