Ejemplo n.º 1
0
def pxs2person(row, person):

    kw = {}
    store(kw,
          card_number=row['CARDNUMBER'],
          card_type=row.get('CARDTYPE', ''),      # 20110110
          card_issuer=row.get('CARDISSUER', ''),      # 20110110
          noble_condition=row.get('NOBLEECOND', ''),      # 20110110
          birth_place=row.get('BIRTHPLACE', ''),
          remarks2=row.get('MEMO', ''),
          gender=convert_sex(row['SEXE'])
          )
    for k, v in kw.items():
        setattr(person, k, v)

    par2person(row, person)

    if row['IDMUT']:
        try:
            person.health_insurance = Company.objects.get(
                pk=ADR_id(row['IDMUT']))
        except ValueError, e:
            dblogger.warning(u"%s : invalid health_insurance %r",
                             obj2str(person), row['IDMUT'])
        except Company.DoesNotExist, e:
            dblogger.warning(u"%s : health_insurance %s not found",
                             obj2str(person), row['IDMUT'])
Ejemplo n.º 2
0
def pxs2person(row, person):

    kw = {}
    store(
        kw,
        card_number=row['CARDNUMBER'],
        card_type=row.get('CARDTYPE', ''),  # 20110110
        card_issuer=row.get('CARDISSUER', ''),  # 20110110
        noble_condition=row.get('NOBLEECOND', ''),  # 20110110
        birth_place=row.get('BIRTHPLACE', ''),
        remarks2=row.get('MEMO', ''),
        gender=convert_sex(row['SEXE']))
    for k, v in kw.items():
        setattr(person, k, v)

    par2person(row, person)

    if row['IDMUT']:
        try:
            person.health_insurance = Company.objects.get(
                pk=ADR_id(row['IDMUT']))
        except ValueError, e:
            dblogger.warning(u"%s : invalid health_insurance %r",
                             obj2str(person), row['IDMUT'])
        except Company.DoesNotExist, e:
            dblogger.warning(u"%s : health_insurance %s not found",
                             obj2str(person), row['IDMUT'])
Ejemplo n.º 3
0
def pxs2person(row, person):

    kw = {}
    store(kw,
          card_number=row['CARDNUMBER'],
          card_issuer=row.get('CARDISSUER', ''),      # 20110110
          noble_condition=row.get('NOBLEECOND', ''),      # 20110110
          birth_place=row.get('BIRTHPLACE', ''),
          remarks2=row.get('MEMO', ''),
          gender=convert_sex(row['SEXE'])
          )
    for k, v in kw.items():
        setattr(person, k, v)

    par2person(row, person)

    if row.has_key('CARDTYPE'):
        #~ row.card_type = BeIdCardTypes.items_dict.get(row['CARDTYPE'].strip(),'')
        from lino_welfare.modlib.pcsw import models as pcsw
        if row['CARDTYPE'] == 0:
            person.card_type = BeIdCardTypes.blank_item
        else:
            person.card_type = BeIdCardTypes.get_by_value(str(row['CARDTYPE']))
    if row['IDMUT']:
        try:
            person.health_insurance = Company.objects.get(
                pk=ADR_id(row['IDMUT']))
        except ValueError, e:
            dblogger.warning(u"%s : invalid health_insurance %r",
                             obj2str(person), row['IDMUT'])
        except Company.DoesNotExist, e:
            dblogger.warning(u"%s : health_insurance %s not found",
                             obj2str(person), row['IDMUT'])
Ejemplo n.º 4
0
def pxs2person(row, person):

    kw = {}
    store(
        kw,
        card_number=row['CARDNUMBER'],
        card_type=row.get('CARDTYPE', ''),  # 20110110
        card_issuer=row.get('CARDISSUER', ''),  # 20110110
        noble_condition=row.get('NOBLEECOND', ''),  # 20110110
        birth_place=row.get('BIRTHPLACE', ''),
        remarks2=row.get('MEMO', ''),
        gender=convert_sex(row['SEXE']))
    for k, v in kw.items():
        setattr(person, k, v)

    par2person(row, person)

    if row['IDMUT']:
        try:
            person.health_insurance = Company.objects.get(
                pk=ADR_id(row['IDMUT']))
        except ValueError as e:
            dblogger.warning(u"%s : invalid health_insurance %r",
                             obj2str(person), row['IDMUT'])
        except Company.DoesNotExist as e:
            dblogger.warning(u"%s : health_insurance %s not found",
                             obj2str(person), row['IDMUT'])

    if row['APOTHEKE']:
        try:
            person.pharmacy = Company.objects.get(pk=int(row['APOTHEKE']))
        except ValueError as e:
            dblogger.warning(u"%s : invalid pharmacy %r", obj2str(person),
                             row['APOTHEKE'])
        except Company.DoesNotExist as e:
            dblogger.warning(u"%s : pharmacy %s not found", obj2str(person),
                             row['APOTHEKE'])

    nat = row['NATIONALIT']
    if nat:
        try:
            country = Country.objects.get(short_code__exact=nat)
        except Country.DoesNotExist:
            country = Country(isocode=nat, name=nat, short_code=nat)
            country.save()
        person.nationality = country

    store_date(row, person, 'GEBDAT', 'birth_date')
    store_date(row, person, 'VALID1', 'card_valid_from')
    store_date(row, person, 'VALID2', 'card_valid_until')
Ejemplo n.º 5
0
Archivo: dpy.py Proyecto: sandeez/lino
    def finalize(self):
        """
        """
        self.flush_deferred_objects()

        if len(self.AFTER_LOAD_HANDLERS):
            logger.info(
                "Finalize %d after_load handlers",
                len(self.AFTER_LOAD_HANDLERS))

        for h in self.AFTER_LOAD_HANDLERS:
            logger.info("Running after_load handler %s", h.__doc__)
            h(self)

        logger.info("Loaded %d objects", self.count_objects)
    
        if self.save_later:
            count = 0
            s = ''
            for model, msg_objects in list(self.save_later.items()):
                for msg, objects in list(msg_objects.items()):
                    if False:  # detailed content of the first object
                        s += "\n- %s %s (%d object(s), e.g. %s)" % (
                            full_model_name(model), msg, len(objects),
                            obj2str(objects[0].object, force_detailed=True))
                    else:  # pk of all objects
                        s += "\n- %s %s (%d object(s) with primary key %s)" % (
                            full_model_name(model), msg, len(objects),
                            ', '.join([str(o.object.pk) for o in objects]))
                    count += len(objects)

            msg = "Abandoning with %d unsaved instances:%s" % (count, s)
            logger.warning(msg)
Ejemplo n.º 6
0
 def allow(action, user, obj, state):
     v = allow4(action, user, obj, state)
     logger.info(
         u"debug_permissions %r required(%s, %s), "
         "allow(%s, %s, %s) --> %s", action, required_roles,
         allowed_states, user.username, obj2str(obj), state, v)
     return v
Ejemplo n.º 7
0
Archivo: dpy.py Proyecto: zyrobin/lino
    def finalize(self):
        """
        """
        self.flush_deferred_objects()

        if len(self.AFTER_LOAD_HANDLERS):
            logger.info("Finalize %d after_load handlers",
                        len(self.AFTER_LOAD_HANDLERS))

        for h in self.AFTER_LOAD_HANDLERS:
            logger.info("Running after_load handler %s", h.__doc__)
            h(self)

        # logger.info("Loaded %d objects", self.count_objects)

        if self.save_later:
            count = 0
            s = ''
            for model, msg_objects in list(self.save_later.items()):
                for msg, objects in list(msg_objects.items()):
                    if False:  # detailed content of the first object
                        s += "\n- %s %s (%d object(s), e.g. %s)" % (
                            full_model_name(model), msg, len(objects),
                            obj2str(objects[0].object, force_detailed=True))
                    else:  # pk of all objects
                        s += "\n- %s %s (%d object(s) with primary key %s)" % (
                            full_model_name(model), msg, len(objects),
                            ', '.join([str(o.object.pk) for o in objects]))
                    count += len(objects)
            msg = "Abandoning with {} unsaved instances:{}"
            logger.warning(msg.format(count, s))
Ejemplo n.º 8
0
 def allow(action, user, obj, state):
     v = allow4(action, user, obj, state)
     logger.info(
         u"debug_permissions %r required(%s, %s), "
         "allow(%s, %s, %s) --> %s",
         action, required_roles,
         allowed_states, user.username, obj2str(obj), state, v)
     return v
Ejemplo n.º 9
0
 def __repr__(self):
     s = self.__class__.__name__ + "("
     attrs = []
     for k in 'label instance bound_action href params name'.split():
         v = getattr(self, k)
         if v is not None:
             attrs.append(k + "=" + obj2str(v))
     s += ', '.join(attrs)
     return s + ")"
Ejemplo n.º 10
0
 def __repr__(self):
     s = self.__class__.__name__ + "("
     attrs = []
     for k in 'label instance bound_action href params name'.split():
         v = getattr(self, k)
         if v is not None:
             attrs.append(k + "=" + obj2str(v))
     s += ', '.join(attrs)
     return s + ")"
Ejemplo n.º 11
0
 def try_save(self, *args, **kw):
     """Try to save the specified Model instance `obj`. Return `True`
     on success, `False` if this instance wasn't saved and should be
     deferred.
     """
     obj = self.object
     try:
         """
         """
         m = getattr(obj, 'before_dumpy_save', None)
         if m is not None:
             m(self.deserializer)
         if not self.deserializer.quick:
             try:
                 obj.full_clean()
             except ValidationError as e:
                 raise  # Exception("{0} : {1}".format(obj2str(obj), e))
         obj.save(*args, **kw)
         logger.debug("%s has been saved" % obj2str(obj))
         self.deserializer.register_success()
         return True
     # except ValidationError,e:
     # except ObjectDoesNotExist,e:
     # except (ValidationError,ObjectDoesNotExist), e:
     # except (ValidationError,ObjectDoesNotExist,IntegrityError), e:
     except Exception as e:
         if True:
             if not settings.SITE.loading_from_dump:
                 # hand-written fixtures are expected to yield in savable
                 # order
                 logger.warning("Failed to save %s:" % obj2str(obj))
                 raise
         deps = [
             f.remote_field.model for f in obj._meta.fields
             if f.remote_field and f.remote_field.model
         ]
         if not deps:
             logger.exception(e)
             raise Exception("Failed to save independent %s." %
                             obj2str(obj))
         self.deserializer.register_failure(self, e)
         return False
Ejemplo n.º 12
0
 def try_save(self, *args, **kw):
     """Try to save the specified Model instance `obj`. Return `True`
     on success, `False` if this instance wasn't saved and should be
     deferred.
     """
     obj = self.object
     try:
         """
         """
         m = getattr(obj, 'before_dumpy_save', None)
         if m is not None:
             m(self.deserializer)
         if not self.deserializer.quick:
             try:
                 obj.full_clean()
             except ValidationError as e:
                 raise  # Exception("{0} : {1}".format(obj2str(obj), e))
         obj.save(*args, **kw)
         logger.debug("%s has been saved" % obj2str(obj))
         self.deserializer.register_success()
         return True
     # except ValidationError,e:
     # except ObjectDoesNotExist,e:
     # except (ValidationError,ObjectDoesNotExist), e:
     # except (ValidationError,ObjectDoesNotExist,IntegrityError), e:
     except Exception as e:
         if True:
             if not settings.SITE.loading_from_dump:
                 # hand-written fixtures are expected to yield in savable
                 # order
                 logger.warning("Failed to save %s from manual fixture:" % obj2str(obj))
                 raise
         deps = [f.remote_field.model for f in obj._meta.fields
                 if f.remote_field and f.remote_field.model]
         if not deps:
             logger.exception(e)
             raise Exception(
                 "Failed to save independent %s." % obj2str(obj))
         self.deserializer.register_failure(self, e)
         return False
Ejemplo n.º 13
0
 def register_failure(self, obj, e):
     msg = force_unicode(e)
     d = self.save_later.setdefault(obj.object.__class__, {})
     l = d.setdefault(msg, [])
     if len(l) == 0:
         logger.info("Deferred %s : %s", obj2str(obj.object), msg)
     l.append(obj)
     # report a full traceback, but only once per model and
     # exception type:
     k = (obj.object.__class__, e.__class__)
     if k not in self.reported_tracebacks:
         logger.exception(e)
         self.reported_tracebacks.add(k)
Ejemplo n.º 14
0
Archivo: dpy.py Proyecto: sandeez/lino
 def register_failure(self, obj, e):
     msg = force_text(e)
     d = self.save_later.setdefault(obj.object.__class__, {})
     l = d.setdefault(msg, [])
     if len(l) == 0:
         logger.info("Deferred %s : %s", obj2str(obj.object), msg)
     l.append(obj)
     # report a full traceback, but only once per model and
     # exception type:
     k = (obj.object.__class__, e.__class__)
     if k not in self.reported_tracebacks:
         logger.exception(e)
         self.reported_tracebacks.add(k)
Ejemplo n.º 15
0
def pre_delete_handler(sender, instance=None, **kw):
    """Before actually deleting an object, we override Django's behaviour
    concerning related objects via a GFK field.

    In Lino you can configure the cascading behaviour using
    :attr:`allow_cascaded_delete`.

    See also :doc:`/dev/gfks`.

    It seems that Django deletes *generic related objects* only if
    the object being deleted has a `GenericRelation
    <https://docs.djangoproject.com/en/1.7/ref/contrib/contenttypes/#django.contrib.contenttypes.fields.GenericRelation>`_
    field (according to `Why won't my GenericForeignKey cascade
    when deleting?
    <http://stackoverflow.com/questions/6803018/why-wont-my-genericforeignkey-cascade-when-deleting>`_).
    OTOH this statement seems to be wrong: it happens also in my
    projects which do *not* use any `GenericRelation`.  As
    :mod:`test_broken_gfk
    <lino_welfare.projects.eupen.tests.test_broken_gfk>` shows.

    TODO: instead of calling :meth:`disable_delete
    <lino.core.model.Model.disable_delete>` here again (it has
    been called earlier by the delete action before asking for user
    confirmation), Lino might change the `on_delete` attribute of all
    `ForeignKey` fields which are not in
    :attr:`allow_cascaded_delete` from ``CASCADE`` to
    ``PROTECTED`` at startup.

    """

    kernel = settings.SITE.kernel
    # print "20141208 generic related objects for %s:" % obj
    must_cascade = []
    for gfk, fk_field, qs in kernel.get_generic_related(instance):
        if gfk.name in qs.model.allow_cascaded_delete:
            must_cascade.append(qs)
        else:
            if fk_field.null:  # clear nullable GFKs
                for obj in qs:
                    setattr(obj, gfk.name, None)
            elif qs.count():
                raise Warning(instance.delete_veto_message(
                    qs.model, qs.count()))
    for qs in must_cascade:
        if qs.count():
            logger.info("Deleting %d %s before deleting %s",
                        qs.count(),
                        qs.model._meta.verbose_name_plural,
                        obj2str(instance))
            for obj in qs:
                obj.delete()
Ejemplo n.º 16
0
def pre_delete_handler(sender, instance=None, **kw):
    """Before actually deleting an object, we override Django's behaviour
    concerning related objects via a GFK field.

    In Lino you can configure the cascading behaviour using
    :attr:`allow_cascaded_delete`.

    See also :doc:`/dev/gfks`.

    It seems that Django deletes *generic related objects* only if
    the object being deleted has a `GenericRelation
    <https://docs.djangoproject.com/en/1.7/ref/contrib/contenttypes/#django.contrib.contenttypes.fields.GenericRelation>`_
    field (according to `Why won't my GenericForeignKey cascade
    when deleting?
    <http://stackoverflow.com/questions/6803018/why-wont-my-genericforeignkey-cascade-when-deleting>`_).
    OTOH this statement seems to be wrong: it happens also in my
    projects which do *not* use any `GenericRelation`.  As
    :mod:`test_broken_gfk
    <lino_welfare.projects.eupen.tests.test_broken_gfk>` shows.

    TODO: instead of calling :meth:`disable_delete
    <lino.core.model.Model.disable_delete>` here again (it has
    been called earlier by the delete action before asking for user
    confirmation), Lino might change the `on_delete` attribute of all
    `ForeignKey` fields which are not in
    :attr:`allow_cascaded_delete` from ``CASCADE`` to
    ``PROTECTED`` at startup.

    """

    kernel = settings.SITE.kernel
    # print "20141208 generic related objects for %s:" % obj
    must_cascade = []
    for gfk, fk_field, qs in kernel.get_generic_related(instance):
        if gfk.name in qs.model.allow_cascaded_delete:
            must_cascade.append(qs)
        else:
            if fk_field.null:  # clear nullable GFKs
                for obj in qs:
                    setattr(obj, gfk.name, None)
            elif qs.count():
                raise Warning(instance.delete_veto_message(
                    qs.model, qs.count()))
    for qs in must_cascade:
        if qs.count():
            logger.info("Deleting %d %s before deleting %s",
                        qs.count(),
                        qs.model._meta.verbose_name_plural,
                        obj2str(instance))
            for obj in qs:
                obj.delete()
Ejemplo n.º 17
0
def try_full_clean(i):
    while True:
        try:
            i.full_clean()
        except ValidationError, e:
            if not hasattr(e, 'message_dict'):
                raise
            for k in e.message_dict.keys():
                fld = i._meta.get_field(k)
                v = getattr(i, k)
                setattr(i, k, fld.default)
                dblogger.warning("%s : ignoring value %r for %s : %s",
                                 obj2str(i), v, k, e)
        return
Ejemplo n.º 18
0
def try_full_clean(i):
    while True:
        try:
            i.full_clean()
        except ValidationError, e:
            if not hasattr(e, 'message_dict'):
                raise
            for k in e.message_dict.keys():
                fld = i._meta.get_field(k)
                v = getattr(i, k)
                setattr(i, k, fld.default)
                dblogger.warning(
                    "%s : ignoring value %r for %s : %s", obj2str(i), v, k, e)
        return
Ejemplo n.º 19
0
    def lookup_or_create(model, lookup_field, value, **known_values):
        """
        Look-up whether there is a model instance having
        `lookup_field` with value `value`
        (and optionally other `known_values` matching exactly).
        
        If it doesn't exist, create it and emit an
        :attr:`auto_create <lino.core.signals.auto_create>` signal.
        
        """

        from lino.utils.mldbc.fields import BabelCharField

        #~ logger.info("2013011 lookup_or_create")
        fkw = dict()
        fkw.update(known_values)

        if isinstance(lookup_field, basestring):
            lookup_field = model._meta.get_field(lookup_field)
        if isinstance(lookup_field, BabelCharField):
            flt = settings.SITE.lookup_filter(
                lookup_field.name, value, **known_values)
        else:
            if isinstance(lookup_field, models.CharField):
                fkw[lookup_field.name + '__iexact'] = value
            else:
                fkw[lookup_field.name] = value
            flt = models.Q(**fkw)
            #~ flt = models.Q(**{self.lookup_field.name: value})
        qs = model.objects.filter(flt)
        if qs.count() > 0:  # if there are multiple objects, return the first
            if qs.count() > 1:
                logger.warning(
                    "%d %s instances having %s=%r (I'll return the first).",
                    qs.count(), model.__name__, lookup_field.name, value)
            return qs[0]
        #~ known_values[lookup_field.name] = value
        obj = model(**known_values)
        setattr(obj, lookup_field.name, value)
        try:
            obj.full_clean()
        except ValidationError as e:
            raise ValidationError("Failed to auto_create %s : %s" %
                                  (obj2str(obj), e))
        obj.save()
        signals.auto_create.send(obj, known_values=known_values)
        return obj
Ejemplo n.º 20
0
    def lookup_or_create(model, lookup_field, value, **known_values):
        """
        Look-up whether there is a model instance having
        `lookup_field` with value `value`
        (and optionally other `known_values` matching exactly).
        
        If it doesn't exist, create it and emit an
        :attr:`auto_create <lino.core.signals.auto_create>` signal.
        
        """

        from lino.utils.mldbc.fields import BabelCharField

        #~ logger.info("2013011 lookup_or_create")
        fkw = dict()
        fkw.update(known_values)

        if isinstance(lookup_field, six.string_types):
            lookup_field = model._meta.get_field(lookup_field)
        if isinstance(lookup_field, BabelCharField):
            flt = settings.SITE.lookup_filter(
                lookup_field.name, value, **known_values)
        else:
            if isinstance(lookup_field, models.CharField):
                fkw[lookup_field.name + '__iexact'] = value
            else:
                fkw[lookup_field.name] = value
            flt = models.Q(**fkw)
            #~ flt = models.Q(**{self.lookup_field.name: value})
        qs = model.objects.filter(flt)
        if qs.count() > 0:  # if there are multiple objects, return the first
            if qs.count() > 1:
                logger.warning(
                    "%d %s instances having %s=%r (I'll return the first).",
                    qs.count(), model.__name__, lookup_field.name, value)
            return qs[0]
        #~ known_values[lookup_field.name] = value
        obj = model(**known_values)
        setattr(obj, lookup_field.name, value)
        try:
            obj.full_clean()
        except ValidationError as e:
            raise ValidationError("Failed to auto_create %s : %s" %
                                  (obj2str(obj), e))
        obj.save()
        signals.auto_create.send(obj, known_values=known_values)
        return obj
Ejemplo n.º 21
0
 def __repr__(self):
     kw = dict()
     if self.master_instance is not None:
         kw.update(master_instance=obj2str(self.master_instance))
     if self.filter is not None:
         kw.update(filter=repr(self.filter))
     if self.known_values:
         kw.update(known_values=self.known_values)
     if self.requesting_panel:
         kw.update(requesting_panel=self.requesting_panel)
     u = self.get_user()
     if u is not None:
         kw.update(user=u.username)
     if False:  # self.request:
         kw.update(request=format_request(self.request))
     return "<%s %s(%s)>" % (self.__class__.__name__,
                             self.bound_action.full_name(), kw)
Ejemplo n.º 22
0
 def __repr__(self):
     kw = dict()
     if self.master_instance is not None:
         kw.update(master_instance=obj2str(self.master_instance))
     if self.filter is not None:
         kw.update(filter=repr(self.filter))
     if self.known_values:
         kw.update(known_values=self.known_values)
     if self.requesting_panel:
         kw.update(requesting_panel=self.requesting_panel)
     u = self.get_user()
     if u is not None:
         kw.update(user=u.username)
     if False:  # self.request:
         kw.update(request=format_request(self.request))
     return "<%s %s(%s)>" % (
         self.__class__.__name__, self.bound_action.full_name(), kw)
Ejemplo n.º 23
0
 def register_failure(self, obj, e):
     msg = force_text(e)
     d = self.save_later.setdefault(obj.object.__class__, {})
     l = d.setdefault(msg, [])
     count = len(l)
     if count == 0:
         logger.info("Deferred %s : %s", obj2str(obj.object), msg)
     elif count > self.max_deferred_objects:
         self.flush_deferred_objects()
         if count > self.max_deferred_objects + 1:
             raise Exception("More than {} deferred objects".format(
                 self.max_deferred_objects))
     l.append(obj)
     # report a full traceback, but only once per model and
     # exception type:
     k = (obj.object.__class__, e.__class__)
     if k not in self.reported_tracebacks:
         logger.exception(e)
         self.reported_tracebacks.add(k)
Ejemplo n.º 24
0
 def register_failure(self, obj, e):
     msg = force_text(e)
     d = self.save_later.setdefault(obj.object.__class__, {})
     l = d.setdefault(msg, [])
     count = len(l)
     if count == 0:
         logger.info("Deferred %s : %s", obj2str(obj.object), msg)
     elif count > self.max_deferred_objects:
         self.flush_deferred_objects()
         if count > self.max_deferred_objects + 1:
             raise Exception(
                 "More than {} deferred objects".format(
                     self.max_deferred_objects))
     l.append(obj)
     # report a full traceback, but only once per model and
     # exception type:
     k = (obj.object.__class__, e.__class__)
     if k not in self.reported_tracebacks:
         logger.exception(e)
         self.reported_tracebacks.add(k)
Ejemplo n.º 25
0
def load_dbf(dbpath, tableName, load):
    fn = os.path.join(dbpath, '%s.DBF' % tableName)
    f = dbfreader.DBFFile(fn, codepage="cp850")
    dblogger.info("Loading %d records from %s...", len(f), fn)
    f.open()
    for dbfrow in f:
        i = load(dbfrow)
        if i is not None:
            i = settings.TIM2LINO_LOCAL(tableName, i)
            if i is not None:

                try_full_clean(i)

                try:
                    i.save()
                    #~ dblogger.debug("%s has been saved",i)
                except Exception, e:
                #~ except IntegrityError,e:
                    dblogger.warning(
                        "Failed to save %s from %s : %s", obj2str(i), dbfrow, e)
                    dblogger.exception(e)
Ejemplo n.º 26
0
    def finalize(self):
        """
        """
        self.flush_deferred_objects()

        if len(self.AFTER_LOAD_HANDLERS):
            logger.info(
                "Finalize %d after_load handlers",
                len(self.AFTER_LOAD_HANDLERS))

        for h in self.AFTER_LOAD_HANDLERS:
            logger.info("Running after_load handler %s", h.__doc__)
            h(self)

        # logger.info("Loaded %d objects", self.count_objects)
    
        if self.save_later:
            count = 0
            s = ''
            for model, msg_objects in list(self.save_later.items()):
                for msg, objects in list(msg_objects.items()):
                    if False:  # detailed content of the first object
                        s += "\n- %s %s (%d object(s), e.g. %s)" % (
                            full_model_name(model), msg, len(objects),
                            obj2str(objects[0].object, force_detailed=True))
                    else:  # pk of all objects
                        s += "\n- %s %s (%d object(s) with primary key %s)" % (
                            full_model_name(model), msg, len(objects),
                            ', '.join([str(o.object.pk) for o in objects]))
                    count += len(objects)
            msg = "Abandoning with {} unsaved instances:{}"
            logger.warning(msg.format(count, s))

            # Don't raise an exception. The unsaved instances got lost and
            # the loaddata should be done again, but meanwhile the database
            # is not necessarily invalid and may be used for further testing.
            # And anyway, loaddata would catch it and still continue.
            # raise Exception(msg)

        settings.SITE.loading_from_dump = False
Ejemplo n.º 27
0
Archivo: dpy.py Proyecto: gary-ops/lino
    def finalize(self):
        """
        """
        self.flush_deferred_objects()

        if len(self.AFTER_LOAD_HANDLERS):
            logger.info(
                "Finalize %d after_load handlers",
                len(self.AFTER_LOAD_HANDLERS))

        for h in self.AFTER_LOAD_HANDLERS:
            logger.info("Running after_load handler %s", h.__doc__)
            h(self)

        # logger.info("Loaded %d objects", self.count_objects)

        if self.save_later:
            count = 0
            s = ''
            for model, msg_objects in list(self.save_later.items()):
                for msg, objects in list(msg_objects.items()):
                    if False:  # detailed content of the first object
                        s += "\n- %s %s (%d object(s), e.g. %s)" % (
                            full_model_name(model), msg, len(objects),
                            obj2str(objects[0].object, force_detailed=True))
                    else:  # pk of all objects
                        s += "\n- %s %s (%d object(s) with primary key %s)" % (
                            full_model_name(model), msg, len(objects),
                            ', '.join([str(o.object.pk) for o in objects]))
                    count += len(objects)
            msg = "Abandoning with {} unsaved instances:{}"
            logger.warning(msg.format(count, s))

            # Don't raise an exception. The unsaved instances got lost and
            # the loaddata should be done again, but meanwhile the database
            # is not necessarily invalid and may be used for further testing.
            # And anyway, loaddata would catch it and still continue.
            # raise Exception(msg)

        settings.SITE.loading_from_dump = False
Ejemplo n.º 28
0
    if row['IDMUT']:
        try:
            person.health_insurance = Company.objects.get(
                pk=ADR_id(row['IDMUT']))
        except ValueError, e:
            dblogger.warning(u"%s : invalid health_insurance %r",
                             obj2str(person), row['IDMUT'])
        except Company.DoesNotExist, e:
            dblogger.warning(u"%s : health_insurance %s not found",
                             obj2str(person), row['IDMUT'])

    if row['APOTHEKE']:
        try:
            person.pharmacy = Company.objects.get(pk=int(row['APOTHEKE']))
        except ValueError, e:
            dblogger.warning(u"%s : invalid pharmacy %r", obj2str(person),
                             row['APOTHEKE'])
        except Company.DoesNotExist, e:
            dblogger.warning(u"%s : pharmacy %s not found", obj2str(person),
                             row['APOTHEKE'])

    nat = row['NATIONALIT']
    if nat:
        try:
            country = Country.objects.get(short_code__exact=nat)
        except Country.DoesNotExist:
            country = Country(isocode=nat, name=nat, short_code=nat)
            country.save()
        person.nationality = country

    store_date(row, person, 'GEBDAT', 'birth_date')
Ejemplo n.º 29
0
 def __repr__(self):
     return obj2str(self)
Ejemplo n.º 30
0
def log_deleted(request, elem):
    #~ on_user_change(request,elem)
    logger.info(u"%s deleted by %s.", obj2str(elem), request.user)
Ejemplo n.º 31
0
def log_deleted(request, elem):
    #~ on_user_change(request,elem)
    logger.info(u"%s deleted by %s.", obj2str(elem), request.user)
Ejemplo n.º 32
0
 def __repr__(self):
     return obj2str(self)
Ejemplo n.º 33
0
        try:
            person.health_insurance = Company.objects.get(
                pk=ADR_id(row['IDMUT']))
        except ValueError, e:
            dblogger.warning(u"%s : invalid health_insurance %r",
                             obj2str(person), row['IDMUT'])
        except Company.DoesNotExist, e:
            dblogger.warning(u"%s : health_insurance %s not found",
                             obj2str(person), row['IDMUT'])

    if row['APOTHEKE']:
        try:
            person.pharmacy = Company.objects.get(pk=int(row['APOTHEKE']))
        except ValueError, e:
            dblogger.warning(u"%s : invalid pharmacy %r",
                             obj2str(person), row['APOTHEKE'])
        except Company.DoesNotExist, e:
            dblogger.warning(u"%s : pharmacy %s not found",
                             obj2str(person), row['APOTHEKE'])

    nat = row['NATIONALIT']
    if nat:
        try:
            country = Country.objects.get(short_code__exact=nat)
        except Country.DoesNotExist:
            country = Country(isocode=nat, name=nat, short_code=nat)
            country.save()
        person.nationality = country

    store_date(row, person, 'GEBDAT', 'birth_date')
    store_date(row, person, 'VALID1', 'card_valid_from')
Ejemplo n.º 34
0
        try:
            person.health_insurance = Company.objects.get(
                pk=ADR_id(row['IDMUT']))
        except ValueError, e:
            dblogger.warning(u"%s : invalid health_insurance %r",
                             obj2str(person), row['IDMUT'])
        except Company.DoesNotExist, e:
            dblogger.warning(u"%s : health_insurance %s not found",
                             obj2str(person), row['IDMUT'])

    if row['APOTHEKE']:
        try:
            person.pharmacy = Company.objects.get(pk=int(row['APOTHEKE']))
        except ValueError, e:
            dblogger.warning(u"%s : invalid pharmacy %r",
                             obj2str(person), row['APOTHEKE'])
        except Company.DoesNotExist, e:
            dblogger.warning(u"%s : pharmacy %s not found",
                             obj2str(person), row['APOTHEKE'])

    nat = row['NATIONALIT']
    if nat:
        try:
            country = Country.objects.get(short_code__exact=nat)
        except Country.DoesNotExist:
            country = Country(isocode=nat, name=nat, short_code=nat)
            country.save()
        person.nationality = country

    store_date(row, person, 'GEBDAT', 'birth_date')
    store_date(row, person, 'VALID1', 'card_valid_from')