- Fix issue with jQuery is not defined; thanks to Alexkiro (https://github.com/alexkiro)
- fix duration_display()
- TaskCommand.run_task() now returns the ID of the created Task
- TaskCommand.run_task() now returns the created Task
- Prepare for Django 4.0
- TaskCommand now uses "-v" / "--verbosity" command line options to set task_verbosity
- optional "per task" verbosity level
- POSSIBLE INCOMPATIBLE CHANGE: verbosity levels has been shifted (set as documented in the README)
- Split Task model into TaskBase + TaskRQ
- Implement TaskThreaded (experimental)
- Drop Django1 and Python2.7
- cleanup
- Moved required imports inside Job.run() so it can be more easily replicated for any needed customization
- Simpler queues settings
- Revamped unit testing
- Cleanup
- Support for updating the tasks listing dynamically in the frontend
- Example provided for task_add_api() javascript helper
- POSSIBLY INCOMPATIBLE CHANGE: duration and duration_display are now methods rather then properties
- it traslation for UI messages
- Added optional "created_by" parameter to TaskCommand utility
- replace namespace "django.jQuery" with more generic "jQuery" in js helpers
- update example project
- unit tests added to "tasks" app in example project
- Quickstart revised in README
- Task.get_logger() is now publicly available
- restore compatibility with Django 1.11; upgrade rq and django-rq requirements
- tasks_info_api() optimized to use a single query
- Cleanup: remove redundant REJECTED status
- Update requirements (Django >= 2.0, django-rq>=2.0)
- Use exceptions.TaskError class when raising specific exceptions
- removed forgotten pdb.set_trace() in revoke_pending_tasks()
- cleanup
- cleanup
- log queue name
- Readme updated
- javascript helper views
- fix Task.set_progress(0)
- make sure fields are unique in TaskAdmin fieldsets
- unit tests verified with Python 2.7/3.6/3.7 and Django 1.10/2.0
- cleanup
- classify as production/stable
- Tested with Django 2.0 and Python 3.7
- Rename async to is_async to support Python 3.7
- DJANGOTASK_REJECT_IF_NO_WORKER_ACTIVE_FOR_QUEUE app setting added
- example cleanup
- API to create and run task via ajax
- TaskAdmin: postpone autorun to response_add() to have M2M task parameters (if any) ready
- Task.clone() supports M2M parameters
- property to change verbosity dinamically
- util revoke_pending_tasks() added
- DJANGOTASK_JOB_TRACE_ENABLED setting added to enable low level tracing in Job.run()
- Added missing import in utils.py
- cleanup: remove get_child() method being Task an abstract class
- fix: skip Task model (being abstract) in dump_all_tasks and delete_all_tasks management commands
- generic get_model_from_id() helper
- Job.on_complete() callback
- provide list of pending and completed task status
- INCOMPATIBLE CHANGE: Make model Task abstract for better listing performances
- redundant migrations removed
- convert request.body to string for Python3
- pretty print task params in log when task completes
- return verbose name as description
- description added to Task model
- More fixes
- log to field fix
- log quickview + view
- Optionally log to either file or text field
- Management commands to dump and delete all tasks
- search by task.id and task.job_id
- Keep track of task mode (sync or async)
- new class Job provided to share task-related logic among job funcs
- fixes for django 2.x
- hack for prepopulated_fields
- css fix
- minor fixes
- Deferred Task retrieval to avoid job vs. Task race condition
- Improved Readme
- superuser can view all tasks, while other users have access to their own tasks only
- js fix
- prevent task.failure_reason overflow
- app settings
- always start job from task.run() to prevent any possible race condition
- task.run(async) can now accept async=False
- javascript: use POST to retrieve tasks state for UI update to prevent URL length limit exceed
- Improved ui for TaskAdmin
- Fix unicode literals for Python3
- fixes for Django 1.10
- send_email management command example added
- Fix OneToOneRel import for Django < 1.9
- Polymorphic behaviour or Task.get_child() restored
- TaskCommand.run_task() renamed as TaskCommand.run_job()
- New TaskCommand.run_task() creates a Task, then runs it; this guarantees that something is traced even when background job will fail