1616
1717from workflows .models import Transition
1818
19- from redesign .person .models import Person
19+ from redesign .person .models import Person , Email
20+ from redesign .group .models import Role , RoleName
21+
2022
2123class RelatedWGForm (forms .Form ):
2224
@@ -197,7 +199,7 @@ def save(self):
197199 email = self .cleaned_data .get ('email' )
198200 if settings .USE_DB_REDESIGN_PROXY_CLASSES :
199201 try :
200- person = Person .objects .filter (email__address = email ).distinct ().get ()
202+ person = Person .objects .filter (email__address = email ).exclude ( user = None ). distinct ().get ()
201203 except Person .DoesNotExist :
202204 self .next_form = NotExistDelegateForm (wg = self .wg , user = self .user , email = email , shepherd = self .shepherd )
203205 self .next_form .set_message ('doesnotexist' , 'There is no user with this email allowed to login to the system' )
@@ -229,8 +231,15 @@ def assign_shepherd(self, person):
229231 self .next_form .set_message ('success' , 'Shepherd assigned successfully' )
230232
231233 def create_delegate (self , person ):
232- (delegate , created ) = WGDelegate .objects .get_or_create (wg = self .wg ,
233- person = person )
234+ if settings .USE_DB_REDESIGN_PROXY_CLASSES :
235+ created = False
236+ e = Email .objects .get (address = self .cleaned_data .get ('email' ))
237+ if not Role .objects .filter (name = "delegate" , group = self .wg , email = e ):
238+ delegate , created = Role .objects .get_or_create (
239+ name = RoleName .objects .get (slug = "delegate" ), group = self .wg , email = e )
240+ else :
241+ (delegate , created ) = WGDelegate .objects .get_or_create (wg = self .wg ,
242+ person = person )
234243 if not created :
235244 self .set_message ('error' , 'The email belongs to a person who is already a delegate' )
236245 else :
@@ -251,11 +260,17 @@ def __init__(self, *args, **kwargs):
251260 if not self .email :
252261 self .email = self .data .get ('email' , None )
253262 self .fields ['email' ].initial = self .email
254- self .fields ['persons' ].choices = [(i .pk , unicode (i )) for i in PersonOrOrgInfo .objects .filter (emailaddress__address = self .email , iesglogin__isnull = False ).distinct ().order_by ('first_name' )]
263+ if settings .USE_DB_REDESIGN_PROXY_CLASSES :
264+ self .fields ['persons' ].choices = [(i .pk , unicode (i )) for i in Person .objects .filter (email__address = self .email ).exclude (user = None ).distinct ().order_by ('name' )]
265+ else :
266+ self .fields ['persons' ].choices = [(i .pk , unicode (i )) for i in PersonOrOrgInfo .objects .filter (emailaddress__address = self .email , iesglogin__isnull = False ).distinct ().order_by ('first_name' )]
255267
256268 def save (self ):
257269 person_id = self .cleaned_data .get ('persons' )
258- person = PersonOrOrgInfo .objects .get (pk = person_id )
270+ if settings .USE_DB_REDESIGN_PROXY_CLASSES :
271+ person = Person .objects .get (pk = person_id )
272+ else :
273+ person = PersonOrOrgInfo .objects .get (pk = person_id )
259274 if self .shepherd :
260275 self .assign_shepherd (person )
261276 else :
@@ -312,8 +327,8 @@ def save(self):
312327 if settings .DEBUG :
313328 self .next_form .set_message ('warning' , 'Email was not sent cause tool is in DEBUG mode' )
314329 else :
315- email_list = self .get_email_list ()
316330 # this is ugly...
331+ email_list = self .get_email_list ()
317332 delegate = email_list [0 ]
318333 secretariat = email_list [1 ]
319334 wgchairs = email_list [2 :]
0 commit comments