def save(self, force_insert = False, force_update = False, init = False, safe = False): if hasattr(self, 'account'): self.account = str(self.account) if self.pk: if self.prefix == 'p': old = Pupil.objects.get(id = self.id) if self.prefix == 't': old = Teacher.objects.get(id = self.id) if self.prefix == 's': old = Staff.objects.get(id = self.id) if self.school.gate_use: from gate import Gate gate = Gate(self.school.gate_url, self.school.gate_id, self.school.gate_password) if self.prefix == 'p': if not self.gate_id: if len(self.phone_mother) > 5: self.gate_id = gate.addUser(self.phone_mother) if len(self.phone_father) > 5: self.gate_id = gate.addUser(self.phone_father) else: if old.phone_mother != self.phone_mother: gate.changePhone(self.gate_id, self.phone_mother) if old.phone_father != self.phone_father: gate.changePhone(self.gate_id, self.phone_father) if not self.pk or init: if self.school.gapps_use: import gdata.apps.service self.username = self.gen_username() service = gdata.apps.service.AppsService(email = self.school.gapps_login, domain = self.school.gapps_domain, password = self.school.gapps_password) service.ProgrammaticLogin() try: service.CreateUser(self.username, self.last_name, self.first_name, '123456789', quota_limit=1000) except gdata.apps.service.AppsForYourDomainException, (error, ): self.set_password('123456789') super(Clerk, self).save(force_insert, force_update) raise gdata.apps.service.AppsForYourDomainException(error) else: from random import randint username = self.school.prefix + str(randint(10**6, 9999999)) while User.objects.filter(username = username).count()!=0: username = '******' + str(randint(10**6, 9999999)) self.username = username self.set_password("123456789") super(Clerk, self).save(force_insert, force_update)