123 lines
4.1 KiB
Python
123 lines
4.1 KiB
Python
from __future__ import unicode_literals
|
|
|
|
from django import forms
|
|
from django.forms.formsets import formset_factory
|
|
from django.utils.translation import ugettext_lazy as _
|
|
|
|
from .models import EventSubscription, ObjectEventSubscription
|
|
|
|
|
|
class EventTypeUserRelationshipForm(forms.Form):
|
|
namespace = forms.CharField(
|
|
label=_('Namespace'), required=False,
|
|
widget=forms.TextInput(attrs={'readonly': 'readonly'})
|
|
)
|
|
label = forms.CharField(
|
|
label=_('Label'), required=False,
|
|
widget=forms.TextInput(attrs={'readonly': 'readonly'})
|
|
)
|
|
subscription = forms.ChoiceField(
|
|
label=_('Subscription'),
|
|
widget=forms.RadioSelect(), choices=(
|
|
('none', _('No')),
|
|
('subscribed', _('Subscribed')),
|
|
)
|
|
)
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super(EventTypeUserRelationshipForm, self).__init__(
|
|
*args, **kwargs
|
|
)
|
|
|
|
self.fields['namespace'].initial = self.initial['stored_event_type'].namespace
|
|
self.fields['label'].initial = self.initial['stored_event_type'].label
|
|
|
|
subscription = EventSubscription.objects.get_for(
|
|
stored_event_type=self.initial['stored_event_type'],
|
|
user=self.initial['user'],
|
|
)
|
|
|
|
if subscription.exists():
|
|
self.fields['subscription'].initial = 'subscribed'
|
|
else:
|
|
self.fields['subscription'].initial = 'none'
|
|
|
|
def save(self):
|
|
subscription = EventSubscription.objects.get_for(
|
|
stored_event_type=self.initial['stored_event_type'],
|
|
user=self.initial['user'],
|
|
)
|
|
|
|
if self.cleaned_data['subscription'] == 'none':
|
|
subscription.delete()
|
|
elif self.cleaned_data['subscription'] == 'subscribed':
|
|
if not subscription.exists():
|
|
EventSubscription.objects.create_for(
|
|
stored_event_type=self.initial['stored_event_type'],
|
|
user=self.initial['user']
|
|
)
|
|
|
|
|
|
EventTypeUserRelationshipFormSet = formset_factory(
|
|
EventTypeUserRelationshipForm, extra=0
|
|
)
|
|
|
|
|
|
class ObjectEventTypeUserRelationshipForm(forms.Form):
|
|
namespace = forms.CharField(
|
|
label=_('Namespace'), required=False,
|
|
widget=forms.TextInput(attrs={'readonly': 'readonly'})
|
|
)
|
|
label = forms.CharField(
|
|
label=_('Label'), required=False,
|
|
widget=forms.TextInput(attrs={'readonly': 'readonly'})
|
|
)
|
|
subscription = forms.ChoiceField(
|
|
label=_('Subscription'),
|
|
widget=forms.RadioSelect(), choices=(
|
|
('none', _('No')),
|
|
('subscribed', _('Subscribed')),
|
|
)
|
|
)
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super(ObjectEventTypeUserRelationshipForm, self).__init__(
|
|
*args, **kwargs
|
|
)
|
|
|
|
self.fields['namespace'].initial = self.initial['stored_event_type'].namespace
|
|
self.fields['label'].initial = self.initial['stored_event_type'].label
|
|
|
|
subscription = ObjectEventSubscription.objects.get_for(
|
|
obj=self.initial['object'],
|
|
stored_event_type=self.initial['stored_event_type'],
|
|
user=self.initial['user'],
|
|
)
|
|
|
|
if subscription.exists():
|
|
self.fields['subscription'].initial = 'subscribed'
|
|
else:
|
|
self.fields['subscription'].initial = 'none'
|
|
|
|
def save(self):
|
|
subscription = ObjectEventSubscription.objects.get_for(
|
|
obj=self.initial['object'],
|
|
stored_event_type=self.initial['stored_event_type'],
|
|
user=self.initial['user'],
|
|
)
|
|
|
|
if self.cleaned_data['subscription'] == 'none':
|
|
subscription.delete()
|
|
elif self.cleaned_data['subscription'] == 'subscribed':
|
|
if not subscription.exists():
|
|
ObjectEventSubscription.objects.create_for(
|
|
obj=self.initial['object'],
|
|
stored_event_type=self.initial['stored_event_type'],
|
|
user=self.initial['user']
|
|
)
|
|
|
|
|
|
ObjectEventTypeUserRelationshipFormSet = formset_factory(
|
|
ObjectEventTypeUserRelationshipForm, extra=0
|
|
)
|