def full_clean(self, *args, **kw): """Set the `name` field of this person. This field is visible in the Partner's detail but not in the Person's detail and serves for sorting when selecting a Partner. It also serves for quick search on Persons. """ name = join_words(self.last_name, self.first_name) if name: self.name = name else: for k, v in list(name2kw(self.name).items()): setattr(self, k, v) # self.last_name = self.name super(Person, self).full_clean(*args, **kw)
def applydata(self, obj, data, **mapper): mapper.update(id="IDPAR", remarks="MEMO", bank_account1="COMPTE1", bank_account2="COMPTE2") ADR_applydata(obj, data) # ,**mapper) # ~ kw.update(street2kw(join_words(data['RUE'], store_date(data, obj, "DATCREA", "created") if data.has_key("LANGUE"): obj.language = isolang(data["LANGUE"]) # ~ dblogger.info("20111223 %r",data) if data.has_key("ATTRIB"): # ~ obj.newcomer = ("N" in data['ATTRIB']) # ~ obj.is_obsolete = ("A" in data['ATTRIB'] or "W" in data['ATTRIB']) obj.is_obsolete = "W" in data["ATTRIB"] if issubclass(obj.__class__, Person): # ~ mapper.update(title='ALLO') title = data.get("ALLO", "") if title in ("Herr", "Herrn", "Frau", u"Fräulein", "Madame", "Monsieur"): title = "" obj.title = title if data.has_key("FIRME"): for k, v in name2kw(data["FIRME"]).items(): setattr(obj, k, v) if data.has_key("NAME2"): setattr(obj, "addr1", data["NAME2"]) if obj.__class__ is Client: par2client(data, obj) mapper.update(gesdos_id="NB1") if data.has_key("NB2"): obj.national_id = data["NB2"] # ~ if obj.national_id: # ~ if not is_valid_ssin(obj.national_id): # ~ dblogger.info("%s : invalid SSIN %s",dd.obj2str(obj),obj.national_id) # ~ obj.national_id = None # ~ else 20121108: # ~ obj.national_id = str(obj.id) # ~ if obj.is_deprecated: # ~ obj.national_id += ' (A)' if data.has_key("ATTRIB") and "N" in data["ATTRIB"]: obj.client_state = pcsw.ClientStates.newcomer elif data["IDPRT"] == "I": obj.client_state = pcsw.ClientStates.former # ~ else: obj.client_state = pcsw.ClientStates.coached # ~ elif obj.national_id and is_valid_ssin(obj.national_id): # ~ obj.client_state = pcsw.ClientStates.coached # ~ else: # ~ obj.client_state = pcsw.ClientStates.invalid # ~ if data.has_key('NB1'): # ~ obj.gesdos_id = data['NB1'] # ~ if not obj.national_id: # ~ obj.national_id = str() if data.has_key("IDUSR"): username = settings.TIM2LINO_USERNAME(data["IDUSR"]) if username: # ~ print 20130222, username u = users.User.get_by_username(username) # ~ u = users.User.objects.get(username=username) """ typical cases: - imported client has been assigned a coach in Lino, then filled IDUSR and removed PARATTR_N in TIM """ else: u = None if obj.pk is None: # must pre-save the client here to save related # coachings obj.save() try: coaching = pcsw.Coaching.objects.get(client=obj, primary=True) except pcsw.Coaching.DoesNotExist, e: try: coaching = pcsw.Coaching.objects.get(client=obj, user=u, end_date__isnull=True) watcher = ChangeWatcher(coaching) coaching.primary = True coaching.save() watcher.send_update(REQUEST) # ~ watcher.log_diff(REQUEST) except pcsw.Coaching.DoesNotExist, e: if u is not None: coaching = pcsw.Coaching( client=obj, primary=True, user=u, type=u.coaching_type, start_date=obj.created ) coaching.save() dd.on_ui_created.send(sender=coaching, request=REQUEST) # ~ changes.log_create(REQUEST,coaching) except Exception, e: raise Exception("More than one active coaching for %r by %r" % (obj, u)) except Exception, e: raise Exception("More than one primary coaching for %r : %s" % (obj, e))