Project Description:
I am developing a small website on Django and need to establish a basic framework on which I can build additional applications and write testcases for them.
The core of the framwork consists of existing components.
1. Django - Web Framework
2. MySQL - Database
3. PyJamas - AJAX
4. Windmill - Testing
For this project I want to establish the minimal framework to implment a fully functional User Registration and Single Sign-on Open Auth System. That should allow users to login using their Yahoo, Google, etc IDs.
New users arriving at the website should be able to automatically establish/register a new profile on this webside by signing in through Google, Yahoo, etc. And the profile information should be fetched from these OpenAuth providers.
It should also be possible to associate multiple OpenAuths IDs to a single profile on this website so that they can decide to login through through anyone of the openid providers and still be associated with the same user profile localy. One of them must be the default Open auth provider for that profile.
I would like to use an existing implementation of openid support for Django as the basis for the development.
http://www.grenadepod.com/2009/11/22/using-openid-for-authentication-in-django/
The task would involve the following
1. Make sure the basic functionality at ttp://www.grenadepod.com/2009/11/22/using-openid-for-authentication-in-django/ works for fine on my webhosting at webfaction.com
2. Make sure it works with Django south and deploy it as step one.
3. Enhance the the above open source component to allow for multiple openids being associated to a single local user profile and and make sure Django-South Migrations work with it and can be smoothly upgraded downgraded.
4 New user on local website profile gets populated with all the profile information that can be fetched from the open id provider
5. Push the above envhancement/patch to the open source django openid repository.
6. Get Django Admin up and running
7. Write a small starting/welcome page with a minimal menu layout in Pyjamas to work with django backend. It should be a basic homepage with Pyjamas based simple AJAX page home page with a simple menu implemented, with login status and menus for updating/controling users profile information.
8. Write a Windmill testcases to show that all of the above functionality works.
9. Check in all these sources into my bitbucket.org repository
Acceptance Criteria:
1. Make sure the application can be deployed into webfaction.com from the bitbuck repository using my deployment script, being developed at http://shar.es/mtZM8
2. The application can be pushed through a testing and live deployment using the above script.
3. All of the following functionality works and has Windmill testcases to show that it does.
3.1 New user can login using any openId provider supported by the above plugin
3.2 New user local website profile gets populated with all the profile information that can be fetched from the open id provider
3.3 Subsequent login/logout of the subscriber works
3.4 User can securely, with password verification, associate additional openids with an existing local profile account
3.5 There is a basic simple AJAX page home page with a simple menu implemented, with login status and menus for updating/controling users profile information
3.6 Basic template colour scheme that comes with Django/PyJamas
4. I am provided with a set of positive and negative test cases written on windmill for all the above features and I can run them on my local installation and on my live website.