Completed
Push — master ( 08e703...054cd3 )
by Fox
01:39
created

activated_services()   A

Complexity

Conditions 3

Size

Total Lines 18

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 1 Features 0
Metric Value
cc 3
c 1
b 1
f 0
dl 0
loc 18
rs 9.4285
1
from django import forms
2
from django.forms import TextInput, PasswordInput
3
from django.utils.translation import ugettext_lazy as _
4
5
# trigger happy
6
from django_th.models import User, UserService, \
7
    ServicesActivated, TriggerService
8
9
10
class TriggerServiceForm(forms.ModelForm):
11
12
    """
13
        Form to edit the description
14
    """
15
    class Meta:
16
17
        """
18
            meta to add/override anything we need
19
        """
20
        model = TriggerService
21
        exclude = ['provider', 'consumer', 'user', 'date_triggered',
22
                   'date_created', 'status']
23
        widgets = {
24
            'description': TextInput(attrs={'class': 'form-control'}),
25
        }
26
27
28
class UserServiceForm(forms.ModelForm):
29
30
    """
31
        Form to deal with my own activated service
32
    """
33
34
    def __init__(self, *args, **kwargs):
35
        super(UserServiceForm, self).__init__(*args, **kwargs)
36
        self.fields['token'] = forms.CharField(required=False)
37
        self.fields['name'].choices = activated_services(self.initial['user'])
38
        self.fields['name'].widget.attrs['class'] = 'form-control'
39
40
    def save(self, user=None):
41
        self.myobject = super(UserServiceForm, self).save(commit=False)
42
        self.myobject.user = user
43
        self.myobject.save()
44
45
    def clean(self):
46
        cleaned_data = super(UserServiceForm, self).clean()
47
        sa = ServicesActivated.objects.get(name=cleaned_data.get('name'))
48
        if sa.auth_required and sa.self_hosted:
49
            if cleaned_data.get('host') == '' or \
50
               cleaned_data.get('username') == '' or \
51
               cleaned_data.get('password') == '' or \
52
               cleaned_data.get('client_id') == '' or \
53
               cleaned_data.get('client_secret') == '':
54
                self.add_error(
55
                    'username', 'All the five fields are altogether mandatory')
56
            elif cleaned_data.get('host').endswith('/'):
57
                cleaned_data['host'] = cleaned_data['host'][:-1]
58
59
    class Meta:
60
61
        """
62
            meta to add/override anything we need
63
        """
64
        model = UserService
65
        exclude = ('user',)
66
        widgets = {
67
            'host': TextInput(attrs={'class': 'form-control'}),
68
            'username': TextInput(attrs={'class': 'form-control'}),
69
            'password': PasswordInput(attrs={'class': 'form-control'}),
70
            'client_id': TextInput(attrs={'class': 'form-control'}),
71
            'client_secret': TextInput(attrs={'class': 'form-control'}),
72
            'token': TextInput(attrs={'class': 'form-control'}),
73
        }
74
75
76
class LoginForm(forms.ModelForm):
77
78
    """
79
        Form to manage the login page
80
    """
81
    class Meta:
82
        model = User
83
        widgets = {
84
            'username': TextInput(attrs={'placeholder': _('Username')}),
85
            'password': PasswordInput(attrs={'placeholder': _('Password')}),
86
        }
87
        exclude = ()
88
89
90
def activated_services(user):
91
    """
92
        get the activated services added from the administrator
93
    """
94
    all_datas = ()
95
    data = ()
96
    services = ServicesActivated.objects.filter(status=1)
97
    for class_name in services:
98
        # only display the services that are not already used
99
        if UserService.objects.filter(name__exact=class_name.name,
100
                                      user__exact=user):
101
            continue
102
        # 2nd array position contains the name of the service
103
        else:
104
            data = (class_name.name,
105
                    class_name.name.rsplit('Service', 1)[1])
106
            all_datas = (data,) + all_datas
107
    return all_datas
108