Esempio n. 1
0
    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)
Esempio n. 2
0
    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)
Esempio n. 3
0
    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))