~devcamcar/django-nova/improve_error_handling

« back to all changes in this revision

Viewing changes to src/django_nova/forms.py

  • Committer: Devin Carlen
  • Date: 2011-01-16 03:48:48 UTC
  • mfrom: (3.1.1 fix_project_roles)
  • Revision ID: devin.carlen@gmail.com-20110116034848-iis7zfo4eitrtsxn
MergedĀ lp:~devcamcar/django-nova/fix_project_roles

Show diffs side-by-side

added added

removed removed

Lines of Context:
78
78
        ('udp', 'udp'),
79
79
    )
80
80
 
 
81
@wrap_nova_error
 
82
def get_roles(project_roles=True):
 
83
    nova = get_nova_admin_connection()
 
84
    roles = nova.get_roles(project_roles=project_roles)
 
85
    return [(role.role, role.role) for role in roles]
 
86
 
 
87
@wrap_nova_error
 
88
def get_members(project):
 
89
    nova = get_nova_admin_connection()
 
90
    members = nova.get_project_members(project)
 
91
    return [str(user.memberId) for user in members]
 
92
 
 
93
@wrap_nova_error
 
94
def set_project_roles(projectname, username, roles):
 
95
    nova = get_nova_admin_connection()
 
96
    # hacky work around to interface correctly with multiple select form
 
97
    _remove_roles(projectname, username)
 
98
 
 
99
    for role in roles:
 
100
        nova.add_user_role(username, str(role), projectname)
 
101
 
 
102
def _remove_roles(project, username):
 
103
    nova = get_nova_admin_connection()
 
104
    userroles = nova.get_user_roles(username,  project)
 
105
    roles = [str(role.role) for role in userroles]
 
106
 
 
107
    for role in roles:
 
108
        if role == "developer":
 
109
            nova.remove_user_role(username, "developer", project)
 
110
        if role == "sysadmin":
 
111
            nova.remove_user_role(username, "sysadmin", project)
 
112
        if role == "netadmin":
 
113
            nova.remove_user_role(username, "netadmin", project)
 
114
 
81
115
 
82
116
class ProjectFormBase(forms.Form):
83
117
    def __init__(self, project, *args, **kwargs):
177
211
    manager = forms.ModelChoiceField(queryset=auth_models.User.objects.all(),
178
212
                                     label="Project Manager")
179
213
 
180
 
@wrap_nova_error
181
 
def get_roles(project_roles=True):
182
 
    nova = get_nova_admin_connection()
183
 
    roles = nova.get_roles(project_roles=project_roles)
184
 
    return [(role.role, role.role) for role in roles]
185
 
 
186
 
 
187
 
@wrap_nova_error
188
 
def get_members(project):
189
 
    nova = get_nova_admin_connection()
190
 
    members = nova.get_project_members(project)
191
 
    return [str(user.memberId) for user in members]
192
 
 
193
214
 
194
215
class GlobalRolesForm(forms.Form):
195
216
    role = forms.MultipleChoiceField(label='Roles', required=False)
202
223
class ProjectUserForm(forms.Form):
203
224
    role = forms.MultipleChoiceField(label='Roles', required=False)
204
225
 
205
 
    def __init__(self, *args, **kwargs):
 
226
    def __init__(self, project, user, *args, **kwargs):
206
227
        super(ProjectUserForm, self).__init__(*args, **kwargs)
207
 
        self.fields['role'].choices = get_roles(project_roles=False)
 
228
        self.project = project
 
229
        self.user = user
 
230
        self.fields['role'].choices = get_roles()
 
231
 
 
232
    def save(self):
 
233
        set_project_roles(self.project.projectname,
 
234
                          self.user.username,
 
235
                          self.cleaned_data['role'])
208
236
 
209
237
 
210
238
class AddProjectUserForm(forms.Form):