TypeError: CheckNewsDateStatus() не принимает аргументов

Я пытаюсь обновить приложение django/mezzanine с python 2.7 до python 3.7. Можете ли вы помочь мне исправить ошибку ниже (CheckNewsDateStatus() takes no arguments)?

Похоже, что этот класс вообще не используется; если я просмотрю весь код, то совпадают только прикрепленные settings.py и middleware.py. Это что-то частично реализованное в django/mezzanine или это так, что весь класс может быть удален как ненужный?

Я не знаю, как планировалось работать с кодом, и я не знаю, использовалась ли эта функция вообще...

middlewary.py:

class CheckNewsDateStatus(object):
    def process_request(self, request):
        if '/uutinen/' in request.path:
            try:
                path_to_go_raw = request.path
                true_slug = path_to_go_raw.split('/uutinen/')[1:]
                news_obj = Uutinen.objects.get(slug=true_slug[0])
                now_utc = pytz.utc.localize(datetime.now())
                
                hel = pytz.timezone("Europe/Helsinki")
                foo = news_obj.publish_date.astimezone(hel)
                
                if foo.date() < now_utc.date() and news_obj.status == 2:
                    pass
                elif foo.date() == now_utc.date() and foo.time() < now_utc.time()  and news_obj.status == 2:
                    pass
                else:
                    if request.user.is_authenticated():
                        pass
                    elif news_obj.status == 1:
                        return HttpResponseNotFound('404')
                    else:
                        return HttpResponseNotFound('404')
            except:
                pass
                             
                    
            

settings.py:

# List of middleware classes to use. Order is important; in the request phase,
# these middleware classes will be applied in the order given, and in the
# response phase the middleware will be applied in reverse order.
MIDDLEWARE = (
    'page_types.middleware.SetDynamicSite',
#    'debug_toolbar.middleware.DebugToolbarMiddleware',
    "mezzanine.core.middleware.UpdateCacheMiddleware",
    "django.contrib.sessions.middleware.SessionMiddleware",
    #"django.middleware.locale.LocaleMiddleware",
    "statfi_search.middleware.locale.LocaleMiddleware",
    "django.contrib.auth.middleware.AuthenticationMiddleware",
    "django.middleware.common.CommonMiddleware",
    "django.middleware.csrf.CsrfViewMiddleware",
    "django.contrib.messages.middleware.MessageMiddleware",
    "mezzanine.core.request.CurrentRequestMiddleware",
    "mezzanine.core.middleware.RedirectFallbackMiddleware",
    "mezzanine.core.middleware.TemplateForDeviceMiddleware",
    "mezzanine.core.middleware.TemplateForHostMiddleware",
    "mezzanine.core.middleware.AdminLoginInterfaceSelectorMiddleware",
    "mezzanine.core.middleware.SitePermissionMiddleware",
    # Uncomment the following if using any of the SSL settings:
    # "mezzanine.core.middleware.SSLRedirectMiddleware",
    "mezzanine.pages.middleware.PageMiddleware",
    "mezzanine.core.middleware.FetchFromCacheMiddleware",
    'page_types.middleware.RedirectMiddleware',
    'page_types.middleware.CheckNewsDateStatus',
)

Поскольку вы используете Django 2.2, ваш класс Middleware должен принимать аргумент get_response:

вы должны определить свой класс следующим образом.

class CheckNewsDateStatus(object):
    def __init__(self, get_response):
        self.get_response = get_response 

    def process_request(self, request):
        ....

Кроме того, в Python3+ нет необходимости писать (object) при определении класса.

<
Вернуться на верх