Package: django-mailchimp-forms
================Django-mailchimp-forms================Django-mailchimp-forms is a django tool that helps with the integration of webapplications with Mailchimp. With django-mailchimp-forms you will be able to add andremove user emails to a mailchimp mailing list with minimum effort.Installing==========You can install the latest version of django-mailchimp-forms running``pip install django-mailchimp-forms`` or ``easy_install django-mailchimp-forms``You can also install the `in-development version`_ of django-mailchimp-forms with``pip install django-mailchimp-forms==dev`` or ``easy_install django-mailchimp-forms==dev``... _in-development version: http://code.indifex.com/django-mailchimp-forms/get/tip.tar.gz#egg=django-mailchimp-forms-devFeatures========* utility methods that use the module chimpy to communicate with mailchimp.comand add/remove emails* form wrappers to enhance your registration form so that it contains a'newsletter' checkbox and registers the user's email to mailchimp.com on save()* views that logged-in users can navigate to register/unregister themselvedfrom the mailing listForm enhancement================In order to be able to register users with newsletter functionality usingdjango-mailchimp-forms you have 3 options:1. The default form:The default form contains fields for: *username*, *password*, *passwordconfirmation*, *email*, *newsletter*. (In fact it is adjango.contrib.auth.forms.UserCreationForm wrapped with the django-mailchimp-formsform wrapper).It is used in a view like this:::from django_mailchimp_forms.forms import ChimpyFormdef register(request):if request.method == 'POST':form = ChimpyForm(request.POST)if form.is_valid():newuser = form.save()return HttpResponseRedirect('profile_page', user_id=newuser.id)else:form = ChimpyForm()return render_to_response('register.html', {'form': form})2. The form class wrapper:You can use this if you have already defined a form for registration or if youare currently using a registration form from another django app(django-registration, django-userprofile, etc). The only requirement of theinitial form is that it defines a 'save' method that creates and returns thenewly created User instance.::from registration import RegistrationFormfrom django_mailchimp_forms.forms import chimpy_form_class_wrapperform_class = chimpy_form_class_wrapper(RegistrationForm)def register(request):if request.method == 'POST':form = form_class(request.POST)if form.is_valid():newuser = form.save()return HttpResponseRedirect('profile_page', user_id=newuser.id)else:form = form_class()return render_to_response('register.html', {'form': form})3. The form instance wrapper:If you are already use a form instance you can 'enhance' it as well withnewsletter capabilities. Note: the wrapper function takes a second optional'data' argument that should be the POST dictionary in case the form is supposedto be bound to post data.::from registration import RegistrationFormfrom django_mailchimp_forms import chimpy_form_instance_wrapperdef register(request):if request.method == 'POST':form = RegistrationForm(request.POST)form = chimpy_form_instance_wrapper(form, request.POST)if form.is_valid():newuser = form.save()return HttpResponseRedirect('profile_page', user_id=newuser.id)else:form = form_class()form = chimpy_form_instance_wrapper(form)return render_to_response('register.html', {'form': form})Views=====There are 2 views, one to register a user to a mailing list and one tounregister. The views require HTTP POST request methods and support both AJAXand non-AJAX requests. In the case of an AJAX request, the view will return aJSON string with 'success'(boolean) and 'message'(string) attributes while inthe case of a non-AJAX request, the view will redirect to the path designatedby the 'next' GET variable and an appropriate message will be added to therelevant user's message set.