示例#1
0
    def current_user_has_liked(self):
        return_val = False
        user = get_current_user()
        if user:
            return_val = user.id in [ like.user_id for like in list(self.get_query_set())]

        return return_val
示例#2
0
    def create_from_file(self, media_file, storage = None, title = None, links = None):
        """
        Create a new Media object from file, works with uploaded files or any other referenced file

        Arguments:
            media_file: the actual file that will become the media object
            title: a human readable label for the file. This is not the filename, this is just optional text
            links: a model object to link this media to, can be an object or iterable of objects

        Useage:
            Media.objects.create_from_file(my_file, 'Awesome Picture', User.objects.get(pk = 1))
        """
        f = File(media_file)
        
        original_filename = f.name
        base_filename, extension = os.path.splitext(f.name)
        filename = str(uuid.uuid4()) + extension
        pathname = 'media/%s/%s/' % (filename[0], filename[1])
        mimetype, extra = mimetypes.guess_type(f.name)
        mimetype = mimetype or 'text/plain'
        extension = extension.replace('.', '').lower()
        
        # handle getting the user, if they are anonyous set it back to None
        user = get_current_user()
        if user and not user.is_authenticated():
            user = None

        media = Media.objects.create(
            user = user,
            title = title or '',
            filename = filename,
            file = f,
            original_filename = original_filename,
            pathname = pathname,
            mimetype = mimetype,
            extension = extension,
            storage = storage or Media.STORAGE_DEFAULT,
            filesize = f.size
        )

        # handle any media links we have
        if links:
            
            # convert our links into an iterable of objects
            if not hasattr(links, '__iter__'):
                links = [links]

            for link in links:

                # we can only link to actual model objects
                if not isinstance(link, models.Model):
                    raise Exception('Link must be a model instance')

                MediaLink.objects.create(
                    media = media,
                    content_type = ContentType.objects.get_for_model(link),
                    object_id = link.pk
                )

        return media
示例#3
0
    def get_query_set(self):
        qs = super(LikesManager, self).get_query_set()
        qs = qs.select_related('user')

        user = get_current_user()
        if user:
            qs = qs.extra(select={'order':'(case when user_id=%s then 0 else user_id end)' % user.id }, order_by = ['order'])

        qs = qs.order_by('-created')
        return qs
示例#4
0
    def create_from_file(self,
                         media_file,
                         storage=None,
                         title=None,
                         links=None):
        """
        Create a new Media object from file, works with uploaded files or any other referenced file

        Arguments:
            media_file: the actual file that will become the media object
            title: a human readable label for the file. This is not the filename, this is just optional text
            links: a model object to link this media to, can be an object or iterable of objects

        Useage:
            Media.objects.create_from_file(my_file, 'Awesome Picture', User.objects.get(pk = 1))
        """
        f = File(media_file)

        original_filename = f.name
        base_filename, extension = os.path.splitext(f.name)
        filename = str(uuid.uuid4()) + extension
        pathname = 'media/%s/%s/' % (filename[0], filename[1])
        mimetype, extra = mimetypes.guess_type(f.name)
        mimetype = mimetype or 'text/plain'
        extension = extension.replace('.', '').lower()

        # handle getting the user, if they are anonyous set it back to None
        user = get_current_user()
        if user and not user.is_authenticated():
            user = None

        media = Media.objects.create(user=user,
                                     title=title or '',
                                     filename=filename,
                                     file=f,
                                     original_filename=original_filename,
                                     pathname=pathname,
                                     mimetype=mimetype,
                                     extension=extension,
                                     storage=storage or Media.STORAGE_DEFAULT,
                                     filesize=f.size)

        # handle any media links we have
        if links:

            # convert our links into an iterable of objects
            if not hasattr(links, '__iter__'):
                links = [links]

            for link in links:

                # we can only link to actual model objects
                if not isinstance(link, models.Model):
                    raise Exception('Link must be a model instance')

                MediaLink.objects.create(
                    media=media,
                    content_type=ContentType.objects.get_for_model(link),
                    object_id=link.pk)

        return media