Skip to content

Cannot add new tasks in Django admin: '>=' not supported between instances of 'NoneType' and 'datetime.datetime' #276

@danjac

Description

@danjac

Describe the bug

Trying to add a new task via Django admin, I get this error:

TypeError at /admin/scheduler/task/add/

'>=' not supported between instances of 'NoneType' and 'datetime.datetime'

To Reproduce
Steps to reproduce the behavior:

  1. Go to /admin/scheduler/task/add/
  2. Set Task type to Repeatable, every 6 minutes, default queue
  3. Click save

Expected behavior
A clear and concise description of what you expected to happen.

New task is saved to database

Screenshots
If applicable, add screenshots to help explain your problem.

Image

Image

Desktop (please complete the following information):

  • OS: Fedora
  • python version: 3.13
  • django version: 5.2.3
  • django-tasks-scheduler >= 4.0.4

Additional context
Add any other context about the problem here.

Environment:


Request Method: POST
Request URL: http://localhost:8000/admin/scheduler/task/add/

Django Version: 5.2.3
Python Version: 3.13.3
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.humanize',
 'django.contrib.messages',
 'django.contrib.postgres',
 'django.contrib.sessions',
 'django.contrib.sitemaps',
 'django.contrib.sites',
 'django.contrib.staticfiles',
 'django.forms',
 'allauth',
 'allauth.account',
 'allauth.socialaccount',
 'allauth.socialaccount.providers.google',
 'csp',
 'django_htmx',
 'django_linear_migrations',
 'django_tailwind_cli',
 'django_typer',
 'django_version_checks',
 'health_check',
 'health_check.db',
 'health_check.cache',
 'health_check.contrib.migrations',
 'health_check.contrib.psutil',
 'health_check.contrib.redis',
 'heroicons',
 'scheduler',
 'template_partials',
 'widget_tweaks',
 'radiofeed.episodes',
 'radiofeed.feedparser',
 'radiofeed.podcasts',
 'radiofeed.users',
 'whitenoise.runserver_nostatic',
 'django_browser_reload',
 'debug_toolbar']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'whitenoise.middleware.WhiteNoiseMiddleware',
 'django_permissions_policy.PermissionsPolicyMiddleware',
 'django.contrib.sites.middleware.CurrentSiteMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.middleware.locale.LocaleMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.gzip.GZipMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'allauth.account.middleware.AccountMiddleware',
 'django_htmx.middleware.HtmxMiddleware',
 'csp.middleware.CSPMiddleware',
 'radiofeed.middleware.HtmxCacheMiddleware',
 'radiofeed.middleware.HtmxMessagesMiddleware',
 'radiofeed.middleware.HtmxRedirectMiddleware',
 'radiofeed.middleware.SearchMiddleware',
 'radiofeed.episodes.middleware.PlayerMiddleware',
 'django_browser_reload.middleware.BrowserReloadMiddleware',
 'debug_toolbar.middleware.DebugToolbarMiddleware']



Traceback (most recent call last):
  File "/home/danjac/Projects/radiofeed-app/.venv/lib64/python3.13/site-packages/django/core/handlers/exception.py", line 55, in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
  File "/home/danjac/Projects/radiofeed-app/.venv/lib64/python3.13/site-packages/django/core/handlers/base.py", line 197, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/danjac/Projects/radiofeed-app/.venv/lib64/python3.13/site-packages/django/contrib/admin/options.py", line 719, in wrapper
    return self.admin_site.admin_view(view)(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/danjac/Projects/radiofeed-app/.venv/lib64/python3.13/site-packages/django/utils/decorators.py", line 192, in _view_wrapper
    result = _process_exception(request, e)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/danjac/Projects/radiofeed-app/.venv/lib64/python3.13/site-packages/django/utils/decorators.py", line 190, in _view_wrapper
    response = view_func(request, *args, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/danjac/Projects/radiofeed-app/.venv/lib64/python3.13/site-packages/django/views/decorators/cache.py", line 80, in _view_wrapper
    response = view_func(request, *args, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/danjac/Projects/radiofeed-app/.venv/lib64/python3.13/site-packages/django/contrib/admin/sites.py", line 246, in inner
    return view(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/danjac/Projects/radiofeed-app/.venv/lib64/python3.13/site-packages/django/contrib/admin/options.py", line 1984, in add_view
    return self.changeform_view(request, None, form_url, extra_context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/danjac/Projects/radiofeed-app/.venv/lib64/python3.13/site-packages/django/utils/decorators.py", line 48, in _wrapper
    return bound_method(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/danjac/Projects/radiofeed-app/.venv/lib64/python3.13/site-packages/django/utils/decorators.py", line 192, in _view_wrapper
    result = _process_exception(request, e)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/danjac/Projects/radiofeed-app/.venv/lib64/python3.13/site-packages/django/utils/decorators.py", line 190, in _view_wrapper
    response = view_func(request, *args, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/danjac/Projects/radiofeed-app/.venv/lib64/python3.13/site-packages/django/contrib/admin/options.py", line 1843, in changeform_view
    return self._changeform_view(request, object_id, form_url, extra_context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/danjac/Projects/radiofeed-app/.venv/lib64/python3.13/site-packages/django/contrib/admin/options.py", line 1894, in _changeform_view
    self.save_model(request, new_object, form, not add)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/danjac/Projects/radiofeed-app/.venv/lib64/python3.13/site-packages/django/contrib/admin/options.py", line 1314, in save_model
    obj.save()
    ^^^^^^^^^^
  File "/home/danjac/Projects/radiofeed-app/.venv/lib64/python3.13/site-packages/scheduler/models/task.py", line 369, in save
    self._schedule()
    ^^^^^^^^^^^^^^^^
  File "/home/danjac/Projects/radiofeed-app/.venv/lib64/python3.13/site-packages/scheduler/models/task.py", line 348, in _schedule
    schedule_time = self._schedule_time()
                    ^^^^^^^^^^^^^^^^^^^^^
  File "/home/danjac/Projects/radiofeed-app/.venv/lib64/python3.13/site-packages/scheduler/models/task.py", line 277, in _schedule_time
    if self.scheduled_time >= _now:
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^

Exception Type: TypeError at /admin/scheduler/task/add/
Exception Value: '>=' not supported between instances of 'NoneType' and 'datetime.datetime'

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions