Пример #1
0
def objects():

    if False:
        yield sales.InvoicingMode(**dd.babel_values(
            'name', en='Default', de="Standard", fr="Standard"))

    if ledger:
        Invoice = dd.resolve_model('sales.VatProductInvoice')
        InvoiceItem = dd.resolve_model('sales.InvoiceItem')
        vt = ledger.VoucherTypes.get_for_model(Invoice)
        JOURNALS = Cycler(vt.get_journals())
        if len(JOURNALS.items) == 0:
            raise Exception("20140127 no journals for %s" % vt)
        PARTNERS = Cycler(Partner.objects.all())
        USERS = Cycler(settings.SITE.user_model.objects.all())
        PRODUCTS = Cycler(rt.models.products.Product.objects.all())
        ITEMCOUNT = Cycler(1, 2, 3)
        for i in range(20):
            jnl = JOURNALS.pop()
            invoice = Invoice(journal=jnl,
                              partner=PARTNERS.pop(),
                              user=USERS.pop(),
                              date=settings.SITE.demo_date(i - 21))
            yield invoice
            for j in range(ITEMCOUNT.pop()):
                item = InvoiceItem(voucher=invoice, product=PRODUCTS.pop())
                item.product_changed(REQUEST)
                item.before_ui_save(REQUEST)
                yield item
            invoice.register(REQUEST)
            invoice.save()
Пример #2
0
def objects():

    if False:
        yield sales.InvoicingMode(
            **dd.babel_values(
                'name',
                en='Default', de="Standard", fr="Standard"))

    if ledger:
        Invoice = dd.resolve_model('sales.VatProductInvoice')
        InvoiceItem = dd.resolve_model('sales.InvoiceItem')
        vt = ledger.VoucherTypes.get_for_model(Invoice)
        JOURNALS = Cycler(vt.get_journals())
        if len(JOURNALS.items) == 0:
            raise Exception("20140127 no journals for %s" % vt)
        PARTNERS = Cycler(Partner.objects.all())
        USERS = Cycler(settings.SITE.user_model.objects.all())
        PRODUCTS = Cycler(rt.models.products.Product.objects.all())
        ITEMCOUNT = Cycler(1, 2, 3)
        for i in range(20):
            jnl = JOURNALS.pop()
            invoice = Invoice(
                journal=jnl,
                partner=PARTNERS.pop(),
                user=USERS.pop(),
                date=settings.SITE.demo_date(i-21))
            yield invoice
            for j in range(ITEMCOUNT.pop()):
                item = InvoiceItem(voucher=invoice, product=PRODUCTS.pop())
                item.product_changed(REQUEST)
                item.before_ui_save(REQUEST)
                yield item
            invoice.register(REQUEST)
            invoice.save()
Пример #3
0
def objects():

    Book = dd.resolve_model('bibles.Book')

    def book(ref, en, abbr_en, de, abbr_de, et, abbr_et, **kw):
        kw.update(dd.babel_values('name', en=en, de=de, et=et))
        kw.update(dd.babel_values('abbr', en=abbr_en, de=abbr_de, et=abbr_et))
        return Book(ref=ref, **kw)

    yield book("genesis",
               "Genesis", "Gen",
               "Genesis", "Gen",
               "Esimene Moosese raamat", "1Mos")
    yield book("exodus",
               "Exodus", "Ex",
               "Exodus", "Ex", "Teine Moosese raamat",
               "2Mos")
    yield book("leviticus",
               "Leviticus", "Lev",
               "Leviticus", "Lev",
               "Kolmas Moosese raamat", "3Mos")

    yield book("matthew",
               "Matthew", "Mt",
               "Mattäus", "Mt",
               "Matteuse", "Mt")

    from lino_logos.lib.bibles.fixtures.eng_kjv import objects
    yield objects()

    from lino_logos.lib.bibles.fixtures.eng_oeb import objects
    yield objects()

    from lino_logos.lib.bibles.fixtures.est_eps import objects
    yield objects()
Пример #4
0
 def handle(self, *args, **options):
     model = dd.resolve_model('cbss.' + args[0])
     pk = int(args[1])
     req = model.objects.get(pk=pk)
     req.validate_request()
     #~ print req.logged_messages
     print req.debug_messages
Пример #5
0
 def create_invoice(self, **kwargs):
     ITEM_MODEL = dd.resolve_model(dd.plugins.invoicing.item_model)
     M = ITEM_MODEL._meta.get_field('voucher').remote_field.model
     kwargs.update(
         journal=self.journal,
         entry_date=self.today, voucher_date=self.get_max_date())
     invoice = M(**kwargs)
     invoice.fill_defaults()
     return invoice
Пример #6
0
 def for_master_model(cls, model, **kwargs):
     """Return a queryset of master :class:`Star` instances for the given database
     model.
     """
     if isinstance(model, string_types):
         model = dd.resolve_model(model)
     ct = ContentType.objects.get_for_model(model)
     kwargs["master__" + cls.owner.ct_field] = ct
     return cls.objects.filter(**kwargs)
Пример #7
0
 def for_master_model(cls, model, **kwargs):
     """Return a queryset of master :class:`Star` instances for the given database
     model.
     """
     if isinstance(model, string_types):
         model = dd.resolve_model(model)
     ct = ContentType.objects.get_for_model(model)
     kwargs["master__" + cls.owner.ct_field] = ct
     return cls.objects.filter(**kwargs)
Пример #8
0
 def __init__(self, model, table_class):
     self.table_class = table_class
     model = dd.resolve_model(model)
     self.model = model
     value = dd.full_model_name(model)
     # text = model._meta.verbose_name + ' (%s)' % dd.full_model_name(model)
     text = string_concat(model._meta.verbose_name, " (", value, ")")
     name = None
     super(ConfirmationType, self).__init__(value, text, name)
Пример #9
0
def objects():

    from lino_welfare.modlib.newcomers.models import Broker, Faculty, Competence
    pcsw = dd.resolve_app('pcsw')
    Person = dd.resolve_model('contacts.Person')

    I = Instantiator(Broker).build
    #~ yield I(**babel_values('name',
        #~ de=u"Polizei", fr=u"Police",en=u"Police"))
    #~ yield I(**babel_values('name',
        #~ de=u"Jugendgericht", fr=u"Jugendgericht",en=u"Jugendgericht"))
    yield I(name="Police")
    yield I(name="Other PCSW")

    I = Instantiator(Faculty).build
    yield I(weight=10, **babel_values('name', de=u"Eingliederungseinkommen (EiEi)", fr=u"Revenu d'intégration sociale (RIS)",  en=u"EiEi"))
    yield I(weight=5, **babel_values('name', de=u"DSBE",                    fr=u"Service d'insertion socio-professionnelle",   en=u"DSBE"))
    yield I(weight=4, **babel_values('name', de=u"Ausländerbeihilfe",       fr=u"Aide sociale équivalente (pour étrangers)", en=u"Ausländerbeihilfe"))
    yield I(weight=6, **babel_values('name', de=u"Finanzielle Begleitung",  fr=u"Accompagnement budgétaire",     en=u"Finanzielle Begleitung"))
    yield I(weight=2, **babel_values('name', de=u"Laufende Beihilfe",       fr=u"Aide complémenataire",       en=u"Laufende Beihilfe"))

    #~ User = resolve_model('users.User')
    #~ yield User(username="******",
        #~ first_name="Caroline",last_name="Carnol",
        # ~ profile='200') # UserTypes.caroline)
    #~ FACULTIES = Cycler(Faculty.objects.all())
    #~ profiles = [p for p in UserTypes.items() if p.integ_level]
    #~ USERS = Cycler(User.objects.filter(profile__in=profiles))
    #~ for i in range(7):
        #~ yield Competence(user=USERS.pop(),faculty=FACULTIES.pop())
    #~ for p in pcsw.Client.objects.filter(client_state=pcsw.ClientStates.new):
        #~ p.faculty = FACULTIES.pop()
        #~ p.save()
    newcomers = dd.resolve_app('newcomers')
    users = dd.resolve_app('users')

    QUOTAS = Cycler(100, 60, 50, 20)
    FACULTIES = Cycler(newcomers.Faculty.objects.all())

    profiles = [
        p for p in UserTypes.items()
        if isinstance(p.role, IntegrationAgent)
        and not isinstance(p.role, dd.SiteStaff)]
    qs = users.User.objects.filter(profile__in=profiles)
    for u in qs:
        u.newcomer_quota = QUOTAS.pop()
        yield u

    USERS = Cycler(qs)
    for i in range(7):
        yield newcomers.Competence(user=USERS.pop(), faculty=FACULTIES.pop())

        for p in pcsw.Client.objects.exclude(
                client_state=pcsw.ClientStates.former):
            p.faculty = FACULTIES.pop()
            p.save()
Пример #10
0
def objects():

    add = Instantiator('cal.Priority', 'ref').build
    yield add('1', **dd.babel_values('name', en=u"very urgent", de=u"sehr dringend",   fr=u"très urgent", et=u"väga kiire"))
    yield add('3', **dd.babel_values('name', en=u"urgent", de=u"dringend",   fr=u"urgent", et="kiire"))
    yield add('5', **dd.babel_values('name', en=u"normal", de=u"normal",   fr=u"normal", et="keskmine"))
    yield add('9', **dd.babel_values('name', en=u"not urgent", de=u"nicht dringend",   fr=u"pas urgent", et="mitte kiire"))

    calendar = Instantiator('cal.Calendar').build
    general = calendar(**dd.str2kw('name', _("General")))
                                    # de="Allgemein",
                                    # fr="Général",
    yield general
    settings.SITE.site_config.site_calendar = general
    yield settings.SITE.site_config

    event_type = Instantiator('cal.EventType').build
    holidays = event_type(
        is_appointment=False,
        all_rooms=True, **dd.str2kw('name', _("Holidays")))
    yield holidays
    yield event_type(**dd.str2kw('name', _("Meeting")))

    RecurrentEvent = dd.resolve_model('cal.RecurrentEvent')
    add = Instantiator(RecurrentEvent, event_type=holidays).build

    def holiday(month, day, en, de, fr, et=None):
        if et is None:
            et = en
        return add(
            every_unit=cal.Recurrencies.yearly,
            monday=True, tuesday=True, wednesday=True, thursday=True,
            friday=True, saturday=True, sunday=True,
            every=1,
            start_date=datetime.date(
                year=cal.DEMO_START_YEAR,
                month=month, day=day),
            **dd.babelkw('name', en=en, de=de, fr=fr, et=et))
    yield holiday(1, 1, "New Year's Day", "Neujahr", "Jour de l'an", "Uusaasta")
    yield holiday(5, 1, "International Workers' Day", "Tag der Arbeit", "Premier Mai", "kevadpüha")
    yield holiday(7, 21, "National Day", "Nationalfeiertag", "Fête nationale", "Belgia riigipüha")
    yield holiday(8, 15, "Assumption of Mary", "Mariä Himmelfahrt", "Assomption de Marie")
    yield holiday(10, 31, "All Souls' Day", "Allerseelen", "Commémoration des fidèles défunts")
    yield holiday(11, 1, "All Saints' Day", "Allerheiligen", "Toussaint")
    yield holiday(11, 11, "Armistice with Germany", "Waffenstillstand", "Armistice")
    yield holiday(12, 25, "Christmas", "Weihnachten", "Noël", "Esimene Jõulupüha")

    summer = holiday(07, 01, "Summer holidays", "Sommerferien", "Vacances d'été", "Suvevaheaeg")
    summer.end_date = summer.start_date.replace(month=8, day=31)
    yield summer

    ar = settings.SITE.login()
    for obj in RecurrentEvent.objects.all():
        if not obj.update_reminders(ar):
            raise Exception("Oops, %s generated no events" % obj)
Пример #11
0
def objects():
    ExcerptType = rt.models.excerpts.ExcerptType
    ContentType = rt.models.contenttypes.ContentType

    yield ExcerptType(
        template="default.weasy.html",
        primary=True, certifying=True,
        build_method='weasy2pdf',
        content_type=ContentType.objects.get_for_model(
            dd.resolve_model('bevats.Declaration')),
        **dd.str2kw('name', _("VAT declaration")))
Пример #12
0
 def __init__(self, model, table_class, text=None):
     self.table_class = table_class
     model = dd.resolve_model(model)
     self.model = model
     # value = dd.full_model_name(model)
     value = str(table_class)
     if text is None:
         # text = model._meta.verbose_name + ' (%s)' % dd.full_model_name(model)
         # text = model._meta.verbose_name + ' (%s.%s)' % (
         text = string_concat(model._meta.verbose_name, " (", value, ")")
     #     model.__module__, model.__name__)
     name = None
     super(VoucherType, self).__init__(value, text, name)
Пример #13
0
 def __init__(self, model, table_class, text=None):
     self.table_class = table_class
     model = dd.resolve_model(model)
     self.model = model
     # value = dd.full_model_name(model)
     value = str(table_class)
     if text is None:
         # text = model._meta.verbose_name + ' (%s)' % dd.full_model_name(model)
         # text = model._meta.verbose_name + ' (%s.%s)' % (
         text = string_concat(model._meta.verbose_name, " (", value, ")")
     #     model.__module__, model.__name__)
     name = None
     super(VoucherType, self).__init__(value, text, name)
Пример #14
0
 def __init__(self, table_class, text=None):
     self.table_class = table_class
     model = dd.resolve_model(table_class.model)
     self.model = model
     # value = dd.full_model_name(model)
     value = str(table_class)
     if text is None:
         # text = model._meta.verbose_name + ' (%s)' % dd.full_model_name(model)
         # text = model._meta.verbose_name + ' (%s.%s)' % (
         text = format_lazy(u"{} ({})",model._meta.verbose_name, value)
     #     model.__module__, model.__name__)
     name = None
     super(VoucherType, self).__init__(value, text, name)
Пример #15
0
 def __init__(self, table_class, text=None):
     self.table_class = table_class
     model = dd.resolve_model(table_class.model)
     self.model = model
     # value = dd.full_model_name(model)
     value = str(table_class)
     if text is None:
         # text = model._meta.verbose_name + ' (%s)' % dd.full_model_name(model)
         # text = model._meta.verbose_name + ' (%s.%s)' % (
         text = format_lazy(u"{} ({})", model._meta.verbose_name, value)
     #     model.__module__, model.__name__)
     name = None
     super(VoucherType, self).__init__(value, text, name)
Пример #16
0
    def get_vote_raters(self):
        """"Yield the
        :meth:`lino_xl.lib.votes.mixins.Votable.get_vote_raters` for
        this ticket.  This is the author and (if set) the
        :attr:`end_user`.

        """
        if self.user:
            yield self.user
        if issubclass(settings.SITE.user_model,
                      dd.resolve_model(end_user_model)):
            if self.end_user:
                u = self.end_user.get_as_user()
                if u is not None:
                    yield u
Пример #17
0
 def show_fields(self, model, field_names=None, languages=None):
     model = dd.resolve_model(model)
     if field_names is not None:
         field_names = dd.fields_list(model, field_names)
     items = []
     for f in model._meta.fields:
         if field_names is None or f.name in field_names:
             name = f.name
             ref = model.__module__ + '.' + model.__name__ + '.' + name
             verbose_name = force_text(f.verbose_name).strip()
             help_text = force_text(f.help_text).replace('\n', ' ')
             txt = "**{verbose_name}** (:attr:`{name} <{ref}>`) : " \
                   "{help_text}".format(**locals())
             items.append(txt)
     return rstgen.ul(items)
Пример #18
0
 def create_pupil_choice(self, text):
     """
     Called when an unknown pupil name was given.
     Try to auto-create it.
     """
     Pupil = dd.resolve_model(pupil_model)
     kw = parse_name(text)
     if len(kw) != 2:
         raise ValidationError(
             "Cannot find first and last names in %r to \
             auto-create pupil", text)
     p = Pupil(**kw)
     p.full_clean()
     p.save()
     return p
Пример #19
0
 def show_fields(self, model, field_names=None, languages=None):
     model = dd.resolve_model(model)
     if field_names is not None:
         field_names = dd.fields_list(model, field_names)
     items = []
     for f in model._meta.fields:
         if field_names is None or f.name in field_names:
             name = f.name
             ref = model.__module__ + '.' + model.__name__ + '.' + name
             verbose_name = force_text(f.verbose_name).strip()
             help_text = force_text(f.help_text).replace('\n', ' ')
             txt = "**{verbose_name}** (:attr:`{name} <{ref}>`) : " \
                   "{help_text}".format(**locals())
             items.append(txt)
     return rstgen.ul(items)
Пример #20
0
 def create_pupil_choice(self, text):
     """
     Called when an unknown pupil name was given.
     Try to auto-create it.
     """
     Pupil = dd.resolve_model(pupil_model)
     kw = parse_name(text)
     if len(kw) != 2:
         raise ValidationError(
             "Cannot find first and last names in %r to \
             auto-create pupil", text)
     p = Pupil(**kw)
     p.full_clean()
     p.save()
     return p
Пример #21
0
    def handle(self, *args, **options):

        dbname = settings.DATABASES['default']['NAME']
        if options.get('interactive'):
            if not confirm("This is going to GARBLE your database (%s).\nAre you sure (y/n) ?" % dbname):
                raise CommandError("User abort.")

        contacts = dd.resolve_app('contacts')

        User = dd.resolve_model(settings.SITE.user_model)
        Person = dd.resolve_model('contacts.Person')
        Household = dd.resolve_model('households.Household')
        Member = dd.resolve_model('households.Member')
        Role = dd.resolve_model('households.Role')
        Country = dd.resolve_model('countries.Country')

        for p in Person.objects.order_by('id'):
            if User.objects.filter(partner=p).count() > 0:
                # users keep their original name
                pass
            else:
                p.nationality = Country.objects.get(
                    isocode=NATIONALITIES.pop())
                p.last_name = LAST_NAMES.pop()
                if p.gender == dd.Genders.male:
                    p.first_name = MALES.pop()
                    FEMALES.pop()
                else:
                    p.first_name = FEMALES.pop()
                    MALES.pop()
                #~ dblogger.log_changes(REQUEST,p)
                p.name = join_words(p.last_name, p.first_name)
                p.save()
                dblogger.info("%s from %s", unicode(p), unicode(p.nationality))

        MEN = Cycler(Person.objects.filter(gender=dd.Genders.male)
                     .order_by('id'))
        WOMEN = Cycler(
            Person.objects.filter(gender=dd.Genders.female).order_by('id'))
        for h in Household.objects.all():
            if h.member_set.all().count() == 0:
                he = MEN.pop()
                she = WOMEN.pop()
                h.name = he.last_name + "-" + she.last_name
                Member(household=h, person=he,
                       role=Role.objects.get(pk=1)).save()
                Member(household=h, person=she,
                       role=Role.objects.get(pk=2)).save()
            else:
                h.name = ''
                h.full_clean()
            h.save()
            dblogger.info(unicode(h))

        dblogger.info("GARBLE done on database %s." % dbname)
Пример #22
0
    def create_invoice(self, ar):
        """Create the invoice corresponding to this item of the plan.
        """
        if self.plan.journal is None:
            raise Warning(_("No journal specified"))
        ITEM_MODEL = dd.resolve_model(dd.plugins.invoicing.item_model)
        M = ITEM_MODEL._meta.get_field('voucher').rel.to
        invoice = M(partner=self.partner,
                    journal=self.plan.journal,
                    voucher_date=self.plan.today,
                    user=ar.get_user(),
                    entry_date=self.plan.today)
        lng = invoice.get_print_language()
        items = []
        with translation.override(lng):
            for ii in self.plan.get_invoiceables_for_plan(self.partner):
                pt = ii.get_invoiceable_payment_term()
                if pt:
                    invoice.payment_term = pt
                pt = ii.get_invoiceable_paper_type()
                if pt:
                    invoice.paper_type = pt
                for i in ii.get_wanted_items(ar, invoice, self.plan,
                                             ITEM_MODEL):
                    items.append(i)

        if len(items) == 0:
            ar.info(_("No invoiceables found for %s.") % self)
            return

        invoice.full_clean()
        invoice.save()

        for i in items:
            i.voucher = invoice
            i.full_clean()
            i.save()

        self.invoice = invoice
        self.save()

        invoice.compute_totals()
        invoice.full_clean()
        invoice.save()
        invoice.register(ar)

        return invoice
Пример #23
0
    def get_vote_raters(self):

        """"Yield the
        :meth:`lino_xl.lib.votes.mixins.Votable.get_vote_raters` for
        this ticket.  This is the author and (if set) the
        :attr:`end_user`.

        """
        if self.user:
            yield self.user
        if issubclass(
                settings.SITE.user_model,
                dd.resolve_model(end_user_model)):
            if self.end_user:
                u = self.end_user.get_as_user()
                if u is not None:
                    yield u
Пример #24
0
    def create_invoice(self,  ar):
        if self.plan.journal is None:
            raise Warning(_("No journal specified"))
        ITEM_MODEL = dd.resolve_model(dd.plugins.invoicing.item_model)
        M = ITEM_MODEL._meta.get_field('voucher').remote_field.to
        invoice = M(partner=self.partner, journal=self.plan.journal,
                    voucher_date=self.plan.today,
                    user=ar.get_user(),
                    entry_date=self.plan.today)
        lng = invoice.get_print_language()
        items = []
        with translation.override(lng):
            for ii in self.plan.get_invoiceables_for_plan(self.partner):
                pt = ii.get_invoiceable_payment_term()
                if pt:
                    invoice.payment_term = pt
                pt = ii.get_invoiceable_paper_type()
                if pt:
                    invoice.paper_type = pt
                for i in ii.get_wanted_items(
                        ar, invoice, self.plan, ITEM_MODEL):
                    items.append(i)

        if len(items) == 0:
            raise Warning(_("No invoiceables found for %s.") % self)
            # dd.logger.warning(
            #     _("No invoiceables found for %s.") % self.partner)
            # return

        invoice.full_clean()
        invoice.save()

        for i in items:
            i.voucher = invoice
            i.full_clean()
            i.save()

        self.invoice = invoice
        self.save()

        invoice.compute_totals()
        invoice.full_clean()
        invoice.save()
        invoice.register(ar)

        return invoice
Пример #25
0
def objects():
    ExcerptType = rt.modules.excerpts.ExcerptType
    ContentType = rt.modules.contenttypes.ContentType

    # yield ExcerptType(
    #     body_template="payment_reminder.body.html",
    #     content_type=ContentType.objects.get_for_model(
    #         dd.resolve_model('contacts.Partner')),
    #     **dd.str2kw('name', _("Payment reminder")))

    yield ExcerptType(template="payment_reminder.weasy.html",
                      build_method='weasy2pdf',
                      content_type=ContentType.objects.get_for_model(
                          dd.resolve_model('contacts.Partner')),
                      **dd.str2kw('name', _("Payment reminder")))

    yield payment_terms()
Пример #26
0
def objects():
    ExcerptType = rt.modules.excerpts.ExcerptType
    ContentType = rt.modules.contenttypes.ContentType

    # yield ExcerptType(
    #     body_template="payment_reminder.body.html",
    #     content_type=ContentType.objects.get_for_model(
    #         dd.resolve_model('contacts.Partner')),
    #     **dd.str2kw('name', _("Payment reminder")))

    yield ExcerptType(
        template="payment_reminder.weasy.html",
        build_method='weasy2pdf',
        content_type=ContentType.objects.get_for_model(
            dd.resolve_model('contacts.Partner')),
        **dd.str2kw('name', _("Payment reminder")))

    yield payment_terms()
Пример #27
0
    def get_slave_summary(self, obj, ar):
        sar = self.request(master_instance=obj)
        elems = []
        # n = sar.get_total_count()
        # if n == 0:
        #     elems += [_("Not member of any household."), E.br()]
        # else:

        items = []
        for m in sar.data_iterator:
            
            args = (unicode(m.role), _(" in "),
                    ar.obj2html(m.household))
            if m.primary:
                items.append(E.li(E.b("\u2611 ", *args)))
            else:
                btn = m.set_primary.as_button_elem(
                    ar, "\u2610 ", style="text-decoration:none;")
                items.append(E.li(btn, *args))
        if len(items) > 0:
            elems += [_("%s is") % obj]
            elems.append(E.ul(*items))
        if False:
            elems += [
                E.br(), ar.instance_action_button(obj.create_household)]
        else:
            elems += [E.br(), _("Create a household"), ' : ']
            Type = rt.modules.households.Type
            Person = dd.resolve_model(config.person_model)
            T = Person.get_default_table()
            ba = T.get_action_by_name('create_household')
            buttons = []
            for t in Type.objects.all():
                apv = dict(type=t, head=obj)
                sar = ar.spawn(ba,  # master_instance=obj,
                               selected_rows=[obj],
                               action_param_values=apv)
                buttons.append(ar.href_to_request(sar, unicode(t)))
            elems += join_elems(buttons, sep=' / ')
        return E.div(*elems)
Пример #28
0
    def get_slave_summary(self, obj, ar):
        sar = self.request(master_instance=obj)
        elems = []
        # n = sar.get_total_count()
        # if n == 0:
        #     elems += [_("Not member of any household."), E.br()]
        # else:

        items = []
        for m in sar.data_iterator:
            
            args = (unicode(m.role), _(" in "),
                    ar.obj2html(m.household))
            if m.primary:
                items.append(E.li(E.b("\u2611 ", *args)))
            else:
                btn = m.set_primary.as_button_elem(
                    ar, "\u2610 ", style="text-decoration:none;")
                items.append(E.li(btn, *args))
        if len(items) > 0:
            elems += [_("%s is") % obj]
            elems.append(E.ul(*items))
        if False:
            elems += [
                E.br(), ar.instance_action_button(obj.create_household)]
        else:
            elems += [E.br(), _("Create a household"), ' : ']
            Type = rt.modules.households.Type
            Person = dd.resolve_model(config.person_model)
            T = Person.get_default_table()
            ba = T.get_action_by_name('create_household')
            buttons = []
            for t in Type.objects.all():
                apv = dict(type=t, head=obj)
                sar = ar.spawn(ba,  # master_instance=obj,
                               action_param_values=apv)
                buttons.append(ar.href_to_request(sar, unicode(t)))
            elems += join_elems(buttons, sep=' / ')
        return E.div(*elems)
Пример #29
0
    def handle(self, *args, **options):

        dbname = settings.DATABASES['default']['NAME']
        if options.get('interactive'):
            if not confirm("This is going to GARBLE your database (%s).\n"
                           "Are you sure (y/n) ?" % dbname):
                raise CommandError("User abort.")

        def build_dist(k):
            k = k.upper()
            if k == 'BE':
                return BelgianDistribution()
            if k == 'EE':
                return EstonianDistribution()
            raise CommandError("Invalid distribution key %r." % k)

        dist = build_dist(options.get('distribution'))

        User = dd.resolve_model(settings.SITE.user_model)
        Person = rt.models.contacts.Person

        for p in Person.objects.order_by('id'):
            if User.objects.filter(partner=p).count() > 0:
                # users keep their original name
                pass
            else:
                p.last_name = dist.LAST_NAMES.pop()
                if p.gender == dd.Genders.male:
                    p.first_name = dist.MALES.pop()
                    dist.FEMALES.pop()
                else:
                    p.first_name = dist.FEMALES.pop()
                    dist.MALES.pop()
                p.name = join_words(p.last_name, p.first_name)
                dist.before_save(p)
                p.save()
                dblogger.info(p.get_address(', '))
Пример #30
0
 def worker_choices(cls, order):
     worker = dd.resolve_model(worker_model)
     return worker.objects.all()
Пример #31
0
from lino_xl.lib.cal.choicelists import DurationUnits
# from lino_xl.lib.cal.utils import WORKDAYS

isip = dd.resolve_app('isip')
jobs = dd.resolve_app('jobs')
pcsw = dd.resolve_app('pcsw')
uploads = dd.resolve_app('uploads')
contacts = dd.resolve_app('contacts')
users = dd.resolve_app('users')
countries = dd.resolve_app('countries')
reception = dd.resolve_app('reception')
cal = dd.resolve_app('cal')
cv = dd.resolve_app('cv')

Company = dd.resolve_model('contacts.Company')

#~ dblogger.info('Loading')

#~ def coaching_stories(state):
CT_GSS = 1
CT_INTEG = 2
CT_OTHER = 3
COACHING_STORIES = dict()
COACHING_STORIES[pcsw.ClientStates.former] = Cycler(
    [
        (-1000, -500, True, CT_GSS)
    ], [
        (None, -60, True, CT_INTEG)
    ], [
        (-900, -430, False, CT_GSS),
Пример #32
0
def objects():

    ClientContactType = rt.modules.pcsw.ClientContactType

    Person = resolve_model('contacts.Person')
    Company = resolve_model('contacts.Company')
    #~ Contact = resolve_model('contacts.Contact')
    Role = resolve_model('contacts.Role')
    RoleType = resolve_model('contacts.RoleType')
    Authority = resolve_model('users.Authority')
    #~ Country = resolve_model('countries.Country')
    Client = resolve_model('pcsw.Client')

    person = Instantiator(Person).build
    client = Instantiator(Client).build
    company = Instantiator(Company).build
    #~ contact = Instantiator(Contact).build
    role = Instantiator(Role).build
    #~ link = Instantiator(Link).build
    #~ exam_policy = Instantiator('isip.ExamPolicy').build

    Place = resolve_model('countries.Place')
    #~ Job = resolve_model('jobs.Job')
    #~ Place = settings.SITE.modules.countries.Place
    StudyType = resolve_model('cv.StudyType')
    #~ Country = resolve_model('countries.Country')
    Property = resolve_model('properties.Property')

    eupen = Place.objects.get(name__exact='Eupen')
    #~ stvith = Place.objects.get(zip_code__exact='4780')
    stvith = Place.objects.get(name__in=('Sankt Vith', 'Saint-Vith'))
    kettenis = Place.objects.get(name__exact='Kettenis')
    vigala = Place.objects.get(name__exact='Vigala')
    ee = countries.Country.objects.get(pk='EE')
    be = belgium = countries.Country.objects.get(isocode__exact='BE')
    andreas = Person.objects.get(name__exact="Arens Andreas")
    annette = Person.objects.get(name__exact="Arens Annette")
    hans = Person.objects.get(name__exact="Altenberg Hans")
    ulrike = Person.objects.get(name__exact="Charlier Ulrike")
    erna = Person.objects.get(name__exact=u"Ärgerlich Erna")

    ## Coaching types
    # We use only abbreviated names in `CoachingType.name` because the
    # users usually know these abbrevs.

    kw = dd.str2kw('name', _("Colleague"))
    COLLEAGUE = cal.GuestRole(**kw)
    yield COLLEAGUE

    # id must match `isip.ContactBase.person_changed`
    ASD = pcsw.CoachingType(
        id=isip.COACHINGTYPE_ASD,
        does_integ=False,
        does_gss=True,
        eval_guestrole=COLLEAGUE,
        **dd.babelkw(
            'name',
            de="ASD",  # (Allgemeiner Sozialdienst)
            nl="ASD",  # (Algemene Sociale Dienst)
            fr="SSG",  # (Service social général)
            en="General",  # (General Social Service)
        ))
    yield ASD

    DSBE = pcsw.CoachingType(
        id=isip.COACHINGTYPE_DSBE,
        does_gss=False,
        does_integ=True,
        eval_guestrole=COLLEAGUE,
        **dd.babelkw(
            'name',
            de="DSBE",  # (Dienst für Sozial-Berufliche Eingliederung)
            fr="SI",  # Service intégration
            en="Integ",  # Integration service
        ))
    yield DSBE

    DEBTS = pcsw.CoachingType(
        does_gss=False,
        does_integ=False,
        **dd.babelkw(
            'name',
            de="Schuldnerberatung",
            fr="Médiation de dettes",
            en="Debts mediation",
        ))
    yield DEBTS

    melanie = person(first_name="Mélanie", last_name="Mélard",
                     email=settings.SITE.demo_email,
                     city=eupen, country='BE', gender=dd.Genders.female,
                     language='fr')

    ## newcomers : Melanie does not work with newcomers because she is
    ## the boss. Hubert does live consultations (no appointments). And
    ## Alicia does only appointments but no life
    ## consultations. Caroline and Judith do both.
    yield melanie
    melanie = users.User(
        username="******", partner=melanie, profile='110',
        coaching_type=DSBE,
        newcomer_consultations=False, newcomer_appointments=False)
    yield melanie

    hubert = person(first_name=u"Hubert", last_name=u"Huppertz",
                    email=settings.SITE.demo_email,
                    city=kettenis, country='BE', gender=dd.Genders.male)
    yield hubert
    hubert = users.User(
        username="******", partner=hubert, profile='100',
        coaching_type=DSBE,
        newcomer_consultations=True, newcomer_appointments=False)
    yield hubert

    alicia = person(
        first_name=u"Alicia", last_name=u"Allmanns",
        email=settings.SITE.demo_email,
        city=kettenis, country='BE',
        # gender=dd.Genders.female,  # don't set gender
        language='fr')
    yield alicia
    alicia = users.User(
        username="******", partner=alicia, profile='100',
        coaching_type=DSBE,
        newcomer_consultations=True, newcomer_appointments=True)
    yield alicia

    theresia = person(first_name="Theresia", last_name="Thelen",
                      email=settings.SITE.demo_email,
                      city=eupen, country='BE', gender=dd.Genders.female)
    yield theresia
    theresia = users.User(username="******", partner=theresia, profile='210')
    yield theresia

    nicolas = users.User(username="******", profile='')
    yield nicolas

    # yield Authority(user=alicia, authorized=hubert)
    # yield Authority(user=alicia, authorized=melanie)
    # yield Authority(user=hubert, authorized=melanie)
    yield Authority(user=hubert, authorized=theresia)
    yield Authority(user=alicia, authorized=theresia)
    yield Authority(user=melanie, authorized=theresia)

    caroline = users.User(
        username="******", first_name="Caroline", last_name="Carnol",
        profile='200',
        coaching_type=ASD,
        newcomer_consultations=True, newcomer_appointments=True)
    yield caroline

    obj = person(first_name="Judith", last_name="Jousten",
                 email=settings.SITE.demo_email,
                 city=eupen, country='BE', gender=dd.Genders.female)
    yield obj

    judith = users.User(
        username="******", partner=obj, profile='400',
        coaching_type=ASD,
        newcomer_consultations=True, newcomer_appointments=True)
    yield judith

    yield users.User(
        username="******", first_name="Patrick",
        last_name="Paraneau", profile='910',
        email=settings.SITE.demo_email)

    # for obj in pcsw.CoachingType.objects.all():
    #     yield users.Team(**dd.babelkw('name', **field2kw(obj, 'name')))

    obj = cal.GuestRole(
        # email_template="Visitor.eml.html",
        **dd.babelkw(
            'name',
            de="Besucher",
            fr="Visiteur",
            en="Visitor",
            et="Külaline",
        ))
    yield obj
    settings.SITE.site_config.update(client_guestrole=obj)

    yield cal.GuestRole(**dd.babelkw('name',
                                     de=u"Vorsitzender",
                                     fr=u"Président",
                                     en=u"Chairman",
                                     et=u"Eesistuja",
                                 ))
    yield cal.GuestRole(**dd.babelkw('name',
                                     de=u"Schriftführer",
                                     fr=u"Greffier",
                                     en=u"Reporter",
                                     et=u"Sekretär",
                                 ))

    calendar = Instantiator('cal.EventType').build

    kw = dict(invite_client=False, is_appointment=False)
    kw.update(dd.str2kw('name', _("Consultations with client")))
    kw.update(dd.str2kw('event_label', _("Consultation")))
    # kw.update(dd.babelkw(
    #     'name',
    #     de="Visiten (ohne Verabredung)",
    #     fr="Consultations sans rendez-vous",
    #     en="Prompt consultation",
    #     et="Külaline",
    # ))
    obj = calendar(**kw)
    yield obj
    settings.SITE.site_config.update(prompt_calendar=obj)

    kw = dict(invite_client=True)
    kw.update(dd.str2kw("name", _("External meetings with client")))
    kw.update(dd.str2kw("event_label", _("External meeting")))
    yield calendar(**kw)

    kw = dict(invite_client=True)
    kw.update(dd.str2kw("name", _("Informational meetings")))
    kw.update(dd.str2kw("event_label", _("Informational meeting")))
    yield calendar(**kw)

    kw = dict(invite_client=False)
    kw.update(dd.str2kw("name", _("Internal meetings")))
    kw.update(dd.str2kw("event_label", _("Internal meeting")))
    yield calendar(**kw)
    # yield calendar(**dd.babelkw('name',
    #                             de=u"Versammlung intern",
    #                             fr=u"Réunions internes",
    #                             en=u"Internal meetings"))

    kw = dict(invite_client=False)
    kw.update(dd.str2kw("name", _("External meetings")))
    kw.update(dd.str2kw("event_label", _("External meeting")))
    yield calendar(**kw)
    # yield calendar(**dd.babelkw('name',
    #                             de=u"Versammlung extern",
    #                             fr=u"Réunions externes",
    #                             en=u"External meetings"))

    kw = dict(invite_client=False)
    kw.update(dd.str2kw("name", _("Private")))
    yield calendar(**kw)
    # yield calendar(**dd.babelkw('name',
    #                             de="Privat",
    #                             fr="Privé",
    #                             en="Private"))

    sector = Instantiator(cv.Sector).build
    for ln in SECTORS_LIST.splitlines():
        if ln:
            a = ln.split('|')
            if len(a) == 3:
                kw = dict(en=a[0], fr=a[1], de=a[2])
                yield sector(**dd.babelkw('name', **kw))

    horeca = cv.Sector.objects.get(pk=5)
    function = Instantiator(cv.Function, sector=horeca).build
    yield function(**dd.babelkw('name',
                             de=u"Kellner",
                             fr=u'Serveur',
                             en=u'Waiter',
                             ))
    yield function(**dd.babelkw('name',
                             de=u"Koch",
                             fr=u'Cuisinier',
                             en=u'Cook',
                             ))
    yield function(**dd.babelkw('name',
                             de=u"Küchenassistent",
                             fr=u'Aide Cuisinier',
                             en=u'Cook assistant',
                             ))
    yield function(**dd.babelkw('name',
                             de=u"Tellerwäscher",
                             fr=u'Plongeur',
                             en=u'Dishwasher',
                             ))

    contractType = Instantiator(jobs.ContractType, "ref",
                                exam_policy=3).build
    yield contractType('art60-7a',
                       **dd.babelkw('name',
                                 de=u"Sozialökonomie",
                                 fr=u'économie sociale',
                                 en=u'social economy',
                                 ))
    yield contractType('art60-7b',
                       **dd.babelkw('name',
                                 de=u"Sozialökonomie - majoré",
                                 fr=u'économie sociale - majoré',
                                 en=u'social economy - increased',
                                 ))
    yield contractType('art60-7c',
                       **dd.babelkw('name',
                                 de=u"mit Rückerstattung",
                                 fr=u'avec remboursement',
                                 en=u'social economy with refund',
                                 ))
    yield contractType('art60-7d',
                       **dd.babelkw('name',
                                 de=u"mit Rückerstattung Schule",
                                 fr=u'avec remboursement école',
                                 en=u'social economy school',
                                 ))
    yield contractType('art60-7e',
                       **dd.babelkw('name',
                                 de=u"Stadt Eupen",
                                 fr=u"ville d'Eupen",
                                 en=u'town',
                                 ))

    contractType = Instantiator(isip.ContractType, "ref",
                                exam_policy=1).build
    yield contractType("vsea", needs_study_type=True, **dd.babelkw(
        'name',
        de=u"VSE Ausbildung",
        fr=u"VSE Ausbildung",
        en=u"VSE Ausbildung",
    ))
    yield contractType("vseb", **dd.babelkw('name',
                                         de=u"VSE Arbeitssuche",
                                         fr=u"VSE Arbeitssuche",
                                         en=u"VSE Arbeitssuche",
                                         ))
    yield contractType("vsec", **dd.babelkw('name',
                                         de=u"VSE Lehre",
                                         fr=u"VSE Lehre",
                                         en=u"VSE Lehre",
                                         ))
    yield contractType("vsed",
                       needs_study_type=True,
                       **dd.babelkw('name',
                                 de=u"VSE Vollzeitstudium",
                                 fr=u"VSE Vollzeitstudium",
                                 en=u"VSE Vollzeitstudium",
                             ))
    yield contractType("vsee", **dd.babelkw('name',
                                         de=u"VSE Sprachkurs",
                                         fr=u"VSE Sprachkurs",
                                         en=u"VSE Sprachkurs",
                                         ))

    t = RoleType.objects.get(pk=4)  # It manager
    t.use_in_contracts = False
    t.save()

    #~ country = Instantiator('countries.Country',"isocode name").build
    #~ yield country('SUHH',"Soviet Union")
    #~ cpas = company(name=u"ÖSHZ Eupen",city=eupen,country=belgium)
    cpas = company(name=u"ÖSHZ Kettenis", city=kettenis, country=belgium)
    yield cpas
    bisa = company(name=u"BISA", city=eupen, country=belgium)
    yield bisa
    bisa_dir = role(company=bisa, person=annette, type=1)
    yield bisa_dir
    rcycle = company(name=u"R-Cycle Sperrgutsortierzentrum",
                     city=eupen, country=belgium)
    yield rcycle
    rcycle_dir = role(company=rcycle, person=andreas, type=1)
    yield rcycle_dir
    yield role(company=rcycle, person=erna, type=2)
    # IT manager : no contracts
    yield role(company=rcycle, person=ulrike, type=4)
    yield company(name=u"Die neue Alternative V.o.G.", city=eupen, country=belgium)
    proaktiv = company(name=u"Pro Aktiv V.o.G.", city=eupen, country=belgium)
    yield proaktiv
    proaktiv_dir = role(company=proaktiv, person=hans, type=1)
    # IT manager : no contracts
    yield role(company=proaktiv, person=ulrike, type=4)
    yield proaktiv_dir
    yield company(name=u"Werkstatt Cardijn V.o.G.", city=eupen, country=belgium)
    yield company(name=u"Behindertenstätten Eupen", city=eupen, country=belgium)
    yield company(name=u"Beschützende Werkstätte Eupen", city=eupen, country=belgium)

    kw = dd.str2kw('name', _("Health insurance"))
    cct = ClientContactType(**kw)
    yield cct
    kw = dict(client_contact_type=cct, country=belgium)
    #~ kw = dict(is_health_insurance=True,country=belgium)
    yield company(name="Alliance Nationale des Mutualités Chrétiennes", **kw)
    yield company(name="Mutualité Chrétienne de Verviers - Eupen", **kw)
    yield company(name="Union Nationale des Mutualités Neutres", **kw)
    yield company(name="Mutualia - Mutualité Neutre", **kw)
    yield company(name="Solidaris - Mutualité socialiste et syndicale de la province de Liège", **kw)

    fkw = dd.str2kw('name', _("Pharmacy"))  # Apotheke
    cct = rt.modules.pcsw.ClientContactType.objects.get(**fkw)
    kw = dict(client_contact_type=cct, country=belgium, city=eupen)
    yield company(
        name="Apotheke Reul",
        street='Klosterstraße', street_no=20, **kw)
    yield company(
        name="Apotheke Schunck", street='Bergstraße', street_no=59, **kw)
    yield company(
        name="Pharmacies Populaires de Verviers",
        street='Aachener Straße', street_no=258, **kw)
    yield company(
        name="Bosten-Bocken A", street='Haasstraße', street_no=6, **kw)

    kw = dd.str2kw('name', _("Advocate"))
    cct = ClientContactType(**kw)
    yield cct
    kw = dict(client_contact_type=cct, country=belgium, city=eupen)
    yield company(name=u"Brüll Christine", street=u'Schilsweg', street_no=4, **kw)
    yield company(name=u"Brocal Catherine", street=u'Neustraße', street_no=115, **kw)
    yield company(name=u"Bourseaux Alexandre", street=u'Aachener Straße', street_no=21, **kw)
    yield company(name=u"Baguette Stéphanie", street=u'Gospertstraße', street_no=24, **kw)

    # Bailiff = Gerichtsvollzieher = Huissier de justice
    kw = dd.str2kw('name', _("Bailiff"))
    if dd.is_installed('debts'):
        kw.update(is_bailiff=True)
    cct = ClientContactType(**kw)
    yield cct
    kw = dict(client_contact_type=cct, country=belgium, city=eupen)
    yield company(name="Demarteau Bernadette",
                  street='Aachener Straße', street_no=25, **kw)
    kw.update(city=stvith)
    yield company(name="Schmitz Marc", street='Rodter Straße',
                  street_no=43, street_box="B", **kw)

    # Inkasso-Unternehmen
    kw = dd.str2kw('name', _("Debt collecting company"))
    if dd.is_installed('debts'):
        kw.update(is_bailiff=True)
    cct = ClientContactType(**kw)
    yield cct
    kw = dict(client_contact_type=cct, country=belgium, city=eupen)
    yield company(name="Cashback sprl",
                  street='Vervierser Straße', street_no=1, **kw)
    yield company(name="Money Wizard AS",
                  street='Neustraße', street_no=1, **kw)

    # settings.SITE.site_config.debts_bailiff_type = cct
    # yield settings.SITE.site_config

    def person2client(p, **kw):
        c = mti.insert_child(p, Client)
        for k, v in kw.items():
            setattr(c, k, v)
        c.client_state = pcsw.ClientStates.coached
        c.save()
        return Client.objects.get(pk=p.pk)

    #~ luc = Person.objects.get(name__exact="Saffre Luc")
    #~ luc = person2client(luc,national_id = '680601 053-29')
    #~ luc.birth_place = 'Eupen'
    #~ luc.birth_date = '1968-06-01'
    #~ luc.birth_country = be
    #~ luc.full_clean()
    #~ luc.save()
    #~
    #~ ly = person(first_name="Ly",last_name="Rumma",
      #~ city=vigala,country='EE',
      #~ gender=dd.Genders.female)
    #~ yield ly
    #~ mari = person(first_name="Mari",last_name="Saffre",
      #~ city=vigala,country='EE',
      #~ gender=dd.Genders.female)
    #~ yield mari
    #~ iiris = person(first_name="Iiris",last_name="Saffre",
      #~ city=vigala,country='EE',
      #~ gender=dd.Genders.female)
    #~ yield iiris

    gerd = person(first_name="Gerd",
                  last_name="Gerkens", city=kettenis,
                  email=settings.SITE.demo_email,  # '*****@*****.**'
                  country='BE', gender=dd.Genders.male)
    yield gerd
    yield role(company=cpas, person=gerd, type=4)

    # see :blogentry:`20111007`
    tatjana = client(
        first_name=u"Tatjana", last_name=u"Kasennova",
        #~ first_name=u"Татьяна",last_name=u"Казеннова",
        city=kettenis, country='BE',
        #~ national_id='1237',
        birth_place="Moskau",  # birth_country='SUHH',
        client_state=pcsw.ClientStates.newcomer,
        #~ newcomer=True,
        gender=dd.Genders.female)
    yield tatjana

    michael = Person.objects.get(name__exact="Mießen Michael")
    jean = Person.objects.get(name__exact="Radermacher Jean")
    #~ yield cpas
    sc = settings.SITE.site_config
    sc.site_company = cpas
    sc.signer1 = michael
    sc.signer2 = jean
    yield sc
    yield role(company=cpas,
               person=michael,
               type=sc.signer1_function)
    yield role(company=cpas,
               person=jean,
               type=sc.signer2_function)

    bernard = Person.objects.get(name__exact="Bodard Bernard")

    kw = dd.str2kw('name', _("Employment office"))  # Arbeitsvermittler
    cct = ClientContactType(**kw)
    yield cct
    kw = dict(client_contact_type=cct, country=belgium, city=eupen)
    adg = company(name=u"Arbeitsamt der D.G.", **kw)
    adg.save()
    yield adg
    settings.SITE.site_config.job_office = adg
    yield settings.SITE.site_config
    adg_dir = role(company=adg, person=bernard, type=1)
    yield adg_dir

    kw = dd.str2kw('name', _("Physician"))  # Arzt
    if dd.is_installed('aids'):
        kw.update(can_refund=True)
    cct = ClientContactType(**kw)
    yield cct
    kw = dict(client_contact_type=cct, country=belgium, city=eupen)
    yield person(first_name="Waltraud", last_name="Waldmann", **kw)

    kw = dd.str2kw('name', _("Family doctor"))  # Hausarzt
    if dd.is_installed('aids'):
        kw.update(can_refund=True)
    cct = ClientContactType(**kw)
    yield cct
    kw = dict(client_contact_type=cct, country=belgium, city=eupen)
    yield person(first_name="Werner", last_name="Wehnicht", **kw)

    kw = dd.str2kw('name', _("Dentist"))
    if dd.is_installed('aids'):
        kw.update(can_refund=True)
    cct = ClientContactType(**kw)
    yield cct
    kw = dict(client_contact_type=cct, country=belgium,
              city=eupen, title="Dr.")
    yield person(first_name="Carmen", last_name="Castou", **kw)
    yield person(first_name="Walter", last_name="Waldmann", **kw)

    kw = dd.str2kw('name', _("Pediatrician"))
    if dd.is_installed('aids'):
        kw.update(can_refund=True)
    cct = ClientContactType(**kw)
    yield cct
    kw = dict(client_contact_type=cct, country=belgium,
              city=eupen, title="Dr.")
    yield person(first_name="Killian", last_name="Kimmel", **kw)

    # kw = dd.str2kw('name', _("Landlord"))  # Vermieter
    # if dd.is_installed('aids'):
    #     kw.update(can_refund=True)
    # cct = ClientContactType(**kw)
    # yield cct
    # kw = dict(client_contact_type=cct, country=belgium, city=eupen)
    # yield person(first_name="Vera", last_name="Veltz", **kw)
    # yield person(first_name="Vanessa", last_name="Veithen", **kw)

    #~ from django.core.exceptions import ValidationError
    # ~ # a circular reference: bernard is contact for company adg and also has himself as `job_office_contact`
    #~ try:
      #~ bernard.job_office_contact = adg_dir
      #~ bernard.clean()
      #~ bernard.save()
    #~ except ValidationError:
        #~ pass
    #~ else:
        #~ raise Exception("Expected ValidationError")

    DIRECTORS = (annette, hans, andreas, bernard)

    #~ USERS = Cycler(root,melanie,hubert,alicia)
    AGENTS = Cycler(melanie, hubert, alicia, judith)
    COACHINGTYPES = Cycler(pcsw.CoachingType.objects.filter(
        does_gss=False, does_integ=False))

    #~ CLIENTS = Cycler(andreas,annette,hans,ulrike,erna,tatjana)
    count = 0
    #~ for person in Person.objects.filter(gender__isnull=False):
    for person in Person.objects.exclude(gender=''):
        if not person.birth_date:  # not those from humanlinks
            if users.User.objects.filter(partner=person).count() == 0:
                if contacts.Role.objects.filter(person=person).count() == 0:
                    birth_date = settings.SITE.demo_date(-170 * count - 16 * 365)
                    national_id = generate_ssin(birth_date, person.gender)

                    client = person2client(person,
                                           national_id=national_id,
                                           birth_date=birth_date)
                    # youngest client is 16; 170 days between each client

                    count += 1
                    if count % 2:
                        client.client_state = pcsw.ClientStates.coached
                    elif count % 5:
                        client.client_state = pcsw.ClientStates.newcomer
                    else:
                        client.client_state = pcsw.ClientStates.former

                    # Dorothée is three times in our database
                    if client.first_name == "Dorothée":
                        client.national_id = None
                        client.birth_date = ''

                    client.full_clean()
                    client.save()

    #~ CLIENTS = Cycler(Client.objects.filter(is_active=True,newcomer=False))
    CLIENTS = Cycler(
        Client.objects.filter(client_state=pcsw.ClientStates.coached))

    #~ oshz = Company.objects.get(name=u"ÖSHZ Eupen")

    #~ project = Instantiator('projects.Project').build
    #~ note = Instantiator('notes.Note').build
    langk = Instantiator('cv.LanguageKnowledge').build

    #~ prj = project(name="Testprojekt",company=oshz)
    #~ yield prj
    #~ yield note(user=user,project=prj,date=i2d(20091006),subject="Programmierung",company=oshz)

    #~ prj = project(name="Testprojekt",company=oshz)
    #~ yield prj
    #~ yield note(user=user,project=prj,date=i2d(20091007),subject="Anschauen",company=oshz)

    Note = resolve_model('notes.Note')
    USERS = Cycler(users.User.objects.all())
    SUBJECTS = Cycler(u"""
    Erstgespräch
    Versammlung beim AG
    Zwischenbericht
    Krisensitzung
    """.splitlines())

    for i in range(10):
        yield Note(user=USERS.pop(),
                   date=settings.SITE.demo_date(days=i),
                   subject=SUBJECTS.pop())

    schule = StudyType.objects.get(pk=1)
    # uni = StudyType.objects.get(pk=4)
    abi = u"Abitur"
    study = Instantiator('cv.Study').build

    gerd = CLIENTS.pop()
    luc = CLIENTS.pop()
    ly = CLIENTS.pop()
    mari = CLIENTS.pop()
    iiris = CLIENTS.pop()

    luc.card_number = '591413288107'
    luc.card_valid_from = i2d(20110819)
    luc.card_valid_until = i2d(20160819)
    luc.card_issuer = "Eupen"
    luc.card_type = BeIdCardTypes.belgian_citizen
    luc.save()
    luc.make_demo_picture()

    gerd.card_number = '123456789012'
    gerd.card_valid_from = i2d(20120819)
    gerd.card_valid_until = i2d(20130818)
    gerd.card_issuer = "Eupen"
    gerd.card_type = BeIdCardTypes.foreigner_c
    gerd.save()
    gerd.make_demo_picture()

    yield study(person=luc, type=schule, content=abi,
                start_date='19740901', end_date='19860630')
    yield study(person=gerd, type=schule, content=abi,
                start_date='19740901', end_date='19860630')

    yield langk(person=luc, language='ger', written='4', spoken='4')
    yield langk(person=gerd, language='ger', written='4', spoken='4')
    yield langk(person=mari, language='ger', written='2', spoken='4')
    yield langk(person=iiris, language='ger', written='0', spoken='4')
    yield langk(person=ly, language='ger', written='2', spoken='1')

    yield langk(person=luc, language='fre', written='4', spoken='3')
    yield langk(person=gerd, language='fre', written='4', spoken='3')

    yield langk(person=luc, language='eng', written='4', spoken='3')
    yield langk(person=gerd, language='eng', written='4', spoken='3')
    yield langk(person=ly, language='eng', written='3', spoken='3')

    yield langk(person=gerd, language='dut', written='3', spoken='3')

    yield langk(person=luc, language='est', written='3', spoken='3')
    yield langk(person=ly, language='est', written='4', spoken='4')
    yield langk(person=mari, language='est', written='3', spoken='4')
    yield langk(person=iiris, language='est', written='0', spoken='3')

    jobtype = Instantiator(jobs.JobType, 'name').build
    art607 = jobtype(u'Sozialwirtschaft = "majorés"')
    yield art607
    yield jobtype(u'Intern')
    yield jobtype(u'Extern (Öffentl. VoE mit Kostenrückerstattung)')
    yield jobtype(u'Extern (Privat Kostenrückerstattung)')
    #~ yield jobtype(u'VSE')
    yield jobtype(u'Sonstige')

    rcycle = mti.insert_child(rcycle, jobs.JobProvider)
    yield rcycle
    bisa = mti.insert_child(bisa, jobs.JobProvider)
    yield bisa
    proaktiv = mti.insert_child(proaktiv, jobs.JobProvider)
    yield proaktiv

    # jobs (Art.60-7)
    CSTATES = Cycler(jobs.CandidatureStates.objects())
    JOBS_CONTRACT_TYPES = Cycler(jobs.ContractType.objects.all())
    JTYPES = Cycler(jobs.JobType.objects.all())

    PROVIDERS = Cycler(jobs.JobProvider.objects.all())
    SECTORS = Cycler(cv.Sector.objects.all())
    FUNCTIONS = Cycler(cv.Function.objects.all())
    REMARKS = Cycler(
        _("A very hard job."),
        '',
        _("No supervisor. Only for independent people."), '', '', '')

    for i in range(8):
        f = FUNCTIONS.pop()
        yield jobs.Job(provider=PROVIDERS.pop(),
                       type=JTYPES.pop(),
                       contract_type=JOBS_CONTRACT_TYPES.pop(),
                       name=unicode(f),
                       remark=REMARKS.pop(),
                       sector=SECTORS.pop(), function=f)

    JOBS = Cycler(jobs.Job.objects.all())

    for i in range(40):
        yield jobs.Candidature(job=JOBS.pop(),
                               person=CLIENTS.pop(),
                               state=CSTATES.pop(),
                               date_submitted=settings.SITE.demo_date(-40 + i))

    # reset SECTORS and FUNCTIONS
    SECTORS = Cycler(cv.Sector.objects.all())
    FUNCTIONS = Cycler(cv.Function.objects.all())

    obj = jobs.Offer(
        name="Übersetzer DE-FR (m/w)",
        remark="""\
Wir sind auf der Suche nach einem Deutsch-Französich Übersetzer 
(M/F) um einen Selbständigenr zu Geschäftsessen und kommerziellen 
Termine zu begleiten. Sie übernehmen die Übersetzung von Gespräche 
während kommerziellen Kontakte mit deutschen Kunden.
Es ist spontane und pünktliche Aufträge, den ganzen Tag, in
Eupen und/oder Deutschland.
Regelmäßigkeit: 1-2 Mal pro Monat, je nach Bedarf.
Flexibilität: die Termine sind je nach Kandidat anpassbar.""",
        provider=PROVIDERS.pop(),
        selection_from=settings.SITE.demo_date(-120),
        selection_until=settings.SITE.demo_date(-20),
        start_date=settings.SITE.demo_date(10),
        sector=SECTORS.pop(),
        function=FUNCTIONS.pop())
    yield obj

    # reset SECTORS and FUNCTIONS
    SECTORS = Cycler(cv.Sector.objects.all())
    FUNCTIONS = Cycler(cv.Function.objects.all())

    for i in range(30):
        yield jobs.Candidature(
            person=CLIENTS.pop(),
            state=CSTATES.pop(),
            date_submitted=settings.SITE.demo_date(-20 + i * 2),
            sector=SECTORS.pop(),
            function=FUNCTIONS.pop(),
        )

    COUNTRIES = Cycler(countries.Country.objects.all())
    COMPANIES = Cycler(Company.objects.all())

    # reset SECTORS and FUNCTIONS
    SECTORS = Cycler(cv.Sector.objects.all())
    FUNCTIONS = Cycler(cv.Function.objects.all())
    DURATIONS = Cycler([1, 2, 3, 6, 6, 9, 12, 12, 24, 24])  # months
    STATES = Cycler(cv.EducationEntryStates.items())

    for i in range(30):
        start_date = settings.SITE.demo_date(-1200 + i * 2)
        d = DURATIONS.pop()
        end_date = DurationUnits.months.add_duration(start_date, d)
        yield cv.Experience(
            person=CLIENTS.pop(),
            company=COMPANIES.pop(),
            country=COUNTRIES.pop(),
            start_date=start_date,
            end_date=end_date,
            sector=SECTORS.pop(),
            function=FUNCTIONS.pop(),
        )

    TRAINING_TYPES = Cycler(cv.StudyType.objects.filter(is_training=True))
    for i in range(20):
        start_date = settings.SITE.demo_date(-1200 + i * 2)
        d = DURATIONS.pop()
        end_date = DurationUnits.months.add_duration(start_date, d)
        yield cv.Training(
            person=CLIENTS.pop(),
            type=TRAINING_TYPES.pop(),
            school=SCHOOLS.pop(),
            country=COUNTRIES.pop(),
            start_date=start_date,
            end_date=end_date,
            sector=SECTORS.pop(),
            function=FUNCTIONS.pop(),
            state=STATES.pop(),
        )

    STUDY_TYPES = Cycler(cv.StudyType.objects.filter(is_study=True))
    EDULEVELS = Cycler(cv.EducationLevel.objects.all())
    for i in range(20):
        start_date = settings.SITE.demo_date(-1200 + i * 2)
        d = DURATIONS.pop()
        end_date = DurationUnits.months.add_duration(start_date, d)
        yield cv.Study(
            person=CLIENTS.pop(),
            type=STUDY_TYPES.pop(),
            school=SCHOOLS.pop(),
            country=COUNTRIES.pop(),
            start_date=start_date,
            end_date=end_date,
            state=STATES.pop(),
            education_level=EDULEVELS.pop(),
        )


    #~ baker = Properties.objects.get(pk=1)
    #~ baker.save()
    #~ yield baker

    """
    Distribute properties to persons. The distribution should be
    "randomly", but independant of site's language setting.
    """

    for i, p in enumerate(Client.objects.all()):
        if i % 2:
            country = belgium
        else:
            country = COUNTRIES.pop()
        p.birth_country_id = country
        p.nationality_id = country

        if i % 3:
            p.languageknowledge_set.create(
                language_id='eng', written='3', spoken='3')
        elif i % 5:
            p.languageknowledge_set.create(
                language_id='eng', written='4', spoken='4')
        if p.zip_code == '4700':
            p.languageknowledge_set.create(language_id='ger', native=True)
            if i % 2:
                p.languageknowledge_set.create(
                    language_id='fre', written='2', spoken='2')
            p.is_cpas = True
            #~ p.is_active = True
            #~ p.client_state = pcsw.ClientStates.coached
            #~ p.native_language_id = 'ger'
        p.save()

    for short_code, isocode in (
        ('B', 'BE'),
        ('D', 'DE'),
        ('F', 'FR'),
    ):
        c = countries.Country.objects.get(pk=isocode)
        c.short_code = short_code
        c.save()

    i = pcsw.Client.objects.order_by('name').__iter__()
    p = i.next()
    offset = 0
    for f in cv.Function.objects.all():
        yield jobs.Candidature(person=p, function=f, sector=f.sector,
                               #~ date_submitted=i2d(20111019))
                               date_submitted=settings.SITE.demo_date(offset))
        p = i.next()
        offset -= 1

    PERSONGROUPS = Cycler(pcsw.PersonGroup.objects.all())
    AGENTS_SCATTERED = Cycler(
        alicia, hubert, melanie, caroline, hubert, melanie, hubert, melanie)
    ENDINGS = Cycler(pcsw.CoachingEnding.objects.all())
    for client in pcsw.Client.objects.all():
        story = COACHING_STORIES.get(client.client_state)
        if story:
            if not client.group:
                client.group = PERSONGROUPS.pop()
                PERSONGROUPS.pop()
                # ~ for i in range(5-client.group.id): PERSONGROUPS.pop() #
                client.save()
            periods = story.pop()
            type = COACHINGTYPES.pop()
            for a, b, primary, ct in periods:
                if ct == CT_OTHER:
                    type = COACHINGTYPES.pop()
                elif ct == CT_GSS:
                    type = ASD
                elif ct == CT_INTEG:
                    type = DSBE
                kw = dict(client=client,
                          user=AGENTS_SCATTERED.pop(),
                          type=type,
                          primary=primary)
                if a is not None:
                    kw.update(start_date=settings.SITE.demo_date(a))
                if b is not None:
                    kw.update(end_date=settings.SITE.demo_date(b))
                    kw.update(ending=ENDINGS.pop())
                yield pcsw.Coaching(**kw)

    # every 10th partner is obsolete

    for i, p in enumerate(contacts.Partner.objects.all()):
        if i % 10 == 0:
            p.is_obsolete = True
            p.save()

    # The reception desk opens at 8am. 20 visitors have checked in,
    # half of which

    RECEPTION_CLIENTS = Cycler(reception.Clients.request(user=theresia))
    REASONS = Cycler(_("Urgent problem"), '', _("Complain"), _("Information"))
    today = settings.SITE.demo_date()
    now = datetime.datetime(today.year, today.month, today.day, 8, 0)
    for i in range(1, 20):
        obj = RECEPTION_CLIENTS.pop()
        now += datetime.timedelta(minutes=3 * i, seconds=3 * i)
        obj = reception.create_prompt_event(
            obj, obj,
            AGENTS.pop(),
            REASONS.pop(),
            settings.SITE.site_config.client_guestrole,
            now)
        yield obj

    # TODO: the following possibly causes more than one busy guest per
    # agent.
    qs = cal.Guest.objects.filter(waiting_since__isnull=False)
    busy_agents = set()
    for i, obj in enumerate(qs):
        busy_since = obj.waiting_since + \
            datetime.timedelta(minutes=2 * i, seconds=2 * i)
        if i % 3 == 0:
            obj.gone_since = busy_since + \
                datetime.timedelta(minutes=2 * i, seconds=3 * i)
            obj.state = cal.GuestStates.gone
        elif not obj.event.user in busy_agents:
            obj.busy_since = busy_since
            obj.state = cal.GuestStates.busy
            busy_agents.add(obj.event.user)

        yield obj

    Calendar = dd.resolve_model('cal.Calendar')
    COLORS = Cycler(Calendar.COLOR_CHOICES)

    for u in settings.SITE.user_model.objects.exclude(profile=None):
        obj = Calendar(name=u.username, color=COLORS.pop())
        yield obj
        u.calendar = obj
        u.save()

    # create a primary ClientAddress for each Client.
    # no longer needed. done by plausibility.fixtures.demo2
    # for obj in settings.SITE.modules.contacts.Partner.objects.all():
    #     obj.repairdata()

    # have partners speak different languages
    # most partners speak first language
    if len(settings.SITE.languages):
        ld = []  # language distribution
        ld = [settings.SITE.languages[0].django_code] * 10
        if len(settings.SITE.languages) > 1:
            ld += [settings.SITE.languages[1].django_code] * 3
            if len(settings.SITE.languages) > 2:
                ld += [settings.SITE.languages[2].django_code]
        LANGS = Cycler(ld)
        for obj in settings.SITE.modules.contacts.Partner.objects.all():
            obj.language = LANGS.pop()
            obj.save()
Пример #33
0
An extension of :mod:`timloader <lino_xl.lib.tim2lino.timloader>`.


"""
from __future__ import unicode_literals
import datetime


from django.conf import settings

from lino.utils import mti
from lino.api import dd, rt

from .timloader1 import TimLoader

Person = dd.resolve_model("contacts.Person")
Company = dd.resolve_model("contacts.Company")
Partner = dd.resolve_model("contacts.Partner")
RoleType = dd.resolve_model("contacts.RoleType")
Role = dd.resolve_model("contacts.Role")
Household = dd.resolve_model('households.Household')
Product = dd.resolve_model('products.Product')
List = dd.resolve_model('lists.List')
Member = dd.resolve_model('lists.Member')
households_Member = dd.resolve_model('households.Member')
Account = dd.resolve_model('accounts.Account')

tickets = dd.resolve_app('tickets')
working = dd.resolve_app('working')

def ticket_state(idpns):
Пример #34
0
## Copyright 2013 Luc Saffre
## This file is part of the Lino project.

from lino.api import dd, rt
from django.conf import settings

from lino.utils import Cycler

Entry = dd.resolve_model('matrix_tutorial.Entry')
EntryType = dd.resolve_model('matrix_tutorial.EntryType')
Company = dd.resolve_model('contacts.Company')

LOREM_IPSUM = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."

def objects():
    
    yield EntryType(name="Consultation")
    yield EntryType(name="Evaluation")
    yield EntryType(name="Test")
    yield EntryType(name="Analysis")
    yield EntryType(name="Observation")
    
    TYPES = Cycler(EntryType.objects.all())
    COMPANIES = Cycler(Company.objects.all())
    USERS = Cycler(settings.SITE.user_model.objects.all())
    SUBJECTS = Cycler(LOREM_IPSUM.split())
    
    for i in range(200):
        d = settings.SITE.demo_date(-i)
        e = Entry(date=d,
            company=COMPANIES.pop(),
Пример #35
0
from django.db.utils import DatabaseError
from django.db import models

import lino

from lino.api import dd, rt

from lino.utils import confirm, iif
from lino.utils import dblogger

from lino.utils.daemoncommand import DaemonCommand
from ...utils import aware, dt2kw, setkw


Place = dd.resolve_model('cal.Place')
Calendar = dd.resolve_model('cal.Calendar')
Event = dd.resolve_model('cal.Event')
RecurrenceSet = dd.resolve_model('cal.RecurrenceSet')

# dblogger.log_changes(REQUEST,obj)


def prettyPrint(obj):
    s = StringIO()
    out = sys.stdout
    sys.stdout = s
    obj.prettyPrint()
    sys.stdout = out
    return s.getvalue()
Пример #36
0
 def create_pupil_choice(self, text):
     Pupil = dd.resolve_model(pupil_model)
     return Pupil.create_from_choice(text)
Пример #37
0
# -*- coding: UTF-8 -*-

from __future__ import unicode_literals

from lino.api import dd, rt

Product = dd.resolve_model('babel_tutorial.Product')


def P(en, de, fr, cat):
    return Product(
        category=cat, **dd.babel_values('name', en=en, de=de, fr=fr))


def objects():
    yield P("Chair", "Stuhl", "Chaise", '03')
    yield P("Table", "Tisch", "Table", '03')
    yield P("Monitor", "Bildschirm", "Écran", '01')
    yield P("Mouse", "Maus", "Souris", '03')
    yield P("Keyboard", "Tastatur", "Clavier", '03')
    yield P("Consultation", "Beratung", "Consultation", '02')
Пример #38
0
def objects():

    add = Instantiator('cal.Priority', 'ref').build
    yield add(
        '1',
        **dd.babel_values('name',
                          en=u"very urgent",
                          de=u"sehr dringend",
                          fr=u"très urgent",
                          et=u"väga kiire"))
    yield add(
        '3',
        **dd.babel_values('name',
                          en=u"urgent",
                          de=u"dringend",
                          fr=u"urgent",
                          et="kiire"))
    yield add(
        '5',
        **dd.babel_values('name',
                          en=u"normal",
                          de=u"normal",
                          fr=u"normal",
                          et="keskmine"))
    yield add(
        '9',
        **dd.babel_values('name',
                          en=u"not urgent",
                          de=u"nicht dringend",
                          fr=u"pas urgent",
                          et="mitte kiire"))

    calendar = Instantiator('cal.Calendar').build
    general = calendar(**dd.str2kw('name', _("General")))
    # de="Allgemein",
    # fr="Général",
    yield general
    settings.SITE.site_config.site_calendar = general
    yield settings.SITE.site_config

    event_type = Instantiator('cal.EventType').build
    holidays = event_type(is_appointment=False,
                          all_rooms=True,
                          **dd.str2kw('name', _("Holidays")))
    yield holidays
    yield event_type(**dd.str2kw('name', _("Meeting")))

    RecurrentEvent = dd.resolve_model('cal.RecurrentEvent')
    add = Instantiator(RecurrentEvent, event_type=holidays).build

    def holiday(month, day, en, de, fr, et=None):
        if et is None:
            et = en
        return add(every_unit=cal.Recurrencies.yearly,
                   monday=True,
                   tuesday=True,
                   wednesday=True,
                   thursday=True,
                   friday=True,
                   saturday=True,
                   sunday=True,
                   every=1,
                   start_date=datetime.date(year=cal.DEMO_START_YEAR,
                                            month=month,
                                            day=day),
                   **dd.babelkw('name', en=en, de=de, fr=fr, et=et))

    yield holiday(1, 1, "New Year's Day", "Neujahr", "Jour de l'an",
                  "Uusaasta")
    yield holiday(5, 1, "International Workers' Day", "Tag der Arbeit",
                  "Premier Mai", "kevadpüha")
    yield holiday(7, 21, "National Day", "Nationalfeiertag", "Fête nationale",
                  "Belgia riigipüha")
    yield holiday(8, 15, "Assumption of Mary", "Mariä Himmelfahrt",
                  "Assomption de Marie")
    yield holiday(10, 31, "All Souls' Day", "Allerseelen",
                  "Commémoration des fidèles défunts")
    yield holiday(11, 1, "All Saints' Day", "Allerheiligen", "Toussaint")
    yield holiday(11, 11, "Armistice with Germany", "Waffenstillstand",
                  "Armistice")
    yield holiday(12, 25, "Christmas", "Weihnachten", "Noël",
                  "Esimene Jõulupüha")

    summer = holiday(07, 01, "Summer holidays", "Sommerferien",
                     "Vacances d'été", "Suvevaheaeg")
    summer.end_date = summer.start_date.replace(month=8, day=31)
    yield summer

    ar = settings.SITE.login()
    for obj in RecurrentEvent.objects.all():
        if not obj.update_reminders(ar):
            raise Exception("Oops, %s generated no events" % obj)
Пример #39
0
# -*- coding: UTF-8 -*-
# Copyright 2013-2014 Luc Saffre
# License: BSD (see file COPYING for details)
"""
"""
from __future__ import unicode_literals

from lino.api import dd, rt
from lino.utils import i2d

Country = dd.resolve_model("countries.Country")
City = dd.resolve_model("countries.Place")
Type = dd.resolve_model("events.Type")
Event = dd.resolve_model("events.Event")
Stage = dd.resolve_model("events.Stage")
Place = dd.resolve_model("events.Place")
Feature = dd.resolve_model("events.Feature")

from lino.modlib.countries.models import PlaceTypes


def get_city(name):
    flt = rt.lookup_filter('name', name)
    try:
        return City.objects.exclude(
            type__in=[PlaceTypes.county, PlaceTypes.province]).get(flt)
    except City.DoesNotExist:
        raise Exception("No city named %r" % name)


def event(type, date, name, name_nl, name_fr, *features, **kw):
Пример #40
0
# Copyright 2013-2016 Luc Saffre
# License: BSD (see file COPYING for details)
"""This is Luc's personal collection of Belgian vocabulary.  It is
not complete enough to be of real benefit, but publicly available at
http://belref.lino-framework.org/

"""

from __future__ import unicode_literals
import re

abbrRE = re.compile("^(.*)\s*\((.*)\)\s*", re.DOTALL)

from lino.api import dd

Concept = dd.resolve_model('concepts.Concept')
Link = dd.resolve_model('concepts.Link')

from lino_xl.lib.concepts.models import LinkTypes


def C(en, de, fr='', nl='', jargon=None, obsoletes=None, **kw):
    texts = dict(en=en, de=de, fr=fr, nl=nl)
    name = dict()
    abbr = dict()
    for lang in 'en', 'de', 'fr', 'nl':
        t = texts.get(lang)
        if t:
            mo = abbrRE.match(t)
            if mo:
                abbr[lang] = mo.group(1).strip()
Пример #41
0
# -*- coding: UTF-8 -*-

from __future__ import unicode_literals

from lino.api import dd

Product = dd.resolve_model('mldbc.Product')


def P(en, de, fr, cat, price):
    return Product(price=price,
                   category=cat,
                   **dd.babel_values('name', en=en, de=de, fr=fr))


def objects():
    yield P("Chair", "Stuhl", "Chaise", '03', '29.95')
    yield P("Table", "Tisch", "Table", '03', '89.95')
    # doctests fail with non-ascii text, so we need to cheat:
    # yield P("Monitor", "Bildschirm", "Écran", '01', '19.95')
    yield P("Monitor", "Bildschirm", "Ecran", '01', '19.95')
    yield P("Mouse", "Maus", "Souris", '03', '2.95')
    yield P("Keyboard", "Tastatur", "Clavier", '03', '4.95')
    yield P("Consultation", "Beratung", "Consultation", '02', '59.95')
Пример #42
0
 def pupil_choices(cls, course):
     Pupil = dd.resolve_model(pupil_model)
     return Pupil.objects.all()
Пример #43
0
from django.utils import translation

# from lino.utils import mti
from lino.utils.instantiator import create_row
from lino.utils.instantiator import create
from lino.utils.mti import mtichild, insert_child
from lino.core.gfks import gfk2lookup

from lino.api import dd, rt, _


from .spzloader import TimLoader
from .timloader1 import convert_gender
from lino_xl.lib.tim2lino import timloader1

Person = dd.resolve_model("contacts.Person")
# Company = dd.resolve_model("contacts.Company")
RoleType = dd.resolve_model("contacts.RoleType")
Role = dd.resolve_model("contacts.Role")
Household = rt.models.households.Household
Product = dd.resolve_model('products.Product')
# List = dd.resolve_model('lists.List')
Client = rt.models.tera.Client
ClientContact = rt.models.clients.ClientContact
Course = rt.models.courses.Course
Line = rt.models.courses.Line
CourseAreas = rt.models.courses.CourseAreas
Enrolment = rt.models.courses.Enrolment
EnrolmentStates = rt.models.courses.EnrolmentStates
Country = rt.models.countries.Country
hc_Plan = rt.models.healthcare.Plan
Пример #44
0
 def type_choices(self, upload_area):
     M = dd.resolve_model('uploads.UploadType')
     # logger.info("20140430 type_choices %s", upload_area)
     if upload_area is None:
         return M.objects.all()
     return M.objects.filter(upload_area=upload_area)
Пример #45
0
from lino.utils.instantiator import Instantiator, i2d
from lino.utils import Cycler
from django.utils.translation import ugettext_lazy as _
from django.conf import settings
from lino.utils import date_offset
from lino.api import dd, rt

DEMO_REF_DATE = i2d(20140101)


cal = dd.resolve_app('cal')
courses = dd.resolve_app('courses')
rooms = dd.resolve_app('rooms')

Booking = dd.resolve_model('rooms.Booking')
Room = dd.resolve_model('cal.Room')
Event = dd.resolve_model('cal.Event')
Partner = dd.resolve_model('contacts.Partner')
Company = dd.resolve_model('contacts.Company')
Teacher = dd.resolve_model('courses.Teacher')
TeacherType = dd.resolve_model('courses.TeacherType')
Pupil = dd.resolve_model('courses.Pupil')
PupilType = dd.resolve_model('courses.PupilType')
Enrolment = dd.resolve_model('courses.Enrolment')
Course = dd.resolve_model('courses.Course')
Product = dd.resolve_model('products.Product')
CourseStates = courses.CourseStates
EnrolmentStates = courses.EnrolmentStates
BookingStates = rooms.BookingStates
Calendar = dd.resolve_model('cal.Calendar')
Пример #46
0
from lino.api import dd, rt
User = dd.resolve_model('users.User')


def objects():

    yield User(username='******',
               first_name='Piet',
               last_name='Bommel',
               email='*****@*****.**',
               is_staff=True)

    yield User(username='******',
               first_name='Jean',
               last_name='Dupond',
               email='*****@*****.**',
               is_staff=True)
Пример #47
0
def objects():

    Person = dd.resolve_model(dd.apps.humanlinks.person_model)
    Link = rt.modules.humanlinks.Link
    LinkTypes = rt.modules.humanlinks.LinkTypes
    ar = rt.login()

    households = dd.resolve_app('households')
    if households:
        married = households.Type.objects.get(
            **dd.str2kw('name', _("Married")))
        divorced = households.Type.objects.get(
            **dd.str2kw('name', _("Divorced")))

    ig = InstanceGenerator()
    ig.add_instantiator(
        'person', Person, 'first_name last_name gender birth_date')
    ig.add_instantiator(
        'link', Link, 'parent child type')

    NAME1 = "Frisch"

    opa = ig.person("Hubert", NAME1, 'M', '1933-07-21')
    oma = ig.person("Gaby", "Frogemuth", 'F', '1934-08-04')

    P = ig.person("Paul", NAME1, 'M', '1967-06-19')
    L = ig.person("Ludwig", NAME1, 'M', '1968-06-01')
    A = ig.person("Alice", NAME1, 'F', '1969-12-19')
    B = ig.person("Bernd", NAME1, 'M', '1971-09-10')

    P1 = ig.person("Paula", "Einzig", 'F', '1968-12-19')
    P1A = ig.person("Peter", NAME1, 'M', '1987-06-19')
    P2 = ig.person("Petra", "Zweith", 'F', '1968-12-19')
    P2A = ig.person("Philippe", NAME1, 'M', '1997-06-19')
    P2B = ig.person("Clara", NAME1, 'F', '1999-06-19')
    P3 = ig.person("Dora", "Drosson", 'F', '1971-12-19')
    P3A = ig.person("Dennis", NAME1, 'M', '2001-06-19')

    L1 = ig.person("Laura", "Loslever", 'F', '1968-04-27')
    L1A = ig.person("Melba", NAME1, 'F', '2002-04-05')
    L1B = ig.person("Irma", NAME1, 'F', '2008-03-24')

    yield ig.flush()

    ig.link(opa, oma, LinkTypes.spouse)

    for i in (P, L, A, B):
        ig.link(opa, i, LinkTypes.parent)
        ig.link(oma, i, LinkTypes.parent)

    ig.link(P, P1A, LinkTypes.parent)
    ig.link(P1, P1A, LinkTypes.parent)

    ig.link(P, P2A, LinkTypes.parent)
    ig.link(P2, P2A, LinkTypes.parent)

    ig.link(P, P2B, LinkTypes.parent)
    ig.link(P2, P2B, LinkTypes.parent)

    ig.link(P, P3A, LinkTypes.parent)
    ig.link(P3, P3A, LinkTypes.parent)

    ig.link(P, P2, LinkTypes.spouse)

    ig.link(L, L1, LinkTypes.spouse)

    for i in (L1A, L1B):
        ig.link(L, i, LinkTypes.parent)
        ig.link(L1, i, LinkTypes.parent)

    yield ig.flush()

    if households:
        households.Household.create_household(ar, opa, oma, married)

        households.Household.create_household(ar, P, P1, divorced)
        hh = households.Household.create_household(ar, P, P2, married)
        hh.members_by_role('head')[0].set_primary(ar)
        hh.members_by_role('partner')[0].set_primary(ar)

        households.Household.create_household(ar, L, L1, married)

    A = ig.person("Albert", "Adam", 'M', '1973-07-21')
    B = ig.person("Bruno", "Braun", 'M', '1973-07-22')

    E = ig.person("Eveline", "Evrard", 'F', '1974-08-21')
    F = ig.person("Françoise", "Freisen", 'F', '1974-08-22')

    I = ig.person("Ilja", "Adam", 'M', '1994-08-22')
    J = ig.person("Jan", "Braun", 'M', '1996-08-22')
    K = ig.person("Kevin", "Braun", 'M', '1998-08-22')
    L = ig.person("Lars", "Braun", 'M', '1998-08-22')

    M = ig.person("Monique", "Braun", 'F', '2000-08-22')
    N = ig.person("Noémie", "Adam", 'F', '2002-08-22')
    O = ig.person("Odette", "Adam", 'F', '2004-08-22')
    P = ig.person("Pascale", "Adam", 'F', '2004-08-22')

    yield ig.flush()

    ig.link(A, I, LinkTypes.parent)
    ig.link(A, N, LinkTypes.parent)
    ig.link(A, O, LinkTypes.parent)
    ig.link(A, P, LinkTypes.parent)

    ig.link(B, J, LinkTypes.parent)
    ig.link(B, K, LinkTypes.parent)
    ig.link(B, L, LinkTypes.parent)
    ig.link(B, M, LinkTypes.parent)

    ig.link(E, I, LinkTypes.parent)
    ig.link(E, J, LinkTypes.parent)
    ig.link(E, K, LinkTypes.parent)
    ig.link(E, L, LinkTypes.parent)

    ig.link(F, M, LinkTypes.parent)
    ig.link(F, N, LinkTypes.parent)
    ig.link(F, O, LinkTypes.parent)
    ig.link(F, P, LinkTypes.parent)

    ig.link(A, F, LinkTypes.spouse)
    ig.link(B, E, LinkTypes.spouse)

    yield ig.flush()

    if households:
        households.Household.create_household(ar, A, E, married)
        households.Household.create_household(ar, A, F, divorced)
        households.Household.create_household(ar, B, E, divorced)
        households.Household.create_household(ar, B, F, married)
Пример #48
0
 def type_choices(self, upload_area):
     M = dd.resolve_model('uploads.UploadType')
     logger.info("20140430 type_choices %s", upload_area)
     if upload_area is None:
         return M.objects.all()
     return M.objects.filter(upload_area=upload_area)
Пример #49
0
logger = logging.getLogger(__name__)

import datetime
from dateutil.relativedelta import relativedelta
ONE_DAY = relativedelta(days=1)
DEMO_DURATION = relativedelta(hours=1, minutes=30)

from django.conf import settings
from django.utils.translation import ugettext as _

from lino.utils import Cycler

from lino.api import dd, rt

cal = dd.resolve_app('cal')
Event = dd.resolve_model('cal.Event')
EventType = dd.resolve_model('cal.EventType')
# Subscription = rt.modules.cal.Subscription
Calendar = dd.resolve_model('cal.Calendar')

# def subscribe_all():

#     for u in settings.SITE.user_model.objects.exclude(profile=''):
#         for obj in Calendar.objects.all():
#             obj = Subscription(user=u, calendar=obj)
#             yield obj


def objects():

    #~ if settings.SITE.project_model:
Пример #50
0
 def pupil_choices(cls, course):
     Pupil = dd.resolve_model(pupil_model)
     return Pupil.objects.all()
Пример #51
0
 def get_for_model(cls, model):
     "Return the primary ExcerptType for the given model."
     ct = ContentType.objects.get_for_model(dd.resolve_model(model))
     return cls.objects.get(primary=True, content_type=ct)
Пример #52
0
    def test01(self):
        """
        Tests some basic funtionality.
        """
        self.assertEqual(settings.MIDDLEWARE_CLASSES,
                         ('django.middleware.common.CommonMiddleware',
                          'django.middleware.locale.LocaleMiddleware',
                          'lino.core.auth.RemoteUserMiddleware',
                          'lino.utils.ajax.AjaxExceptionResponse'))

        Person = dd.resolve_model("contacts.Person")

        ee = create_and_get('countries.Country',
                            isocode='EE',
                            **dd.babelkw(
                                'name',
                                de="Estland",
                                fr='Estonie',
                                en="Estonia",
                                nl='Estland',
                                et='Eesti',
                            ))
        be = create_and_get('countries.Country',
                            isocode='BE',
                            **dd.babelkw(
                                'name',
                                de="Belgien",
                                fr='Belgique',
                                en="Belgium",
                                nl='Belgie',
                                et='Belgia',
                            ))

        PlaceTypes = rt.modules.countries.PlaceTypes
        eupen = create_and_get('countries.Place',
                               name=u'Eupen',
                               country=be,
                               zip_code='4700')

        vigala = create_and_get('countries.Place',
                                name='Vigala',
                                country=ee,
                                type=PlaceTypes.municipality)

        luc = create_and_get(Person,
                             first_name='Luc',
                             last_name='Saffre',
                             gender=Genders.male,
                             country=ee,
                             street='Uus',
                             street_no='1',
                             addr2=u'Vana-Vigala küla',
                             city=vigala,
                             zip_code='78003')

        settings.SITE.uppercase_last_name = True
        """If the following tests raise a "DoesNotExist: Company matching
        query does not exist" then this may come because
        Site._site_config has been filled before the database switched
        from the real db to test db.  and not properly reset.

        """

        with translation.override('en'):
            self.assertEquals(
                luc.address, u'''\
Mr Luc SAFFRE
Uus 1
Vana-Vigala küla
78003 Vigala vald
Estonia''')

        with translation.override('de'):
            self.assertEquals(
                luc.address, u'''\
Herrn Luc SAFFRE
Uus 1
Vana-Vigala küla
78003 Vigala vald
Estland''')
            self.assertEquals(
                luc.address_html, '''\
<p>Herrn Luc SAFFRE<br />Uus 1<br />Vana-Vigala k&#252;la<br />78003 Vigala vald<br />Estland</p>'''
            )

        # "new" or "full" style is when the database knows the
        # geographic hierarchy. We then just select "Vana-Vigala" as
        # the "City".

        vana_vigala = create_and_get('countries.Place',
                                     name='Vana-Vigala',
                                     country=ee,
                                     parent=vigala,
                                     type=PlaceTypes.village,
                                     zip_code='78003')

        meeli = create_and_get(Person,
                               first_name='Meeli',
                               last_name='Mets',
                               gender=Genders.female,
                               country=ee,
                               street='Hirvepargi',
                               street_no='123',
                               city=vana_vigala)

        with translation.override('en'):
            self.assertEquals(
                meeli.address, u'''\
Mrs Meeli METS
Hirvepargi 123
Vana-Vigala küla
78003 Vigala vald
Estonia''')

        u = create_and_get(settings.SITE.user_model,
                           username='******',
                           language='',
                           profile=UserProfiles.admin)
        """
        disable SITE.is_imported_partner() otherwise 
        disabled_fields may contain more than just the 'id' field.
        """
        save_iip = settings.SITE.is_imported_partner

        def f(obj):
            return False

        settings.SITE.is_imported_partner = f
        """
        Note that we must specify the language both in the user 
        and in HTTP_ACCEPT_LANGUAGE because...
        """

        luc = Person.objects.get(name__exact="Saffre Luc")
        self.assertEqual(luc.pk, contacts.PARTNER_NUMBERS_START_AT)

        url = settings.SITE.buildurl('api', 'contacts', 'Person',
                                     '%d?query=&an=detail&fmt=json' % luc.pk)
        #~ url = '/api/contacts/Person/%d?query=&an=detail&fmt=json' % luc.pk
        if settings.SITE.get_language_info('en'):
            u.language = 'en'
            u.save()
            response = self.client.get(url,
                                       REMOTE_USER='******',
                                       HTTP_ACCEPT_LANGUAGE='en')
            result = self.check_json_result(
                response, 'navinfo disable_delete data id title')
            self.assertEqual(result['data']['country'], "Estonia")
            self.assertEqual(result['data']['gender'], "Male")

        if settings.SITE.get_language_info('de'):
            u.language = 'de'
            u.save()
            response = self.client.get(url,
                                       REMOTE_USER='******',
                                       HTTP_ACCEPT_LANGUAGE='de')
            result = self.check_json_result(
                response, 'navinfo disable_delete data id title')
            self.assertEqual(result['data']['country'], "Estland")
            self.assertEqual(result['data']['gender'], u"Männlich")
            #~ self.assertEqual(result['data']['disabled_fields'],['contact_ptr_id','id'])
            #~ self.assertEqual(result['data']['disabled_fields'],['id'])
            df = result['data']['disabled_fields']
            self.assertEqual(df['id'], True)

        if settings.SITE.get_language_info('fr'):
            u.language = 'fr'
            u.save()
            response = self.client.get(url,
                                       REMOTE_USER='******',
                                       HTTP_ACCEPT_LANGUAGE='fr')
            result = self.check_json_result(
                response, 'navinfo disable_delete data id title')
            self.assertEqual(result['data']['country'], "Estonie")
            self.assertEqual(result['data']['gender'], u"Masculin")

        #~ u.language = lang
        #~ u.save()
        # restore is_imported_partner method
        settings.SITE.is_imported_partner = save_iip

        #~ def test03(self):
        """
        Test the following situation:
        
        - User 1 opens the :menuselection:`Configure --> System--> System Parameters` dialog
        - User 2 creates a new Person (which increases next_partner_id)
        - User 1 clicks on `Save`.
        
        `next_partner_id` may not get overwritten 
        
        """
        # User 1
        SiteConfigs = settings.SITE.modules.system.SiteConfigs
        elem = SiteConfigs.get_row_by_pk(None, settings.SITE.config_id)
        self.assertEqual(elem.next_partner_id,
                         contacts.PARTNER_NUMBERS_START_AT + 2)

        elem.next_partner_id = 12345
        elem.full_clean()
        elem.save()
        #~ print "saved"
        self.assertEqual(settings.SITE.site_config.next_partner_id, 12345)
        john = create_and_get(Person, first_name='John', last_name='Smith')
        self.assertEqual(john.pk, 12345)
        self.assertEqual(elem.next_partner_id, 12346)
        self.assertEqual(settings.SITE.site_config.next_partner_id, 12346)
Пример #53
0
def objects():

    if settings.SITE.get_language_info('de'):
        munich = 'München'
    else:
        munich = 'Munich'  # en, fr

    if settings.SITE.get_language_info('fr'):
        kelmis = 'La Calamine'
    else:
        kelmis = 'Kelmis'  # en, de

    company = Instantiator('contacts.Company',
                           "name zip_code city:name street street_no",
                           country='EE').build
    yield company('Rumma & Ko OÜ', '10115', 'Tallinn', 'Tartu mnt', '71')

    company = Instantiator('contacts.Company',
                           "name zip_code city:name street street_no",
                           country='BE').build
    yield company('Bäckerei Ausdemwald', '4700', 'Eupen', 'Vervierser Straße',
                  '45')
    yield company('Bäckerei Mießen', '4700', 'Eupen', 'Gospert', '103')
    yield company('Bäckerei Schmitz', '4700', 'Eupen', 'Aachener Straße', '53')
    yield company('Garage Mergelsberg', '4720', kelmis, 'Kasinostraße', '13')

    company = Instantiator('contacts.Company',
                           "name zip_code city:name street street_no",
                           country='NL').build
    yield company('Donderweer BV', '4816 AR', 'Breda', 'Edisonstraat', '12')
    yield company('Van Achter NV', '4836 LG', 'Breda', 'Hazeldonk', '2')

    company = Instantiator('contacts.Company',
                           "name zip_code city:name street street_no",
                           country='DE').build
    yield company('Hans Flott & Co', '22453', 'Hamburg', 'Niendorfer Weg',
                  '532')
    yield company('Bernd Brechts Bücherladen', '80333', munich,
                  'Brienner Straße', '18')
    yield company('Reinhards Baumschule', '12487 ', 'Berlin',
                  'Segelfliegerdamm', '123')

    company = Instantiator('contacts.Company',
                           "name zip_code city:name street street_no",
                           country='FR').build
    yield company('Moulin Rouge', '75018', 'Paris', 'Boulevard de Clichy',
                  '82')
    yield company('Auto École Verte', '54000 ', 'Nancy', 'rue de Mon Désert',
                  '12')

    Place = dd.resolve_model('countries.Place')

    eupen = Place.objects.get(name__exact='Eupen')
    person = Instantiator("contacts.Person",
                          "first_name last_name",
                          country='BE',
                          city=eupen,
                          zip_code='4700').build
    yield person('Andreas', 'Arens', gender=dd.Genders.male)
    yield person('Annette', 'Arens', gender=dd.Genders.female)
    yield person('Hans', 'Altenberg', gender=dd.Genders.male)
    yield person('Alfons', 'Ausdemwald', gender=dd.Genders.male)
    yield person('Laurent', 'Bastiaensen', gender=dd.Genders.male)
    yield person('Charlotte', 'Collard', gender=dd.Genders.female)
    yield person('Ulrike', 'Charlier', gender=dd.Genders.female)
    yield person('Marc', 'Chantraine', gender=dd.Genders.male)
    yield person('Daniel', 'Dericum', gender=dd.Genders.male)
    yield person('Dorothée', 'Demeulenaere', gender=dd.Genders.female)
    yield person('Dorothée',
                 'Dobbelstein-Demeulenaere',
                 gender=dd.Genders.female)
    yield person('Dorothée', 'Dobbelstein', gender=dd.Genders.female)
    yield person('Berta', 'Ernst', gender=dd.Genders.female)
    yield person('Bernd', 'Evertz', gender=dd.Genders.male)
    yield person('Eberhart', 'Evers', gender=dd.Genders.male)
    yield person('Daniel', 'Emonts', gender=dd.Genders.male)
    yield person('Edgar', 'Engels', gender=dd.Genders.male)
    yield person('Luc', 'Faymonville', gender=dd.Genders.male)
    yield person('Germaine', 'Gernegroß', gender=dd.Genders.female)
    yield person('Gregory', 'Groteclaes', gender=dd.Genders.male)
    yield person('Hildegard', 'Hilgers', gender=dd.Genders.female)
    yield person('Henri', 'Hilgers', gender=dd.Genders.male)
    yield person('Irene', 'Ingels', gender=dd.Genders.female)
    yield person('Jérémy', 'Jansen', gender=dd.Genders.male)
    yield person('Jacqueline', 'Jacobs', gender=dd.Genders.female)
    yield person('Johann', 'Johnen', gender=dd.Genders.male)
    yield person('Josef', 'Jonas', gender=dd.Genders.male)
    yield person('Jan', 'Jousten', gender=dd.Genders.male)
    yield person('Karl', 'Kaivers', gender=dd.Genders.male)
    yield person('Guido', 'Lambertz', gender=dd.Genders.male)
    yield person('Laura', 'Laschet', gender=dd.Genders.female)
    yield person('Line', 'Lazarus', gender=dd.Genders.female)
    yield person('Josefine', 'Leffin', gender=dd.Genders.female)
    yield person('Marc', 'Malmendier', gender=dd.Genders.male)
    yield person('Melissa', 'Meessen', gender=dd.Genders.female)
    yield person('Michael', 'Mießen', gender=dd.Genders.male)
    yield person('Marie-Louise', 'Meier', gender=dd.Genders.female)

    raeren = Place.objects.get(name__exact='Raeren')
    person = Instantiator("contacts.Person",
                          "first_name last_name",
                          country='BE',
                          language=settings.SITE.DEFAULT_LANGUAGE.django_code,
                          city=raeren,
                          zip_code='4730').build
    yield person('Erich', 'Emonts', gender=dd.Genders.male)
    yield person('Erwin', 'Emontspool', gender=dd.Genders.male)
    yield person('Erna', 'Emonts-Gast', gender=dd.Genders.female)
    yield person('Alfons', 'Radermacher', gender=dd.Genders.male)
    yield person('Berta', 'Radermacher', gender=dd.Genders.female)
    yield person('Christian', 'Radermacher', gender=dd.Genders.male)
    yield person('Daniela', 'Radermacher', gender=dd.Genders.female)
    yield person('Edgard', 'Radermacher', gender=dd.Genders.male)
    yield person('Fritz', 'Radermacher', gender=dd.Genders.male)
    yield person('Guido', 'Radermacher', gender=dd.Genders.male)
    yield person('Hans', 'Radermacher', gender=dd.Genders.male)
    yield person('Hedi', 'Radermacher', gender=dd.Genders.female)
    yield person('Inge', 'Radermacher', gender=dd.Genders.female)
    yield person('Jean', 'Radermacher', gender=dd.Genders.male)

    # special challenges for alphabetic ordering
    yield person('Didier', 'di Rupo', gender=dd.Genders.male)
    yield person('David', 'da Vinci', gender=dd.Genders.male)
    yield person('Vincent', 'van Veen', gender=dd.Genders.male)
    yield person('Õie', 'Õunapuu', gender=dd.Genders.female)
    yield person('Otto', 'Östges', gender=dd.Genders.male)
    yield person('Erna', 'Ärgerlich', gender=dd.Genders.female)

    person = Instantiator("contacts.Person",
                          country='BE',
                          city=Place.objects.get(name__exact='Angleur')).build
    yield person(first_name='Bernard', last_name='Bodard', title='Dr.')
    yield person(first_name='Jean', last_name='Dupont')

    person = Instantiator(
        "contacts.Person",
        country='NL',
        city=Place.objects.get(name__exact='Amsterdam')).build
    yield person(first_name='Mark',
                 last_name='Martelaer',
                 gender=dd.Genders.male)
    yield person(first_name='Rik',
                 last_name='Radermecker',
                 gender=dd.Genders.male)
    yield person(first_name='Marie-Louise',
                 last_name='Vandenmeulenbos',
                 gender=dd.Genders.female)

    person = Instantiator("contacts.Person", country='DE').build
    yield person(first_name='Emil',
                 last_name='Eierschal',
                 gender=dd.Genders.male)
    yield person(first_name='Lisa', last_name='Lahm', gender=dd.Genders.female)
    yield person(first_name='Bernd',
                 last_name='Brecht',
                 gender=dd.Genders.male)
    yield person(first_name='Karl', last_name='Keller', gender=dd.Genders.male)

    person = Instantiator("contacts.Person", country='FR').build
    yield person(first_name='Robin',
                 last_name='Dubois',
                 gender=dd.Genders.male)
    yield person(first_name='Denis', last_name='Denon', gender=dd.Genders.male)
    yield person(first_name='Jérôme',
                 last_name='Jeanémart',
                 gender=dd.Genders.male)

    nr = 1
    for p in rt.modules.contacts.Person.objects.filter(city=eupen):
        p.street = STREETS.pop()
        p.stret_no = str(nr)
        p.save()
        nr += 1
Пример #54
0
 def get_worker_choices(self):
     worker = dd.resolve_model(worker_model)
     return worker.objects.all()
Пример #55
0
#import time
#from datetime import date
#from dateutil import parser as dateparser
#from lino.projects.finan import models as finan
#~ import decimal
from decimal import Decimal
from django.conf import settings

from lino.api import dd, rt
from lino.utils import Cycler
from lino.utils.instantiator import Instantiator, i2d
from lino.core.utils import resolve_model

partner_model = settings.SITE.partners_app_label + '.Partner'
Partner = dd.resolve_model(partner_model)

REQUEST = None


def objects():

    ledger = dd.resolve_app('ledger')
    finan = dd.resolve_app('finan')
    #~ partners = dd.resolve_app('partners')
    #~ contacts = dd.resolve_app('contacts')

    MODEL = finan.BankStatement
    vt = ledger.VoucherTypes.get_for_model(MODEL)
    JOURNALS = Cycler(vt.get_journals())
    PARTNERS = Cycler(Partner.objects.order_by('name'))
Пример #56
0
def objects():

    yield site_company_objects()

    if settings.SITE.get_language_info('de'):
        munich = 'München'
    else:
        munich = 'Munich'  # en, fr

    if settings.SITE.get_language_info('fr'):
        kelmis = 'La Calamine'
    else:
        kelmis = 'Kelmis'  # en, de

    company = Instantiator(
        'contacts.Company', "name zip_code city:name street street_no",
        country='BE').build
    yield company('Bäckerei Ausdemwald', '4700', 'Eupen',
                  'Vervierser Straße', '45')
    yield company('Bäckerei Mießen',     '4700', 'Eupen',
                  'Gospert', '103')
    yield company('Bäckerei Schmitz',    '4700', 'Eupen',
                  'Aachener Straße', '53')
    yield company('Garage Mergelsberg',  '4720', kelmis,
                  'Kasinostraße', '13')

    company = Instantiator(
        'contacts.Company',
        "name zip_code city:name street street_no", country='NL').build
    yield company('Donderweer BV', '4816 AR', 'Breda', 'Edisonstraat', '12')
    yield company('Van Achter NV', '4836 LG', 'Breda', 'Hazeldonk', '2')

    company = Instantiator(
        'contacts.Company',
        "name zip_code city:name street street_no", country='DE').build
    yield company('Hans Flott & Co', '22453', 'Hamburg',
                  'Niendorfer Weg', '532')
    yield company('Bernd Brechts Bücherladen', '80333',
                  munich, 'Brienner Straße', '18')
    yield company('Reinhards Baumschule', '12487 ',
                  'Berlin', 'Segelfliegerdamm', '123')

    company = Instantiator(
        'contacts.Company',
        "name zip_code city:name street street_no", country='FR').build
    yield company('Moulin Rouge', '75018', 'Paris',
                  'Boulevard de Clichy', '82')
    yield company('Auto École Verte', '54000 ', 'Nancy',
                  'rue de Mon Désert', '12')

    Place = dd.resolve_model('countries.Place')

    eupen = Place.objects.get(name__exact='Eupen')
    person = Instantiator("contacts.Person", "first_name last_name",
                          country='BE', city=eupen, zip_code='4700').build
    yield person('Andreas',  'Arens', gender=dd.Genders.male,
                 phone="+32 87123456", email="*****@*****.**")
    yield person('Annette',  'Arens', gender=dd.Genders.female,
                 phone="+32 87123457", email="*****@*****.**")
    yield person('Hans',     'Altenberg', gender=dd.Genders.male)
    yield person('Alfons',   'Ausdemwald', gender=dd.Genders.male)
    yield person('Laurent',  'Bastiaensen', gender=dd.Genders.male)
    yield person('Charlotte', 'Collard', gender=dd.Genders.female)
    yield person('Ulrike',   'Charlier', gender=dd.Genders.female)
    yield person('Marc',  'Chantraine', gender=dd.Genders.male)
    yield person('Daniel',   'Dericum', gender=dd.Genders.male)
    yield person('Dorothée', 'Demeulenaere', gender=dd.Genders.female)
    yield person('Dorothée', 'Dobbelstein-Demeulenaere',
                 gender=dd.Genders.female)
    yield person('Dorothée', 'Dobbelstein', gender=dd.Genders.female)
    yield person('Berta',    'Ernst', gender=dd.Genders.female)
    yield person('Bernd',    'Evertz', gender=dd.Genders.male)
    yield person('Eberhart', 'Evers', gender=dd.Genders.male)
    yield person('Daniel',   'Emonts', gender=dd.Genders.male)
    yield person('Edgar',    'Engels', gender=dd.Genders.male)
    yield person('Luc',      'Faymonville', gender=dd.Genders.male)
    yield person('Germaine', 'Gernegroß', gender=dd.Genders.female)
    yield person('Gregory',  'Groteclaes', gender=dd.Genders.male)
    yield person('Hildegard', 'Hilgers', gender=dd.Genders.female)
    yield person('Henri',    'Hilgers', gender=dd.Genders.male)
    yield person('Irene',    'Ingels', gender=dd.Genders.female)
    yield person('Jérémy',   'Jansen', gender=dd.Genders.male)
    yield person('Jacqueline', 'Jacobs', gender=dd.Genders.female)
    yield person('Johann', 'Johnen', gender=dd.Genders.male)
    yield person('Josef', 'Jonas', gender=dd.Genders.male)
    yield person('Jan',   'Jousten', gender=dd.Genders.male)
    yield person('Karl',  'Kaivers', gender=dd.Genders.male)
    yield person('Guido', 'Lambertz', gender=dd.Genders.male)
    yield person('Laura', 'Laschet', gender=dd.Genders.female)
    yield person('Line', 'Lazarus', gender=dd.Genders.female)
    yield person('Josefine', 'Leffin', gender=dd.Genders.female)
    yield person('Marc', 'Malmendier', gender=dd.Genders.male)
    yield person('Melissa', 'Meessen', gender=dd.Genders.female)
    yield person('Michael', 'Mießen', gender=dd.Genders.male)
    yield person('Marie-Louise', 'Meier', gender=dd.Genders.female)

    raeren = Place.objects.get(name__exact='Raeren')
    person = Instantiator(
        "contacts.Person", "first_name last_name",
        country='BE', language=settings.SITE.DEFAULT_LANGUAGE.django_code,
        city=raeren, zip_code='4730').build
    yield person('Erich',    'Emonts', gender=dd.Genders.male)
    yield person('Erwin',    'Emontspool', gender=dd.Genders.male)
    yield person('Erna',     'Emonts-Gast', gender=dd.Genders.female)
    yield person('Alfons',     'Radermacher', gender=dd.Genders.male)
    yield person('Berta',     'Radermacher', gender=dd.Genders.female)
    yield person('Christian',     'Radermacher', gender=dd.Genders.male)
    yield person('Daniela',     'Radermacher', gender=dd.Genders.female)
    yield person('Edgard',     'Radermacher', gender=dd.Genders.male)
    yield person('Fritz',     'Radermacher', gender=dd.Genders.male)
    yield person('Guido',     'Radermacher', gender=dd.Genders.male)
    yield person('Hans',     'Radermacher', gender=dd.Genders.male)
    yield person('Hedi',     'Radermacher', gender=dd.Genders.female)
    yield person('Inge',     'Radermacher', gender=dd.Genders.female)
    yield person('Jean',     'Radermacher', gender=dd.Genders.male)

    # special challenges for alphabetic ordering
    yield person('Didier',  'di Rupo', gender=dd.Genders.male)
    yield person('David',   'da Vinci', gender=dd.Genders.male)
    yield person('Vincent', 'van Veen', gender=dd.Genders.male)
    yield person('Õie',     'Õunapuu', gender=dd.Genders.female)
    yield person('Otto',   'Östges', gender=dd.Genders.male)
    yield person('Erna',   'Ärgerlich', gender=dd.Genders.female)

    person = Instantiator("contacts.Person", country='BE',
                          city=Place.objects.get(name__exact='Angleur')).build
    yield person(first_name='Bernard', last_name='Bodard', title='Dr.')
    yield person(first_name='Jean', last_name='Dupont')

    person = Instantiator("contacts.Person", country='NL',
                          city=Place.objects.get(
                              name__exact='Amsterdam')).build
    yield person(first_name='Mark', last_name='Martelaer',
                 gender=dd.Genders.male)
    yield person(first_name='Rik', last_name='Radermecker',
                 gender=dd.Genders.male)
    yield person(first_name='Marie-Louise', last_name='Vandenmeulenbos',
                 gender=dd.Genders.female)

    person = Instantiator("contacts.Person", country='DE').build
    yield person(first_name='Emil', last_name='Eierschal',
                 gender=dd.Genders.male)
    yield person(first_name='Lisa', last_name='Lahm',
                 gender=dd.Genders.female)
    yield person(first_name='Bernd', last_name='Brecht',
                 gender=dd.Genders.male)
    yield person(first_name='Karl', last_name='Keller',
                 gender=dd.Genders.male)

    person = Instantiator("contacts.Person", country='FR').build
    yield person(first_name='Robin', last_name='Dubois',
                 gender=dd.Genders.male)
    yield person(first_name='Denis', last_name='Denon',
                 gender=dd.Genders.male)
    yield person(first_name='Jérôme', last_name='Jeanémart',
                 gender=dd.Genders.male)

    nr = 1
    for p in rt.models.contacts.Person.objects.filter(city=eupen):
        p.street = STREETS.pop()
        p.stret_no = str(nr)
        p.save()
        nr += 1
Пример #57
0

"""
from __future__ import unicode_literals
import datetime

from builtins import str

# from lino.utils import mti
from lino.api import dd, rt, _
from lino.utils.instantiator import create
from django.core.exceptions import ValidationError

from .timloader1 import TimLoader

Person = dd.resolve_model("contacts.Person")
Company = dd.resolve_model("contacts.Company")
RoleType = dd.resolve_model("contacts.RoleType")
Role = dd.resolve_model("contacts.Role")
Household = rt.models.households.Household
Product = dd.resolve_model('products.Product')
# List = dd.resolve_model('lists.List')
Client = rt.models.tera.Client
Course = rt.models.courses.Course
Line = rt.models.courses.Line
CourseAreas = rt.models.courses.CourseAreas
Course = rt.models.courses.Course
Enrolment = rt.models.courses.Enrolment
Event = rt.models.cal.Event
Account = dd.resolve_model('ledger.Account')