Update, April 2018: django-todo has been updated to version 2.0, with its first running test suite, live demo site, and full support for Django 2 / Python 3. Please see http://django-todo.org/.
django-todo is a multi-user, multi-group task management and assignment system for the Django web application framework.
Designed as a “pluggable” application ready to import into existing Django projects.
You must already have a login/authorization system installed and working in your project before installing django-todo.
django-todo supports drag and drop task prioritization, email notification to task assignees, search, and lots more. Feedback welcome.
The code is hosted on GitHub and can be downloaded or checked out via git. The package also includes a setup.py, and can be installed with pip.
Screenshots
These screenshots aren’t quite up to date, but are fairly close to the current version.
- Comments on tasks
- Styled with Bootstrap
- Adding a task – styled with bootstrap
- Permissions-aware
Good stuff!
Just what we where looking for – kind of. And built on Django is even better as we are looking at that platform for future development. Will install and feedback later in the week.
/J
Looks really good.
I am going to give it a try for my projects.
Thank you for sharing it
lzantal
Hey Scott,
Could we have the stylesheets that you’re using in the demos? I don’t think that it’s bundles with the source.
Cheers.
The stylesheets are there! They’re in media/todo/css. And the readme tells you how to attach them to your project.
App is great and we use it in a couple of projects!
Are you going to develop it further? No plans?
Hey Alexey – Thanks for the props! I actually do have a number of changes and improvements I’ve made to our production version… just need to find time to package up the changes and re-integrate. Now that I now there’s someone out there who cares, it gives me a bit of added incentive 🙂 So stay tuned.
Any particular features you’d like to see in it?
For anyone following the comments on this – I’ve finally updated django-todo with bug fixes and new features, made it pip installable, and have moved the codebase to github:
http://github.com/shacker/django-todo
Hey, thanks for your project! I’ m in little trouble with it… I cannot add item to list directly, only through http://127.0.0.1:8000/admin/todo/item/
what can it be?
Nico, you’ll need to be more specific. You’ve got it wired up, templates working, etc. And you do get an item entry form, I assume. So what happens when you try to add an item – do you get any debug output?
when i try to add an item, the form appears, i fill it, click “add item”, the form hides with no errors, no errors in console…
Hmm, that’s pretty mystifying. Have you renamed any form objects, or tweaked anything away from the defaults? If you put a print statement in the view that prints out the form object or its attributes, what do you get?
Sorry about this – I haven’t heard of this problem before, and I have the code in production on several sites, where it works fine.
shame on me! Sorry for dumb questions. I thought that there’s some JS problem. That was it actually. Date format you use is mm/dd/yyyy. My localized datepicker uses dd.mm.yyyy.
Thanks again…
Aha! Glad there was a logical explanation 🙂
This is my first day with django, so kindly bear my noob questions.
I followed the installation guide but when trying to access http://127.0.0.1:8000/todo/ I am getting:
Caught RuntimeError while rendering: maximum recursion depth exceeded while calling a Python object
Also, I am not sure where to add the 2 lines in the installation guide (7th) step:
To-do Lists
My Tasks
Right now, they are not anywhere in my djagno dirs.
The recursion error appeared right after I have edited templates in settings.py as:
TEMPLATE_DIRS = (
‘/path/to/project/todo/templates/todo’,
)
Other than this value, I get Template not found error.
Any help is highly appreciated and thanks in advance.
Nouga – My guess is that the runtime error comes from trying to extend the same template you’re working with (you didn’t show that part of the template code, so I’m guessing here).
The two links can go anywhere in your site templates you want – they just provide links into django-todo interfaces.
Thank you Scot for quick response, and apologies for late mine. I get to work with Python only on weekends..
There is some progress now but I still can’t use the todo app. Here is what happens:
1- From the admin interface I created a group called “coworkers”, a regular user named “nadal” and he belongs to the coworkers group.
2- From the admin as well I created a todo list called “coworkers todo list”
3- Whenever I try to access http://localhost/todo, I get the two links I added in my templates/base.html which are:
– To-do Lists
– My Tasks
4- Whenever I try to access any of them, the page simply reloads.
5- I check the terminal, and I find that I am receiving 200 OK http response!
[11/Dec/2011 18:21:46] “GET /todo/mine/ HTTP/1.1″ 200 68
*** I am not sure why this is happening, I suppose at this point I should see the todo app normally.
To make sure I can access the media, I placed an image under my media dir and viewed it from the browser. I was also able to view contents of:
{{MEDIA_URL}}/todo/css/styles.css
P.S. I did not copy todo templates into my media dir, instead I did symlink it as mentioned in the requirements page. May be this is the reason I still can not get the app to work? ***
Here is how my files look now:
1) mysite/urls.py
——————
from django.conf.urls.defaults import patterns, include, url
from django.conf import settings
…[snip]….
# todo
url(r’^todo/’, include(‘todo.urls’)),
# Uncomment the next lines to enable media:
)
if settings.DEBUG:
urlpatterns += patterns(”,
url(r’^media/(?P.*)$’, ‘django.views.static.serve’, {
‘document_root’: settings.MEDIA_ROOT,
}),
)
2) mysite/settings.py
———————-
TEMPLATE_DIRS = (
‘/home/angie/templates’,
)
INSTALLED_APPS = (
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.sites’,
‘django.contrib.messages’,
‘django.contrib.staticfiles’,
# Uncomment the next line to enable the admin:
‘django.contrib.admin’,
# Uncomment the next line to enable admin documentation:
‘django.contrib.admindocs’,
‘todo’,
)
MEDIA_ROOT = ‘/home/angie/media/’
MEDIA_URL = ‘/media/’
3) /home/angie/templates/base.html
—————————————
To-do Lists
My Tasks
Thanks for your time 🙂
Nouga – You say “the page simply reloads.” This indicates to me that the links are not actually linking to anything. If you view source on the page and check the hrefs, do they have anything in them?
Hi Scot,
The file base.html contains these without the extra spaces:
To-do Lists
My Tasks
Thanks for the bug report. I’m actually working on an update to the app now – will fix this while I”m in there.
Hello i got django-todo from github.
My project is base on django 1.5 so i’ve made some corrections
but i’m stiil in problem wtih :
date-keeper the js an css file
js/ui.datepicker.js and js/jquery-ui-1.7.1.custom.css are note presents …
And i do not ses what would be the page_heading block
Hi Bertrand –
datepicker and jquery are dependencies and are not included with django-todo – you’ll need to install them separately.
You can use the page_heading block however you like, or not at all.
Hi,
I’m a Django beginner and have set up the todo app. When I add any todo, the email to the recipients is not sent (the creator and the assigned to are different users), and I get a message saying “Task saved but mail not sent. Contact your administrator.”
When I tested the SMTP from the Django shell, the email got sent, so I’m sure the issue is not in the SMTP server. I also verified this by setting up a dummy SMTP Server and testing, but I still got the error. Please advice as to how I may resolve this issue.
Hmm. It definitely does work, and it sounds like your system is set up correctly, but something’s falling down. The code involved starts at https://github.com/shacker/django-todo/blob/master/todo/views.py#L202 and is pretty simple. To debug, I would start by going into that file in your installation and moving the send_mail line outside of the try/except block. That way you’ll actually see the exception being raised (I probably shouldn’t be swallowing the exception like that). Let us know what you find out!
Hi Shacker,
Thanks for this wonderful App. This is the app that I am looking for.
Actually, I am a novoice Django user and have been using web2py for most of the development.
I downloaded this skeleton template (https://github.com/arocks/edge) to fullfill existing application with authentication support. But, when I try to sync the database, I get the following error :
\ERRORS:
todo.Comment.author: (fields.E301) Field defines a relation with the model ‘auth
.User’, which has been swapped out.
HINT: Update the relation to point at ‘settings.AUTH_USER_MODEL’.
todo.Item.assigned_to: (fields.E301) Field defines a relation with the model ‘au
th.User’, which has been swapped out.
HINT: Update the relation to point at ‘settings.AUTH_USER_MODEL’.
todo.Item.created_by: (fields.E301) Field defines a relation with the model ‘aut
h.User’, which has been swapped out.
HINT: Update the relation to point at ‘settings.AUTH_USER_MODEL’.
At this point of time, I am only interested in using your application as a standalone application. Could you please help in running it as standalone, it would be helpful, if you can provide a reference to a skelton app which can be used to plugin your app and run it.
Thanks in advance,
sarbjit
Hi Sarbjit – I’m a bit confused by your question. What is web2py, what do you mean by “standalone”? It sounds like you’re not setting this up as a Django project but as something else. Can you clarify?
Hi Shacker,
Web2py is another Python framework for development just like Django.
So, here is what I am doing:
– I downloaded django-todo using pip in virtual env
Then I downloaded (https://github.com/arocks/edge) as a starting point for new django application (This is required since, it is mentioned that in order to use todo app, one must have an existing project with user login capability, this skelton project has allauth module included in it).
Then, I included the todo in installed app in my django skelton project and while syncing the db, i got the errors (mentioned in my last comment).
By standalone, I mean that the user can directly run the todo app without having to have an existing project configured with authentication.
It would be very helpful for the people who just want to use todo project, just download the project and run it.
In any case, I was able to proceed using a separate existing django project (with auth). But the look and feel was not good, looks like I missed something. I am still working on it.
Thanks for your response. 🙂
-Sarbjit
OK, I’m with you now. At first I thought you were saying you were trying to install todo within web2py or something.
Re standalone: It sounds like you mean you want me to package up todo with a requirements.txt that already includes django, and everything all integrated, etc. That’s not how things work in the Django world, with the rare exception of complete systems like Pinax. This is a re-usable app like 99% of all Django apps, meant to become a feature of the project (site) you’re building.
Django development consists of:
1) Start a project
2a) Integrate 3rd party apps as features of that project
or
2b) Build your own apps to become features of that project.
As for look and feel, that’s entirely up to you. The project used to include some CSS but it just causes problems by making assumptions about the CSS of your project. I removed it all to make integration easier.
Now to your specific problem: It sounds like “Edge” employs a custom User object rather than the default one that comes with Django. So to be compatible with systems like that, todo should point to settings.AUTH_USER_MODEL instead of to User. Fair enough – I’ll fix that in the future. In the meantime, you can do it yourself (and make a pull request please!) or fork todo. Sorry I don’t have an immediate fix for you – this is the first time anyone has pointed this out in 8 years (so it’s a rare situation).
In other words, yes it’s a “problem” with todo, but it wouldn’t have come up if you had just created a simple starter Django project or integrated this with an existing project you already had running.
Thanks for the app. I am struggling with the SITE ID errors. I believe that this is in order to send email. What about if I would like to send notifications instead email? Can you help to know what do I need to modify?
Thank you
Hmm. Have you defined a site in Sites? What is the error you’re seeing? And what do you mean by “notifications?” Like SMS? For that you want to integrate a library like Twilio.