Generated: Thu 2013-02-28 14:37 SGT
Source file: /Users/martin/Repos/django-subscribe/subscribe/forms.py
Stats: 24 executed, 0 missed, 3 excluded, 20 ignored
"""Forms for the ``subscribe`` app."""from django import formsfrom django.contrib.contenttypes.models import ContentTypefrom .models import Subscriptionclass SubscriptionCreateForm(forms.Form): def __init__(self, user, content_object, *args, **kwargs): self.user = user self.content_object = content_object self.ctype = ContentType.objects.get_for_model(self.content_object) super(SubscriptionCreateForm, self).__init__(*args, **kwargs) def _get_method_kwargs(self): """ Helper method. Returns kwargs needed to filter the correct object. Can also be used to create the correct object. """ method_kwargs = { 'user': self.user, 'content_type': self.ctype, 'object_id': self.content_object.pk, } return method_kwargs def save(self, *args, **kwargs): """Adds a subscription for the given user to the given object.""" method_kwargs = self._get_method_kwargs() try: subscription = Subscription.objects.get(**method_kwargs) except Subscription.DoesNotExist: subscription = Subscription.objects.create(**method_kwargs) return subscriptionclass SubscriptionDeleteForm(SubscriptionCreateForm): def save(self, *args, **kwargs): """Removes a subscription for the given user from the given object.""" method_kwargs = self._get_method_kwargs() try: subscription = Subscription.objects.get(**method_kwargs) except Subscription.DoesNotExist: return subscription.delete()