make types for generic mixins less strict (#168)

This commit is contained in:
Maxim Kurnikov
2019-09-17 23:30:07 +03:00
committed by GitHub
parent 2b53fa5a1a
commit 813dd8cc1a
4 changed files with 9 additions and 35 deletions

View File

@@ -1,17 +1,16 @@
import datetime import datetime
from typing import Any, Dict, Optional, Sequence, Tuple, Type from typing import Any, Dict, Optional, Sequence, Tuple
from django.db import models
from django.http import HttpRequest, HttpResponse
from django.views.generic.base import View from django.views.generic.base import View
from django.views.generic.detail import BaseDetailView, SingleObjectTemplateResponseMixin from django.views.generic.detail import BaseDetailView, SingleObjectTemplateResponseMixin
from django.views.generic.list import MultipleObjectMixin, MultipleObjectTemplateResponseMixin from django.views.generic.list import MultipleObjectMixin, MultipleObjectTemplateResponseMixin
from django.db import models
from django.http import HttpRequest, HttpResponse
class YearMixin: class YearMixin:
year_format: str = ... year_format: str = ...
year: Optional[str] = ... year: Optional[str] = ...
kwargs: Dict[str, Any] = ...
request: HttpRequest = ...
def get_year_format(self) -> str: ... def get_year_format(self) -> str: ...
def get_year(self) -> str: ... def get_year(self) -> str: ...
def get_next_year(self, date: datetime.date) -> Optional[datetime.date]: ... def get_next_year(self, date: datetime.date) -> Optional[datetime.date]: ...
@@ -20,8 +19,6 @@ class YearMixin:
class MonthMixin: class MonthMixin:
month_format: str = ... month_format: str = ...
month: Optional[str] = ... month: Optional[str] = ...
request: HttpRequest = ...
kwargs: Dict[str, Any] = ...
def get_month_format(self) -> str: ... def get_month_format(self) -> str: ...
def get_month(self) -> str: ... def get_month(self) -> str: ...
def get_next_month(self, date: datetime.date) -> Optional[datetime.date]: ... def get_next_month(self, date: datetime.date) -> Optional[datetime.date]: ...
@@ -30,8 +27,6 @@ class MonthMixin:
class DayMixin: class DayMixin:
day_format: str = ... day_format: str = ...
day: Optional[str] = ... day: Optional[str] = ...
request: HttpRequest = ...
kwargs: Dict[str, Any] = ...
def get_day_format(self) -> str: ... def get_day_format(self) -> str: ...
def get_day(self) -> str: ... def get_day(self) -> str: ...
def get_next_day(self, date: datetime.date) -> Optional[datetime.date]: ... def get_next_day(self, date: datetime.date) -> Optional[datetime.date]: ...
@@ -40,8 +35,6 @@ class DayMixin:
class WeekMixin: class WeekMixin:
week_format: str = ... week_format: str = ...
week: Optional[str] = ... week: Optional[str] = ...
request: HttpRequest = ...
kwargs: Dict[str, Any] = ...
def get_week_format(self) -> str: ... def get_week_format(self) -> str: ...
def get_week(self) -> str: ... def get_week(self) -> str: ...
def get_next_week(self, date: datetime.date) -> Optional[datetime.date]: ... def get_next_week(self, date: datetime.date) -> Optional[datetime.date]: ...
@@ -50,7 +43,6 @@ class WeekMixin:
class DateMixin: class DateMixin:
date_field: Optional[str] = ... date_field: Optional[str] = ...
allow_future: bool = ... allow_future: bool = ...
model: Optional[Type[models.Model]] = ...
def get_date_field(self) -> str: ... def get_date_field(self) -> str: ...
def get_allow_future(self) -> bool: ... def get_allow_future(self) -> bool: ...
def uses_datetime_field(self) -> bool: ... def uses_datetime_field(self) -> bool: ...

View File

@@ -1,4 +1,4 @@
from typing import Any, Dict, Optional, Type from typing import Any, Optional, Type
from django.views.generic.base import ContextMixin, TemplateResponseMixin, View from django.views.generic.base import ContextMixin, TemplateResponseMixin, View
@@ -6,28 +6,23 @@ from django.db import models
from django.http import HttpRequest, HttpResponse from django.http import HttpRequest, HttpResponse
class SingleObjectMixin(ContextMixin): class SingleObjectMixin(ContextMixin):
model: Optional[Type[models.Model]] = ... model: Type[models.Model] = ...
queryset: Optional[models.query.QuerySet] = ... queryset: models.query.QuerySet = ...
slug_field: str = ... slug_field: str = ...
context_object_name: Optional[str] = ... context_object_name: str = ...
slug_url_kwarg: str = ... slug_url_kwarg: str = ...
pk_url_kwarg: str = ... pk_url_kwarg: str = ...
query_pk_and_slug: bool = ... query_pk_and_slug: bool = ...
object: models.Model = ...
kwargs: Dict[str, Any] = ...
def get_object(self, queryset: Optional[models.query.QuerySet] = ...) -> models.Model: ... def get_object(self, queryset: Optional[models.query.QuerySet] = ...) -> models.Model: ...
def get_queryset(self) -> models.query.QuerySet: ... def get_queryset(self) -> models.query.QuerySet: ...
def get_slug_field(self) -> str: ... def get_slug_field(self) -> str: ...
def get_context_object_name(self, obj: Any) -> Optional[str]: ... def get_context_object_name(self, obj: Any) -> Optional[str]: ...
class BaseDetailView(SingleObjectMixin, View): class BaseDetailView(SingleObjectMixin, View):
def render_to_response(self, context: Dict[str, Any], **response_kwargs: Any) -> HttpResponse: ...
def get(self, request: HttpRequest, *args: Any, **kwargs: Any) -> HttpResponse: ... def get(self, request: HttpRequest, *args: Any, **kwargs: Any) -> HttpResponse: ...
class SingleObjectTemplateResponseMixin(TemplateResponseMixin): class SingleObjectTemplateResponseMixin(TemplateResponseMixin):
template_name_field: Optional[str] = ... template_name_field: Optional[str] = ...
template_name_suffix: str = ... template_name_suffix: str = ...
model: Optional[Type[models.Model]] = ...
object: models.Model = ...
class DetailView(SingleObjectTemplateResponseMixin, BaseDetailView): ... class DetailView(SingleObjectTemplateResponseMixin, BaseDetailView): ...

View File

@@ -1,6 +1,5 @@
from typing import Any, Callable, Dict, Optional, Sequence, Type, Union from typing import Any, Callable, Dict, Optional, Sequence, Type, Union
from django.db import models
from django.forms.forms import BaseForm from django.forms.forms import BaseForm
from django.http import HttpRequest, HttpResponse from django.http import HttpRequest, HttpResponse
from django.views.generic.base import ContextMixin, TemplateResponseMixin, View from django.views.generic.base import ContextMixin, TemplateResponseMixin, View
@@ -12,8 +11,6 @@ class FormMixin(ContextMixin):
form_class: Optional[Type[BaseForm]] = ... form_class: Optional[Type[BaseForm]] = ...
success_url: Optional[Union[str, Callable[..., Any]]] = ... success_url: Optional[Union[str, Callable[..., Any]]] = ...
prefix: Optional[str] = ... prefix: Optional[str] = ...
request: HttpRequest = ...
def render_to_response(self, context: Dict[str, Any], **response_kwargs: object) -> HttpResponse: ...
def get_initial(self) -> Dict[str, Any]: ... def get_initial(self) -> Dict[str, Any]: ...
def get_prefix(self) -> Optional[str]: ... def get_prefix(self) -> Optional[str]: ...
def get_form_class(self) -> Type[BaseForm]: ... def get_form_class(self) -> Type[BaseForm]: ...
@@ -27,8 +24,6 @@ class ModelFormMixin(FormMixin, SingleObjectMixin):
fields: Optional[Union[Sequence[str], Literal["__all__"]]] = ... fields: Optional[Union[Sequence[str], Literal["__all__"]]] = ...
class ProcessFormView(View): class ProcessFormView(View):
def render_to_response(self, context: Dict[str, Any], **response_kwargs: Any) -> HttpResponse: ...
def get_context_data(self, **kwargs: Any) -> Dict[str, Any]: ...
def get(self, request: HttpRequest, *args: str, **kwargs: Any) -> HttpResponse: ... def get(self, request: HttpRequest, *args: str, **kwargs: Any) -> HttpResponse: ...
def post(self, request: HttpRequest, *args: str, **kwargs: Any) -> HttpResponse: ... def post(self, request: HttpRequest, *args: str, **kwargs: Any) -> HttpResponse: ...
def put(self, *args: str, **kwargs: Any) -> HttpResponse: ... def put(self, *args: str, **kwargs: Any) -> HttpResponse: ...
@@ -40,11 +35,8 @@ class CreateView(SingleObjectTemplateResponseMixin, BaseCreateView): ...
class BaseUpdateView(ModelFormMixin, ProcessFormView): ... class BaseUpdateView(ModelFormMixin, ProcessFormView): ...
class UpdateView(SingleObjectTemplateResponseMixin, BaseUpdateView): ... class UpdateView(SingleObjectTemplateResponseMixin, BaseUpdateView): ...
_object = object
class DeletionMixin: class DeletionMixin:
success_url: Optional[str] = ... success_url: Optional[str] = ...
object: models.Model = ...
def post(self, request: HttpRequest, *args: str, **kwargs: Any) -> HttpResponse: ... def post(self, request: HttpRequest, *args: str, **kwargs: Any) -> HttpResponse: ...
def delete(self, request: HttpRequest, *args: str, **kwargs: Any) -> HttpResponse: ... def delete(self, request: HttpRequest, *args: str, **kwargs: Any) -> HttpResponse: ...
def get_success_url(self) -> str: ... def get_success_url(self) -> str: ...

View File

@@ -1,4 +1,4 @@
from typing import Any, Dict, Optional, Sequence, Tuple, Type from typing import Any, Optional, Sequence, Tuple, Type
from django.core.paginator import Paginator from django.core.paginator import Paginator
from django.db.models.query import QuerySet, _BaseQuerySet from django.db.models.query import QuerySet, _BaseQuerySet
@@ -17,9 +17,6 @@ class MultipleObjectMixin(ContextMixin):
paginator_class: Type[Paginator] = ... paginator_class: Type[Paginator] = ...
page_kwarg: str = ... page_kwarg: str = ...
ordering: Sequence[str] = ... ordering: Sequence[str] = ...
request: HttpRequest = ...
kwargs: Dict[str, Any] = ...
object_list: QuerySet = ...
def get_queryset(self) -> QuerySet: ... def get_queryset(self) -> QuerySet: ...
def get_ordering(self) -> Sequence[str]: ... def get_ordering(self) -> Sequence[str]: ...
def paginate_queryset(self, queryset: _BaseQuerySet, page_size: int) -> Tuple[Paginator, int, QuerySet, bool]: ... def paginate_queryset(self, queryset: _BaseQuerySet, page_size: int) -> Tuple[Paginator, int, QuerySet, bool]: ...
@@ -32,11 +29,9 @@ class MultipleObjectMixin(ContextMixin):
def get_context_object_name(self, object_list: _BaseQuerySet) -> Optional[str]: ... def get_context_object_name(self, object_list: _BaseQuerySet) -> Optional[str]: ...
class BaseListView(MultipleObjectMixin, View): class BaseListView(MultipleObjectMixin, View):
def render_to_response(self, context: Dict[str, Any], **response_kwargs: Any) -> HttpResponse: ...
def get(self, request: HttpRequest, *args: Any, **kwargs: Any) -> HttpResponse: ... def get(self, request: HttpRequest, *args: Any, **kwargs: Any) -> HttpResponse: ...
class MultipleObjectTemplateResponseMixin(TemplateResponseMixin): class MultipleObjectTemplateResponseMixin(TemplateResponseMixin):
template_name_suffix: str = ... template_name_suffix: str = ...
object_list: QuerySet = ...
class ListView(MultipleObjectTemplateResponseMixin, BaseListView): ... class ListView(MultipleObjectTemplateResponseMixin, BaseListView): ...