Пример #1
0
def signature_endpoint(request):
    user = request.user

    if not user.acl_cache['can_have_signature']:
        raise PermissionDenied(
            _("You don't have permission to change signature."))

    if user.is_signature_locked:
        if user.signature_lock_user_message:
            extra = format_plaintext_for_html(user.signature_lock_user_message)
        else:
            extra = None

        return Response(
            {
                'detail': _("Your signature is locked. You can't change it."),
                'extra': extra
            },
            status=403,
        )

    if request.method == 'POST':
        return edit_signature(request, user)

    return get_signature_options(user)
Пример #2
0
def rank(request, rank_slug, page=0):
    rank = get_object_or_404(Rank.objects.filter(is_tab=True), slug=rank_slug)
    queryset = rank.user_set.select_related('rank').order_by('slug')

    page = paginate(queryset, page, settings.MISAGO_USERS_PER_PAGE, 4)
    paginator = pagination_dict(page)

    request.frontend_context['USERS'] = dict(
        results=UserSerializer(page.object_list, many=True).data,
        **paginator
    )

    if rank.description:
        description = {
            'plain': rank.description,
            'html': format_plaintext_for_html(rank.description)
        }
    else:
        description = None

    template = "misago/userslists/rank.html"
    return render(request, template, {
        'rank': rank,
        'users': page.object_list,

        'paginator': paginator
    })
Пример #3
0
def rank(request, slug, page=0):
    rank = get_object_or_404(Rank.objects.filter(is_tab=True), slug=slug)
    queryset = rank.user_set.select_related('rank').order_by('slug')

    if not request.user.is_staff:
        queryset = queryset.filter(is_active=True)

    page = paginate(queryset, page, settings.MISAGO_USERS_PER_PAGE, 4)

    data = pagination_dict(page)
    data.update({'results': UserSerializer(page.object_list, many=True).data})

    request.frontend_context['USERS'] = data

    if rank.description:
        description = {
            'plain': rank.description,
            'html': format_plaintext_for_html(rank.description)
        }
    else:
        description = None

    template = "misago/userslists/rank.html"
    return render(request, template, {
        'rank': rank,
        'users': page.object_list,
        'paginator': data
    })
Пример #4
0
 def get_description(self, obj):
     if obj.description:
         return {
             'plain': obj.description,
             'html': format_plaintext_for_html(obj.description),
         }
     return None
 def get_description(self, obj):
     if obj.description:
         return {
             'plain': obj.description,
             'html': format_plaintext_for_html(obj.description),
         }
     return None
Пример #6
0
def serialize_message(message):
    if message:
        return {
            'plain': message,
            'html': format_plaintext_for_html(message),
        }
    else:
        return None
Пример #7
0
    def get_message(self, obj):
        if obj.user_message:
            message = obj.user_message
        elif obj.check_type == BAN_IP:
            message = _("Your IP address is banned.")
        else:
            message = _("You are banned.")

        return {'plain': message, 'html': format_plaintext_for_html(message)}
Пример #8
0
    def test_format_plaintext_for_html(self):
        """format_plaintext_for_html correctly formats plaintext for html"""
        for plaintext, html in PLAINTEXT_FORMAT_CASES:
            output = format_plaintext_for_html(plaintext)

            assertion_message = """
format_plaintext_for_html failed to produce expected output:

expected:   %s
return:     %s
""" % (html, output)
            self.assertEqual(output, html, assertion_message)
Пример #9
0
    def test_format_plaintext_for_html(self):
        """format_plaintext_for_html correctly formats plaintext for html"""
        for plaintext, html in PLAINTEXT_FORMAT_CASES:
            output = format_plaintext_for_html(plaintext)

            assertion_message = """
format_plaintext_for_html failed to produce expected output:

expected:   %s
return:     %s
""" % (html, output)
            self.assertEqual(output, html, assertion_message)
Пример #10
0
    def get_message(self, obj):
        if obj.user_message:
            message = obj.user_message
        elif obj.check_type == BAN_IP:
            message = _("Your IP address is banned.")
        else:
            message = _("You are banned.")

        return {
            'plain': message,
            'html': format_plaintext_for_html(message)
        }
Пример #11
0
    def get(self, request, *args, **kwargs):
        allow_browse_users_list(request.user)

        context_data = self.get_context_data(request, *args, **kwargs)

        sections = users_list.get_sections(request)

        context_data['pages'] = sections

        request.frontend_context['USERS_LISTS'] = []
        for page in sections:
            page['reversed_link'] = reverse(page['link'])
            request.frontend_context['USERS_LISTS'].append({
                'name':
                six.text_type(page['name']),
                'component':
                page['component'],
            })

        active_rank = context_data.get('rank')
        for rank in Rank.objects.filter(is_tab=True).order_by('order'):
            context_data['pages'].append({
                'name':
                rank.name,
                'reversed_link':
                reverse('misago:users-rank', kwargs={'slug': rank.slug}),
                'is_active':
                active_rank.pk == rank.pk if active_rank else None
            })

            if rank.description:
                description = {
                    'plain': rank.description,
                    'html': format_plaintext_for_html(rank.description)
                }
            else:
                description = None

            request.frontend_context['USERS_LISTS'].append({
                'id': rank.pk,
                'name': rank.name,
                'slug': rank.slug,
                'css_class': rank.css_class,
                'description': description,
                'component': 'rank',
            })

        active_section = list(filter(lambda x: x['is_active'], sections))[0]
        context_data['active_section'] = active_section

        return render(request, self.template_name, context_data)
Пример #12
0
def render(request, template, context):
    request.frontend_context['USERS_LISTS'] = []

    context['pages'] = users_list.get_sections(request)

    for page in context['pages']:
        page['reversed_link'] = reverse(page['link'])
        request.frontend_context['USERS_LISTS'].append({
            'name':
            six.text_type(page['name']),
            'component':
            page['component'],
        })

    active_rank = context.get('rank')
    for rank in Rank.objects.filter(is_tab=True).order_by('order'):
        context['pages'].append({
            'name':
            rank.name,
            'reversed_link':
            reverse('misago:users-rank', kwargs={'slug': rank.slug}),
            'is_active':
            active_rank.pk == rank.pk if active_rank else None
        })

        if rank.description:
            description = {
                'plain': rank.description,
                'html': format_plaintext_for_html(rank.description)
            }
        else:
            description = None

        request.frontend_context['USERS_LISTS'].append({
            'id': rank.pk,
            'name': rank.name,
            'slug': rank.slug,
            'css_class': rank.css_class,
            'description': description,
            'component': 'rank',
        })

    for page in context['pages']:
        if page['is_active']:
            context['active_page'] = page
            break

    return django_render(request, template, context)
Пример #13
0
def render(request, template, context):
    request.frontend_context['USERS_LISTS'] = []

    context['pages'] = users_list.get_sections(request)

    for page in context['pages']:
        page['reversed_link'] = reverse(page['link'])
        request.frontend_context['USERS_LISTS'].append({
            'name': six.text_type(page['name']),
            'component': page['component'],
        })

    active_rank = context.get('rank')
    for rank in Rank.objects.filter(is_tab=True).order_by('order'):
        context['pages'].append({
            'name': rank.name,
            'reversed_link': reverse('misago:users-rank', kwargs={
                'slug': rank.slug
            }),
            'is_active': active_rank.pk == rank.pk if active_rank else None
        })

        if rank.description:
            description = {
                'plain': rank.description,
                'html': format_plaintext_for_html(rank.description)
            }
        else:
            description = None

        request.frontend_context['USERS_LISTS'].append({
            'id': rank.pk,
            'name': rank.name,
            'slug': rank.slug,
            'css_class': rank.css_class,
            'description': description,
            'component': 'rank',
        })

    for page in context['pages']:
        if page['is_active']:
            context['active_page'] = page
            break

    return django_render(request, template, context)
Пример #14
0
def avatar_endpoint(request, pk=None):
    if request.user.is_avatar_locked:
        if request.user.avatar_lock_user_message:
            reason = format_plaintext_for_html(
                request.user.avatar_lock_user_message)
        else:
            reason = None

        return Response({
                'detail': _("Your avatar is locked. You can't change it."),
                'reason': reason
            },
            status=status.HTTP_403_FORBIDDEN)

    avatar_options = get_avatar_options(request.user)
    if request.method == 'POST':
        return avatar_post(avatar_options, request.user, request.data)
    else:
        return Response(avatar_options)
Пример #15
0
def avatar_endpoint(request, pk=None):
    if request.user.is_avatar_locked:
        if request.user.avatar_lock_user_message:
            reason = format_plaintext_for_html(
                request.user.avatar_lock_user_message)
        else:
            reason = None

        return Response(
            {
                'detail': _("Your avatar is locked. You can't change it."),
                'reason': reason
            },
            status=status.HTTP_403_FORBIDDEN)

    avatar_options = get_avatar_options(request.user)
    if request.method == 'POST':
        return avatar_post(avatar_options, request.user, request.data)
    else:
        return Response(avatar_options)
Пример #16
0
def signature_endpoint(request):
    user = request.user

    if not user.acl_cache['can_have_signature']:
        raise PermissionDenied(_("You don't have permission to change signature."))

    if user.is_signature_locked:
        if user.signature_lock_user_message:
            reason = format_plaintext_for_html(user.signature_lock_user_message)
        else:
            reason = None

        return Response({
            'detail': _("Your signature is locked. You can't change it."),
            'reason': reason
        },
                        status=status.HTTP_403_FORBIDDEN)

    if request.method == 'POST':
        return edit_signature(request, user)

    return get_signature_options(user)
Пример #17
0
 def get_description(self, obj):
     if obj.description:
         return format_plaintext_for_html(obj.description)
     else:
         return ''
Пример #18
0
 def get_value_display_data(self, request, user, value):
     return {
         'html': format_plaintext_for_html(value),
     }
Пример #19
0
 def get_value_display_data(self, request, user, value):
     return {
         'html': format_plaintext_for_html(value),
     }
Пример #20
0
 def get_description(self, obj):
     if obj.description:
         return format_plaintext_for_html(obj.description)
     else:
         return ''