Esempio n. 1
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()
Esempio n. 2
0
File: std.py Progetto: DarioGT/lino
def objects():
    ptype = Instantiator('properties.PropType').build
    properties = dd.resolve_app('properties')
    yield ptype(id=1,
                **dd.babel_values(
                    'name',
                    **dict(
                        en="Present or not",
                        de=u"Vorhanden oder nicht",
                        fr=u"Présent ou pas",
                        et=u"Olemas või mitte",
                        nl=u"Ja of niet",
                    )))
    yield ptype(id=2,
                choicelist=properties.HowWell.actor_id,
                default_value=properties.HowWell.default.value,
                **dd.babel_values(
                    'name',
                    **dict(
                        en="Rating",
                        de=u"Bewertung",
                        et=u"Hinnang",
                        fr=u"Appréciation(?)",
                        nl=u"Hoe goed",
                    )))
Esempio n. 3
0
def page(ref, language, title, body, parent=None, raw_html=False):
    if not settings.SITE.get_language_info(language):
        return
    pages = dd.resolve_app('pages', strict=True)
    obj = pages.lookup(ref, None)
    #~ obj = PAGES.get(ref)
    if parent is not None:
        parent = pages.lookup(parent)
    if obj is None:
        #~ kw = dict(,parent=parent)
        obj = pages.create_page(ref=ref)
        #~ PAGES[ref] = obj
        #~ if not ref:
            #~ logger.info("20130109 define index page %r --> %r",language,body)
    #~ else:
        #~ if not ref:
            #~ logger.info("20130109 override index page %r --> %r",language,body)

    setattr(obj, 'raw_html', raw_html)
    setattr(obj, 'parent', parent)
    setattr(obj, babelfield('title', language), title)
    setattr(obj, babelfield('body', language), body.strip())
    # must save it already here so that subsequent pages of the same fixture
    # can use it as parent.
    obj.full_clean()
    obj.save()
Esempio n. 4
0
def objects():
    countries = dd.resolve_app('countries')
    city = Instantiator(countries.Place,
                        "zip_code name",
                        country='BE',
                        type=countries.PlaceTypes.city).build
    for ln in belgian_cities.splitlines():
        ln = ln.strip()
        if ln and ln[0] != '#':
            args = ln.split(None, 1)
            o = city(*args)
            # print "%r %r" % (o.zip_code, o.name)
            yield o
            #~ print __name__, "20121114"
            #~ return
    for ln in belgian_cities_nl_fr.splitlines():
        ln = ln.strip()
        if ln and ln[0] != '#':
            args = ln.split('|')
            if len(args) != 4:
                raise Exception("Invalid format : \n%s" % ln)
            args = [x.strip() for x in args]
            o = city(zip_code=args[0],
                     **dd.babel_values('name',
                                       nl=args[1],
                                       fr=args[2],
                                       de=args[3],
                                       en=args[3]))
            yield o
Esempio n. 5
0
def objects():

    #~ slot = Instantiator('courses.Slot','name start_time end_time').build
    #~
    #~ kw = dict(monday=True,tuesday=True,wednesday=False,thursday=True,friday=True)
    #~ yield slot("Erste Stunde","16:00","17:00",**kw)
    #~ yield slot("Zweite Stunde","17:00","18:00",**kw)
    #~ yield slot("Dritte Stunde","18:00","19:00",**kw)
    #~
    #~ kw = dict(wednesday=True)
    #~ yield slot("Mittwochs 13 Uhr","13:00","14:00",**kw)
    #~ yield slot("Mittwochs 14 Uhr","14:00","15:00",**kw)
    #~ yield slot("Mittwochs 15 Uhr","15:00","16:00",**kw)
    #~ yield slot("Mittwochs 16 Uhr","16:00","17:00",**kw)
    #~ yield slot("Mittwochs 17 Uhr","17:00","18:00",**kw)
    #~ yield slot("Mittwochs 18 Uhr","18:00","19:00",**kw)

    courses = dd.resolve_app('courses')

    yield courses.Line(**dd.babelkw(
        'name',
        de=u"Deutsch Anfänger",
        fr=u"Allemand débutants",
        en=u"German beginners",
    ))
    yield courses.Line(**dd.babelkw(
        'name',
        de=u"Französisch Anfänger",
        fr=u"Français débutants",
        en=u"French beginners",
    ))
Esempio n. 6
0
def objects():

    #~ slot = Instantiator('courses.Slot','name start_time end_time').build
    #~
    #~ kw = dict(monday=True,tuesday=True,wednesday=False,thursday=True,friday=True)
    #~ yield slot("Erste Stunde","16:00","17:00",**kw)
    #~ yield slot("Zweite Stunde","17:00","18:00",**kw)
    #~ yield slot("Dritte Stunde","18:00","19:00",**kw)
    #~
    #~ kw = dict(wednesday=True)
    #~ yield slot("Mittwochs 13 Uhr","13:00","14:00",**kw)
    #~ yield slot("Mittwochs 14 Uhr","14:00","15:00",**kw)
    #~ yield slot("Mittwochs 15 Uhr","15:00","16:00",**kw)
    #~ yield slot("Mittwochs 16 Uhr","16:00","17:00",**kw)
    #~ yield slot("Mittwochs 17 Uhr","17:00","18:00",**kw)
    #~ yield slot("Mittwochs 18 Uhr","18:00","19:00",**kw)

    courses = dd.resolve_app('courses')

    yield courses.Line(**dd.babelkw('name',
                                 de=u"Deutsch Anfänger",
                                 fr=u"Allemand débutants",
                                 en=u"German beginners",
                                 ))
    yield courses.Line(**dd.babelkw('name',
                                 de=u"Französisch Anfänger",
                                 fr=u"Français débutants",
                                 en=u"French beginners",
                                 ))
Esempio n. 7
0
def page(ref, language, title, body, parent=None, raw_html=False):
    if not settings.SITE.get_language_info(language):
        return
    pages = dd.resolve_app('pages', strict=True)
    obj = pages.lookup(ref, None)
    #~ obj = PAGES.get(ref)
    if parent is not None:
        parent = pages.lookup(parent)
    if obj is None:
        #~ kw = dict(,parent=parent)
        obj = pages.create_page(ref=ref)
        #~ PAGES[ref] = obj
        #~ if not ref:
        #~ logger.info("20130109 define index page %r --> %r",language,body)
    #~ else:
    #~ if not ref:
    #~ logger.info("20130109 override index page %r --> %r",language,body)

    setattr(obj, 'raw_html', raw_html)
    setattr(obj, 'parent', parent)
    setattr(obj, babelfield('title', language), title)
    setattr(obj, babelfield('body', language), body.strip())
    # must save it already here so that subsequent pages of the same fixture
    # can use it as parent.
    obj.full_clean()
    obj.save()
Esempio n. 8
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)
Esempio n. 9
0
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'))
    USERS = Cycler(settings.SITE.user_model.objects.all())
    AMOUNTS = Cycler([
        Decimal(x) for x in
        "2.50 6.80 9.95 14.50 20 29.90 39.90 39.90 99.95 199.95 599.95 1599.99"
        .split()
    ])
    ITEMCOUNT = Cycler(1, 3, 10)
    for i in range(2):
        jnl = JOURNALS.pop()
        voucher = MODEL(journal=jnl,
                        user=USERS.pop(),
                        date=settings.SITE.demo_date(-30 + i))
        yield voucher
        ACCOUNTS = Cycler(jnl.get_allowed_accounts())
        for j in range(ITEMCOUNT.pop()):
            item = voucher.add_voucher_item(partner=PARTNERS.pop(),
                                            account=ACCOUNTS.pop(),
                                            amount=AMOUNTS.pop())
            #~ item.total_incl_changed(REQUEST)
            #~ item.before_ui_save(REQUEST)
            #~ if item.total_incl:
            #~ print "20121208 ok", item
            #~ else:
            #~ if item.product.price:
            #~ raise Exception("20121208")
            yield item
        voucher.register(REQUEST)
        yield voucher
Esempio n. 10
0
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'))
    USERS = Cycler(settings.SITE.user_model.objects.all())
    AMOUNTS = Cycler([Decimal(x) for x in
                      "2.50 6.80 9.95 14.50 20 29.90 39.90 39.90 99.95 199.95 599.95 1599.99".split()])
    ITEMCOUNT = Cycler(1, 3, 10)
    for i in range(2):
        jnl = JOURNALS.pop()
        voucher = MODEL(journal=jnl,
                        user=USERS.pop(),
                        date=settings.SITE.demo_date(-30 + i))
        yield voucher
        ACCOUNTS = Cycler(jnl.get_allowed_accounts())
        for j in range(ITEMCOUNT.pop()):
            item = voucher.add_voucher_item(
                partner=PARTNERS.pop(),
                account=ACCOUNTS.pop(),
                amount=AMOUNTS.pop()
            )
            #~ item.total_incl_changed(REQUEST)
            #~ item.before_ui_save(REQUEST)
            #~ if item.total_incl:
                #~ print "20121208 ok", item
            #~ else:
                #~ if item.product.price:
                    #~ raise Exception("20121208")
            yield item
        voucher.register(REQUEST)
        yield voucher
Esempio n. 11
0
def objects():

    pcsw = dd.resolve_app('pcsw')

    Place = resolve_model('countries.Place')
    Client = resolve_model('pcsw.Client')
    CourseContent = resolve_model('courses.CourseContent')

    CLIENTS = Cycler(
        Client.objects.filter(client_state=pcsw.ClientStates.coached))

    eupen = Place.objects.get(name__exact='Eupen')

    courseprovider = Instantiator('courses.CourseProvider').build
    oikos = courseprovider(name=u"Oikos", city=eupen, country='BE')
    yield oikos
    # oikos.repairdata()

    kap = courseprovider(name=u"KAP", city=eupen, country='BE')
    yield kap
    # kap.repairdata()

    yield CourseContent(id=1, name=u"Deutsch")
    yield CourseContent(id=2, name=u"Französisch")

    COURSECONTENTS = Cycler(CourseContent.objects.all())

    creq = Instantiator('courses.CourseRequest').build
    for i in range(20):
        yield creq(
            person=CLIENTS.pop(), content=COURSECONTENTS.pop(),
            date_submitted=settings.SITE.demo_date(-i * 2))
    #~ yield creq(person=ulrike,content=1,date_submitted=settings.SITE.demo_date(-30))
    #~ yield creq(person=tatjana,content=1,date_submitted=settings.SITE.demo_date(-30))
    #~ yield creq(person=erna,content=2,date_submitted=settings.SITE.demo_date(-30))

    offer = Instantiator('courses.CourseOffer').build
    course = Instantiator('courses.Course').build
    yield offer(provider=oikos, title=u"Deutsch für Anfänger", content=1)
    #~ yield course(offer=1,start_date=i2d(20110110))
    yield course(offer=1, start_date=settings.SITE.demo_date(+30))

    yield offer(provider=kap, title=u"Deutsch für Anfänger", content=1)
    #~ yield course(offer=2,start_date=i2d(20110117))
    yield course(offer=2, start_date=settings.SITE.demo_date(+16))

    yield offer(provider=kap, title=u"Français pour débutants", content=2)
    #~ yield course(offer=3,start_date=i2d(20110124))
    yield course(offer=3, start_date=settings.SITE.demo_date(+16))
Esempio n. 12
0
File: std.py Progetto: khchine5/xl
def objects():
    ptype = Instantiator('properties.PropType').build
    properties = dd.resolve_app('properties')
    yield ptype(id=1, **dd.babel_values('name', **dict(
        en="Present or not",
        de=u"Vorhanden oder nicht",
        fr=u"Présent ou pas",
        et=u"Olemas või mitte",
        nl=u"Ja of niet",
    )))
    yield ptype(id=2,
                choicelist=properties.HowWell.actor_id,
                default_value=properties.HowWell.default.value,
                **dd.babel_values('name', **dict(
                    en="Rating",
                    de=u"Bewertung",
                    et=u"Hinnang",
                    fr=u"Appréciation(?)",
                    nl=u"Hoe goed",
                )))
Esempio n. 13
0
def objects():
    from lino.api import dd, rt
    pcsw = dd.resolve_app('pcsw')

    #~ persongroup = Instantiator('pcsw.PersonGroup','name').build
    # Auswertung / Bilan
    yield pcsw.PersonGroup(ref_name='1', name=_("Evaluation"))
    # Formation / Ausbildung
    yield pcsw.PersonGroup(ref_name='2', name=_("Formation"))
    yield pcsw.PersonGroup(ref_name='4', name=_("Search"))  # Suche / Recherche
    yield pcsw.PersonGroup(ref_name='4bis', name=_("Work"))  # Arbeit / Travail
    yield pcsw.PersonGroup(ref_name='9', name=_("Standby"))
    #~ yield persongroup(u"Bilan",ref_name='1')
    #~ yield persongroup(u"Formation",ref_name='2')
    #~ yield persongroup(u"Recherche",ref_name='4')
    #~ yield persongroup(u"Travail",ref_name='4bis')
    #~ yield persongroup(u"Standby",ref_name='9',active=False)

    yield pcsw.CoachingEnding(**babelkw('name',
                                        de="Übergabe an Kollege",
                                        fr="Transfert vers collègue",
                                        en="Transfer to colleague",))
    yield pcsw.CoachingEnding(**babelkw('name',
                                        de="Einstellung des Anrechts auf SH",
                                        fr="Arret du droit à l'aide sociale",
                                        en="End of right on social aid"))
    yield pcsw.CoachingEnding(**babelkw('name',
                                        de="Umzug in andere Gemeinde",
                                        fr="Déménagement vers autre commune",
                                        en="Moved to another town"))
    yield pcsw.CoachingEnding(**babelkw('name',
                                        de="Hat selber Arbeit gefunden",
                                        fr="A trouvé du travail",
                                        en="Found a job"))

    yield pcsw.DispenseReason(**babelkw('name', de="Gesundheitlich", fr="Santé", en="Health"))
    yield pcsw.DispenseReason(**babelkw('name', de="Studium/Ausbildung", fr="Etude/Formation", en="Studies"))
    yield pcsw.DispenseReason(**babelkw('name', de="Familiär", fr="Cause familiale", en="Familiar"))
    yield pcsw.DispenseReason(**babelkw('name', de="Sonstige", fr="Autre", en="Other"))
Esempio n. 14
0
def objects():
    countries = dd.resolve_app('countries')
    city = Instantiator(countries.Place, "zip_code name",
                        country='BE',
                        type=countries.PlaceTypes.city).build
    for ln in belgian_cities.splitlines():
        ln = ln.strip()
        if ln and ln[0] != '#':
            args = ln.split(None, 1)
            o = city(*args)
            # print "%r %r" % (o.zip_code, o.name)
            yield o
            #~ print __name__, "20121114"
            #~ return
    for ln in belgian_cities_nl_fr.splitlines():
        ln = ln.strip()
        if ln and ln[0] != '#':
            args = ln.split('|')
            if len(args) != 4:
                raise Exception("Invalid format : \n%s" % ln)
            args = [x.strip() for x in args]
            o = city(zip_code=args[0], **dd.babel_values('name',
                     nl=args[1], fr=args[2], de=args[3], en=args[3]))
            yield o
Esempio n. 15
0
 def cbss_relations(self, ar):
     if ar is None:
         return ''
     cbss = dd.resolve_app('cbss')
     SLAVE = cbss.RetrieveTIGroupsRequestsByPerson
     elems = []
     sar = ar.spawn(
         SLAVE, master_instance=self,
         filter=models.Q(status__in=OK_STATES))
     btn = SLAVE.insert_action.request_from(ar).ar2button()
     n = sar.get_total_count()
     if n > 0:
         items = []
         SHOWN_TYPES = ('110', '120', '140', '141')
         obj = sar.data_iterator[n - 1]
         res = obj.Result(ar)
         for row in res:
             if row.type in SHOWN_TYPES:
                 chunks = []
                 if row.counter == 1:
                     chunks += [
                         'IT%s (' % row.type,
                         E.b(row.group),
                         ') ']
                 chunks += [str(row.since), ' ', row.info]
                 items.append(E.li(*chunks))
         if len(items) > 0:
             elems.append(E.ul(*items))
                 
         text = "%s %s" % (obj._meta.verbose_name, naturaltime(obj.sent))
         elems.append(ar.obj2html(obj, text))
     if btn is not None:
         elems += [' ', btn]
     if None in elems:
         raise Exception("20140513 None in %r" % elems)
     return E.div(*elems)
Esempio n. 16
0
# Copyright 2008-2016 Luc Saffre
# License: BSD (see file COPYING for details)
"""
Database models for `lino_xl.lib.products`.

"""

from django.db import models
from django.utils.translation import ugettext_lazy as _

from lino.api import dd
from lino import mixins

from .choicelists import DeliveryUnit

vat = dd.resolve_app('vat')


class ProductCat(mixins.BabelNamed):
    """A **product category** is a way to group products."""
    class Meta:
        app_label = 'products'
        verbose_name = _("Product Category")
        verbose_name_plural = _("Product Categories")
        abstract = dd.is_abstract_model(__name__, 'ProductCat')

    description = models.TextField(blank=True)


class ProductCats(dd.Table):
    model = 'products.ProductCat'
Esempio n. 17
0
    if not nt:
        return
    prj = owner.get_related_project()
    if prj:
        kw.update(project=prj)
    note = rt.modules.notes.Note(event_type=nt,
                                 owner=owner,
                                 subject=subject,
                                 body=body,
                                 user=request.user,
                                 **kw)
    #~ owner.update_system_note(note)
    note.save()


system = dd.resolve_app('system')


def customize_siteconfig():
    """
    Injects application-specific fields to :class:`SiteConfig <lino.modlib.system.SiteConfig>`.
    """
    dd.inject_field(
        'system.SiteConfig', 'system_note_type',
        dd.ForeignKey('notes.EventType',
                      blank=True,
                      null=True,
                      verbose_name=_("Default system note type"),
                      help_text=_("""\
Note Type used by system notes.
If this is empty, then system notes won't create any entry to the Notes table."""
Esempio n. 18
0
from lino_xl.lib.clients.mixins import ClientBase
# from lino_xl.lib.notes.mixins import Notable
from lino_xl.lib.cal.mixins import EventGenerator
from lino_xl.lib.cal.workflows import TaskStates
from lino_xl.lib.cv.mixins import BiographyOwner
# from lino.utils.mldbc.fields import BabelVirtualField
from lino.mixins import ObservedDateRange
from lino_xl.lib.clients.choicelists import ClientEvents, ClientStates
from lino.core.roles import Explorer
from lino_xl.lib.cv.roles import CareerUser

from .choicelists import TranslatorTypes, StartingReasons, ProfessionalStates
from .choicelists import OldEndingReasons
from .roles import ClientsNameUser, ClientsUser, ClientsStaff

contacts = dd.resolve_app('contacts')

# def cef_level_getter(lng):
#     def f(obj):
#         LanguageKnowledge = rt.models.cv.LanguageKnowledge
#         if obj._cef_levels is None:
#             obj._cef_levels = dict()
#             for lk in LanguageKnowledge.objects.filter(person=obj):
#                 obj._cef_levels[lk.language.iso2] = lk.obj._cef_levels
#         return obj._cef_levels.get(lng.django_code)
#     return f

from lino.utils.mldbc.mixins import BabelDesignated


class Category(BabelDesignated):
Esempio n. 19
0
from lino_xl.lib.excerpts.mixins import Certifiable
from lino_xl.lib.excerpts.mixins import ExcerptTitle
from lino.modlib.users.mixins import UserAuthored
from lino.modlib.printing.mixins import Printable
# from lino.modlib.printing.utils import PrintableObject
from lino_xl.lib.cal.mixins import Reservation
from lino_xl.lib.cal.choicelists import Recurrencies
from lino_xl.lib.cal.utils import day_and_month
from lino_xl.lib.contacts.mixins import ContactRelated

from lino.utils.dates import DateRangeValue

from .choicelists import EnrolmentStates, CourseStates, ActivityLayouts
from .actions import PrintPresenceSheet

cal = dd.resolve_app('cal')  # returns None if cal is not imported

try:
    teacher_model = dd.plugins.courses.teacher_model
    teacher_label = dd.plugins.courses.teacher_label
    pupil_model = dd.plugins.courses.pupil_model
    pupil_name_fields = dd.plugins.courses.pupil_name_fields
except AttributeError:
    # Happens only when Sphinx autodoc imports it and this module is
    # not installed.
    teacher_label = _("Instructor")
    teacher_model = 'foo.Bar'
    pupil_model = 'foo.Bar'
    pupil_name_fields = 'foo bar'

FILL_EVENT_GUESTS = False
Esempio n. 20
0
from django.conf import settings
from django.utils.translation import ugettext_lazy as _

from lino.api import dd, rt
from lino.utils import i2d, Cycler
from lino_xl.lib.beid.mixins import BeIdCardTypes
from lino.utils.instantiator import Instantiator
from lino.core.utils import resolve_model
from lino.utils import mti
from lino.utils.ssin import generate_ssin

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):
Esempio n. 21
0
import logging
logger = logging.getLogger(__name__)

from django.db import models
from django.conf import settings

from lino.api import dd, rt, _, gettext
from lino import mixins

from lino.utils import join_words, join_elems
from etgen.html import E
from lino_xl.lib.contacts.roles import ContactsUser, ContactsStaff

from .choicelists import MemberRoles, MemberDependencies

contacts = dd.resolve_app('contacts')

config = dd.plugins.households

from .choicelists import child_roles, parent_roles

class Type(mixins.BabelNamed):
    """
    Type of a household.
    http://www.belgium.be/fr/famille/couple/cohabitation/
    """
    class Meta:
        app_label = 'households'
        verbose_name = _("Household Type")
        verbose_name_plural = _("Household Types")
Esempio n. 22
0
    def card2client(cls, data):
        "does the actual conversion"

        self = cls

        from lino.utils import ssin
        from lino.api import dd, rt
        from lino.mixins.beid import BeIdCardTypes
        from lino.utils import join_words
        from lino.utils import IncompleteDate
        from lino_xl.lib.contacts.utils import street2kw

        countries = dd.resolve_app('countries', strict=True)

        kw = dict()
        #~ def func(fldname,qname):
        #~ kw[fldname] = data[qname]
        kw.update(national_id=ssin.format_ssin(data['nationalNumber']))
        kw.update(first_name=join_words(data['firstName1'], data['firstName2'],
                                        data['firstName3']))
        #~ func('first_name','firstName1')
        kw.update(last_name=data['surname'])

        card_number = data['cardNumber']

        if 'picture' in data:
            fn = self.card_number_to_picture_file(card_number)
            if os.path.exists(fn):
                logger.warning("Overwriting existing image file %s.", fn)
            fp = file(fn, 'wb')
            fp.write(base64.b64decode(data['picture']))
            fp.close()
            #~ print 20121117, repr(data['picture'])
            #~ kw.update(picture_data_encoded=data['picture'])

        #~ func('card_valid_from','validityBeginDate')
        #~ func('card_valid_until','validityEndDate')
        #~ func('birth_date','birthDate')
        kw.update(birth_date=IncompleteDate(
            *settings.SITE.parse_date(data['birthDate'])))
        kw.update(card_valid_from=datetime.date(
            *settings.SITE.parse_date(data['validityBeginDate'])))
        kw.update(card_valid_until=datetime.date(
            *settings.SITE.parse_date(data['validityEndDate'])))
        kw.update(card_number=card_number)
        kw.update(card_issuer=data['issuingMunicipality'])
        kw.update(noble_condition=data['nobleCondition'])
        kw.update(street=data['street'])
        kw.update(street_no=data['streetNumber'])
        kw.update(street_box=data['boxNumber'])
        if kw['street'] and not (kw['street_no'] or kw['street_box']):
            kw = street2kw(kw['street'], **kw)
        kw.update(zip_code=data['zipCode'])
        kw.update(birth_place=data['birthLocation'])
        pk = data['country'].upper()

        msg1 = "BeIdReadCardToClientAction %s" % kw.get('national_id')

        #~ try:
        country = countries.Country.objects.get(isocode=pk)
        kw.update(country=country)
        #~ except countries.Country.DoesNotExist,e:
        #~ except Exception,e:
        #~ logger.warning("%s : no country with code %r",msg1,pk)
        #~ BE = countries.Country.objects.get(isocode='BE')
        #~ fld = countries.Place._meta.get_field()
        kw.update(city=countries.Place.lookup_or_create(
            'name', data['municipality'], country=country))

        def sex2gender(sex):
            if sex == 'M':
                return dd.Genders.male
            if sex in 'FVW':
                return dd.Genders.female
            logger.warning("%s : invalid gender code %r", msg1, sex)

        kw.update(gender=sex2gender(data['sex']))

        if False:

            def nationality2country(nationality):
                try:
                    return countries.Country.objects.get(
                        nationalities__icontains=nationality)
                except countries.Country.DoesNotExist, e:
                    logger.warning("%s : no country for nationality %r", msg1,
                                   nationality)
                except MultipleObjectsReturned, e:
                    logger.warning(
                        "%s : found more than one country for nationality %r",
                        msg1, nationality)
Esempio n. 23
0
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('ledger.Account')

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


def ticket_state(idpns):
    if idpns == ' ':
        return tickets.TicketStates.new
    if idpns == 'A':
        return tickets.TicketStates.waiting
    if idpns == 'C':
        return tickets.TicketStates.fixed
    if idpns == 'X':
        return tickets.TicketStates.cancelled
    return tickets.TicketStates.new
    # return None  # 20120829 tickets.TicketStates.blank_item
Esempio n. 24
0
    def run_from_ui(self, ar, **kw):
        elem = ar.selected_rows[0]
        #~ if elem.sent:
        #~ return rr.ui.error(message='Mail has already been sent.')
        #~ subject = elem.subject
        #~ sender = "%s <%s>" % (rr.get_user().get_full_name(),rr.get_user().email)
        sender = "%s <%s>" % (elem.user.get_full_name(), elem.user.email)
        #~ recipients = list(elem.get_recipients_to())
        to = []
        cc = []
        bcc = []
        found = False
        missing_addresses = []
        for r in elem.recipient_set.all():
            recipients = None
            if r.type == RecipientTypes.to:
                recipients = to
            elif r.type == RecipientTypes.cc:
                recipients = cc
            elif r.type == RecipientTypes.bcc:
                recipients = bcc
            if recipients is not None:
                if not r.address:
                    missing_addresses.append(r)
                if r.address.endswith('@example.com'):
                    logger.info("20120712 ignored recipient %s",
                                r.name_address())
                else:
                    recipients.append(r.name_address())
                found = True
            #~ else:
            #~ logger.info("Ignoring recipient %s (type %s)",r,r.type)
        if not found:
            return ar.error(_("No recipients found."))
        if len(missing_addresses):
            msg = _("There are recipients without address: ")
            msg += ', '.join([str(r) for r in missing_addresses])
            return ar.error(msg, alert=True)
        #~ as_attachment = elem.owner.attach_to_email(rr)
        #~ body = elem.body
        #~ if as_attachment:
        #~ body = elem.body
        #~ else:
        #~ body = elem.owner.get_mailable_body(rr)
        text_content = html2text(elem.body)
        msg = EmailMultiAlternatives(subject=elem.subject,
                                     from_email=sender,
                                     body=text_content,
                                     to=to,
                                     bcc=bcc,
                                     cc=cc)
        msg.attach_alternative(elem.body, "text/html")
        for att in elem.attachment_set.all():
            #~ if as_attachment or att.owner != elem.owner:
            fn = att.owner.get_target_name()
            if fn is None:
                raise Warning(_("Couldn't find target file of %s") % att.owner)
            msg.attach_file(fn)

        uploads = dd.resolve_app("uploads")
        for up in uploads.UploadsByController.request(elem):
            #~ for up in uploads.Upload.objects.filter(owner=elem):
            fn = os.path.join(settings.MEDIA_ROOT, up.file.name)
            msg.attach_file(fn)

        num_sent = msg.send()

        elem.sent = timezone.now()
        kw.update(refresh=True)
        #~ msg = "Email %s from %s has been sent to %s." % (
        #~ elem.id,elem.sender,', '.join([
        #~ r.address for r in elem.recipient_set.all()]))
        msg = _(
            "Email %(id)s from %(sender)s has been sent to %(num)d recipients."
        ) % dict(id=elem.id, sender=sender, num=num_sent)
        kw.update(message=msg, alert=True)
        #~ for n in """EMAIL_HOST SERVER_EMAIL EMAIL_USE_TLS EMAIL_BACKEND""".split():
        #~ msg += "\n" + n + " = " + unicode(getattr(settings,n))
        logger.info(msg)
        if elem.owner:
            elem.owner.after_send_mail(elem, ar, kw)
        elem.save()
        ar.success(**kw)
Esempio n. 25
0
import logging
logger = logging.getLogger(__name__)


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 atelier.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')
Esempio n. 26
0
- a minimal accounts chart
- some journals


"""

from __future__ import unicode_literals

import logging
logger = logging.getLogger(__name__)

from django.conf import settings
from lino.api import dd, rt, _
from lino_cosi.lib.accounts.utils import DEBIT, CREDIT

accounts = dd.resolve_app('accounts')
vat = dd.resolve_app('vat')
sales = dd.resolve_app('sales')
ledger = dd.resolve_app('ledger')
finan = dd.resolve_app('finan')
declarations = dd.resolve_app('declarations')
#~ partners = dd.resolve_app('partners')


def pcmnref(ref, pcmn):
    if settings.SITE.plugins.ledger.use_pcmn:
        return pcmn
    return ref


CUSTOMERS_ACCOUNT = pcmnref('customers', '4000')
Esempio n. 27
0
## Copyright 2013 Luc Saffre
## This file is part of the Lino project.


from django.db import models
from django.conf import settings
from django.utils.translation import ugettext_lazy as _

from lino.api import dd
from lino import mixins
from lino.modlib.users.mixins import UserAuthored

contacts = dd.resolve_app("contacts")


class EntryType(mixins.BabelNamed):
    class Meta:
        verbose_name = _("Entry Type")
        verbose_name_plural = _("Entry Types")

    # ~ def after_ui_save(self,ar):
    # ~ CompaniesWithEntryTypes.setup_columns()


class EntryTypes(dd.Table):
    model = EntryType


class Entry(UserAuthored):
    class Meta:
        verbose_name = _("Entry")
Esempio n. 28
0
# -*- coding: UTF-8 -*-
# Copyright 2013-2016 Luc Saffre
# License: BSD (see file COPYING for details)

"""
The :xfile:`models` module for :mod:`lino_book.projects.belref`.

"""

from lino.api import dd

concepts = dd.resolve_app('concepts')


class Main(concepts.TopLevelConcepts):
    pass


@dd.receiver(dd.post_analyze)
def my_details(sender, **kw):
    site = sender

    lst = (site.models.countries.Places,
           site.models.countries.Countries,
           site.models.concepts.Concepts)
    for t in lst:
        t.required_roles.discard(dd.SiteUser)
        t.required_roles.discard(dd.SiteStaff)

    site.models.countries.Places.set_detail_layout("""
    name country inscode
Esempio n. 29
0
from django.db import models
from django.core.exceptions import ValidationError

from lino_xl.lib.excerpts.mixins import Certifiable

from lino_xl.lib.accounts.utils import DEBIT, CREDIT, ZERO
from lino_xl.lib.accounts.fields import DebitOrCreditField
from lino_xl.lib.ledger.mixins import VoucherItem, SequencedVoucherItem
from lino_xl.lib.ledger.mixins import ProjectRelated, Matching
from etgen.html import E

from lino.api import dd, rt, _

from lino_xl.lib.ledger.choicelists import VoucherStates

ledger = dd.resolve_app('ledger')


class FinancialVoucher(ledger.Voucher, Certifiable):

    auto_compute_amount = False
    
    class Meta:
        abstract = True

    item_account = dd.ForeignKey(
        'accounts.Account',
        verbose_name=_("Default account"),
        blank=True, null=True)
    item_remark = models.CharField(
        _("Your reference"), max_length=200, blank=True)
Esempio n. 30
0
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):
    if idpns == ' ':
        return tickets.TicketStates.new
    if idpns == 'A':
        return tickets.TicketStates.waiting
    if idpns == 'C':
        return tickets.TicketStates.fixed
    if idpns == 'X':
        return tickets.TicketStates.cancelled
    return tickets.TicketStates.new
    # return None  # 20120829 tickets.TicketStates.blank_item

Esempio n. 31
0
from django.core.exceptions import ValidationError

# from lino.mixins.registrable import Registrable
from lino.modlib.checkdata.choicelists import Checker
from lino_xl.lib.excerpts.mixins import Certifiable
from lino_xl.lib.ledger.utils import DEBIT, CREDIT, ZERO, MAX_AMOUNT
from lino_xl.lib.ledger.models import DebitOrCreditField
from lino_xl.lib.ledger.mixins import VoucherItem, SequencedVoucherItem
from lino_xl.lib.ledger.mixins import ProjectRelated, Matching
from etgen.html import E

from lino.api import dd, rt, _

from lino_xl.lib.ledger.choicelists import VoucherStates

ledger = dd.resolve_app('ledger')


class FinancialVoucher(ledger.RegistrableVoucher, Certifiable):

    auto_compute_amount = False

    class Meta:
        abstract = True
        app_label = "finan"

    state = ledger.VoucherStates.field(default='draft')
    item_account = dd.ForeignKey(
        'ledger.Account',
        verbose_name=_("Default account"),
        blank=True, null=True)
Esempio n. 32
0
# Copyright 2009-2013 Luc Saffre
# License: BSD (see file COPYING for details)

import logging
logger = logging.getLogger(__name__)

from django import http
from django.views.generic import View

from lino.api import dd

from lino.utils.xmlgen import html as xghtml
E = xghtml.E


pages = dd.resolve_app('pages')


class PagesIndex(View):

    def get(self, request, ref='index'):
        if not ref:
            ref = 'index'

        #~ print 20121220, ref
        obj = pages.lookup(ref, None)
        if obj is None:
            raise http.Http404("Unknown page %r" % ref)
        html = pages.render_node(request, obj)
        return http.HttpResponse(html)
Esempio n. 33
0

def add_system_note(request, owner, subject, body, **kw):
    """Create a system note."""
    nt = owner.get_system_note_type(request)
    if not nt:
        return
    prj = owner.get_related_project()
    if prj:
        kw.update(project=prj)
    note = rt.modules.notes.Note(event_type=nt, owner=owner, subject=subject, body=body, user=request.user, **kw)
    # ~ owner.update_system_note(note)
    note.save()


system = dd.resolve_app("system")


def customize_siteconfig():
    """
    Injects application-specific fields to :class:`SiteConfig <lino.modlib.system.SiteConfig>`.
    """
    dd.inject_field(
        "system.SiteConfig",
        "system_note_type",
        dd.ForeignKey(
            "notes.EventType",
            blank=True,
            null=True,
            verbose_name=_("Default system note type"),
            help_text=_(
Esempio n. 34
0
# Copyright 2012 Rumma & Ko Ltd
# License: BSD (see file COPYING for details)

"""
code changes must be documented in *one central place 
per developer*, not per module.
"""

import os
import datetime
from django.conf import settings
from lino.utils import i2d, i2t
from lino.utils.restify import restify, doc2rst

from lino.api import dd, rt
blogs = dd.resolve_app('blogs')
tickets = dd.resolve_app('tickets')


class Blogger(object):

    def __init__(self, user=None):
        self.objects_list = []
        self.date = None
        self.user = user
        self.current_project = None

    def set_date(self, d):
        self.date = i2d(d)

    def set_project(self, project):
Esempio n. 35
0
# -*- coding: UTF-8 -*-
# Copyright 2009-2015 Rumma & Ko Ltd
# License: BSD (see file COPYING for details)
"""Generates 20 fictive sales invoices, distributed over more than
one month.

"""
from __future__ import unicode_literals

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

vat = dd.resolve_app('vat')
sales = dd.resolve_app('sales')
ledger = dd.resolve_app('ledger')

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

REQUEST = settings.SITE.login()


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')
Esempio n. 36
0
def objects():
    #~ dblogger.info("Installing countries few_cities fixture")
    countries = dd.resolve_app('countries')
    #~ Place = resolve_model('countries.Place')
    Place = countries.Place
    Country = countries.Country
    PlaceTypes = countries.PlaceTypes
    city = Instantiator(Place, 'name country').build

    def make_city(country_id, name=None, **kw):
        if False:  # AFTER17:
            kw.setdefault('type', PlaceTypes.city.pk)
            if kw.get('type', False) and isinstance(kw.get('type', False),
                                                    PlaceType):
                kw['type'] = kw['type'].pk
        else:
            kw.setdefault('type', PlaceTypes.city)
        flt = rt.lookup_filter('name', name, country__isocode=country_id, **kw)
        try:
            return Place.objects.get(flt)
            # return Place.objects.exclude(type__in=[
            #     PlaceTypes.county, PlaceTypes.province]).get(flt)
        except MultipleObjectsReturned:
            #~ qs = Place.objects.exclude(type=PlaceTypes.county).filter(country__isocode=country_id,name=name)
            raise Exception("Oops, there are multiple cities for %r", name)
        except Place.DoesNotExist:
            obj = city(name, country_id, **kw)
            obj.full_clean()
            obj.save()
            return obj

    BE = Country.objects.get(pk='BE')
    DE = Country.objects.get(pk='DE')
    FR = Country.objects.get(pk='FR')
    eupen = make_city('BE', 'Eupen', zip_code='4700')
    yield eupen
    yield make_city('BE', 'Nispert', type=PlaceTypes.township, parent=eupen)

    reuland = make_city('BE', 'Burg-Reuland ', zip_code='4790')
    yield make_city('BE', 'Ouren', type=PlaceTypes.township, parent=reuland)

    yield Place(country=BE,
                zip_code='4720',
                type=PlaceTypes.city,
                **dd.babel_values('name',
                                  de='Kelmis',
                                  fr='La Calamine',
                                  en="Kelmis",
                                  et="Kelmis"))
    yield make_city('BE', 'Kettenis', zip_code='4701', type=PlaceTypes.village)
    yield make_city('BE', 'Raeren', zip_code='4730', type=PlaceTypes.village)
    yield make_city('BE', 'Angleur', zip_code='4031')
    yield make_city('BE', 'Ans', zip_code='4430')
    yield make_city('BE', 'Ottignies', zip_code='1340')
    yield make_city('BE', 'Thieusies', zip_code='7061')
    yield make_city('BE', 'Cuesmes', zip_code='7033')
    yield make_city('BE', 'La Reid', zip_code='4910')
    yield make_city('BE', 'Blégny ', zip_code='4670')
    yield make_city('BE', 'Trembleur ', zip_code='4670')
    yield make_city('BE', 'Mortier ', zip_code='4670')
    yield make_city('BE', 'Cerfontaine', zip_code='5630')
    yield make_city('BE', 'Burdinne', zip_code='4210')

    def be_province(de, fr, nl):
        if False:  # AFTER17:
            p = Place(country=BE,
                      type=PlaceTypes.province.pk,
                      **dd.babel_values('name',
                                        de=de,
                                        fr=fr,
                                        nl=nl,
                                        en=fr,
                                        et=fr))
        else:
            p = Place(country=BE,
                      type=PlaceTypes.province,
                      **dd.babel_values('name',
                                        de=de,
                                        fr=fr,
                                        nl=nl,
                                        en=fr,
                                        et=fr))
        return p

    def be_city(zip_code, de=None, fr=None, nl=None, en=None, **kw):
        kw.update(dd.babel_values('name', de=de, fr=fr, nl=nl, en=en, et=en))
        if False:  # AFTER17:
            kw.setdefault('type', PlaceTypes.city.pk)
            if kw.get('type', False) and isinstance(kw.get('type', False),
                                                    PlaceType):
                kw['type'] = kw['type'].pk
        else:
            kw.setdefault('type', PlaceTypes.city)
        return Place(country=BE, zip_code=zip_code, **kw)

    yield be_province("Antwerpen", "Anvers", "Antwerpen")
    yield be_province("Luxemburg", "Luxembourg", "Luxemburg")
    yield be_province("Namür", "Namur", "Namen")

    prov = be_province("Limburg", "Limbourg", "Limburg")
    yield prov
    yield make_city('BE',
                    'Aalst-bij-Sint-Truiden',
                    zip_code='3800',
                    parent=prov,
                    type=PlaceTypes.village)

    prov = be_province("Lüttich", "Liège", "Luik")
    yield prov
    yield be_city('4000', "Lüttich", "Liège", "Luik", "Liège", parent=prov)
    yield be_city('4750',
                  "Bütgenbach",
                  "Butgenbach",
                  "Butgenbach",
                  "Butgenbach",
                  parent=prov)
    yield be_city('4760',
                  "Büllingen",
                  "Bullange",
                  "Büllingen",
                  "Büllingen",
                  parent=prov)
    yield be_city('4780',
                  "Sankt Vith",
                  "Saint-Vith",
                  "Sankt Vith",
                  "Sankt Vith",
                  parent=prov)
    yield be_city('4780', "Recht", "Recht", "Recht", "Recht", parent=prov)
    yield be_city('4837', "Baelen", "Baelen", "Baelen", "Baelen", parent=prov)

    yield be_province("Hennegau", "Hainaut", "Henegouwen")
    yield be_province("Wallonisch-Brabant", "Brabant wallon", "Waals-Brabant")
    yield be_province("Flämisch-Brabant", "Brabant flamant", "Vlaams-Brabant")

    prov = be_province("Ostflandern", "Flandre de l'Est", "Oost-Vlaanderen")
    yield prov

    aalst = be_city('9300', "Aalst", "Alost", "Aalst", "Aalst", parent=prov)
    yield aalst
    yield be_city('9308',
                  name="Gijzegem",
                  parent=aalst,
                  type=PlaceTypes.village)
    yield be_city('9310',
                  name="Baardegem",
                  parent=aalst,
                  type=PlaceTypes.village)
    yield be_city('9320',
                  name="Erembodegem",
                  parent=aalst,
                  type=PlaceTypes.village)
    yield be_city('9310',
                  name="Herdersem",
                  parent=aalst,
                  type=PlaceTypes.village)
    yield be_city('9308',
                  name="Hofstade",
                  parent=aalst,
                  type=PlaceTypes.village)
    yield be_city('9310',
                  name="Meldert",
                  parent=aalst,
                  type=PlaceTypes.village)
    yield be_city('9320',
                  name="Nieuwerkerken",
                  parent=aalst,
                  type=PlaceTypes.village)
    yield be_city('9310',
                  name="Moorsel",
                  parent=aalst,
                  type=PlaceTypes.village)

    yield be_province("Westflandern", "Flandre de l'Ouest", "West-Vlaanderen")

    yield be_city('1000', "Brüssel", "Bruxelles", "Brussel", "Brussels")
    yield be_city('7000', "Bergen", "Mons", "Bergen", "Mons")
    yield be_city('8400', "Ostende", "Ostende", "Oostende", "Ostende")
    yield be_city('5000', "Namür", "Namur", "Namen", "Namur")

    harjumaa = make_city('EE', 'Harju', type=PlaceTypes.county)
    yield harjumaa
    parnumaa = make_city('EE', 'Pärnu', type=PlaceTypes.county)
    yield parnumaa
    raplamaa = make_city('EE', 'Rapla', type=PlaceTypes.county)
    yield raplamaa

    yield make_city('EE',
                    'Vigala',
                    type=PlaceTypes.municipality,
                    parent=raplamaa)
    yield make_city('EE', 'Rapla', type=PlaceTypes.town, parent=raplamaa)

    tallinn = make_city('EE', 'Tallinn', type=PlaceTypes.town, parent=harjumaa)
    yield tallinn
    yield make_city('EE', 'Kesklinn', type=PlaceTypes.township, parent=tallinn)
    yield make_city('EE',
                    'Põhja-Tallinn',
                    type=PlaceTypes.township,
                    parent=tallinn)

    yield make_city('EE', 'Pärnu', type=PlaceTypes.town, parent=parnumaa)
    yield make_city('EE', 'Tartu', type=PlaceTypes.town)
    yield make_city('EE', 'Narva', type=PlaceTypes.town)
    yield make_city('EE', 'Ääsmäe', type=PlaceTypes.town, parent=harjumaa)

    #~ yield make_city(u'Aachen','DE')
    yield Place(country=DE,
                type=PlaceTypes.city,
                **dd.babel_values('name',
                                  de='Aachen',
                                  fr='Aix-la-Chapelle',
                                  nl="Aken",
                                  en="Aachen",
                                  et="Aachen"))
    yield Place(country=DE,
                type=PlaceTypes.city,
                **dd.babel_values('name',
                                  de='Köln',
                                  fr='Cologne',
                                  nl="Keulen",
                                  en="Cologne",
                                  et="Köln"))
    yield make_city('DE', 'Berlin')
    yield make_city('DE', 'Hamburg')
    yield Place(country=DE,
                type=PlaceTypes.city,
                **dd.babel_values('name',
                                  de='München',
                                  fr='Munich',
                                  en="Munich",
                                  et="München"))
    yield Place(country=DE,
                type=PlaceTypes.city,
                **dd.babel_values('name',
                                  de='Monschau',
                                  fr='Montjoie',
                                  en="Monschau",
                                  et="Monschau"))

    yield make_city('NL', 'Maastricht')
    yield make_city('NL', 'Amsterdam')
    yield make_city('NL', 'Den Haag')
    yield make_city('NL', 'Rotterdam')
    yield make_city('NL', 'Utrecht')
    yield make_city('NL', 'Breda')

    yield Place(country=FR,
                type=PlaceTypes.city,
                **dd.babel_values('name',
                                  de='Paris',
                                  fr='Paris',
                                  en="Paris",
                                  et="Pariis",
                                  nl="Parijs"))
    yield Place(country=FR,
                type=PlaceTypes.city,
                **dd.babel_values('name',
                                  de='Nizza',
                                  fr='Nice',
                                  en="Nice",
                                  et="Nizza"))
    yield make_city('FR', 'Metz')
    yield make_city('FR', 'Strasbourg')
    yield make_city('FR', 'Nancy')
    yield make_city('FR', 'Marseille')
Esempio n. 37
0
from django.conf import settings
#~ from django.contrib.auth import models as auth
from django.core.exceptions import ValidationError
from django.utils.translation import ugettext_lazy as _

from lino.api import dd, rt

#~ from lino import reports
from lino.core import actions
from lino import mixins
from lino.utils import mti
#~ from lino.utils.quantities import Duration

from lino_xl.lib.vat.mixins import myround

contacts = dd.resolve_app('contacts')
accounts = dd.resolve_app('accounts')
ledger = dd.resolve_app('ledger')
vat = dd.resolve_app('vat')
products = dd.resolve_app('products')
sales = dd.resolve_app('sales')


class OrderStates(dd.Workflow):
    pass


add = OrderStates.add_item
add('10', _("Draft"), 'draft', editable=True)
add('20', _("Registered"), 'registered', editable=False)
add('30', _("Inactive"), 'inactive', editable=False)
Esempio n. 38
0
from lino.utils.choosers import chooser
# from lino.utils import ssin
from lino import mixins
from django.conf import settings
from lino_xl.lib.cal.choicelists import amonthago
from lino_xl.lib.notes.actions import NotableAction
from lino.modlib.users.choicelists import UserTypes
from lino.modlib.users.mixins import ByUser, UserAuthored

from lino.core.diff import ChangeWatcher

from lino_welfare.modlib.pcsw.roles import SocialStaff, SocialAgent
# from lino_welfare.modlib.integ.roles import IntegrationAgent
from .roles import NewcomersAgent, NewcomersOperator

users = dd.resolve_app('users')
pcsw = dd.resolve_app('pcsw', strict=True)

WORKLOAD_BASE = decimal.Decimal('10')  # normal number of newcomers per month
MAX_WEIGHT = decimal.Decimal('10')
HUNDRED = decimal.Decimal('100.0')


@dd.python_2_unicode_compatible
class Broker(dd.Model):
    """A Broker (Vermittler) is an external institution who suggests
    newcomers.

    """
    class Meta:
        verbose_name = _("Broker")
Esempio n. 39
0
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")
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')

Account = dd.resolve_model('accounts.Account')

clocking = dd.resolve_app('clocking')

User = rt.models.users.User
UserTypes = rt.models.users.UserTypes
Partner = rt.models.contacts.Partner

lists_Member = rt.models.lists.Member
households_Member = rt.models.households.Member
Link = rt.models.humanlinks.Link
LinkTypes = rt.models.humanlinks.LinkTypes
households_MemberRoles = rt.models.households.MemberRoles

from lino.utils.instantiator import create


class TimLoader(TimLoader):
Esempio n. 40
0
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')

working = dd.resolve_app('working')

User = rt.models.users.User
Note = rt.models.notes.Note
UserTypes = rt.models.users.UserTypes
Partner = rt.models.contacts.Partner
# Coaching = rt.models.coachings.Coaching

# lists_Member = rt.models.lists.Member
households_Member = rt.models.households.Member
households_MemberRoles = rt.models.households.MemberRoles


class TimLoader(TimLoader):

    # archived_tables = set('GEN ART VEN VNL JNL FIN FNL'.split())
Esempio n. 41
0
def add_system_note(request, owner, subject, body, **kw):
    """Create a system note."""
    nt = owner.get_system_note_type(request)
    if not nt:
        return
    prj = owner.get_related_project()
    if prj:
        kw.update(project=prj)
    note = rt.modules.notes.Note(
        event_type=nt, owner=owner,
        subject=subject, body=body, user=request.user, **kw)
    #~ owner.update_system_note(note)
    note.save()


system = dd.resolve_app('system')


def customize_siteconfig():
    """
    Injects application-specific fields to :class:`SiteConfig <lino.modlib.system.SiteConfig>`.
    """
    dd.inject_field(
        'system.SiteConfig',
        'system_note_type',
        dd.ForeignKey(
            'notes.EventType',
            blank=True, null=True,
            verbose_name=_("Default system note type"),
            help_text=_("""\
Note Type used by system notes.
Esempio n. 42
0
from django.db import models
from django.db.models import Q
from django.conf import settings
from django.utils.translation import ugettext_lazy as _
from django.utils import timezone
from django.contrib.humanize.templatetags.humanize import naturaltime

from lino.modlib.users.mixins import My

from etgen.html import E
from lino.utils import join_elems

from lino.api import dd, rt

cal = dd.resolve_app('cal')
system = dd.resolve_app('system')

from lino_xl.lib.cal.choicelists import GuestStates, EntryStates
from lino.modlib.notify.actions import NotifyingAction
from lino.modlib.office.roles import OfficeUser, OfficeOperator

from lino.modlib.notify.choicelists import MessageTypes
MessageTypes.add_item('reception', dd.plugins.reception.verbose_name)

# Before adding new GuestStates, make sure that
# `lino_xl.lib.cal.workflows.feedback` has been imported because this
# will clear GuestStates

import lino_xl.lib.cal.workflows.feedback
Esempio n. 43
0
#
# License: BSD (see file COPYING for details)

import logging

logger = logging.getLogger(__name__)

from django import http
from django.views.generic import View

from lino.api import dd

from lino.utils.xmlgen import html as xghtml

E = xghtml.E

pages = dd.resolve_app('pages')


class PagesIndex(View):
    def get(self, request, ref='index'):
        if not ref:
            ref = 'index'

        #~ print 20121220, ref
        obj = pages.lookup(ref, None)
        if obj is None:
            raise http.Http404("Unknown page %r" % ref)
        html = pages.render_node(request, obj)
        return http.HttpResponse(html)
Esempio n. 44
0
from __future__ import unicode_literals

import logging
logger = logging.getLogger(__name__)


import datetime
from dateutil.relativedelta import relativedelta as delta

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

from lino_cosi.lib.vat.mixins import myround

vat = dd.resolve_app('vat')
sales = dd.resolve_app('sales')


# from lino.core.requests import BaseRequest
REQUEST = settings.SITE.login()  # BaseRequest()


def objects():

    Journal = rt.models.ledger.Journal
    Person = rt.models.contacts.Person
    Product = rt.models.products.Product

    USERS = Cycler(settings.SITE.user_model.objects.all())
Esempio n. 45
0
from lino import mixins

from lino.core.roles import Explorer
from lino.utils import join_elems
from etgen.html import E
from lino.utils.mti import get_child
from lino.utils.report import Report

from lino.modlib.system.choicelists import PeriodEvents
from lino.modlib.users.mixins import My

from .choicelists import EnrolmentStates, CourseStates, CourseAreas

from .roles import CoursesUser, CoursesTeacher

cal = dd.resolve_app('cal')

try:
    teacher_model = dd.plugins.courses.teacher_model
    teacher_label = dd.plugins.courses.teacher_label
    pupil_model = dd.plugins.courses.pupil_model
except AttributeError:
    # Happens only when Sphinx autodoc imports it and this module is
    # not installed.
    teacher_label = _("Instructor")
    teacher_model = 'foo.Bar'
    pupil_model = 'foo.Bar'

FILL_EVENT_GUESTS = False

Esempio n. 46
0
from lino_xl.lib.excerpts.mixins import Certifiable
from lino_xl.lib.excerpts.mixins import ExcerptTitle
from lino.modlib.users.mixins import UserAuthored
from lino.modlib.printing.mixins import Printable
# from lino.modlib.printing.utils import PrintableObject
from lino_xl.lib.cal.mixins import Reservation
from lino_xl.lib.cal.choicelists import Recurrencies
from lino_xl.lib.cal.utils import day_and_month
from lino_xl.lib.contacts.mixins import ContactRelated

from lino.utils.dates import DateRangeValue

from .choicelists import EnrolmentStates, CourseStates, CourseAreas
from .actions import PrintPresenceSheet

cal = dd.resolve_app('cal')

try:
    teacher_model = dd.plugins.courses.teacher_model
    teacher_label = dd.plugins.courses.teacher_label
    pupil_model = dd.plugins.courses.pupil_model
    pupil_name_fields = dd.plugins.courses.pupil_name_fields
except AttributeError:
    # Happens only when Sphinx autodoc imports it and this module is
    # not installed.
    teacher_label = _("Instructor")
    teacher_model = 'foo.Bar'
    pupil_model = 'foo.Bar'
    pupil_name_fields = 'foo bar'

FILL_EVENT_GUESTS = False
Esempio n. 47
0
# Activity = dd.resolve_model('pcsw.Activity')
Country = dd.resolve_model('countries.Country')
Place = dd.resolve_model('countries.Place')
Person = dd.resolve_model("contacts.Person")
Company = dd.resolve_model("contacts.Company")
# Account = dd.resolve_model('accounts.Account')
Account = rt.modules.accounts.Account
Group = dd.resolve_model('accounts.Group')
Journal = dd.resolve_model('ledger.Journal')
Movement = dd.resolve_model('ledger.Movement')
# potentially UnresolvedModel:
Household = dd.resolve_model('households.Household')
List = dd.resolve_model('lists.List')

if True:
    users = dd.resolve_app('users')
    households = dd.resolve_app('households')
    vat = dd.resolve_app('vat')
    sales = dd.resolve_app('sales')
    ledger = dd.resolve_app('ledger')
    accounts = dd.resolve_app('accounts')
    products = dd.resolve_app('products')
    contacts = dd.resolve_app('contacts')
    finan = dd.resolve_app('finan')
    sepa = dd.resolve_app('sepa')
    lists = dd.resolve_app('lists')

VatRule = rt.modules.vat.VatRule

# def convert_username(name):
# return name.lower()
Esempio n. 48
0
from __future__ import unicode_literals

import logging

logger = logging.getLogger(__name__)

import datetime
from dateutil.relativedelta import relativedelta as delta

from decimal import Decimal

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

finan = dd.resolve_app('finan')

REQUEST = settings.SITE.login()  # BaseRequest()
MORE_THAN_A_MONTH = datetime.timedelta(days=40)

# most payments are arriving as suggested, i.e. the customer pays the
# full ammount. But there are exceptions: 5% discount taken at
# payment, no payment a t all, partly payments of 70%, or (very
# accidentally) 2% too much.

PAYMENT_DIFFS = [None] * 4
PAYMENT_DIFFS += [-0.05]
PAYMENT_DIFFS += [None] * 3
PAYMENT_DIFFS += [-1.00]
PAYMENT_DIFFS += [None] * 2
PAYMENT_DIFFS += [-0.30]
Esempio n. 49
0
def objects():
    #~ dblogger.info("Installing countries few_cities fixture")
    countries = dd.resolve_app('countries')
    #~ Place = resolve_model('countries.Place')
    Place = countries.Place
    Country = countries.Country
    PlaceTypes = countries.PlaceTypes
    city = Instantiator(Place, 'name country').build

    def make_city(country_id, name=None, **kw):
        if False:  # AFTER17:
            kw.setdefault('type', PlaceTypes.city.pk)
            if kw.get('type',False) and isinstance(kw.get('type',False),PlaceType):
                kw['type'] = kw['type'].pk
        else:
            kw.setdefault('type', PlaceTypes.city)
        flt = rt.lookup_filter(
            'name', name, country__isocode=country_id, **kw)
        try:
            return Place.objects.get(flt)
            # return Place.objects.exclude(type__in=[
            #     PlaceTypes.county, PlaceTypes.province]).get(flt)
        except MultipleObjectsReturned:
            #~ qs = Place.objects.exclude(type=PlaceTypes.county).filter(country__isocode=country_id,name=name)
            raise Exception("Oops, there are multiple cities for %r", name)
        except Place.DoesNotExist:
            obj = city(name, country_id, **kw)
            obj.full_clean()
            obj.save()
            return obj

    BE = Country.objects.get(pk='BE')
    DE = Country.objects.get(pk='DE')
    FR = Country.objects.get(pk='FR')
    eupen = make_city('BE', 'Eupen', zip_code='4700')
    yield eupen
    yield make_city('BE', 'Nispert', type=PlaceTypes.township, parent=eupen)

    reuland = make_city('BE', 'Burg-Reuland ', zip_code='4790')
    yield make_city('BE', 'Ouren', type=PlaceTypes.township, parent=reuland)

    yield Place(country=BE, zip_code='4720', type=PlaceTypes.city,
                **dd.babel_values('name', de='Kelmis', fr='La Calamine',
                                  en="Kelmis", et="Kelmis"))
    yield make_city('BE', 'Kettenis', zip_code='4701', type=PlaceTypes.village)
    yield make_city('BE', 'Raeren', zip_code='4730', type=PlaceTypes.village)
    yield make_city('BE', 'Angleur', zip_code='4031')
    yield make_city('BE', 'Ans', zip_code='4430')
    yield make_city('BE', 'Ottignies', zip_code='1340')
    yield make_city('BE', 'Thieusies', zip_code='7061')
    yield make_city('BE', 'Cuesmes', zip_code='7033')
    yield make_city('BE', 'La Reid', zip_code='4910')
    yield make_city('BE', 'Blégny ', zip_code='4670')
    yield make_city('BE', 'Trembleur ', zip_code='4670')
    yield make_city('BE', 'Mortier ', zip_code='4670')
    yield make_city('BE', 'Cerfontaine', zip_code='5630')
    yield make_city('BE', 'Burdinne', zip_code='4210')

    def be_province(de, fr, nl):
        if False:  # AFTER17:
            p = Place(
                country=BE, type=PlaceTypes.province.pk,
                **dd.babel_values('name', de=de, fr=fr, nl=nl, en=fr, et=fr))
        else:
            p = Place(
            country=BE, type=PlaceTypes.province,
            **dd.babel_values('name', de=de, fr=fr, nl=nl, en=fr, et=fr))
        return p

    def be_city(zip_code, de=None, fr=None, nl=None, en=None, **kw):
        kw.update(dd.babel_values('name', de=de, fr=fr, nl=nl, en=en, et=en))
        if False:  # AFTER17:
            kw.setdefault('type', PlaceTypes.city.pk)
            if kw.get('type',False) and isinstance(kw.get('type',False),PlaceType):
                kw['type'] = kw['type'].pk
        else:
            kw.setdefault('type', PlaceTypes.city)
        return Place(country=BE, zip_code=zip_code, **kw)

    yield be_province("Antwerpen", "Anvers", "Antwerpen")
    yield be_province("Luxemburg", "Luxembourg", "Luxemburg")
    yield be_province("Namür", "Namur", "Namen")

    prov = be_province("Limburg", "Limbourg", "Limburg")
    yield prov
    yield make_city('BE', 'Aalst-bij-Sint-Truiden', zip_code='3800', parent=prov, type=PlaceTypes.village)

    prov = be_province("Lüttich", "Liège", "Luik")
    yield prov
    yield be_city('4000', "Lüttich", "Liège", "Luik", "Liège", parent=prov)
    yield be_city('4750', "Bütgenbach", "Butgenbach", "Butgenbach", "Butgenbach", parent=prov)
    yield be_city('4760', "Büllingen", "Bullange", "Büllingen", "Büllingen", parent=prov)
    yield be_city('4780', "Sankt Vith", "Saint-Vith", "Sankt Vith", "Sankt Vith", parent=prov)
    yield be_city('4780', "Recht", "Recht", "Recht", "Recht", parent=prov)
    yield be_city('4837', "Baelen", "Baelen", "Baelen", "Baelen", parent=prov)

    yield be_province("Hennegau", "Hainaut", "Henegouwen")
    yield be_province("Wallonisch-Brabant", "Brabant wallon", "Waals-Brabant")
    yield be_province("Flämisch-Brabant", "Brabant flamant", "Vlaams-Brabant")

    prov = be_province("Ostflandern", "Flandre de l'Est", "Oost-Vlaanderen")
    yield prov

    aalst = be_city('9300', "Aalst", "Alost", "Aalst", "Aalst", parent=prov)
    yield aalst
    yield be_city('9308', name="Gijzegem",
                  parent=aalst, type=PlaceTypes.village)
    yield be_city('9310', name="Baardegem",
                  parent=aalst, type=PlaceTypes.village)
    yield be_city('9320', name="Erembodegem",
                  parent=aalst, type=PlaceTypes.village)
    yield be_city('9310', name="Herdersem", parent=aalst,
                  type=PlaceTypes.village)
    yield be_city('9308', name="Hofstade", parent=aalst,
                  type=PlaceTypes.village)
    yield be_city('9310', name="Meldert",
                  parent=aalst, type=PlaceTypes.village)
    yield be_city('9320', name="Nieuwerkerken",
                  parent=aalst, type=PlaceTypes.village)
    yield be_city('9310', name="Moorsel",
                  parent=aalst, type=PlaceTypes.village)

    yield be_province("Westflandern", "Flandre de l'Ouest", "West-Vlaanderen")

    yield be_city('1000', "Brüssel", "Bruxelles", "Brussel", "Brussels")
    yield be_city('7000', "Bergen", "Mons", "Bergen", "Mons")
    yield be_city('8400', "Ostende", "Ostende", "Oostende", "Ostende")
    yield be_city('5000', "Namür", "Namur", "Namen", "Namur")

    harjumaa = make_city('EE', 'Harju', type=PlaceTypes.county)
    yield harjumaa
    parnumaa = make_city('EE', 'Pärnu', type=PlaceTypes.county)
    yield parnumaa
    raplamaa = make_city('EE', 'Rapla', type=PlaceTypes.county)
    yield raplamaa

    yield make_city('EE', 'Vigala', type=PlaceTypes.municipality,
                    parent=raplamaa)
    yield make_city('EE', 'Rapla', type=PlaceTypes.town, parent=raplamaa)

    tallinn = make_city('EE', 'Tallinn', type=PlaceTypes.town, parent=harjumaa)
    yield tallinn
    yield make_city('EE', 'Kesklinn',
                    type=PlaceTypes.township, parent=tallinn)
    yield make_city('EE', 'Põhja-Tallinn',
                    type=PlaceTypes.township, parent=tallinn)

    yield make_city('EE', 'Pärnu', type=PlaceTypes.town, parent=parnumaa)
    yield make_city('EE', 'Tartu', type=PlaceTypes.town)
    yield make_city('EE', 'Narva', type=PlaceTypes.town)
    yield make_city('EE', 'Ääsmäe', type=PlaceTypes.town, parent=harjumaa)

    #~ yield make_city(u'Aachen','DE')
    yield Place(country=DE, type=PlaceTypes.city,
                **dd.babel_values('name', de='Aachen',
                               fr='Aix-la-Chapelle', nl="Aken",
                               en="Aachen", et="Aachen"))
    yield Place(country=DE, type=PlaceTypes.city,
                **dd.babel_values('name', de='Köln',
                               fr='Cologne', nl="Keulen",
                               en="Cologne", et="Köln"))
    yield make_city('DE', 'Berlin')
    yield make_city('DE', 'Hamburg')
    yield Place(country=DE, type=PlaceTypes.city,
                **dd.babel_values('name', de='München',
                               fr='Munich', en="Munich", et="München"))
    yield Place(country=DE, type=PlaceTypes.city,
                **dd.babel_values('name', de='Monschau',
                               fr='Montjoie', en="Monschau", et="Monschau"))

    yield make_city('NL', 'Maastricht')
    yield make_city('NL', 'Amsterdam')
    yield make_city('NL', 'Den Haag')
    yield make_city('NL', 'Rotterdam')
    yield make_city('NL', 'Utrecht')
    yield make_city('NL', 'Breda')

    yield Place(country=FR, type=PlaceTypes.city,
                **dd.babel_values('name', de='Paris', fr='Paris',
                               en="Paris", et="Pariis", nl="Parijs"))
    yield Place(country=FR, type=PlaceTypes.city,
                **dd.babel_values('name', de='Nizza',
                               fr='Nice', en="Nice", et="Nizza"))
    yield make_city('FR', 'Metz')
    yield make_city('FR', 'Strasbourg')
    yield make_city('FR', 'Nancy')
    yield make_city('FR', 'Marseille')
Esempio n. 50
0
from builtins import str
import logging
logger = logging.getLogger(__name__)


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')
Esempio n. 51
0
    def card2client(cls, data):
        "does the actual conversion"

        self = cls

        from lino.utils import ssin
        from lino.api import dd, rt
        from lino.mixins.beid import BeIdCardTypes
        from lino.utils import join_words
        from lino.utils import IncompleteDate
        from lino_xl.lib.contacts.utils import street2kw

        countries = dd.resolve_app('countries', strict=True)

        kw = dict()
        #~ def func(fldname,qname):
            #~ kw[fldname] = data[qname]
        kw.update(national_id=ssin.format_ssin(data['nationalNumber']))
        kw.update(first_name=join_words(
            data['firstName1'],
            data['firstName2'],
            data['firstName3']))
        #~ func('first_name','firstName1')
        kw.update(last_name=data['surname'])

        card_number = data['cardNumber']

        if 'picture' in data:
            fn = self.card_number_to_picture_file(card_number)
            if os.path.exists(fn):
                logger.warning("Overwriting existing image file %s.", fn)
            fp = file(fn, 'wb')
            fp.write(base64.b64decode(data['picture']))
            fp.close()
            #~ print 20121117, repr(data['picture'])
            #~ kw.update(picture_data_encoded=data['picture'])

        #~ func('card_valid_from','validityBeginDate')
        #~ func('card_valid_until','validityEndDate')
        #~ func('birth_date','birthDate')
        kw.update(birth_date=IncompleteDate(
            *settings.SITE.parse_date(data['birthDate'])))
        kw.update(card_valid_from=datetime.date(
            *settings.SITE.parse_date(data['validityBeginDate'])))
        kw.update(card_valid_until=datetime.date(
            *settings.SITE.parse_date(data['validityEndDate'])))
        kw.update(card_number=card_number)
        kw.update(card_issuer=data['issuingMunicipality'])
        kw.update(noble_condition=data['nobleCondition'])
        kw.update(street=data['street'])
        kw.update(street_no=data['streetNumber'])
        kw.update(street_box=data['boxNumber'])
        if kw['street'] and not (kw['street_no'] or kw['street_box']):
            kw = street2kw(kw['street'], **kw)
        kw.update(zip_code=data['zipCode'])
        kw.update(birth_place=data['birthLocation'])
        pk = data['country'].upper()

        msg1 = "BeIdReadCardToClientAction %s" % kw.get('national_id')

        #~ try:
        country = countries.Country.objects.get(isocode=pk)
        kw.update(country=country)
        #~ except countries.Country.DoesNotExist,e:
        #~ except Exception,e:
            #~ logger.warning("%s : no country with code %r",msg1,pk)
        #~ BE = countries.Country.objects.get(isocode='BE')
        #~ fld = countries.Place._meta.get_field()
        kw.update(city=countries.Place.lookup_or_create(
            'name', data['municipality'], country=country))

        def sex2gender(sex):
            if sex == 'M':
                return dd.Genders.male
            if sex in 'FVW':
                return dd.Genders.female
            logger.warning("%s : invalid gender code %r", msg1, sex)
        kw.update(gender=sex2gender(data['sex']))

        if False:
            def nationality2country(nationality):
                try:
                    return countries.Country.objects.get(
                        nationalities__icontains=nationality)
                except countries.Country.DoesNotExist, e:
                    logger.warning("%s : no country for nationality %r",
                                   msg1, nationality)
                except MultipleObjectsReturned, e:
                    logger.warning(
                        "%s : found more than one country for nationality %r",
                        msg1, nationality)
Esempio n. 52
0
"""
from __future__ import unicode_literals

import logging
logger = logging.getLogger(__name__)

from django.db import models
from django.conf import settings
from django.utils.translation import ugettext_lazy as _

from lino.api import dd, rt

from lino.core.roles import SiteStaff
from lino_xl.lib.contacts.roles import ContactsStaff

households = dd.resolve_app('households')
#~ cal = dd.resolve_app('cal')
properties = dd.resolve_app('properties')
countries = dd.resolve_app('countries')
contacts = dd.resolve_app('contacts')
cv = dd.resolve_app('cv')
# uploads = dd.resolve_app('uploads')
users = dd.resolve_app('users')
isip = dd.resolve_app('isip')
jobs = dd.resolve_app('jobs')
pcsw = dd.resolve_app('pcsw')
courses = dd.resolve_app('courses')
#~ from lino_welfare.modlib.isip import models as isip
#~ newcomers = dd.resolve_app('newcomers')

Esempio n. 53
0
from lino.api import dd
from lino import mixins

from lino.modlib.comments.mixins import Commentable
from lino.utils import AttrDict
from etgen.html import E


def headertag(level):
    tagname = "h" + str(level)
    return getattr(E, tagname)

#~ contacts = dd.resolve_app('contacts')
#~ countries = dd.resolve_app('countries')
languages = dd.resolve_app('languages')


#~ class Book(dd.Choice):
    #~ abbr = dd.BabelCharField(_("Abbreviation"),max_length=20)
    #~ 
#~ class Books(dd.ChoiceList):
    #~ 
    #~ verbose_name = _("Book")
    #~ verbose_name_plural = _("Books")
    #~ item_class = Book
    #~ 
    #~ @classmethod
    #~ def add_item(cls,value,text,ref,abbr):
        #~ super(Books,cls).add_item(value,text,ref,abbr=abbr)
    #~ 
Esempio n. 54
0
File: demo.py Progetto: DarioGT/lino
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)
Esempio n. 55
0
"""
Creates more journals specific to pronto

"""

from __future__ import unicode_literals

from lino.api import dd, rt, _
from lino_xl.lib.ledger.utils import DC
# from lino_xl.lib.ledger import choicelists as pcmn
from lino_xl.lib.ledger.choicelists import CommonAccounts

# from lino.utils import Cycler

# accounts = dd.resolve_app('accounts')
vat = dd.resolve_app('vat')
sales = dd.resolve_app('sales')
ledger = dd.resolve_app('ledger')
finan = dd.resolve_app('finan')
bevat = dd.resolve_app('bevat')
bevats = dd.resolve_app('bevats')

# ~ partners = dd.resolve_app('partners')


def objects():
    JournalGroups = rt.models.ledger.JournalGroups
    Company = rt.models.contacts.Company

    # JOURNALS
Esempio n. 56
0
"CODE2":"","CODE3":"","DATCREA":{"__date__":{"year":1998,"month":11,"day":17}},
"ALLO":"Eheleute","NB1":"","NB2":"","IDDEV":"","MEMO":"","COMPTE2":"","RUENUM":"  24","RUEBTE":"",
"DEBIT2":"","CREDIT2":"","IMPDATE":{"__date__":{"year":1999,"month":8,"day":9}},
"ATTRIB2":"","CPTSYSI":"","EMAIL":"",
"MVIDATE":{"__date__":{"year":0,"month":0,"day":0}},"IDUSR":"","DOMI1":""}}
"""

User = dd.resolve_model('users.User')
Partner = dd.resolve_model('contacts.Partner')
Company = dd.resolve_model('contacts.Company')
Person = dd.resolve_model('contacts.Person')
Client = dd.resolve_model('pcsw.Client')
Coaching = dd.resolve_model('coachings.Coaching')
Household = dd.resolve_model('households.Household')
households_Type = dd.resolve_model("households.Type")
pcsw = dd.resolve_app("pcsw")
isip = dd.resolve_app("isip")

from lino_welfare.modlib.isip import models as isip


class TestCase(TestCase):

    maxDiff = None

    def test00(self):

        ASD = rt.models.coachings.CoachingType(id=isip.COACHINGTYPE_ASD,
                                               name="ASD")
        ASD.save()
Esempio n. 57
0
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
from lino_xl.lib.contacts.choicelists import CivilStates

Account = dd.resolve_model('ledger.Account')

working = dd.resolve_app('working')

User = rt.models.users.User
UserTypes = rt.models.users.UserTypes
Partner = rt.models.contacts.Partner
Company = rt.models.contacts.Company
# Coaching = rt.models.coachings.Coaching

# lists_Member = rt.models.lists.Member
households_Member = rt.models.households.Member
# Link = rt.models.humanlinks.Link
# LinkTypes = rt.models.humanlinks.LinkTypes
households_MemberRoles = rt.models.households.MemberRoles

List = rt.models.lists.List
Member = rt.models.lists.Member
Esempio n. 58
0
# -*- coding: UTF-8 -*-
# Copyright 2012 Rumma & Ko Ltd
# License: BSD (see file COPYING for details)
"""
code changes must be documented in *one central place 
per developer*, not per module.
"""

import os
import datetime
from django.conf import settings
from lino.utils import i2d, i2t
from lino.utils.restify import restify, doc2rst

from lino.api import dd, rt
blogs = dd.resolve_app('blogs')
tickets = dd.resolve_app('tickets')


class Blogger(object):
    def __init__(self, user=None):
        self.objects_list = []
        self.date = None
        self.user = user
        self.current_project = None

    def set_date(self, d):
        self.date = i2d(d)

    def set_project(self, project):
        self.current_project = project