Пример #1
0
    def get_object(self, queryset=None):
        if queryset is None:
            queryset = self.get_queryset()

        id = self.kwargs.get(self.pk_url_kwarg)
        image = ImageService.get_object(id, queryset)

        if image is None:
            raise Http404

        return image
Пример #2
0
def autocomplete_usernames(request):
    if 'q' not in request.GET:
        return HttpResponse(simplejson.dumps([]))

    if request.user.is_anonymous:
        if 'token' not in request.GET:
            return HttpResponse(simplejson.dumps([]))

        try:
            Token.objects.get(key=request.GET.get('token'))
        except Token.DoesNotExist:
            return HttpResponse(simplejson.dumps([]))

    q = request.GET['q']
    referer_header = request.META.get('HTTP_REFERER', '')
    from_forums = '/forum' in referer_header
    from_comments = re.match(r'%s\/?([a-zA-Z0-9]{6})\/.*' % settings.BASE_URL, referer_header)
    users = []
    results = []
    limit = 10

    # Replace non-breaking space with regular space
    q = q.replace(chr(160), ' ')

    if from_forums:
        referer = request.META.get('HTTP_REFERER')

        if '?' in referer:
            slug = os.path.basename(os.path.normpath(referer.rsplit('/', 1)[0]))
        else:
            slug = os.path.basename(os.path.normpath(referer))

        users = list(UserProfile.objects.filter(
            Q(user__posts__topic__slug=slug) & (Q(user__username__icontains=q) | Q(real_name__icontains=q))
        ).distinct()[:limit])
    elif from_comments:
        image_id = from_comments.group(1)
        image = ImageService.get_object(image_id, Image.objects_including_wip.all())
        users = list(UserProfile.objects.filter(
            Q(
                Q(user__image=image) |
                Q(
                    Q(user__comments__object_id=image.id) & Q(user__comments__deleted=False)
                )
            ) &
            Q(
                Q(user__username__icontains=q) | Q(real_name__icontains=q)
            )
        ).distinct()[:limit])

    users = UtilsService.unique(users + list(UserProfile.objects.filter(
        Q(user__username__icontains=q) | Q(real_name__icontains=q)
    ).distinct()[:limit]))[:limit]

    for user in users:
        avatar = get_primary_avatar(user, 40)
        if avatar is None:
            avatar_url = get_default_avatar_url()
        else:
            avatar_url = avatar.get_absolute_url()

        results.append({
            'id': str(user.id),
            'username': user.user.username,
            'realName': user.user.userprofile.real_name,
            'displayName': user.user.userprofile.real_name if user.user.userprofile.real_name else user.user.username,
            'avatar': avatar_url,
        })

    return HttpResponse(simplejson.dumps(results))
Пример #3
0
 def get_image_last_modified(request, id, r):
     try:
         image = ImageService.get_object(id, Image.objects_including_wip)
         return image.updated
     except (Image.DoesNotExist, AttributeError):
         return DateTimeService.now()