示例#1
0
    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)
示例#4
0
    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)
示例#6
0
    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
     )
示例#8
0
 def expand_instance_id(self, instance):
     return utils.external_id_from_model_and_internal_id(
         type(instance), instance.pk)
示例#9
0
 def hid(self):
     return external_id_from_model_and_internal_id(Post, self.id)
示例#10
0
 def hid(self):
     return external_id_from_model_and_internal_id(Thread, self.id)