Esempio n. 1
0
def short_url_view(request, pk):
    """
    Redirects to detail view
    """
    item = get_object_or_404(Case.get_queryset(request).only('slug'), pk=pk)

    return redirect(item.get_absolute_url(), permanent=True)
Esempio n. 2
0
class CaseAnnotationSerializer(serializers.ModelSerializer):
    belongs_to = serializers.PrimaryKeyRelatedField(
        queryset=Case.get_queryset().defer(
            *Case.defer_fields_list_view).select_related('court'),
        html_cutoff=10,
    )
    label = serializers.PrimaryKeyRelatedField(
        queryset=AnnotationLabel.objects.all().select_related('owner'),
        html_cutoff=10,
    )

    class Meta:
        model = CaseAnnotation
        fields = '__all__'

    def validate(self, attrs):
        instance = self.Meta.model(**attrs)

        # Work-around to show fields in error response
        try:
            instance.clean()
        except ValidationError as e:
            raise serializers.ValidationError(e.args[0])

        return attrs
Esempio n. 3
0
def case_view(request, case_slug):
    """
    Case detail view
    """
    qs = Case.get_queryset(request).select_related('court').select_related(
        'source')
    item = get_object_or_404(qs, slug=case_slug)

    # Load annotations for staff users
    if request.user.is_staff:
        marker_labels = item.get_markers(request)\
            .values('label__id', 'label__name', 'label__color', 'label__private')\
            .annotate(count=Count('label'))\
            .order_by('count')
        annotation_labels = item.get_annotation_labels(request)
    else:
        marker_labels = None
        annotation_labels = None

    return render(
        request, 'cases/case.html', {
            'title': item.get_title(),
            'item': item,
            'content': item.get_content_as_html(request),
            'annotation_labels': annotation_labels,
            'marker_labels': marker_labels,
            'line_counter': Counter(),
            'nav': 'cases',
        })
Esempio n. 4
0
    def get_queryset(self):
        # Get cases that belong to court
        queryset = Case.get_queryset(self.request)\
            .select_related('court')\
            .defer(*Case.defer_fields_list_view)\
            .filter(court=self.court)\
            .order_by('-date')

        return queryset
Esempio n. 5
0
def index_view(request):

    law_books = LawBook.objects.filter(latest=True).order_by('-order')
    cases = Case.get_queryset(request)\
                .defer(*Case.defer_fields_list_view)\
                .select_related('court')\
                .order_by('-updated_date')

    laws_count = '{:,}'.format(Law.objects.all().count())
    cases_count = '{:,}'.format(Case.get_queryset(request).count())

    return render(request, 'homepage/index.html', {
        'title': _('Free Access to Legal Data'),
        'nav': 'homepage',
        'law_books': law_books,
        'cases': cases,
        'laws_count': laws_count,
        'cases_count': cases_count,
    })
Esempio n. 6
0
def case_view(request, case_slug):
    item = get_object_or_404(Case.get_queryset(request), slug=case_slug)

    return render(request, 'cases/case.html', {
        'title': item.get_title(),
        'item': item,
        'content': item.get_content_as_html(request),
        'annotation_labels': item.get_annotation_labels(request) if request.user.is_staff else None,
        'line_counter': Counter(),
        'nav': 'cases',
    })
Esempio n. 7
0
def case_view(request, case_slug):
    item = get_object_or_404(Case.get_queryset(request), slug=case_slug)

    return render(
        request, 'cases/case.html', {
            'title': item.get_title(),
            'item': item,
            'line_counter': Counter(),
            'nav': 'cases',
            'is_read_more': is_read_more
        })
Esempio n. 8
0
 def __init__(self):
     super().__init__(
         {
             'queryset':
             Case.get_queryset().select_related('court').defer(
                 *Case.defer_fields_list_view).order_by('-updated_date'),
             'date_field':
             'updated_date'
         },
         priority=1.0,
         changefreq='daily')
Esempio n. 9
0
def index_view(request):
    k = 10
    books = LawBook.objects.filter(latest=True).order_by('-revision_date')[:k]
    cases = Case.get_queryset(request).order_by('-updated_date')[:k]

    return render(
        request, 'homepage/index.html', {
            'title': _('Free Access to Legal Data'),
            'nav': 'homepage',
            'books': books,
            'cases': cases
        })
Esempio n. 10
0
def index_view(request):
    items = Case.get_queryset(request).order_by('-date')

    paginator = Paginator(items, 50)  # 50 items per page
    page = request.GET.get('page')
    try:
        items = paginator.page(page)
    except PageNotAnInteger:
        items = paginator.page(1)
    except EmptyPage:
        items = paginator.page(paginator.num_pages)

    return render(request, 'cases/index.html', {
        'title': _('Cases'),
        'items': items,
        'nav': 'cases'
    })
Esempio n. 11
0
def view_law(request, law_slug, book_slug):

    book = get_law_book(request, book_slug)
    item = get_object_or_404(Law.objects.select_related('book', 'previous'),
                             slug=law_slug,
                             book=book)

    referencing_cases = item.get_referencing_cases(
        Case.get_queryset(request).defer(*Case.defer_fields_list_view))

    return render(
        request, 'laws/law.html', {
            'nav': 'laws',
            'item': item,
            'title': item.get_title(),
            'referencing_cases': referencing_cases,
        })
Esempio n. 12
0
class CaseViewSet(viewsets.ModelViewSet):
    """
    List view for cases
    """
    pagination_class = SmallResultsSetPagination  # limit page (other content field blows up response size)
    queryset = Case.get_queryset()
    serializer_class = CaseSerializer
    # lookup_field = 'slug'

    filter_backends = (OrderingFilter, DjangoFilterBackend, )
    filterset_class = CaseAPIFilter
    ordering_fields = ('date', )

    @method_decorator(cache_page(60))
    def dispatch(self, *args, **kwargs):
        return super().dispatch(*args, **kwargs)

    def get_queryset(self):
        return Case.get_queryset()\
            .select_related('court')\
            .only(*CASE_API_FIELDS)
Esempio n. 13
0
 def get_queryset(self):
     return Case.get_queryset(self.request).select_related('court').defer(
         *Case.defer_fields_list_view)
Esempio n. 14
0
 def get_queryset(self):
     return Case.get_queryset()\
         .select_related('court')\
         .only(*CASE_API_FIELDS)
Esempio n. 15
0
class CaseViewSet(viewsets.ModelViewSet):
    queryset = Case.get_queryset()
    serializer_class = CaseSerializer

    filter_backends = (DjangoFilterBackend, )
    filter_fields = ('slug', 'file_number', 'court_id')
Esempio n. 16
0
    def get_queryset(self):
        # Get cases that belong to court
        queryset = Case.get_queryset(
            self.request).filter(court_id=self.court.pk).order_by('date')

        return queryset
Esempio n. 17
0
 def index_queryset(self, using=None):
     return Case.get_queryset().select_related('court', 'court__state')