def get_votes(self, obj): votes = [] for user_vote in obj.votes.all(): for i, vote in enumerate(votes): if vote['id'] == external_id_from_model_and_internal_id( VoteType, user_vote.vote_type.id): break else: serializer = VoteTypeSerializer(user_vote.vote_type, context=self.context) votes.append({ **serializer.data, **{ 'vote_count': 0, 'users': [] } }) for i, vote in enumerate(votes): if vote['id'] == external_id_from_model_and_internal_id( VoteType, user_vote.vote_type.id): votes[i]['vote_count'] += 1 votes[i]['users'].append(user_vote.user.username) break return votes
def test_matches_against_external_id(self): external_id = extensions_utils.external_id_from_model_and_internal_id( test_models.Owner, self.owner.pk ) response = self.get_response(external_id) self.assertEquals(200, response.status_code) self.assertEquals(self.owner.pk, response.data['id'])
def test_raises_404_when_not_found(self): bad_external_id = ( extensions_utils.external_id_from_model_and_internal_id( test_models.Sku, self.sku_p100d.pk ) ) response = self.get_response(bad_external_id) self.assertEquals(404, response.status_code)
def __call__(self, instance, filename): # Remove the extension from the filename ext = filename.split('.')[-1] filename = '{}.{}'.format( external_id_from_model_and_internal_id( apps.get_model(app_label="FigureSite", model_name="User"), instance.id), ext) print("avatar: %s" % filename) # return the whole path to the file return os.path.join("avatars", filename)
def get_url(self, obj, view_name, request, fmt): """ Use the field source in combination with the model to generate the URL. """ # Unsaved objects will not yet have a valid URL. if hasattr(obj, 'pk') and obj.pk in (None, ''): return None external_id = utils.external_id_from_model_and_internal_id( self.get_model(), getattr(obj, self.lookup_field)) kwargs = {self.lookup_url_kwarg: external_id} return self.reverse(view_name, kwargs=kwargs, request=request, format=fmt)
def create_thread(self, request, slug=None): forum = self.get_object() request.data['creator'] = request.user.id request.data['forum'] = forum.id related_items = [] if 'related_items' in request.data: for item in request.data['related_items']: db_item = MFCItem.get_or_fetch_mfc_item(item) if db_item: related_items.append(db_item) thread_serializer = serializers.CreateThreadSerializer( data=request.data) if thread_serializer.is_valid() and request.data['content']: thread = thread_serializer.save() post_data = { 'thread': thread.id, 'creator': request.user.id, 'content': request.data['content'], 'nsfw': request.data['nsfw'] } thread.related_items post_serializer = serializers.CreatePostSerializer(data=post_data) if post_serializer.is_valid(): post_serializer.save() thread.related_items.set(related_items) thread.save() data = thread_serializer.data data['slug'] = thread.slug data['id'] = external_id_from_model_and_internal_id( Thread, thread.id) return Response(data, status=status.HTTP_201_CREATED) else: return Response(post_serializer.errors, status=status.HTTP_400_BAD_REQUEST) else: return Response(thread_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def to_representation(self, value): return utils.external_id_from_model_and_internal_id( self.get_model(), value )
def expand_instance_id(self, instance): return utils.external_id_from_model_and_internal_id( type(instance), instance.pk)
def hid(self): return external_id_from_model_and_internal_id(Post, self.id)
def hid(self): return external_id_from_model_and_internal_id(Thread, self.id)