@@ -139,3 +139,40 @@ def done(self, request, cleaned_data):
139139 email = chair_info ['email_obj' ])
140140
141141 return HttpResponseRedirect (reverse ('edit_chair' , kwargs = {'year' : self .year }))
142+
143+
144+ class EditPublicKeyForm (forms .Form ):
145+
146+ public_key = forms .CharField (label = "Public Key" , widget = forms .Textarea )
147+
148+
149+ class EditPublicKeyFormPreview (FormPreview ):
150+ form_template = 'nomcom/edit_publickey.html'
151+ preview_template = 'nomcom/edit_publickey_preview.html'
152+
153+ def __call__ (self , request , * args , ** kwargs ):
154+ year = kwargs ['year' ]
155+ group = get_object_or_404 (NomComGroup ,
156+ acronym__icontains = year ,
157+ state__slug = 'active' )
158+ is_group_chair = group .is_chair (request .user )
159+ if not is_group_chair :
160+ return HttpResponseForbidden ("Must be group chair" )
161+
162+ self .state ['group' ] = group
163+ self .group = group
164+ self .year = year
165+
166+ return super (EditPublicKeyFormPreview , self ).__call__ (request , * args , ** kwargs )
167+
168+ def parse_params (self , * args , ** kwargs ):
169+
170+ if self .group .public_key :
171+ self .form .base_fields ['public_key' ].initial = self .group .public_key
172+
173+ def done (self , request , cleaned_data ):
174+ public_key = cleaned_data ['public_key' ]
175+ if public_key :
176+ self .group .public_key = public_key
177+ self .group .save ()
178+ return HttpResponseRedirect (reverse ('edit_publickey' , kwargs = {'year' : self .year }))
0 commit comments