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", ))
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", ))
def objects(): Sector = resolve_model('cbss.Sector') fn = join(dirname(__file__), 'lijst_van_sectoren_liste_des_secteurs.csv') reader = ucsv.UnicodeReader( open(fn, 'r'), encoding='latin1', delimiter=';') headers = reader.next() if headers != [u'Sector', u'', u'verkorte naam', u'Omschrijving', u'Abréviation', u'Nom']: raise Exception("Invalid file format: %r" % headers) reader.next() # ignore second header line code = None for row in reader: s0 = row[0].strip() s1 = row[1].strip() if s0 or s1: kw = {} if len(s0) > 0: code = int(s0) kw.update(code=code) if row[1]: kw.update(subcode=int(row[1])) kw.update( **dd.babelkw( 'name', de=row[5], fr=row[5], nl=row[3], en=row[5])) kw.update( **dd.babelkw( 'abbr', de=row[4], fr=row[4], nl=row[2], en=row[4])) yield Sector(**kw) info = settings.SITE.get_language_info('de') if info: for code, subcode, abbr, name in GERMAN: sect = Sector.objects.get(code=code, subcode=subcode) if info.index == 0: sect.abbr = abbr sect.name = name else: sect.abbr_de = abbr sect.name_de = name sect.save()
def objects(): from lino.api import rt CoachingEnding = rt.models.coachings.CoachingEnding yield CoachingEnding(**babelkw('name', de="Übergabe an Kollege", fr="Transfert vers collègue", en="Transfer to colleague",)) yield CoachingEnding(**babelkw('name', de="Einstellung des Anrechts auf SH", fr="Arret du droit à l'aide sociale", en="End of right on social aid")) yield CoachingEnding(**babelkw('name', de="Umzug in andere Gemeinde", fr="Déménagement vers autre commune", en="Moved to another town")) yield CoachingEnding(**babelkw('name', de="Hat selber Arbeit gefunden", fr="A trouvé du travail", en="Found a job"))
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))
def holiday(month, day, en, de, fr, et=None): if et is None: et = en return add( every_unit=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))
def objects(): from lino.api import rt CoachingEnding = rt.models.coachings.CoachingEnding yield CoachingEnding(**babelkw( 'name', de="Übergabe an Kollege", fr="Transfert vers collègue", en="Transfer to colleague", )) yield CoachingEnding(**babelkw('name', de="Einstellung des Anrechts auf SH", fr="Arret du droit à l'aide sociale", en="End of right on social aid")) yield CoachingEnding(**babelkw('name', de="Umzug in andere Gemeinde", fr="Déménagement vers autre commune", en="Moved to another town")) yield CoachingEnding(**babelkw('name', de="Hat selber Arbeit gefunden", fr="A trouvé du travail", en="Found a job"))
def objects(): # three methods for specifying content of babelfields in fixtures: yield Foo( designation="First", designation_de="Erster", designation_fr="Premier", last_visit=dt(2016, 7, 2, 23, 55, 12)) yield Foo( last_visit=dt(2016, 7, 3, 0, 10, 23), **dd.str2kw('designation', _("January"))) yield Foo( # last_visit=dt(2016, 10, 30, 4, 34, 0), last_visit=dt(2017, 10, 29, 3, 16, 6), # last_visit=dt(2012, 10, 28, 4, 34, 0), **dd.babelkw('designation', en="Three", de="Drei", fr="Trois", et="Kolm"))
def objects(): # three methods for specifying content of babelfields in fixtures: yield Foo(designation="First", designation_de="Erster", designation_fr="Premier", last_visit=dt(2016, 7, 2, 23, 55, 12)) yield Foo(last_visit=dt(2016, 7, 3, 0, 10, 23), **dd.str2kw('designation', _("January"))) yield Foo( # last_visit=dt(2016, 10, 30, 4, 34, 0), last_visit=dt(2017, 10, 29, 3, 16, 6), # last_visit=dt(2012, 10, 28, 4, 34, 0), **dd.babelkw('designation', en="Three", de="Drei", fr="Trois", et="Kolm"))
def full_clean(self, *args, **kw): if self.line_id is not None: if self.id is None: descs = dd.field2kw(self.line, 'description') descs = dd.babelkw('description', **descs) for k, v in descs.items(): setattr(self, k, v) if self.every_unit is None: self.every_unit = self.line.every_unit if self.every is None: self.every = self.line.every # if self.enrolments_until is None: # self.enrolments_until = self.start_date # if self.id is not None: # if self.enrolments_until is None: # qs = self.get_existing_auto_events() # if qs.count(): # self.enrolments_until = qs[0].start_date super(Course, self).full_clean(*args, **kw)
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"))
def O(fr, en, de, de_BE): return Expression(**dd.babelkw('designation', de=de, de_BE=de_BE, en=en, fr=fr))
def objects(self): VatClasses = rt.models.vat.VatClasses # yield PupilType(ref="M", name="Mitglied") # yield PupilType(ref="H", name="Helfer") # yield PupilType(ref="L", name="LFV") # yield PupilType(ref="C", name="C*K") #~ yield PupilType(ref="E",name="Extern") yield TeacherType(ref="S", **dd.str2kw('name', _("Independant"))) yield TeacherType(ref="EP", **dd.babelkw('name', de="Ehrenamtlich pauschal", fr="Volontaire (forfait)", en="Voluntary (flat)")) yield TeacherType(ref="ER", **dd.babelkw('name', de="Ehrenamtlich real", fr="Volontaire (réel)", en="Voluntary (real)")) yield TeacherType(ref="LBA", **dd.babelkw('name', de="LBA", fr="ALE", en="LEA")) #~ yield TeacherType(ref="A",**dd.babelkw('name',de="Andere",fr="Autre",en="Other")) company = Instantiator('contacts.Company', 'name city:name').build we = company("Die Buche V.o.G.", "Eupen", street="Birkenweg", street_no=5, vat_id="BE0123456789") yield we settings.SITE.site_config.site_company = we yield settings.SITE.site_config ProductCat = rt.models.products.ProductCat # productcat = Instantiator('products.ProductCat').build self.course_fees = ProductCat(**dd.str2kw( 'name', _("Participation fees"))) yield self.course_fees self.trips = ProductCat(**dd.str2kw('name', _("Trips"))) # et="Väljasõidud", de="Ausflüge", fr="Excursions")) yield self.trips kw = dd.str2kw('name', _("Journeys")) self.journeys_cat = ProductCat(**kw) yield self.journeys_cat kw.update(sales_price="295.00") self.journey_fee = Product(cat=self.journeys_cat, **kw) yield self.journey_fee rent = ProductCat(**dd.str2kw('name', _("Room renting"))) # et="Ruumiüür", de="Raummiete", fr="Loyer")) yield rent # other = ProductCat(**dd.str2kw('name', _("Other"))) # et="Muud", de="Sonstige", fr="Autres")) # yield other product = Instantiator( 'products.Product', "sales_price cat name", vat_class=VatClasses.normal).build yield product("20", self.course_fees, "20€") yield product( "48", self.course_fees, "48€/8 hours", number_of_events=8, min_asset=2) yield product( "64", self.course_fees, "64€/12 hours", number_of_events=12, min_asset=4) yield product( "50", self.course_fees, "50€/5 hours", number_of_events=5, min_asset=1) yield product("80", self.course_fees, "80€") rent20 = product("20", rent, "Spiegelraum Eupen") yield rent20 rent10 = product("10", rent, **dd.babelkw( 'name', en="Rent per meeting", et="Ruumi üürimine", de="Raummiete pro Versammlung", fr="Loyer par réunion")) yield rent10 self.PRICES = Cycler(Product.objects.filter(cat=self.course_fees)) event_type = Instantiator('cal.EventType').build kw = dd.str2kw('name', _("Courses")) kw.update(dd.str2kw('event_label', _("Hour"))) self.kurse = event_type(**kw) yield self.kurse settings.SITE.site_config.default_event_type = self.kurse yield settings.SITE.site_config self.seminare = event_type(**dd.str2kw('name', _("Seminars"))) yield self.seminare self.excursions = event_type( max_days=10, **dd.str2kw('name', _("Excursions"))) # de="Ausflüge", # fr="Excursions", # en="Excursions", yield self.excursions self.hikes = event_type( max_days=60, **dd.str2kw('name', _("Hikes"))) # de="Wanderungen", # fr="Randonnées", # en="Hikes", yield self.hikes yield event_type(**dd.str2kw('name', _("Meetings"))) # de="Versammlungen", # fr="Réunions", # en="Meetings", yield event_type( email_template='Team.eml.html', **dd.str2kw('name', _("Team Meetings"))) # de="Team-Besprechungen", # fr="Coordinations en équipe", # en="Team Meetings", #~ yield event_type(**dd.babelkw('name', #~ de="Feiertage", #~ fr="Jours fériés", #~ en="Holidays", #~ )) #~ company = Instantiator('contacts.Company', 'name city:name').build eupen = company("Lern- und Begegnungszentrum", "Eupen", street="Kirchstraße", street_no=39, street_box="/B2") yield eupen bbach = company("Lern- und Begegnungszentrum", "Butgenbach") yield bbach kelmis = company("Zur Klüüs", "Kelmis") yield kelmis stvith = company("Sport- und Freizeitzentrum", "Sankt Vith") yield stvith self.ext1 = company("AA Neudorf", "Raeren") yield self.ext1 self.ext2 = company("Nisperter Schützenverein", "Eupen") yield self.ext2 room = Instantiator('cal.Room').build kw = dict(company=eupen) kw.update(dd.str2kw('name', _("Mirrored room"))) kw.update(fee=rent20) self.spiegel = room(**kw) yield self.spiegel kw.update(dd.str2kw('name', _("Computer room"))) kw.update(fee=rent10) self.pc_eupen = room(**kw) yield self.pc_eupen kw = dict(company=bbach) kw.update(dd.str2kw('name', _("Conferences room"))) self.konf = room(**kw) yield self.konf kw.update(dd.str2kw('name', _("Computer room"))) self.pc_bbach = room(**kw) yield self.pc_bbach kw = dict(company=kelmis) kw.update(dd.str2kw('name', _("Computer room"))) self.pc_kelmis = room(**kw) yield self.pc_kelmis kw = dict(company=stvith) kw.update(dd.str2kw('name', _("Computer room"))) self.pc_stvith = room(**kw) yield self.pc_stvith # a room without company kw = dict() kw.update(dd.str2kw('name', _("Outside"))) self.outside = room(**kw) yield self.outside COLORS = Cycler(Calendar.COLOR_CHOICES) for u in Room.objects.all(): obj = Calendar(name=str(u), color=COLORS.pop()) yield obj #~ logger.info("20131018 %s", obj) u.calendar = obj u.save()
def excerpt_types(): # also used for migration to 1.1.11 ContentType = rt.modules.contenttypes.ContentType ExcerptType = rt.modules.excerpts.ExcerptType attType = Instantiator( ExcerptType, # build_method='appypdf', email_template="Default.eml.html", ).build Shortcuts = rt.modules.excerpts.Shortcuts yield attType( body_template="presence_certificate.body.html", template="Default.odt", primary=True, content_type=ContentType.objects.get_for_model(dd.resolve_model("cal.Guest")), **dd.babelkw("name", de="Anwesenheitsbescheinigung", fr="Attestation de présence", en="Presence certificate") ) yield attType( build_method="appyrtf", template="cv.odt", shortcut=Shortcuts.cvs_emitted, content_type=ContentType.objects.get_for_model(dd.resolve_model("pcsw.Client")), **dd.str2kw("name", "Curriculum vitae") ) yield attType( template="file_sheet.odt", primary=True, content_type=ContentType.objects.get_for_model(dd.resolve_model("pcsw.Client")), **dd.str2kw("name", _("File sheet")) ) yield attType( template="eid-content.odt", content_type=ContentType.objects.get_for_model(dd.resolve_model("pcsw.Client")), **dd.str2kw("name", _("eID sheet")) ) # **dd.babelkw('name', # de="eID-Inhalt", # fr="Contenu carte eID", # en="eID sheet")) yield attType( body_template="pac.body.html", template="Default.odt", content_type=ContentType.objects.get_for_model(dd.resolve_model("pcsw.Client")), **dd.str2kw("name", _("Action plan")) ) # **dd.babelkw('name', # de="Aktionsplan", # fr="Plan d'action", # en="to-do list")) # A coaching sheet is the printout of a Coaching. Currently not # used in real world. But a first draft of the body template # exists... if False: yield attType( body_template="coaching.body.html", content_type=ContentType.objects.get_for_model(dd.resolve_model("pcsw.Coaching")), **dd.str2kw("name", _("Coaching sheet")) ) yield ExcerptType.update_for_model("jobs.Contract", certifying=True, backward_compat=True) yield ExcerptType.update_for_model("isip.Contract", certifying=True, backward_compat=True) yield ExcerptType.update_for_model( "art61.Contract", certifying=True, print_recipient=False, body_template="contract.body.html" )
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()
def test01(self): """ Tests some basic funtionality. """ self.assertEqual( settings.MIDDLEWARE, ( 'django.middleware.common.CommonMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'lino.core.auth.middleware.AuthenticationMiddleware', 'lino.core.auth.middleware.WithUserMiddleware', 'lino.core.auth.middleware.DeviceTypeMiddleware', 'lino.core.auth.middleware.RemoteUserMiddleware', 'lino.utils.ajax.AjaxExceptionResponse')) # settings.MIDDLEWARE_CLASSES, ( # 'django.middleware.common.CommonMiddleware', # 'django.middleware.locale.LocaleMiddleware', # 'lino.core.auth.RemoteUserMiddleware', # 'lino.utils.ajax.AjaxExceptionResponse')) Person = rt.models.contacts.Person Partner = rt.models.contacts.Partner Country = rt.models.countries.Country Place = rt.models.countries.Place PlaceTypes = rt.models.countries.PlaceTypes ee = create_and_get(Country, isocode='EE', **dd.babelkw('name', de="Estland", fr='Estonie', en="Estonia", nl='Estland', et='Eesti', )) be = create_and_get(Country, isocode='BE', **dd.babelkw('name', de="Belgien", fr='Belgique', en="Belgium", nl='Belgie', et='Belgia', )) eupen = create_and_get( Place, name=u'Eupen', country=be, zip_code='4700') vigala = create_and_get(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ü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(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''') root = create_and_get(settings.SITE.user_model, username='******', language='', user_type=UserTypes.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'): root.language = 'en' root.save() self.client.force_login(root) 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'): root.language = 'de' root.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'], "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'): root.language = 'fr' root.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") #~ root.language = lang #~ root.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 sc = settings.SITE.site_config self.assertEqual(sc.next_partner_id, contacts.PARTNER_NUMBERS_START_AT + 2) sc.update(next_partner_id=12345) # SiteConfigs = settings.SITE.models.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" sc = settings.SITE.site_config # re-read it from db self.assertEqual(sc.next_partner_id, 12345) john = create_and_get(Partner, name='John') self.assertEqual(john.pk, 12345) self.assertEqual(sc.next_partner_id, 12346) sc = settings.SITE.site_config # re-read it from db self.assertEqual(sc.next_partner_id, 12346)
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ü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)
def O(fr, en, de, de_BE): return Expression(**dd.babelkw('name', de=de, de_BE=de_BE, en=en, fr=fr))
def objects(self): VatClasses = rt.models.vat.VatClasses yield TeacherType(ref="I", **dd.str2kw('name', _("Independant"))) yield TeacherType(ref="E", **dd.str2kw('name', _("Employed"))) #~ yield TeacherType(ref="A",**dd.babelkw('name',de="Andere",fr="Autre",en="Other")) company = Instantiator('contacts.Company', 'name city:name').build we = company("Tantsutajad MTÜ", "Tallinn", street="Sütiste tee", street_no=123, vat_id="EE0123456789") yield we settings.SITE.site_config.site_company = we participant = rt.models.cal.GuestRole.objects.get(id=1) settings.SITE.site_config.pupil_guestrole = participant yield settings.SITE.site_config ProductCat = rt.models.products.ProductCat # productcat = Instantiator('products.ProductCat').build self.course_fees = ProductCat( **dd.str2kw('name', _("Participation fees"))) yield self.course_fees self.trips = ProductCat(**dd.str2kw('name', _("Trips"))) yield self.trips kw = dd.str2kw('name', _("Journeys")) self.journeys_cat = ProductCat(**kw) yield self.journeys_cat kw.update(sales_price="295.00") self.journey_fee = Product(cat=self.journeys_cat, **kw) yield self.journey_fee rent = ProductCat(**dd.str2kw('name', _("Room renting"))) # et="Ruumiüür", de="Raummiete", fr="Loyer")) yield rent # other = ProductCat(**dd.str2kw('name', _("Other"))) # et="Muud", de="Sonstige", fr="Autres")) # yield other t5 = babeld(Tariff, _("5 times"), number_of_events=5, min_asset=1) yield t5 t8 = babeld(Tariff, _("8 times"), number_of_events=8, min_asset=2) yield t8 t12 = babeld(Tariff, _("12 times"), number_of_events=12, min_asset=4) yield t12 product = Instantiator('products.Product', "sales_price cat name", vat_class=VatClasses.services).build yield product("20", self.course_fees, "20€") yield product("48", self.course_fees, "48€/8 hours", tariff=t8) # yield p # yield Tariff(product=p, number_of_events=8, min_asset=2) yield product("64", self.course_fees, "64€/12 hours", tariff=t12) # yield p # yield Tariff(product=p, number_of_events=12, min_asset=4) yield product("50", self.course_fees, "50€/5 hours", tariff=t5) # yield p # yield Tariff(product=p, number_of_events=5, min_asset=1) yield product("80", self.course_fees, "80€") rent20 = product("20", rent, "Peegliruum") yield rent20 rent10 = product( "10", rent, **dd.babelkw('name', en="Rent per meeting", et="Ruumi üürimine", de="Raummiete pro Versammlung", fr="Loyer par réunion")) yield rent10 self.PRICES = Cycler(Product.objects.filter(cat=self.course_fees)) event_type = Instantiator('cal.EventType').build kw = dd.str2kw('name', _("Courses")) kw.update(dd.str2kw('event_label', _("Hour"))) self.kurse = event_type(**kw) yield self.kurse settings.SITE.site_config.default_event_type = self.kurse yield settings.SITE.site_config self.seminare = event_type(**dd.str2kw('name', _("Seminars"))) yield self.seminare self.excursions = event_type(max_days=10, **dd.str2kw('name', _("Excursions"))) # de="Ausflüge", # fr="Excursions", # en="Excursions", yield self.excursions self.hikes = event_type(max_days=60, **dd.str2kw('name', _("Hikes"))) # de="Wanderungen", # fr="Randonnées", # en="Hikes", yield self.hikes yield event_type(**dd.str2kw('name', _("Lessons"))) # de="Versammlungen", # fr="Réunions", # en="Meetings", yield event_type(email_template='Team.eml.html', **dd.str2kw('name', _("Lessons"))) # de="Team-Besprechungen", # fr="Coordinations en équipe", # en="Team Meetings", #~ yield event_type(**dd.babelkw('name', #~ de="Feiertage", #~ fr="Jours fériés", #~ en="Holidays", #~ )) #~ company = Instantiator('contacts.Company', 'name city:name').build eupen = company("Tallinna tantsukeskus", "Tallinn", street="Kirchstraße", street_no=39, street_box="/B2") yield eupen bbach = company("Tartu tantsukeskus", "Tartu") yield bbach kelmis = company("Zur Klüüs", "Kelmis") yield kelmis stvith = company("Pärnu tantsukeskus", "Pärnu") yield stvith self.ext1 = company("Vigala Joogaklubi", "Vigala") yield self.ext1 self.ext2 = company("Vigala Maadlusklubi", "Vigala") yield self.ext2 room = Instantiator('cal.Room').build kw = dict(company=eupen) kw.update(dd.str2kw('name', _("Mirrored room"))) kw.update(fee=rent20) self.spiegel = room(**kw) yield self.spiegel kw.update(dd.str2kw('name', _("Feast room"))) kw.update(fee=rent10) self.pc_eupen = room(**kw) yield self.pc_eupen kw = dict(company=bbach) kw.update(dd.str2kw('name', _("Conferences room"))) self.konf = room(**kw) yield self.konf kw.update(dd.str2kw('name', _("Training room"))) self.pc_bbach = room(**kw) yield self.pc_bbach kw = dict(company=kelmis) kw.update(dd.str2kw('name', _("Training room"))) self.pc_kelmis = room(**kw) yield self.pc_kelmis kw = dict(company=stvith) kw.update(dd.str2kw('name', _("Training room"))) self.pc_stvith = room(**kw) yield self.pc_stvith # a room without company kw = dict() kw.update(dd.str2kw('name', _("Outside"))) self.outside = room(**kw) yield self.outside COLORS = Cycler(Calendar.COLOR_CHOICES) for u in Room.objects.all(): obj = Calendar(name=str(u), color=COLORS.pop()) yield obj #~ dd.logger.info("20131018 %s", obj) u.calendar = obj u.save() person = Pupil(first_name="Mike", last_name="Morgan", email=settings.SITE.demo_email, gender=dd.Genders.male) yield person yield User(username=person.first_name.lower(), partner=person, user_type=UserTypes.pupil) person = Pupil(first_name="Mary", last_name="Morgan", email=settings.SITE.demo_email, gender=dd.Genders.female) yield person yield User(username=person.first_name.lower(), partner=person, user_type=UserTypes.pupil)
def objects(self): yield super(Loader2, self).objects() Enrolment = rt.models.courses.Enrolment topic = Instantiator('courses.Topic').build line = Instantiator('courses.Line', 'topic event_type fee').build course = Instantiator('courses.Course', 'line room start_time end_time').build booking = Instantiator('rooms.Booking', 'room start_time end_time').build TEACHERS = Cycler(Teacher.objects.all()) COMPANIES = Cycler(Company.objects.all()) # USERS = Cycler(settings.SITE.user_model.objects.all()) cal_users = [ ut for ut in UserTypes.get_list_items() if ut.has_required_roles([OfficeUser]) ] USERS = Cycler( settings.SITE.user_model.objects.filter(user_type__in=cal_users)) def add_course(*args, **kw): kw.update(user=USERS.pop()) kw.update(teacher=TEACHERS.pop()) #~ kw.update(price=PRICES.pop()) obj = course(*args, **kw) if obj.line.fee.tariff and obj.line.fee.tariff.number_of_events: obj.max_events = None return obj Product = rt.models.products.Product ProductCat = rt.models.products.ProductCat ActivityLayouts = rt.models.courses.ActivityLayouts PaymentTerm = rt.models.ledger.PaymentTerm journey_options = ProductCat(**dd.str2kw('name', _("Hotel options"))) yield journey_options option = Instantiator(Product, cat=journey_options).build yield option(**dd.str2kw('name', _("Single room"))) yield option(**dd.str2kw('name', _("Double room"))) yield option(**dd.str2kw('name', _("Triple room"))) # yield option(**dd.str2kw('name', _("Shower"))) # yield option(**dd.str2kw('name', _("Night club"))) # trip_options = ProductCat(**dd.str2kw('name', _("Trip options"))) # yield trip_options # option = Instantiator(Product, cat=trip_options).build # yield option(name="Eupen Oberstadt") # yield option(name="Eupen Unterstadt") # yield option(name="Raeren") # yield option(name="Kelmis") # yield option(name="Büllingen") journey = Instantiator('courses.Course', 'line name start_date end_date').build def add_journey(*args, **kw): kw.update(user=USERS.pop()) kw.update(teacher=TEACHERS.pop()) kw.update(every_unit=cal.Recurrencies.once) kw.update(payment_term=PaymentTerm.get_by_ref('P30')) return journey(*args, **kw) self.journeys_topic = topic(**dd.str2kw('name', _("Journeys"))) yield self.journeys_topic europe = line(self.journeys_topic, self.excursions, self.journey_fee, options_cat=journey_options, course_area=ActivityLayouts.journeys, fees_cat=self.journeys_cat, **dd.str2kw('name', _("Europe"))) yield europe yield add_journey(europe, "Greece 2021", i2d(20140814), i2d(20140820), state=courses.CourseStates.active) yield add_journey(europe, "London 2022", i2d(20140714), i2d(20140720)) comp = topic(name="Latin") yield comp sport = topic(name="Sport") yield sport medit = topic(name="Vienna") yield medit externe = topic(name="Externe") yield externe obj = line(comp, self.kurse, self.PRICES.pop(), fees_cat=self.course_fees, ref="comp", **dd.str2kw('name', _("First Steps"))) yield obj kw = dict(max_events=8) kw.update(max_places=3) kw.update(start_date=demo_date(-430)) kw.update(state=courses.CourseStates.active) kw.update(every=1) kw.update(every_unit=cal.Recurrencies.weekly) yield add_course(obj, self.pc_bbach, "13:30", "15:00", monday=True, **kw) yield add_course(obj, self.pc_eupen, "17:30", "19:00", wednesday=True, **kw) yield add_course(obj, self.pc_kelmis, "13:30", "15:00", friday=True, **kw) desc = """ bla bla bla. """ obj = line(comp, self.kurse, self.PRICES.pop(), ref="WWW", fees_cat=self.course_fees, description=desc, **dd.str2kw('name', _("Master class"))) yield obj kw = dict(max_events=8) kw.update(max_places=4) kw.update(start_date=demo_date(-210)) kw.update(state=courses.CourseStates.active) yield add_course(obj, self.pc_bbach, "13:30", "15:00", monday=True, **kw) yield add_course(obj, self.pc_eupen, "17:30", "19:00", wednesday=True, **kw) yield add_course(obj, self.pc_kelmis, "13:30", "15:00", friday=True, **kw) obj = line(sport, self.kurse, self.PRICES.pop(), ref="BT", fees_cat=self.course_fees, **dd.str2kw('name', _("Belly dancing"))) yield obj kw = dict(max_events=8) kw.update(max_places=10) kw.update(start_date=demo_date(-420)) kw.update(state=CourseStates.active) yield add_course(obj, self.spiegel, "19:00", "20:00", wednesday=True, **kw) obj = line(sport, self.kurse, self.PRICES.pop(), ref="FG", fees_cat=self.course_fees, **dd.str2kw('name', _("Functional gymnastics"))) yield obj kw = dict(max_events=10, state=CourseStates.active) kw.update(max_places=5) kw.update(start_date=demo_date(-230)) yield add_course(obj, self.spiegel, "11:00", "12:00", monday=True, **kw) yield add_course(obj, self.spiegel, "13:30", "14:30", monday=True, **kw) obj = line(sport, self.kurse, self.PRICES.pop(), ref="Rücken", fees_cat=self.course_fees, **dd.str2kw('name', _("Swimming"))) yield obj kw = dict(max_events=10, state=CourseStates.active) kw.update(max_places=20) kw.update(start_date=demo_date(50)) yield add_course(obj, self.spiegel, "11:00", "12:00", monday=True, **kw) yield add_course(obj, self.spiegel, "13:30", "14:30", monday=True, **kw) yield add_course(obj, self.pc_stvith, "11:00", "12:00", tuesday=True, **kw) yield add_course(obj, self.pc_stvith, "13:30", "14:30", tuesday=True, **kw) yield add_course(obj, self.pc_kelmis, "11:00", "12:00", thursday=True, **kw) yield add_course(obj, self.pc_kelmis, "13:30", "14:30", thursday=True, **kw) obj = line(sport, self.kurse, self.PRICES.pop(), ref="SV", fees_cat=self.course_fees, **dd.str2kw('name', _("Self-defence"))) yield obj kw = dict(max_events=6) kw.update(max_places=12) kw.update(start_date=demo_date(-80)) kw.update(state=CourseStates.active) yield add_course(obj, self.spiegel, "18:00", "19:00", friday=True, **kw) yield add_course(obj, self.spiegel, "19:00", "20:00", friday=True, **kw) obj = line(medit, self.kurse, self.PRICES.pop(), ref="GLQ", fees_cat=self.course_fees, name="GuoLin-Qigong") yield obj kw = dict(max_events=10) kw.update(start_date=demo_date(-310)) kw.update(state=CourseStates.active) yield add_course(obj, self.spiegel, "18:00", "19:30", monday=True, **kw) yield add_course(obj, self.spiegel, "19:00", "20:30", friday=True, **kw) obj = line(medit, self.kurse, self.PRICES.pop(), ref="MED", fees_cat=self.course_fees, **dd.babelkw( 'name', de="Den Kopf frei machen - zur inneren Ruhe finden", en="Finding your inner peace")) yield obj kw = dict(max_events=10) kw.update(max_places=30) kw.update(start_date=demo_date(-610)) kw.update(state=CourseStates.active) yield add_course(obj, self.konf, "18:00", "19:30", monday=True, **kw) kw.update(start_date=demo_date(-110)) yield add_course(obj, self.konf, "19:00", "20:30", friday=True, **kw) obj = line(medit, self.kurse, self.PRICES.pop(), name="Yoga") yield obj kw = dict(max_events=10) kw.update(start_date=demo_date(-560)) kw.update(max_places=20) kw.update(state=CourseStates.active) yield add_course(obj, self.konf, "18:00", "19:30", monday=True, **kw) yield add_course(obj, self.konf, "19:00", "20:30", friday=True, **kw) for obj in Course.objects.filter(ref__isnull=True): if obj.line.fee.tariff and obj.line.fee.tariff.number_of_events: obj.ref = "%03dC" % obj.id else: obj.ref = "%03d" % obj.id yield obj EXTS = Cycler(self.ext1, self.ext2) def add_booking(*args, **kw): kw.update(user=USERS.pop()) kw.update(event_type=self.seminare) #~ kw.update(price=PRICES.pop()) #~ kw.update(fee=PRICES.pop()) #~ kw.update(calendar=self.kurse) kw.update(every=1) kw.update(company=EXTS.pop()) return booking(*args, **kw) #~ obj = line(externe,self.kurse,PRICES.pop(),**dd.babelkw('name', #~ de="Raumbuchung",en="Room booking")) #~ yield obj kw = dict(max_events=10) kw.update(every_unit=cal.Recurrencies.weekly) kw.update(start_date=demo_date(160)) kw.update(state=BookingStates.registered) kw.update(company=COMPANIES.pop()) yield add_booking(self.konf, "20:00", "22:00", tuesday=True, **kw) kw.update(company=COMPANIES.pop()) yield add_booking(self.konf, "20:00", "22:00", thursday=True, **kw) kw = dict(max_events=1) kw.update(every_unit=cal.Recurrencies.once) kw.update(company=COMPANIES.pop()) kw.update(every_unit=cal.Recurrencies.once) yield add_booking(self.konf, "10:00", "14:00", **kw) # a series of five week-ends: kw = dict() kw.update(user=USERS.pop()) kw.update(teacher=TEACHERS.pop()) kw.update(every_unit=cal.Recurrencies.monthly) kw.update(max_events=5) kw.update(friday=True) kw.update(payment_term=PaymentTerm.get_by_ref('P30')) yield journey(europe, "Five Weekends 2020", i2d(20200619), i2d(20200621), **kw) PUPILS = Cycler(Pupil.objects.all()) kw = dict(state=EnrolmentStates.confirmed) for course in Course.objects.all(): kw.update(user=USERS.pop(), course=course) for i in range(2): kw.update(pupil=PUPILS.pop()) obj = Enrolment(**kw) yield obj ses = settings.SITE.login() for model in (Course, Booking): for obj in model.objects.all(): rc = ses.run(obj.do_update_events) if not rc.get('success', False): raise Exception("update_reminders on %s returned %s" % (obj, rc)) Event = rt.models.cal.Event EntryStates = rt.models.cal.EntryStates qs = Event.objects.filter(start_date__lt=dd.demo_date()).order_by('id') for i, e in enumerate(qs): if i % 8: e.state = EntryStates.took_place yield e
def faculty(name, fr, en, **kw): kw.update(**dd.babelkw('name', de=name, fr=fr, en=en)) # kw.update(name=name, name_fr=name_fr, name_en=name_en) return rt.modules.faculties.Faculty(**kw)
def objects(): IncomeConfirmation = rt.modules.aids.IncomeConfirmation RefundConfirmation = rt.modules.aids.RefundConfirmation SimpleConfirmation = rt.modules.aids.SimpleConfirmation ConfirmationTypes = rt.modules.aids.ConfirmationTypes aidType = Instantiator( 'aids.AidType', confirmation_type=ConfirmationTypes.get_for_model( IncomeConfirmation)).build kw = dd.babelkw( 'name', de="Eingliederungseinkommen", en="Eingliederungseinkommen", fr="Revenu d'intégration") kw.update(short_name="EiEi") kw.update(is_integ_duty=True) kw.update(body_template='integ_income.body.html') kw.update(dd.str2kw('excerpt_title', _("Attestation"))) yield aidType(**kw) kw = dd.babelkw( 'name', de="Ausländerbeihilfe", en="Ausländerbeihilfe", fr="Aide aux immigrants") kw.update(body_template='foreigner_income.body.html') kw.update(is_integ_duty=True) kw.update(dd.str2kw('excerpt_title', _("Attestation"))) yield aidType(**kw) kw = dd.babelkw( 'name', de="Feste Beihilfe", en="Feste Beihilfe", fr="Revenu fixe") kw.update(body_template='fixed_income.body.html') kw.update(dd.str2kw('excerpt_title', _("Attestation"))) yield aidType(**kw) aidType = Instantiator( 'aids.AidType', "name", confirmation_type=ConfirmationTypes.get_for_model( SimpleConfirmation)).build kw = dd.babelkw( 'name', de="Erstattung", en="Erstattung", fr="Remboursement") kw.update(body_template='certificate.body.html') kw.update(dd.str2kw('excerpt_title', _("Attestation"))) yield aidType(**kw) kw = dd.babelkw( 'name', de="Übernahmeschein", en="Übernahmeschein", fr="Übernahmeschein") kw.update(body_template='certificate.body.html') kw.update(dd.str2kw('excerpt_title', _("Attestation"))) yield aidType(**kw) aidType = Instantiator( 'aids.AidType', "name", confirmation_type=ConfirmationTypes.get_for_model( RefundConfirmation)).build kw = dd.babelkw( 'name', de="Übernahme von Arzt- und/oder Medikamentenkosten", en="Medical costs", fr="Remboursement de frais médicaux") kw.update(short_name="AMK") fkw = dd.str2kw('name', _("Pharmacy")) # Apotheke cct_pharmacy = rt.modules.pcsw.ClientContactType.objects.get(**fkw) kw.update(pharmacy_type=cct_pharmacy) kw.update(body_template='medical_refund.body.html') kw.update(dd.str2kw('excerpt_title', _("Attestation"))) yield aidType(**kw) kw = dd.babelkw( 'name', de="Dringende Medizinische Hilfe", nl="Dringende medische Hulp", en="Urgent Medical Care", fr="Aide Médicale Urgente") kw.update(short_name="DMH") kw.update(is_urgent=True) kw.update(body_template='urgent_medical_care.body.html') kw.update(dd.str2kw('excerpt_title', _("Attestation"))) yield aidType(**kw) aidType = Instantiator( 'aids.AidType', "name", confirmation_type=ConfirmationTypes.get_for_model( SimpleConfirmation)).build kw = dd.babelkw( 'name', de="Möbellager", en="Furniture", fr="Mobilier") kw.update(body_template='furniture.body.html') kw.update(dd.str2kw('excerpt_title', _("Attestation"))) yield aidType(**kw) kw = dd.babelkw( 'name', de="Heizkosten", en="Heating costs", fr="Frais de chauffage") kw.update(body_template='heating_refund.body.html') kw.update(dd.str2kw('excerpt_title', _("Attestation"))) yield aidType(**kw) croix_rouge = rt.modules.contacts.Company(name="Belgisches Rotes Kreuz") yield croix_rouge kw = dd.babelkw( 'name', de="Lebensmittelbank", en="Food bank", fr="Banque alimentaire") kw.update(confirmed_by_primary_coach=False) kw.update(company=croix_rouge) kw.update(body_template='food_bank.body.html') kw.update(dd.str2kw('excerpt_title', _("Attestation"))) yield aidType(**kw) kw = dd.babelkw( 'name', de="Kleiderkammer", en="Clothes bank", fr="Banque aux vêtements") kw.update(body_template='clothing_bank.body.html') kw.update(company=croix_rouge) kw.update(dd.str2kw('excerpt_title', _("Clothing costs transfer"))) yield aidType(**kw) ## Categories Category = dd.resolve_model('aids.Category') yield Category(**babel_values( 'name', en="Living together", de="Zusammenlebend", fr="Cohabitant")) yield Category(**babel_values( 'name', en="Living alone", de="Alleinstehend", fr="Persone isolée")) yield Category(**babel_values( 'name', en="Person with family at charge", de="Person mit Familienlasten", fr="Personne qui cohabite avec une famille à sa charge")) Decider = dd.resolve_model('boards.Board') yield Decider(**dd.str2kw( 'name', _("Social Board (SB)"))) # "Sozialhilferat (SHR)" yield Decider(**dd.str2kw( 'name', _("Social Commission (SC)"))) # Sozialhilfeausschuss (SAS) yield Decider(**dd.str2kw( 'name', _("Permanent Board (PB)"))) # Ständiges Präsidium (SP) ContentType = rt.modules.contenttypes.ContentType ExcerptType = rt.modules.excerpts.ExcerptType ConfirmationTypes = rt.modules.aids.ConfirmationTypes for ct in ConfirmationTypes.items(): kw = dict( body_template='certificate.body.html', template='Default.odt', primary=True, # print_directly=False, content_type=ContentType.objects.get_for_model(ct.model)) kw.update(dd.str2kw('name', ct.model._meta.verbose_name)) yield ExcerptType.update_for_model(ct.model, **kw)
def objects(self): yield super(Loader2, self).objects() Enrolment = rt.models.courses.Enrolment topic = Instantiator('courses.Topic').build line = Instantiator('courses.Line', 'topic event_type fee').build course = Instantiator( 'courses.Course', 'line room start_time end_time').build booking = Instantiator( 'rooms.Booking', 'room start_time end_time').build TEACHERS = Cycler(Teacher.objects.all()) COMPANIES = Cycler(Company.objects.all()) USERS = Cycler(settings.SITE.user_model.objects.all()) def add_course(*args, **kw): kw.update(user=USERS.pop()) kw.update(teacher=TEACHERS.pop()) #~ kw.update(price=PRICES.pop()) obj = course(*args, **kw) if obj.line.fee.number_of_events: obj.max_events = None return obj Product = rt.models.products.Product ProductCat = rt.models.products.ProductCat CourseAreas = rt.models.courses.CourseAreas PaymentTerm = rt.models.ledger.PaymentTerm journey_options = ProductCat(**dd.str2kw( 'name', _("Hotel options"))) yield journey_options option = Instantiator(Product, cat=journey_options).build yield option(**dd.str2kw('name', _("Single room"))) yield option(**dd.str2kw('name', _("Double room"))) yield option(**dd.str2kw('name', _("Triple room"))) # yield option(**dd.str2kw('name', _("Shower"))) # yield option(**dd.str2kw('name', _("Night club"))) # trip_options = ProductCat(**dd.str2kw('name', _("Trip options"))) # yield trip_options # option = Instantiator(Product, cat=trip_options).build # yield option(name="Eupen Oberstadt") # yield option(name="Eupen Unterstadt") # yield option(name="Raeren") # yield option(name="Kelmis") # yield option(name="Büllingen") journey = Instantiator( 'courses.Course', 'line name start_date end_date').build def add_journey(*args, **kw): kw.update(user=USERS.pop()) kw.update(teacher=TEACHERS.pop()) kw.update(every_unit=cal.Recurrencies.once) kw.update(payment_term=PaymentTerm.get_by_ref('P30')) return journey(*args, **kw) self.journeys_topic = topic(**dd.str2kw('name', _("Journeys"))) yield self.journeys_topic europe = line(self.journeys_topic, self.excursions, self.journey_fee, options_cat=journey_options, course_area=CourseAreas.journeys, fees_cat=self.journeys_cat, **dd.str2kw('name', _("Europe"))) yield europe yield add_journey(europe, "Greece 2014", i2d(20140814), i2d(20140820), state=courses.CourseStates.active) yield add_journey(europe, "London 2014", i2d(20140714), i2d(20140720)) comp = topic(name="Computer") yield comp sport = topic(name="Sport") yield sport medit = topic(name="Meditation") yield medit externe = topic(name="Externe") yield externe obj = line(comp, self.kurse, self.PRICES.pop(), fees_cat=self.course_fees, ref="comp", **dd.babelkw('name', de="Erste Schritte", en="First Steps")) yield obj kw = dict(max_events=8) kw.update(max_places=3) kw.update(start_date=demo_date(-430)) kw.update(state=courses.CourseStates.active) kw.update(every=1) kw.update(every_unit=cal.Recurrencies.weekly) yield add_course(obj, self.pc_bbach, "13:30", "15:00", monday=True, **kw) yield add_course(obj, self.pc_eupen, "17:30", "19:00", wednesday=True, **kw) yield add_course(obj, self.pc_kelmis, "13:30", "15:00", friday=True, **kw) desc = """ Behandelte Themengebiete: - Grundlagen, Voraussetzungen - Arbeiten im WWW unter Verwendung eines Browsers - Navigieren im WWW - Links in die Linkleiste legen - aus Webseiten heraus drucken - Favoriten bzw. Lesezeichen verwenden - Aufgabe und Funktionsweise von Suchmaschinen - Elektronische Post: E-Mails verfassen, senden, empfangen, beantworten - E-Mails mit Anlagen - E-mail Sicherheit - Tipps und Tricks """ obj = line( comp, self.kurse, self.PRICES.pop(), ref="WWW", fees_cat=self.course_fees, description=desc, **dd.babelkw( 'name', de="Internet: World Wide Web für Anfänger", en="Internet for beginners")) yield obj kw = dict(max_events=8) kw.update(max_places=4) kw.update(start_date=demo_date(-210)) kw.update(state=courses.CourseStates.active) yield add_course(obj, self.pc_bbach, "13:30", "15:00", monday=True, **kw) yield add_course(obj, self.pc_eupen, "17:30", "19:00", wednesday=True, **kw) yield add_course(obj, self.pc_kelmis, "13:30", "15:00", friday=True, **kw) obj = line(sport, self.kurse, self.PRICES.pop(), ref="BT", fees_cat=self.course_fees, **dd.babelkw('name', de="Bauchtanz", en="Belly dancing")) yield obj kw = dict(max_events=8) kw.update(max_places=10) kw.update(start_date=demo_date(-420)) kw.update(state=CourseStates.active) yield add_course(obj, self.spiegel, "19:00", "20:00", wednesday=True, **kw) obj = line(sport, self.kurse, self.PRICES.pop(), ref="FG", fees_cat=self.course_fees, **dd.babelkw('name', de="Funktionsgymnastik", en="Functional gymnastics")) yield obj kw = dict(max_events=10, state=CourseStates.active) kw.update(max_places=5) kw.update(start_date=demo_date(-230)) yield add_course(obj, self.spiegel, "11:00", "12:00", monday=True, **kw) yield add_course(obj, self.spiegel, "13:30", "14:30", monday=True, **kw) obj = line(sport, self.kurse, self.PRICES.pop(), ref="Rücken", fees_cat=self.course_fees, **dd.babelkw('name', de="Rücken fit durch Schwimmen", en="Swimming")) yield obj kw = dict(max_events=10, state=CourseStates.active) kw.update(max_places=20) kw.update(start_date=demo_date(50)) yield add_course(obj, self.spiegel, "11:00", "12:00", monday=True, **kw) yield add_course(obj, self.spiegel, "13:30", "14:30", monday=True, **kw) yield add_course(obj, self.pc_stvith, "11:00", "12:00", tuesday=True, **kw) yield add_course(obj, self.pc_stvith, "13:30", "14:30", tuesday=True, **kw) yield add_course(obj, self.pc_kelmis, "11:00", "12:00", thursday=True, **kw) yield add_course(obj, self.pc_kelmis, "13:30", "14:30", thursday=True, **kw) obj = line(sport, self.kurse, self.PRICES.pop(), ref="SV", fees_cat=self.course_fees, **dd.babelkw('name', de="Selbstverteidigung im Alltag", en="Self-defence")) yield obj kw = dict(max_events=6) kw.update(max_places=12) kw.update(start_date=demo_date(-80)) kw.update(state=CourseStates.active) yield add_course(obj, self.spiegel, "18:00", "19:00", friday=True, **kw) yield add_course(obj, self.spiegel, "19:00", "20:00", friday=True, **kw) obj = line(medit, self.kurse, self.PRICES.pop(), ref="GLQ", fees_cat=self.course_fees, name="GuoLin-Qigong") yield obj kw = dict(max_events=10) kw.update(start_date=demo_date(-310)) kw.update(state=CourseStates.active) yield add_course(obj, self.spiegel, "18:00", "19:30", monday=True, **kw) yield add_course(obj, self.spiegel, "19:00", "20:30", friday=True, **kw) obj = line(medit, self.kurse, self.PRICES.pop(), ref="MED", fees_cat=self.course_fees, **dd.babelkw( 'name', de="Den Kopf frei machen - zur inneren Ruhe finden", en="Finding your inner peace")) yield obj kw = dict(max_events=10) kw.update(max_places=30) kw.update(start_date=demo_date(-610)) kw.update(state=CourseStates.active) yield add_course(obj, self.konf, "18:00", "19:30", monday=True, **kw) kw.update(start_date=demo_date(-110)) yield add_course(obj, self.konf, "19:00", "20:30", friday=True, **kw) obj = line(medit, self.kurse, self.PRICES.pop(), name="Yoga") yield obj kw = dict(max_events=10) kw.update(start_date=demo_date(-560)) kw.update(max_places=20) kw.update(state=CourseStates.active) yield add_course(obj, self.konf, "18:00", "19:30", monday=True, **kw) yield add_course(obj, self.konf, "19:00", "20:30", friday=True, **kw) for obj in Course.objects.filter(ref__isnull=True): if obj.line.fee.number_of_events: obj.ref = "%03dC" % obj.id else: obj.ref = "%03d" % obj.id yield obj EXTS = Cycler(self.ext1, self.ext2) def add_booking(*args, **kw): kw.update(user=USERS.pop()) kw.update(event_type=self.seminare) #~ kw.update(price=PRICES.pop()) #~ kw.update(fee=PRICES.pop()) #~ kw.update(calendar=self.kurse) kw.update(every=1) kw.update(company=EXTS.pop()) return booking(*args, **kw) #~ obj = line(externe,self.kurse,PRICES.pop(),**dd.babelkw('name', #~ de="Raumbuchung",en="Room booking")) #~ yield obj kw = dict(max_events=10) kw.update(every_unit=cal.Recurrencies.weekly) kw.update(start_date=demo_date(160)) kw.update(state=BookingStates.registered) kw.update(company=COMPANIES.pop()) yield add_booking(self.konf, "20:00", "22:00", tuesday=True, **kw) kw.update(company=COMPANIES.pop()) yield add_booking(self.konf, "20:00", "22:00", thursday=True, **kw) kw = dict(max_events=1) kw.update(every_unit=cal.Recurrencies.once) kw.update(company=COMPANIES.pop()) kw.update(every_unit=cal.Recurrencies.once) yield add_booking(self.konf, "10:00", "14:00", **kw) # a series of five week-ends: kw = dict() kw.update(user=USERS.pop()) kw.update(teacher=TEACHERS.pop()) kw.update(every_unit=cal.Recurrencies.monthly) kw.update(max_events=5) kw.update(friday=True) kw.update(payment_term=PaymentTerm.get_by_ref('P30')) yield journey(europe, "Five Weekends 2015", i2d(20150619), i2d(20150621), **kw) # PUPILS = Cycler() #~ print 20130712, Pupil.objects.all() COURSES = Cycler(Course.objects.filter( line__fee__isnull=False).order_by('room__company__city')) # STATES = Cycler(EnrolmentStates.objects()) FREE_EVENTS = Cycler([3, 2, 5, -2]) # assert len(USERS) > 1 pupils = Pupil.objects.order_by('id') # print("20171028 {} courses, {} pupils".format( # len(COURSES), pupils.count())) # assert pupils.count() == 50 n = 0 for pupil in pupils: for i in range(pupil.id % 6): n += 1 # every pupil can be in up to 5 courses. That's a bit # unrealistic, but we have 25 courses and 35 # pupils and want to have course = COURSES.pop() def coursedate(*args, **kwargs): return date_offset(course.start_date, *args, **kwargs) kw = dict(user=USERS.pop(), course=course, pupil=pupil) #~ print 20130712, kw story = ENROLMENT_STORIES.pop() assert isinstance(story, list) for rd, sd, ed in story: # kw.update(state=STATES.pop()) # enrolments are requested from 3 weeks before until 1 # week after start date of course: # kw.update(request_date=coursedate(i % 28 - 7)) kw.update(request_date=coursedate(rd)) if course.line == europe: if n % 3 == 0: kw.update(places=2) obj = Enrolment(**kw) # print("20171027b {}".format(obj)) obj.full_clean() if sd is not None: obj.start_date = coursedate(sd) # obj.request_date = obj.start_date if ed is not None: obj.end_date = coursedate(ed) if n % 10 == 0: obj.state = EnrolmentStates.requested elif n % 13 == 0: obj.state = EnrolmentStates.cancelled else: obj.state = EnrolmentStates.confirmed if n % 9 == 0: if course.line.fee.number_of_events: obj.free_events = FREE_EVENTS.pop() yield obj ses = settings.SITE.login() for model in (Course, Booking): for obj in model.objects.all(): rc = ses.run(obj.do_update_events) if not rc.get('success', False): raise Exception("update_reminders on %s returned %s" % (obj, rc)) Event = rt.models.cal.Event EntryStates = rt.models.cal.EntryStates qs = Event.objects.filter( start_date__lt=dd.demo_date()).order_by('id') for i, e in enumerate(qs): if i % 8: e.state = EntryStates.took_place yield e
def objects(self): VatClasses = rt.models.vat.VatClasses # yield PupilType(ref="M", name="Mitglied") # yield PupilType(ref="H", name="Helfer") # yield PupilType(ref="L", name="LFV") # yield PupilType(ref="C", name="C*K") #~ yield PupilType(ref="E",name="Extern") yield TeacherType(ref="S", **dd.str2kw('name', _("Independant"))) yield TeacherType(ref="EP", **dd.babelkw('name', de="Ehrenamtlich pauschal", fr="Volontaire (forfait)", en="Voluntary (flat)")) yield TeacherType(ref="ER", **dd.babelkw('name', de="Ehrenamtlich real", fr="Volontaire (réel)", en="Voluntary (real)")) yield TeacherType(ref="LBA", **dd.babelkw('name', de="LBA", fr="ALE", en="LEA")) #~ yield TeacherType(ref="A",**dd.babelkw('name',de="Andere",fr="Autre",en="Other")) company = Instantiator('contacts.Company', 'name city:name').build we = company("Die Buche V.o.G.", "Eupen", street="Birkenweg", street_no=5, vat_id="BE0123456789") yield we settings.SITE.site_config.site_company = we yield settings.SITE.site_config ProductCat = rt.models.products.ProductCat # productcat = Instantiator('products.ProductCat').build self.course_fees = ProductCat(**dd.str2kw( 'name', _("Participation fees"))) yield self.course_fees self.trips = ProductCat(**dd.str2kw('name', _("Trips"))) # et="Väljasõidud", de="Ausflüge", fr="Excursions")) yield self.trips kw = dd.str2kw('name', _("Journeys")) self.journeys_cat = ProductCat(**kw) yield self.journeys_cat kw.update(sales_price="295.00") self.journey_fee = Product(cat=self.journeys_cat, **kw) yield self.journey_fee rent = ProductCat(**dd.str2kw('name', _("Room renting"))) # et="Ruumiüür", de="Raummiete", fr="Loyer")) yield rent # other = ProductCat(**dd.str2kw('name', _("Other"))) # et="Muud", de="Sonstige", fr="Autres")) # yield other t5 = babeld(Tariff, _("5 times"), number_of_events=5, min_asset=1) yield t5 t8 = babeld(Tariff, _("8 times"), number_of_events=8, min_asset=2) yield t8 t12 = babeld( Tariff, _("12 times"), number_of_events=12, min_asset=4) yield t12 product = Instantiator( 'products.Product', "sales_price cat name", vat_class=VatClasses.normal).build yield product("20", self.course_fees, "20€") yield product("48", self.course_fees, "48€/8 hours", tariff=t8) # yield p # yield Tariff(product=p, number_of_events=8, min_asset=2) yield product("64", self.course_fees, "64€/12 hours", tariff=t12) # yield p # yield Tariff(product=p, number_of_events=12, min_asset=4) yield product("50", self.course_fees, "50€/5 hours", tariff=t5) # yield p # yield Tariff(product=p, number_of_events=5, min_asset=1) yield product("80", self.course_fees, "80€") rent20 = product("20", rent, "Spiegelraum Eupen") yield rent20 rent10 = product("10", rent, **dd.babelkw( 'name', en="Rent per meeting", et="Ruumi üürimine", de="Raummiete pro Versammlung", fr="Loyer par réunion")) yield rent10 self.PRICES = Cycler(Product.objects.filter(cat=self.course_fees)) event_type = Instantiator('cal.EventType').build kw = dd.str2kw('name', _("Courses")) kw.update(dd.str2kw('event_label', _("Hour"))) self.kurse = event_type(**kw) yield self.kurse settings.SITE.site_config.default_event_type = self.kurse yield settings.SITE.site_config self.seminare = event_type(**dd.str2kw('name', _("Seminars"))) yield self.seminare self.excursions = event_type( max_days=10, **dd.str2kw('name', _("Excursions"))) # de="Ausflüge", # fr="Excursions", # en="Excursions", yield self.excursions self.hikes = event_type( max_days=60, **dd.str2kw('name', _("Hikes"))) # de="Wanderungen", # fr="Randonnées", # en="Hikes", yield self.hikes yield event_type(**dd.str2kw('name', _("Meetings"))) # de="Versammlungen", # fr="Réunions", # en="Meetings", yield event_type( email_template='Team.eml.html', **dd.str2kw('name', _("Team Meetings"))) # de="Team-Besprechungen", # fr="Coordinations en équipe", # en="Team Meetings", #~ yield event_type(**dd.babelkw('name', #~ de="Feiertage", #~ fr="Jours fériés", #~ en="Holidays", #~ )) #~ company = Instantiator('contacts.Company', 'name city:name').build eupen = company("Lern- und Begegnungszentrum", "Eupen", street="Kirchstraße", street_no=39, street_box="/B2") yield eupen bbach = company("Lern- und Begegnungszentrum", "Butgenbach") yield bbach kelmis = company("Zur Klüüs", "Kelmis") yield kelmis stvith = company("Sport- und Freizeitzentrum", "Sankt Vith") yield stvith self.ext1 = company("AA Neudorf", "Raeren") yield self.ext1 self.ext2 = company("Nisperter Schützenverein", "Eupen") yield self.ext2 room = Instantiator('cal.Room').build kw = dict(company=eupen) kw.update(dd.str2kw('name', _("Mirrored room"))) kw.update(fee=rent20) self.spiegel = room(**kw) yield self.spiegel kw.update(dd.str2kw('name', _("Computer room"))) kw.update(fee=rent10) self.pc_eupen = room(**kw) yield self.pc_eupen kw = dict(company=bbach) kw.update(dd.str2kw('name', _("Conferences room"))) self.konf = room(**kw) yield self.konf kw.update(dd.str2kw('name', _("Computer room"))) self.pc_bbach = room(**kw) yield self.pc_bbach kw = dict(company=kelmis) kw.update(dd.str2kw('name', _("Computer room"))) self.pc_kelmis = room(**kw) yield self.pc_kelmis kw = dict(company=stvith) kw.update(dd.str2kw('name', _("Computer room"))) self.pc_stvith = room(**kw) yield self.pc_stvith # a room without company kw = dict() kw.update(dd.str2kw('name', _("Outside"))) self.outside = room(**kw) yield self.outside COLORS = Cycler(Calendar.COLOR_CHOICES) for u in Room.objects.all(): obj = Calendar(name=str(u), color=COLORS.pop()) yield obj #~ logger.info("20131018 %s", obj) u.calendar = obj u.save()
def objects(self): yield super(Loader2, self).objects() Enrolment = rt.models.courses.Enrolment topic = Instantiator('courses.Topic').build line = Instantiator('courses.Line', 'topic event_type fee').build course = Instantiator( 'courses.Course', 'line room start_time end_time').build booking = Instantiator( 'rooms.Booking', 'room start_time end_time').build TEACHERS = Cycler(Teacher.objects.all()) COMPANIES = Cycler(Company.objects.all()) USERS = Cycler(settings.SITE.user_model.objects.all()) def add_course(*args, **kw): kw.update(user=USERS.pop()) kw.update(teacher=TEACHERS.pop()) #~ kw.update(price=PRICES.pop()) obj = course(*args, **kw) if obj.line.fee.tariff and obj.line.fee.tariff.number_of_events: obj.max_events = None return obj Product = rt.models.products.Product ProductCat = rt.models.products.ProductCat CourseAreas = rt.models.courses.CourseAreas PaymentTerm = rt.models.ledger.PaymentTerm journey_options = ProductCat(**dd.str2kw( 'name', _("Hotel options"))) yield journey_options option = Instantiator(Product, cat=journey_options).build yield option(**dd.str2kw('name', _("Single room"))) yield option(**dd.str2kw('name', _("Double room"))) yield option(**dd.str2kw('name', _("Triple room"))) # yield option(**dd.str2kw('name', _("Shower"))) # yield option(**dd.str2kw('name', _("Night club"))) # trip_options = ProductCat(**dd.str2kw('name', _("Trip options"))) # yield trip_options # option = Instantiator(Product, cat=trip_options).build # yield option(name="Eupen Oberstadt") # yield option(name="Eupen Unterstadt") # yield option(name="Raeren") # yield option(name="Kelmis") # yield option(name="Büllingen") journey = Instantiator( 'courses.Course', 'line name start_date end_date').build def add_journey(*args, **kw): kw.update(user=USERS.pop()) kw.update(teacher=TEACHERS.pop()) kw.update(every_unit=cal.Recurrencies.once) kw.update(payment_term=PaymentTerm.get_by_ref('P30')) return journey(*args, **kw) self.journeys_topic = topic(**dd.str2kw('name', _("Journeys"))) yield self.journeys_topic europe = line(self.journeys_topic, self.excursions, self.journey_fee, options_cat=journey_options, course_area=CourseAreas.journeys, fees_cat=self.journeys_cat, **dd.str2kw('name', _("Europe"))) yield europe yield add_journey(europe, "Greece 2014", i2d(20140814), i2d(20140820), state=courses.CourseStates.active) yield add_journey(europe, "London 2014", i2d(20140714), i2d(20140720)) comp = topic(name="Computer") yield comp sport = topic(name="Sport") yield sport medit = topic(name="Meditation") yield medit externe = topic(name="Externe") yield externe obj = line(comp, self.kurse, self.PRICES.pop(), fees_cat=self.course_fees, ref="comp", **dd.babelkw('name', de="Erste Schritte", en="First Steps")) yield obj kw = dict(max_events=8) kw.update(max_places=3) kw.update(start_date=demo_date(-430)) kw.update(state=courses.CourseStates.active) kw.update(every=1) kw.update(every_unit=cal.Recurrencies.weekly) yield add_course(obj, self.pc_bbach, "13:30", "15:00", monday=True, **kw) yield add_course(obj, self.pc_eupen, "17:30", "19:00", wednesday=True, **kw) yield add_course(obj, self.pc_kelmis, "13:30", "15:00", friday=True, **kw) desc = """ Behandelte Themengebiete: - Grundlagen, Voraussetzungen - Arbeiten im WWW unter Verwendung eines Browsers - Navigieren im WWW - Links in die Linkleiste legen - aus Webseiten heraus drucken - Favoriten bzw. Lesezeichen verwenden - Aufgabe und Funktionsweise von Suchmaschinen - Elektronische Post: E-Mails verfassen, senden, empfangen, beantworten - E-Mails mit Anlagen - E-mail Sicherheit - Tipps und Tricks """ obj = line( comp, self.kurse, self.PRICES.pop(), ref="WWW", fees_cat=self.course_fees, description=desc, **dd.babelkw( 'name', de="Internet: World Wide Web für Anfänger", en="Internet for beginners")) yield obj kw = dict(max_events=8) kw.update(max_places=4) kw.update(start_date=demo_date(-210)) kw.update(state=courses.CourseStates.active) yield add_course(obj, self.pc_bbach, "13:30", "15:00", monday=True, **kw) yield add_course(obj, self.pc_eupen, "17:30", "19:00", wednesday=True, **kw) yield add_course(obj, self.pc_kelmis, "13:30", "15:00", friday=True, **kw) obj = line(sport, self.kurse, self.PRICES.pop(), ref="BT", fees_cat=self.course_fees, **dd.babelkw('name', de="Bauchtanz", en="Belly dancing")) yield obj kw = dict(max_events=8) kw.update(max_places=10) kw.update(start_date=demo_date(-420)) kw.update(state=CourseStates.active) yield add_course(obj, self.spiegel, "19:00", "20:00", wednesday=True, **kw) obj = line(sport, self.kurse, self.PRICES.pop(), ref="FG", fees_cat=self.course_fees, **dd.babelkw('name', de="Funktionsgymnastik", en="Functional gymnastics")) yield obj kw = dict(max_events=10, state=CourseStates.active) kw.update(max_places=5) kw.update(start_date=demo_date(-230)) yield add_course(obj, self.spiegel, "11:00", "12:00", monday=True, **kw) yield add_course(obj, self.spiegel, "13:30", "14:30", monday=True, **kw) obj = line(sport, self.kurse, self.PRICES.pop(), ref="Rücken", fees_cat=self.course_fees, **dd.babelkw('name', de="Rücken fit durch Schwimmen", en="Swimming")) yield obj kw = dict(max_events=10, state=CourseStates.active) kw.update(max_places=20) kw.update(start_date=demo_date(50)) yield add_course(obj, self.spiegel, "11:00", "12:00", monday=True, **kw) yield add_course(obj, self.spiegel, "13:30", "14:30", monday=True, **kw) yield add_course(obj, self.pc_stvith, "11:00", "12:00", tuesday=True, **kw) yield add_course(obj, self.pc_stvith, "13:30", "14:30", tuesday=True, **kw) yield add_course(obj, self.pc_kelmis, "11:00", "12:00", thursday=True, **kw) yield add_course(obj, self.pc_kelmis, "13:30", "14:30", thursday=True, **kw) obj = line(sport, self.kurse, self.PRICES.pop(), ref="SV", fees_cat=self.course_fees, **dd.babelkw('name', de="Selbstverteidigung im Alltag", en="Self-defence")) yield obj kw = dict(max_events=6) kw.update(max_places=12) kw.update(start_date=demo_date(-80)) kw.update(state=CourseStates.active) yield add_course(obj, self.spiegel, "18:00", "19:00", friday=True, **kw) yield add_course(obj, self.spiegel, "19:00", "20:00", friday=True, **kw) obj = line(medit, self.kurse, self.PRICES.pop(), ref="GLQ", fees_cat=self.course_fees, name="GuoLin-Qigong") yield obj kw = dict(max_events=10) kw.update(start_date=demo_date(-310)) kw.update(state=CourseStates.active) yield add_course(obj, self.spiegel, "18:00", "19:30", monday=True, **kw) yield add_course(obj, self.spiegel, "19:00", "20:30", friday=True, **kw) obj = line(medit, self.kurse, self.PRICES.pop(), ref="MED", fees_cat=self.course_fees, **dd.babelkw( 'name', de="Den Kopf frei machen - zur inneren Ruhe finden", en="Finding your inner peace")) yield obj kw = dict(max_events=10) kw.update(max_places=30) kw.update(start_date=demo_date(-610)) kw.update(state=CourseStates.active) yield add_course(obj, self.konf, "18:00", "19:30", monday=True, **kw) kw.update(start_date=demo_date(-110)) yield add_course(obj, self.konf, "19:00", "20:30", friday=True, **kw) obj = line(medit, self.kurse, self.PRICES.pop(), name="Yoga") yield obj kw = dict(max_events=10) kw.update(start_date=demo_date(-560)) kw.update(max_places=20) kw.update(state=CourseStates.active) yield add_course(obj, self.konf, "18:00", "19:30", monday=True, **kw) yield add_course(obj, self.konf, "19:00", "20:30", friday=True, **kw) for obj in Course.objects.filter(ref__isnull=True): if obj.line.fee.tariff and obj.line.fee.tariff.number_of_events: obj.ref = "%03dC" % obj.id else: obj.ref = "%03d" % obj.id yield obj EXTS = Cycler(self.ext1, self.ext2) def add_booking(*args, **kw): kw.update(user=USERS.pop()) kw.update(event_type=self.seminare) #~ kw.update(price=PRICES.pop()) #~ kw.update(fee=PRICES.pop()) #~ kw.update(calendar=self.kurse) kw.update(every=1) kw.update(company=EXTS.pop()) return booking(*args, **kw) #~ obj = line(externe,self.kurse,PRICES.pop(),**dd.babelkw('name', #~ de="Raumbuchung",en="Room booking")) #~ yield obj kw = dict(max_events=10) kw.update(every_unit=cal.Recurrencies.weekly) kw.update(start_date=demo_date(160)) kw.update(state=BookingStates.registered) kw.update(company=COMPANIES.pop()) yield add_booking(self.konf, "20:00", "22:00", tuesday=True, **kw) kw.update(company=COMPANIES.pop()) yield add_booking(self.konf, "20:00", "22:00", thursday=True, **kw) kw = dict(max_events=1) kw.update(every_unit=cal.Recurrencies.once) kw.update(company=COMPANIES.pop()) kw.update(every_unit=cal.Recurrencies.once) yield add_booking(self.konf, "10:00", "14:00", **kw) # a series of five week-ends: kw = dict() kw.update(user=USERS.pop()) kw.update(teacher=TEACHERS.pop()) kw.update(every_unit=cal.Recurrencies.monthly) kw.update(max_events=5) kw.update(friday=True) kw.update(payment_term=PaymentTerm.get_by_ref('P30')) yield journey(europe, "Five Weekends 2015", i2d(20150619), i2d(20150621), **kw) # PUPILS = Cycler() #~ print 20130712, Pupil.objects.all() COURSES = Cycler(Course.objects.filter( line__fee__isnull=False).order_by('room__company__city')) # STATES = Cycler(EnrolmentStates.objects()) FREE_EVENTS = Cycler([3, 2, 5, -2]) # assert len(USERS) > 1 pupils = Pupil.objects.order_by('id') # print("20171028 {} courses, {} pupils".format( # len(COURSES), pupils.count())) # assert pupils.count() == 50 n = 0 for pupil in pupils: for i in range(pupil.id % 6): n += 1 # every pupil can be in up to 5 courses. That's a bit # unrealistic, but we have 25 courses and 35 # pupils and want to have course = COURSES.pop() def coursedate(*args, **kwargs): return date_offset(course.start_date, *args, **kwargs) kw = dict(user=USERS.pop(), course=course, pupil=pupil) #~ print 20130712, kw story = ENROLMENT_STORIES.pop() assert isinstance(story, list) for rd, sd, ed in story: # kw.update(state=STATES.pop()) # enrolments are requested from 3 weeks before until 1 # week after start date of course: # kw.update(request_date=coursedate(i % 28 - 7)) kw.update(request_date=coursedate(rd)) if course.line == europe: if n % 3 == 0: kw.update(places=2) obj = Enrolment(**kw) # print("20171027b {}".format(obj)) obj.full_clean() if sd is not None: obj.start_date = coursedate(sd) # obj.request_date = obj.start_date if ed is not None: obj.end_date = coursedate(ed) if n % 10 == 0: obj.state = EnrolmentStates.requested elif n % 13 == 0: obj.state = EnrolmentStates.cancelled else: obj.state = EnrolmentStates.confirmed if n % 9 == 0: if course.line.fee.tariff: if course.line.fee.tariff.number_of_events: obj.free_events = FREE_EVENTS.pop() yield obj ses = settings.SITE.login() for model in (Course, Booking): for obj in model.objects.all(): rc = ses.run(obj.do_update_events) if not rc.get('success', False): raise Exception("update_reminders on %s returned %s" % (obj, rc)) Event = rt.models.cal.Event EntryStates = rt.models.cal.EntryStates qs = Event.objects.filter( start_date__lt=dd.demo_date()).order_by('id') for i, e in enumerate(qs): if i % 8: e.state = EntryStates.took_place yield e