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
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
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
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