def objects(): yield lib_objects() SECTIONS = Cycler(rt.models.courses.Sections.objects()) for obj in rt.models.courses.Pupil.objects.order_by('id'): if obj.id % 5 == 0: obj.is_lfv = True if obj.id % 6 == 0: obj.is_ckk = True if obj.id % 4 == 0: obj.section = SECTIONS.pop() elif obj.id % 10 != 0: obj.member_until = dd.demo_date().replace(month=12, day=31) yield obj fee_account = rt.models.accounts.Account( ref=dd.plugins.courses.membership_fee_account, type=rt.models.accounts.AccountTypes.incomes, default_amount=15, **dd.str2kw('name', _("Membership fee"))) yield fee_account Journal = rt.models.ledger.Journal USERS = Cycler(rt.models.users.User.objects.all()) MEMBERS = Cycler(rt.models.courses.Pupil.objects.all()) jnl = Journal.objects.get(ref='CSH') membership_payments = [ (1, 3), (2, 1), (10, 2), (11, 4), (12, 5), ] REQUEST = rt.login() for month, number in membership_payments: date = dd.demo_date().replace(month=month) voucher = jnl.create_voucher( user=USERS.pop(), voucher_date=date) yield voucher for i in range(number): M = jnl.voucher_type.get_items_model() kw = dict(voucher=voucher) kw.update(partner=MEMBERS.pop(), date=date, account=fee_account) kw.update( amount=fee_account.default_amount, dc=fee_account.type.dc) yield M(**kw) voucher.register(REQUEST) voucher.save()
def enrol(pupil): course = COURSES.pop() if fits(course, pupil): kw = dict(user=USERS.pop(), course=course, pupil=pupil) kw.update(request_date=dd.demo_date(-i)) kw.update(state=STATES.pop()) return Enrolment(**kw)
def objects(): # vt = dd.plugins.invoicing.get_voucher_type() # jnl_list = vt.get_journals() # if len(jnl_list) == 0: # return from lino_cosi.lib.ledger.roles import LedgerStaff accountants = LedgerStaff.get_user_profiles() users = rt.models.users.User.objects.filter( language=dd.get_default_language(), profile__in=accountants) if users.count() == 0: return ses = rt.login(users[0].username) Plan = rt.modules.invoicing.Plan # we don't write invoices the last two months because we want to # have something in our invoicing plan. today = datetime.date(dd.plugins.ledger.start_year, 1, 1) while today < dd.demo_date(-60): plan = Plan.start_plan(ses.get_user(), today=today) yield plan plan.fill_plan(ses) # for i in plan.items.all()[:9]: for i in plan.items.all(): obj = i.create_invoice(ses) assert obj is not None yield obj today = DurationUnits.months.add_duration(today, 1)
def objects(): CLIENTS = Cycler(pcsw.Client.objects.filter( client_state=pcsw.ClientStates.coached)) COMPANIES = Cycler(contacts.Company.objects.all()) for i in range(10): yield create(CLIENTS.pop(), COMPANIES.pop(), dd.demo_date(i), i % 2)
def objects(): # vt = dd.plugins.invoicing.get_voucher_type() # jnl_list = vt.get_journals() # if len(jnl_list) == 0: # return from lino_xl.lib.ledger.roles import LedgerStaff accountants = LedgerStaff.get_user_profiles() users = rt.models.users.User.objects.filter( language=dd.get_default_language(), user_type__in=accountants) if users.count() == 0: return ses = rt.login(users[0].username) Plan = rt.models.invoicing.Plan # we don't write invoices the last two months because we want to # have something in our invoicing plan. today = datetime.date(dd.plugins.ledger.start_year, 1, 1) while today < dd.demo_date(-60): plan = Plan.start_plan(ses.get_user(), today=today) yield plan plan.fill_plan(ses) # for i in plan.items.all()[:9]: for i in plan.items.all(): obj = i.create_invoice(ses) if obj is not None: yield obj else: msg = "create_invoice failed for {}".format(i) raise Exception(msg) # dd.logger.warning(msg) # return today = DurationUnits.months.add_duration(today, 1)
def objects(): # vt = dd.plugins.invoicing.get_voucher_type() # jnl_list = vt.get_journals() # if len(jnl_list) == 0: # return from lino_xl.lib.ledger.roles import LedgerStaff accountants = LedgerStaff.get_user_profiles() users = rt.models.users.User.objects.filter( language=dd.get_default_language(), user_type__in=accountants) if users.count() == 0: return ses = rt.login(users.first().username) for area in Area.objects.all(): today = datetime.date(dd.plugins.ledger.start_year, 1, 1) while today < dd.demo_date(-60): plan = Plan.run_start_plan(ses.get_user(), today=today, area=area) yield plan plan.fill_plan(ses) # for i in plan.items.all()[:9]: for i in plan.items.all(): obj = i.create_invoice(ses) if obj is not None: yield obj else: msg = "create_invoice failed for {}".format(i) raise Exception(msg) # dd.logger.warning(msg) # return today = DurationUnits.months.add_duration(today, 1)
def working_objects(): # was previously in working Company = rt.models.contacts.Company # Vote = rt.models.votes.Vote SessionType = rt.models.working.SessionType Session = rt.models.working.Session Ticket = rt.models.tickets.Ticket User = rt.models.users.User UserTypes = rt.models.users.UserTypes # devs = (UserTypes.developer, UserTypes.senior) devs = [p for p in UserTypes.items() if p.has_required_roles([Worker]) and not p.has_required_roles([SiteAdmin])] workers = User.objects.filter(user_type__in=devs) WORKERS = Cycler(workers) TYPES = Cycler(SessionType.objects.all()) # TICKETS = Cycler(Ticket.objects.all()) DURATIONS = Cycler([12, 138, 90, 10, 122, 209, 37, 62, 179, 233, 5]) # every fourth ticket is unassigned and thus listed in # PublicTickets # for i, t in enumerate(Ticket.objects.exclude(private=True)): for i, t in enumerate(Ticket.objects.all()): if i % 4: t.assigned_to = WORKERS.pop() yield t for u in workers: # VOTES = Cycler(Vote.objects.filter(user=u)) # TICKETS = Cycler(Ticket.objects.filter(assigned_to=u)) TICKETS = Cycler(Ticket.objects.filter()) # if len(VOTES) == 0: # continue for offset in (0, -1, -3, -4): date = dd.demo_date(offset) worked = Duration() ts = datetime.datetime.combine(date, datetime.time(9, 0, 0)) for i in range(7): obj = Session( ticket=TICKETS.pop(), session_type=TYPES.pop(), user=u) obj.set_datetime('start', ts) d = DURATIONS.pop() worked += d if offset < 0: ts = DurationUnits.minutes.add_duration(ts, d) obj.set_datetime('end', ts) yield obj if offset == 0 or worked > 8: break ServiceReport = rt.models.working.ServiceReport welket = Company.objects.get(name="welket") yield ServiceReport( start_date=dd.today(-90), interesting_for=welket)
def working_objects(): # was previously in working Company = rt.models.contacts.Company # Vote = rt.models.votes.Vote SessionType = rt.models.working.SessionType Session = rt.models.working.Session Ticket = rt.models.tickets.Ticket User = rt.models.users.User UserTypes = rt.models.users.UserTypes # devs = (UserTypes.developer, UserTypes.senior) devs = [ p for p in UserTypes.items() if p.has_required_roles([Worker]) and not p.has_required_roles([SiteAdmin]) ] workers = User.objects.filter(user_type__in=devs) WORKERS = Cycler(workers) TYPES = Cycler(SessionType.objects.all()) # TICKETS = Cycler(Ticket.objects.all()) DURATIONS = Cycler([12, 138, 90, 10, 122, 209, 37, 62, 179, 233, 5]) # every fourth ticket is unassigned and thus listed in # PublicTickets # for i, t in enumerate(Ticket.objects.exclude(private=True)): for i, t in enumerate(Ticket.objects.all()): if i % 4: t.assigned_to = WORKERS.pop() yield t for u in workers: # VOTES = Cycler(Vote.objects.filter(user=u)) # TICKETS = Cycler(Ticket.objects.filter(assigned_to=u)) TICKETS = Cycler(Ticket.objects.filter()) # if len(VOTES) == 0: # continue for offset in (0, -1, -3, -4): date = dd.demo_date(offset) worked = Duration() ts = datetime.datetime.combine(date, datetime.time(9, 0, 0)) for i in range(7): obj = Session(ticket=TICKETS.pop(), session_type=TYPES.pop(), user=u) obj.set_datetime('start', ts) d = DURATIONS.pop() worked += d if offset < 0: ts = DurationUnits.minutes.add_duration(ts, d) obj.set_datetime('end', ts) yield obj if offset == 0 or worked > 8: break ServiceReport = rt.models.working.ServiceReport welket = Company.objects.get(name="welket") yield ServiceReport(start_date=dd.today(-90), interesting_for=welket)
def objects(): yield rt.login('alicia').get_user() if False: # done in lino_welfare/modlib/integ/fixtures/ TT = Cycler(rt.modules.immersion.ContractType.objects.all()) TG = Cycler(rt.modules.immersion.Goal.objects.all()) Training = rt.modules.immersion.Contract alicia = rt.login('alicia').get_user() selected_clients = (131, 149, 161) for i, pk in enumerate(selected_clients): kw = dict(client_id=pk) kw.update(type=TT.pop()) kw.update(user=alicia) kw.update(goal=TG.pop()) kw.update(applies_from=dd.demo_date(i*30)) kw.update(applies_until=dd.demo_date(i*30+60*(i+1))) yield Training(**kw)
def objects(): Note = rt.modules.notes.Note NTYPES = Cycler(rt.modules.notes.NoteType.objects.all()) USERS = Cycler(rt.modules.users.User.objects.all()) CLIENTS = Cycler(rt.modules.pcsw.Client.objects.all()) yield lib_objects() yield Note(user=USERS.pop(), date=dd.demo_date(days=-20), project=CLIENTS.pop(), subject=_("Do not offer coffee"), important=True, type=NTYPES.pop())
def get_enrolment_info(self): """Return a short text to be displayed between parentheses in `lino_cosi.lib.courses.ui.EnrolmentsByCourse.pupil_info`. """ s = "" if self.member_until is None: pass elif self.member_until >= dd.demo_date(): s = "E" if self.is_ckk: s += "C" if self.is_lfv: s += "L" # if self.is_raviva: # s += "R" if self.section: s += "S" # s += " {0}".format(self.section) if s: return "M{0}".format(s) return "N"
def objects(): # not used. from the time when we still had tickets and courses Line = rt.models.courses.Line Topic = rt.models.courses.Topic Course = rt.models.courses.Course EventType = rt.models.cal.EventType Room = rt.models.cal.Room Company = rt.models.contacts.Company Person = rt.models.contacts.Person Role = rt.models.contacts.Role RoleType = rt.models.contacts.RoleType school = named(Room, _("School")) yield school center = named(Room, _("Youth center")) yield center library = named(Room, _("Library")) yield library training = named(EventType, _("Training")) yield training workshop = named(EventType, _("Workshop")) yield workshop camp = named(EventType, _("Camp")) yield camp nature = named(Topic, _("Nature")) yield nature folk = named(Topic, _("Folk")) yield folk together = named(Topic, _("Acting together")) yield together health = named(Topic, _("Health")) yield health comp = named(Topic, _("Computer")) yield comp yield named(Line, _("Photography workshop"), event_type=workshop, every_unit=Recurrencies.once, topic=together) yield named(Line, _("Teamwork training"), event_type=training, every_unit=Recurrencies.once, topic=together) yield named(Line, _("Folk camp 2017"), event_type=camp, every_unit=Recurrencies.once, topic=together) yield named(Line, _("Lino Vilma training"), event_type=training, every_unit=Recurrencies.weekly, topic=together) LINES = Cycler(Line.objects.all()) for offset in (-60, -10, -5, 1, 10, 30): yield Course(line=LINES.pop(), start_date=dd.demo_date(offset)) choir = Company(name="Village choir") yield choir yield Company(name="Sopranos", parent=choir) yield Company(name="Altos", parent=choir) yield Company(name="Tenors", parent=choir) yield Company(name="Basses", parent=choir) RTYPES = Cycler(RoleType.objects.all()) COMPANIES = Cycler(Company.objects.all()) for i, p in enumerate(Person.objects.all()): for j in range(i % 3): yield Role(company=COMPANIES.pop(), type=RTYPES.pop(), person=p)
def param_defaults(self, ar, **kw): kw = super(ActiveProjects, self).param_defaults(ar, **kw) kw.update(start_date=dd.demo_date()) kw.update(end_date=dd.demo_date()) kw.update(observed_event=ProjectEvents.active) return kw
def objects(): cal = rt.modules.cal add = Instantiator('cal.Priority', 'ref').build yield add('1', **dd.babel_values('name', en=u"very urgent", de=u"sehr dringend", fr=u"très urgent", et=u"väga kiire")) yield add('3', **dd.babel_values('name', en=u"urgent", de=u"dringend", fr=u"urgent", et="kiire")) yield add('5', **dd.babel_values('name', en=u"normal", de=u"normal", fr=u"normal", et="keskmine")) yield add('9', **dd.babel_values('name', en=u"not urgent", de=u"nicht dringend", fr=u"pas urgent", et="mitte kiire")) calendar = Instantiator('cal.Calendar').build general = calendar(**dd.str2kw('name', _("General"))) yield general # settings.SITE.site_config.site_calendar = general settings.SITE.site_config.update( site_calendar=general, hide_events_before=dd.demo_date().replace(month=4, day=1)) # yield settings.SITE.site_config event_type = Instantiator('cal.EventType').build holidays = event_type( is_appointment=False, all_rooms=True, **dd.str2kw('name', _("Holidays"))) yield holidays yield event_type(**dd.str2kw('name', _("Meeting"))) RecurrentEvent = rt.modules.cal.RecurrentEvent add = Instantiator(RecurrentEvent, event_type=holidays).build def holiday(month, day, en, de, fr, et=None): if et is None: et = en return add( every_unit=cal.Recurrencies.yearly, monday=True, tuesday=True, wednesday=True, thursday=True, friday=True, saturday=True, sunday=True, every=1, start_date=datetime.date( year=cal.DEMO_START_YEAR, month=month, day=day), **dd.babelkw('name', en=en, de=de, fr=fr, et=et)) yield holiday(1, 1, "New Year's Day", "Neujahr", "Jour de l'an", "Uusaasta") yield holiday(5, 1, "International Workers' Day", "Tag der Arbeit", "Premier Mai", "kevadpüha") yield holiday(7, 21, "National Day", "Nationalfeiertag", "Fête nationale", "Belgia riigipüha") yield holiday(8, 15, "Assumption of Mary", "Mariä Himmelfahrt", "Assomption de Marie") yield holiday(10, 31, "All Souls' Day", "Allerseelen", "Commémoration des fidèles défunts") yield holiday(11, 1, "All Saints' Day", "Allerheiligen", "Toussaint") yield holiday(11, 11, "Armistice with Germany", "Waffenstillstand", "Armistice") yield holiday(12, 25, "Christmas", "Weihnachten", "Noël", "Esimene Jõulupüha") easter1 = easter(cal.DEMO_START_YEAR) def relative_holiday(offset, name): return add( every_unit=cal.Recurrencies.easter, every=1, start_date=easter1+relativedelta(days=offset), **dd.str2kw('name', name)) yield relative_holiday(0, _("Easter sunday")) yield relative_holiday(1, _("Easter monday")) yield relative_holiday(39, _("Ascension of Jesus")) yield relative_holiday(50, _("Pentecost")) yield relative_holiday(-2, _("Good Friday")) yield relative_holiday(-46, _("Ash Wednesday")) yield relative_holiday(-48, _("Rosenmontag")) ar = settings.SITE.login() for obj in RecurrentEvent.objects.all(): if not obj.update_reminders(ar): raise Exception("Oops, %s generated no events" % obj)
def objects(): Line = rt.models.courses.Line Teacher = dd.plugins.courses.teacher_model Course = rt.models.courses.Course Topic = rt.models.courses.Topic Enrolment = rt.models.courses.Enrolment User = rt.models.users.User EventType = rt.models.cal.EventType Guest = rt.models.cal.Guest GuestRole = rt.models.cal.GuestRole GuestStates = rt.models.cal.GuestStates EntryStates = rt.models.cal.EntryStates Event = rt.models.cal.Event Person = rt.models.contacts.Person CommentType = rt.models.comments.CommentType TrendStage = rt.models.trends.TrendStage TrendArea = rt.models.trends.TrendArea for area, stages in trends_config: ta = named(TrendArea, area) yield ta for stage in stages: yield named(TrendStage, stage, trend_area=ta) yield EventType(**dd.str2kw('name', _("First contact"))) kw = dd.str2kw('name', _("Lesson")) kw.update(dd.str2kw('event_label', _("Lesson"))) event_type = EventType(**kw) yield event_type pupil = named(GuestRole, _("Pupil")) yield pupil yield named(GuestRole, _("Assistant")) topic_citizen = named(Topic, _("Citizen course")) yield topic_citizen topic_lang = named(Topic, _("Language courses")) yield topic_lang kw.update(topic=topic_citizen) kw = dict(event_type=event_type, guest_role=pupil) yield named(Line, _("Citizen course"), **kw) kw.update(topic=topic_lang) alpha = named(Line, _("Alphabetisation"), **kw) yield alpha yield named(Line, _("German for beginners"), **kw) yield named(Line, _("German A1+"), **kw) yield named(Line, _("German A2"), **kw) yield named(Line, _("German A2 (women)"), **kw) yield named(CommentType, _("Phone call")) yield named(CommentType, _("Visit")) yield named(CommentType, _("Individual consultation")) yield named(CommentType, _("Internal meeting")) yield named(CommentType, _("Meeting with partners")) laura = Teacher(first_name="Laura", last_name="Lieblig") yield laura yield User(username="******", user_type=UserTypes.teacher, partner=laura) yield User(username="******", user_type=UserTypes.user) yield User(username="******", user_type=UserTypes.auditor) yield User(username="******", user_type=UserTypes.coordinator) yield User(username="******", user_type=UserTypes.secretary) USERS = Cycler(User.objects.exclude( user_type__in=(UserTypes.auditor, UserTypes.admin))) kw = dict(monday=True, tuesday=True, thursday=True, friday=True) kw.update( line=alpha, start_date=dd.demo_date(-30), start_time="9:00", end_time="12:00", max_date=dd.demo_date(10), every_unit=Recurrencies.daily, user=USERS.pop(), teacher=laura, max_places=5) yield Course(**kw) kw.update(start_time="14:00", end_time="17:00", user=USERS.pop()) yield Course(**kw) PUPILS = Cycler(dd.plugins.courses.pupil_model.objects.all()) # print(20170302, dd.plugins.courses.pupil_model.objects.all()) COURSES = Cycler(Course.objects.all()) STATES = Cycler(EnrolmentStates.objects()) def fits(course, pupil): if course.max_places and course.get_free_places() == 0: return False if Enrolment.objects.filter(course=course, pupil=pupil).count(): return False return True for i in range(10): course = COURSES.pop() pupil = PUPILS.pop() while not fits(course, pupil): course = COURSES.pop() kw = dict(user=USERS.pop(), course=course, pupil=pupil) kw.update(request_date=dd.demo_date(-i)) kw.update(state=STATES.pop()) yield Enrolment(**kw) ar = rt.login('robin') for obj in Course.objects.all(): obj.update_auto_events(ar) # Suggested calendar entries older than 7 days should be marked as # either took_place or cancelled. qs = Event.objects.filter( start_date__lte=dd.demo_date(-7), state=EntryStates.suggested) for i, obj in enumerate(qs): if i % 9: obj.state = EntryStates.took_place else: obj.state = EntryStates.cancelled obj.full_clean() obj.save() # participants of events which took place should be marked as # either absent or present or excused: qs = Guest.objects.filter( event__start_date__lte=dd.demo_date(-7), event__state=EntryStates.took_place) for i, obj in enumerate(qs): if i % 9: obj.state = GuestStates.present elif i % 3: obj.state = GuestStates.absent else: obj.state = GuestStates.excused obj.full_clean() obj.save()
def objects(): UserTypes = rt.actors.users.UserTypes yield user("alex", UserTypes.user) yield user("berta", UserTypes.user) yield user("christa", UserTypes.user) yield user("dora", UserTypes.user) yield user("eric", UserTypes.connector) yield S(_("At home")) # "Bei mir zu Hause" yield S("AZ Ephata") yield S("Eupen") TopicGroup = rt.modules.topics.TopicGroup lng = TopicGroup(**str2kw('name', _("Languages"))) yield lng fr = Topic(_("French"), topic_group=lng) yield fr de = Topic(_("German"), topic_group=lng) yield de yield Topic(_("English"), topic_group=lng) # music = TopicGroup(**str2kw('name', _("Music"))) # yield music # piano = Topic(_("Piano"), topic_group=music) # yield piano # guitar = Topic(_("Guitar"), topic_group=music) # yield guitar edu = faculty("Unterricht", "Cours", "Teaching") yield edu yield faculty( "Französischunterricht", "Cours de francais", "French lessons", parent=edu) yield faculty("Deutschunterricht", "Cours d'allemand", "German lessons", parent=edu) math = faculty( "Matheunterricht", "Cours de maths", "Maths lessons", parent=edu) yield math music = faculty("Musik", "Musique", "Music") yield music guitar = faculty( "Gitarrenunterricht", "Cours de guitare", "Guitar lessons", parent=music) yield guitar piano = faculty( "Klavierunterricht", "Cours de piano", "Piano lessons", parent=music) yield piano home = faculty( "Haus und Garten", "Maison et jardin", "Home & Garden") yield home yield faculty( "Kleider reparieren", "Réparer des vètements", "Repairing clothes", parent=home) garden = faculty( "Gartenarbeiten", "Travaux de jardin", "Garden works", parent=home) yield garden repair = faculty( "Reparaturarbeiten", "Travaux de réparation", "Repair works", parent=home) yield repair renovate = faculty( "Renovierung", "Rénovation", "Renovation", parent=home) yield renovate yield faculty("Fahrdienst", "Voiture", "Car driving") commissions = faculty("Botengänge", "Commissions", "Shopping") yield commissions yield faculty("Friseur", "Coiffure", "Hair cutting") yield faculty("Babysitting", "Garde enfant", "Babysitting") yield faculty("Gesellschafter für Senioren", "Rencontres personnes agées", "Mentoring elderly people") yield faculty( "Hunde spazierenführen", "Chiens", "Go out with dogs") traduire = faculty( "Übersetzungsarbeiten", "Traductions", "Translations", topic_group=lng) yield traduire yield faculty("Briefe schreiben", "Écrire des lettres", "Write letters") yield ticket( "berta", "Mein Wasserhahn tropft, wer kann mir helfen?", "My faucet is dripping, who can help?", faculty=repair) yield ticket( "christa", "Mein Rasen muss gemäht werden. Donnerstags oder Samstags", "My lawn needs mowing. On Thursday or Saturday." "") yield ticket( "dora", "Wer kann meinem Sohn Klavierunterricht geben?", "Who can give piano lessons to my son?", faculty=piano) yield ticket( "alex", "Wer kann meiner Tochter Gitarreunterricht geben?", "Who can give guitar lessons to my daughter?", faculty=guitar) yield ticket( "alex", "Wer macht Musik auf meinem Geburtstag?", "Who would play music on my birthday party?", deadline=dd.demo_date(-20), faculty=music) yield ticket( "berta", "Wer hilft meinem Sohn sich auf die Mathearbeit am " "21.05. vorzubereiten? 5. Schuljahr PDS.", "Who helps my sont to prepare for a maths test on May 21?" " (5. grade PDS)", deadline=dd.demo_date().replace(month=5, day=21), faculty=math) yield ticket( "dora", "Wer kann meine Abschlussarbeit korrekturlesen?", "Who can review my final work?", deadline=dd.demo_date().replace(month=3, day=12), description="Für 5. Jahr RSI zum Thema \"Das " "Liebesleben der Kängurus\" " "Muss am 12.03. eingereicht werden.") yield ticket( "alex", "Wer fährt für mich nach Aachen Windeln kaufen?", "Who would buy diapers for me in Aachen?", description="Ich darf selber nicht über die Grenze.", faculty=commissions) yield competence('alex', traduire, topic=fr) yield competence('berta', traduire, topic=fr) yield competence('berta', traduire, topic=de) yield competence('alex', garden) yield competence('alex', repair) yield competence('christa', piano) yield competence('eric', guitar)
def objects(): cal = rt.models.cal PlannerColumns = cal.PlannerColumns # add = Instantiator('cal.Priority', 'ref').build # yield add('1', **dd.babel_values('name', en=u"very urgent", de=u"sehr dringend", fr=u"très urgent", et=u"väga kiire")) # yield add('3', **dd.babel_values('name', en=u"urgent", de=u"dringend", fr=u"urgent", et="kiire")) # yield add('5', **dd.babel_values('name', en=u"normal", de=u"normal", fr=u"normal", et="keskmine")) # yield add('9', **dd.babel_values('name', en=u"not urgent", de=u"nicht dringend", fr=u"pas urgent", et="mitte kiire")) calendar = Instantiator('cal.Calendar').build general = calendar(**dd.str2kw('name', _("General"))) yield general # settings.SITE.site_config.site_calendar = general d = dd.demo_date() if d.month > 4: d = d.replace(month=1, day=1) else: d = d.replace(month=1, day=1, year=d.year-1) settings.SITE.site_config.update( site_calendar=general, hide_events_before=d) # yield settings.SITE.site_config event_type = Instantiator('cal.EventType').build yield event_type( planner_column=PlannerColumns.external, is_appointment=True, fill_presences=True, max_days=0, **dd.str2kw('name', _("Absences"))) holidays = event_type( planner_column=PlannerColumns.external, is_appointment=False, fill_presences=False, max_days=0, all_rooms=True, **dd.str2kw('name', _("Holidays"))) yield holidays meeting = event_type( is_appointment=True, fill_presences=True, planner_column=PlannerColumns.external, default_duration="1:00", **dd.str2kw('name', _("Meeting"))) yield meeting yield event_type( planner_column=PlannerColumns.internal, is_appointment=False, fill_presences=True, transparent=True, default_duration="0:30", **dd.str2kw('name', _("Internal"))) RecurrentEvent = rt.models.cal.RecurrentEvent add = Instantiator(RecurrentEvent, event_type=holidays).build def holiday(month, day, en, de, fr, et=None): if et is None: et = en return add( every_unit=Recurrencies.yearly, monday=True, tuesday=True, wednesday=True, thursday=True, friday=True, saturday=True, sunday=True, every=1, start_date=datetime.date( year=cal.DEMO_START_YEAR, month=month, day=day), **dd.babelkw('name', en=en, de=de, fr=fr, et=et)) yield holiday(1, 1, "New Year's Day", "Neujahr", "Jour de l'an", "Uusaasta") yield holiday(5, 1, "International Workers' Day", "Tag der Arbeit", "Premier Mai", "kevadpüha") yield holiday(7, 21, "National Day", "Nationalfeiertag", "Fête nationale", "Belgia riigipüha") yield holiday(8, 15, "Assumption of Mary", "Mariä Himmelfahrt", "Assomption de Marie") yield holiday(10, 31, "All Souls' Day", "Allerseelen", "Commémoration des fidèles défunts") yield holiday(11, 1, "All Saints' Day", "Allerheiligen", "Toussaint") yield holiday(11, 11, "Armistice with Germany", "Waffenstillstand", "Armistice") yield holiday(12, 25, "Christmas", "Weihnachten", "Noël", "Esimene Jõulupüha") easter1 = easter(cal.DEMO_START_YEAR) def relative_holiday(offset, name): return add( every_unit=Recurrencies.easter, every=1, start_date=easter1+relativedelta(days=offset), **dd.str2kw('name', name)) yield relative_holiday(0, _("Easter sunday")) yield relative_holiday(1, _("Easter monday")) yield relative_holiday(39, _("Ascension of Jesus")) yield relative_holiday(50, _("Pentecost")) yield relative_holiday(-2, _("Good Friday")) yield relative_holiday(-46, _("Ash Wednesday")) yield relative_holiday(-48, _("Rosenmontag")) ar = settings.SITE.login() for obj in RecurrentEvent.objects.all(): if not obj.update_reminders(ar): raise Exception("Oops, %s generated no events" % obj) # event policies kw = dict() for wd in WORKDAYS: kw[wd.name] = True kw.update(event_type=meeting) exam_policy = Instantiator( 'cal.EventPolicy', 'every', every_unit=DurationUnits.months, **kw).build yield exam_policy( 1, start_time="9:00", **dd.str2kw('name', _("Every month"))) yield exam_policy( 2, start_time="9:00", **dd.str2kw('name', _("Every 2 months"))) yield exam_policy( 3, **dd.str2kw('name', _("Every 3 months"))) exam_policy = Instantiator( 'cal.EventPolicy', 'every', every_unit=DurationUnits.weeks, **kw).build yield exam_policy( 2, start_time="9:00", **dd.str2kw('name', _("Every 2 weeks"))) exam_policy = Instantiator( 'cal.EventPolicy', 'every', every_unit=DurationUnits.days, **kw).build yield exam_policy( 10, max_events=1, start_time="9:00", **dd.str2kw('name', _("Once after 10 days"))) exam_policy = Instantiator('cal.EventPolicy').build yield exam_policy(**dd.str2kw('name', _("Other")))
def objects(): Upload = rt.modules.uploads.Upload UploadType = rt.modules.uploads.UploadType Client = rt.modules.pcsw.Client ClientStates = rt.modules.pcsw.ClientStates # create some random uploads, all uploaded by hubert hubert = rt.login('hubert') CLIENTS = Cycler(rt.modules.pcsw.CoachedClients.request(user=hubert)) UPLOAD_TYPES = Cycler(UploadType.objects.all()) if len(CLIENTS) == 0: raise Exception("There are no clients?!") for i in range(3): cli = CLIENTS.pop() for j in range(2): obj = Upload( project=cli, owner=cli, # user=hubert, end_date=settings.SITE.demo_date(360+i*10), type=UPLOAD_TYPES.pop()) obj.on_create(hubert) # sets `user` and `needed` yield obj # some upload stories newcomer = Client.objects.get(id=121) coached = Client.objects.get(id=124) # assert newcomer.client_state == ClientStates.newcomer # assert coached.client_state == ClientStates.coached # true only for eupen, not for chatelet id_card = UploadType.objects.get(shortcut=Shortcuts.id_document) residence_permit = UploadType.objects.get(id=UPLOADTYPE_RESIDENCE_PERMIT) work_permit = UploadType.objects.get(id=UPLOADTYPE_WORK_PERMIT) driving_license = UploadType.objects.get(id=UPLOADTYPE_DRIVING_LICENSE) # a reception clerk: clerk = rt.login('theresia').get_user() # a general social agent: agent = rt.login('caroline').get_user() # an integration agent: ai = rt.login('alicia').get_user() # this newcomer has 2 id cards. one of these is no longer valid # (and we know it: `needed` has been unchecked). The other is # still valid but will expire in 3 days. kw = dict(owner=newcomer, type=id_card) yield Upload(end_date=dd.demo_date(-30), needed=False, user=clerk, **kw) yield Upload(end_date=dd.demo_date(3), user=clerk, **kw) # this coached client has three documents uploaded: kw = dict(owner=coached) yield Upload(type=residence_permit, end_date=dd.demo_date(300), user=clerk, **kw) yield Upload(type=work_permit, end_date=dd.demo_date(100), user=ai, **kw) yield Upload(type=driving_license, end_date=dd.demo_date(10), user=agent, **kw)
def objects(): CourseAreas = rt.models.courses.CourseAreas Line = rt.models.courses.Line Course = rt.models.courses.Course EventType = rt.modules.cal.EventType Pupil = rt.modules.pcsw.Client Enrolment = rt.models.courses.Enrolment EnrolmentStates = rt.models.courses.EnrolmentStates ses = settings.SITE.login('hubert') kw = dd.str2kw('name', _("Workshop")) event_type = EventType(**kw) yield event_type def line(course_area, name, **kw): kw.update(course_area=course_area) kw.update(event_type=event_type) kw.update(dd.str2kw('name', name)) return Line(**kw) # Introduction aux techniques de cuisine élémentaires kw = dd.str2kw( 'description', _("Introduction to basic kitchen technologies.")) kw.update(body_template="enrolment.body.html") kw.update(dd.str2kw( 'excerpt_title', _("Request for enrolment"))) role = rt.models.cal.GuestRole.objects.get(pk=2) # **dd.str2kw('name', _("Visitor"))) kw.update(guest_role=role) obj = line(CourseAreas.default, _("Kitchen"), **kw) yield obj kitchen_course = Course( line=obj, start_date=dd.demo_date(-10), monday=True, start_time="8:00", end_time="12:00", user=ses.get_user(), max_events=5) yield kitchen_course kw.update(dd.str2kw('description', "")) obj = line(CourseAreas.default, _("Creativity"), **kw) yield obj yield Course(line=obj, start_date=dd.demo_date(-10)) obj = line(CourseAreas.default, _("Our first baby"), **kw) yield obj yield Course(line=obj, start_date=dd.demo_date(-10)) obj = line(CourseAreas.default, _("Mathematics")) yield obj yield Course(line=obj, start_date=dd.demo_date(-10)) obj = line(CourseAreas.default, _("French")) yield obj yield Course(line=obj, start_date=dd.demo_date(-10)) obj = line(CourseAreas.job, _("Get active!")) yield obj yield Course(line=obj, start_date=dd.demo_date(-10), max_places=3) kw = dict() kw.update(dd.str2kw('excerpt_title', _("Request for intervention"))) kw.update(body_template="intervention.body.html") obj = line(CourseAreas.job, _("Psycho-social intervention"), **kw) yield obj yield Course(line=obj, start_date=dd.demo_date(-200), max_places=1) PUPILS = Cycler(Pupil.objects.all()) #~ print 20130712, Pupil.objects.all() COURSES = Cycler(Course.objects.all()) STATES = Cycler(EnrolmentStates.objects()) USERS = Cycler(settings.SITE.user_model.objects.all()) def fits(course, pupil): if course.max_places and course.get_free_places() == 0: return False if Enrolment.objects.filter(course=course, pupil=pupil).count(): return False return True for i in range(100): course = COURSES.pop() pupil = PUPILS.pop() while not fits(course, pupil): course = COURSES.pop() kw = dict(user=USERS.pop(), course=course, pupil=pupil) kw.update(request_date=dd.demo_date(-i)) kw.update(state=STATES.pop()) yield Enrolment(**kw) # this will generate 5 events, and for each event one # guest. res = ses.run(kitchen_course.do_update_events) if not res['success']: raise Exception("oops") expected = """\ Générer les évènements for Cuisine (12/05/2014)... Generating events between 2014-05-12 and 2019-05-22 (max. 5). Générer les participants for Évènement #474 1 (12.05.2014 08:00)... 7 row(s) have been updated. Générer les participants for Évènement #475 2 (19.05.2014 08:00)... 7 row(s) have been updated. Générer les participants for Évènement #476 3 (26.05.2014 08:00)... 7 row(s) have been updated. Générer les participants for Évènement #477 4 (02.06.2014 08:00)... 7 row(s) have been updated. Générer les participants for Évènement #478 5 (16.06.2014 08:00)... 7 row(s) have been updated. 5 row(s) have been updated.""" if res['info_message'] != expected: msg = "Expected:\n{0}\nGOT:\n{1}".format( expected, res['info_message']) print(msg) raise Exception(msg)
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
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 objects(): # not used. from the time when we still had tickets and courses Line = rt.models.courses.Line Topic = rt.models.courses.Topic Course = rt.models.courses.Course EventType = rt.models.cal.EventType Room = rt.models.cal.Room Company = rt.models.contacts.Company Person = rt.models.contacts.Person Role = rt.models.contacts.Role RoleType = rt.models.contacts.RoleType school = named(Room, _("School")) yield school center = named(Room, _("Youth center")) yield center library = named(Room, _("Library")) yield library training = named(EventType, _("Training")) yield training workshop = named(EventType, _("Workshop")) yield workshop camp = named(EventType, _("Camp")) yield camp nature = named(Topic, _("Nature")) yield nature folk = named(Topic, _("Folk")) yield folk together = named(Topic, _("Acting together")) yield together health = named(Topic, _("Health")) yield health comp = named(Topic, _("Computer")) yield comp yield named( Line, _("Photography workshop"), event_type=workshop, every_unit=Recurrencies.once, topic=together) yield named( Line, _("Teamwork training"), event_type=training, every_unit=Recurrencies.once, topic=together) yield named( Line, _("Folk camp 2017"), event_type=camp, every_unit=Recurrencies.once, topic=together) yield named( Line, _("Lino Vilma training"), event_type=training, every_unit=Recurrencies.weekly, topic=together) LINES = Cycler(Line.objects.all()) for offset in (-60, -10, -5, 1, 10, 30): yield Course(line=LINES.pop(), start_date=dd.demo_date(offset)) choir = Company(name="Village choir") yield choir yield Company(name="Sopranos", parent=choir) yield Company(name="Altos", parent=choir) yield Company(name="Tenors", parent=choir) yield Company(name="Basses", parent=choir) RTYPES = Cycler(RoleType.objects.all()) COMPANIES = Cycler(Company.objects.all()) for i, p in enumerate(Person.objects.all()): for j in range(i % 3): yield Role(company=COMPANIES.pop(), type=RTYPES.pop(), person=p)
def pop_state(date): if date <= dd.demo_date(): return PAST_STATES.pop() else: return FUTURE_STATES.pop()
def objects(): Line = rt.models.courses.Line Teacher = dd.plugins.courses.teacher_model Course = rt.models.courses.Course Topic = rt.models.courses.Topic Enrolment = rt.models.courses.Enrolment CourseStates = rt.models.courses.CourseStates User = rt.models.users.User EventType = rt.models.cal.EventType Guest = rt.models.cal.Guest GuestRole = rt.models.cal.GuestRole GuestStates = rt.models.cal.GuestStates EntryStates = rt.models.cal.EntryStates Event = rt.models.cal.Event Person = rt.models.contacts.Person CommentType = rt.models.comments.CommentType TrendStage = rt.models.trends.TrendStage TrendArea = rt.models.trends.TrendArea for area, stages in trends_config: ta = named(TrendArea, area) yield ta for stage in stages: kw = dict(trend_area=ta) if stage[0] == "!": stage = stage[1:] kw.update(subject_column=True) yield named(TrendStage, stage, **kw) yield EventType(**dd.str2kw('name', _("First contact"))) kw = dd.str2kw('name', _("Lesson")) kw.update(dd.str2kw('event_label', _("Lesson"))) event_type = EventType(**kw) yield event_type pupil = named(GuestRole, _("Pupil")) yield pupil yield named(GuestRole, _("Assistant")) topic_citizen = named(Topic, _("Citizen course")) yield topic_citizen topic_lang = named(Topic, _("Language courses")) yield topic_lang kw.update(topic=topic_citizen) kw = dict(event_type=event_type, guest_role=pupil) yield named(Line, _("Citizen course"), **kw) kw.update(topic=topic_lang) alpha = named(Line, _("Alphabetisation"), **kw) yield alpha yield named(Line, _("German for beginners"), **kw) yield named(Line, _("German A1+"), **kw) yield named(Line, _("German A2"), **kw) yield named(Line, _("German A2 (women)"), **kw) yield named(CommentType, _("Phone call")) yield named(CommentType, _("Visit")) yield named(CommentType, _("Individual consultation")) yield named(CommentType, _("Internal meeting")) yield named(CommentType, _("Meeting with partners")) laura = Teacher(first_name="Laura", last_name="Lieblig") yield laura yield User(username="******", user_type=UserTypes.teacher, partner=laura) yield User(username="******", user_type=UserTypes.user) yield User(username="******", user_type=UserTypes.user) yield User(username="******", user_type=UserTypes.auditor) yield User(username="******", user_type=UserTypes.coordinator) yield User(username="******", user_type=UserTypes.secretary) USERS = Cycler( User.objects.exclude(user_type__in=(UserTypes.auditor, UserTypes.admin))) kw = dict(monday=True, tuesday=True, thursday=True, friday=True) kw.update(line=alpha, start_date=dd.demo_date(-30), start_time="9:00", end_time="12:00", max_date=dd.demo_date(10), state=CourseStates.active, every_unit=Recurrencies.daily, user=USERS.pop(), teacher=laura, max_places=5) yield Course(**kw) kw.update(start_time="14:00", end_time="17:00", user=USERS.pop(), max_places=15) yield Course(**kw) kw.update(start_time="18:00", end_time="20:00", user=USERS.pop(), max_places=15) yield Course(**kw) PUPILS = Cycler(dd.plugins.courses.pupil_model.objects.all()) # print(20170302, dd.plugins.courses.pupil_model.objects.all()) COURSES = Cycler(Course.objects.all()) STATES = Cycler(EnrolmentStates.objects()) def fits(course, pupil): if course.max_places and course.get_free_places() == 0: return False if Enrolment.objects.filter(course=course, pupil=pupil).count(): return False return True def enrol(pupil): course = COURSES.pop() if fits(course, pupil): kw = dict(user=USERS.pop(), course=course, pupil=pupil) kw.update(request_date=dd.demo_date(-i)) kw.update(state=STATES.pop()) return Enrolment(**kw) for i, p in enumerate( dd.plugins.courses.pupil_model.objects.order_by('id')): yield enrol(p) if i % 2 == 0: yield enrol(p) if i % 3 == 0: yield enrol(p) ar = rt.login('robin') for obj in Course.objects.all(): obj.update_auto_events(ar) # Suggested calendar entries older than 7 days should be marked as # either took_place or cancelled. qs = Event.objects.filter(start_date__lte=dd.demo_date(-7), state=EntryStates.suggested) for i, obj in enumerate(qs): if i % 9: obj.state = EntryStates.took_place else: obj.state = EntryStates.cancelled obj.full_clean() obj.save() # participants of events which took place should be marked as # either absent or present or excused: qs = Guest.objects.filter( event__start_date__lte=dd.demo_date(-7), event__state=EntryStates.took_place).order_by('id') STATES = Cycler(GuestStates.get_list_items()) for i, obj in enumerate(qs): obj.state = STATES.pop() # if i % 8: # obj.state = GuestStates.present # elif i % 3: # obj.state = GuestStates.missing # else: # obj.state = GuestStates.excused obj.full_clean() obj.save()
def objects(): Granting = rt.modules.aids.Granting AidType = rt.modules.aids.AidType Person = rt.modules.contacts.Person Client = rt.modules.pcsw.Client ClientStates = rt.modules.pcsw.ClientStates ClientContactType = rt.modules.pcsw.ClientContactType Board = rt.modules.boards.Board ExcerptType = rt.modules.excerpts.ExcerptType ConfirmationStates = rt.modules.aids.ConfirmationStates Project = resolve_model('pcsw.Client') qs = Project.objects.filter(client_state=ClientStates.coached) # if qs.count() > 10: # qs = qs[:10] PROJECTS = Cycler(qs) l = [] qs = ClientContactType.objects.filter(can_refund=True) for cct in qs: qs2 = Person.objects.filter(client_contact_type=cct) if qs2.count(): i = (cct, Cycler(qs2)) l.append(i) PARTNERS = Cycler(l) BOARDS = Cycler(Board.objects.all()) CONFIRMSTATES = Cycler(ConfirmationStates.objects()) DURATIONS = Cycler(None, 1, 1, 30, 0, None, 365) fkw = dd.str2kw('name', _("Pharmacy")) # Apotheke pharmacy_type = rt.modules.pcsw.ClientContactType.objects.get(**fkw) PHARMACIES = Cycler(rt.modules.contacts.Company.objects.filter( client_contact_type=pharmacy_type)) for i, at in enumerate(AidType.objects.all()): for j in range(2): sd = dd.demo_date(days=i) kw = dict(start_date=sd, board=BOARDS.pop(), decision_date=dd.demo_date(days=i-1), aid_type=at) kw.update(client=PROJECTS.pop()) duration = DURATIONS.pop() if duration is not None: kw.update(end_date=sd+datetime.timedelta(days=duration)) g = Granting(**kw) # g.after_ui_create(None) g.full_clean() if g.signer is not None: g.state = CONFIRMSTATES.pop() yield g # ConfirmationTypes = rt.modules.aids.ConfirmationTypes RefundConfirmation = rt.modules.aids.RefundConfirmation IncomeConfirmation = rt.modules.aids.IncomeConfirmation ClientContact = rt.modules.pcsw.ClientContact COACHES = Cycler(rt.modules.users.User.objects.filter( coaching_type__isnull=False)) AMOUNTS = Cycler(123, 234, 345, 456, 678) CATEGORIES = Cycler(rt.modules.aids.Category.objects.all()) # create 1 or 2 confirmations per granting urgent_aid_generated = 0 for i, g in enumerate(Granting.objects.filter(aid_type__isnull=False)): ct = g.aid_type.confirmation_type num = i % 2 + 1 if ct.model is RefundConfirmation: num = 3 # always create 3 confirmations per refund granting if g.aid_type.pharmacy_type == pharmacy_type: pharmacy = PHARMACIES.pop() yield ClientContact( type=pharmacy_type, company=pharmacy, client=g.client) for j in range(num): kw = dict(granting=g, client=g.client) kw.update(user=COACHES.pop()) kw.update(start_date=g.start_date) kw.update(end_date=g.end_date) if g.signer is not None: kw.update(state=CONFIRMSTATES.pop()) kw.update(signer=g.signer) if ct.model is IncomeConfirmation: kw.update(category=CATEGORIES.pop()) kw.update(amount=AMOUNTS.pop()) if ct.model is RefundConfirmation: doctor_type, doctor_cycler = PARTNERS.pop() doctor = doctor_cycler.pop() kw.update(doctor_type=doctor_type) kw.update(doctor=doctor) yield ClientContact( type=doctor_type, contact_person=doctor, client=g.client) # only the first confirmation has a pharmacy if g.aid_type.pharmacy_type == pharmacy_type and j == 0: kw.update(pharmacy=pharmacy) yield ct.model(**kw) # for two refund grantings, create the corresponding # additional granting of urgent medical help if ct.model is RefundConfirmation and urgent_aid_generated < 2: kw = dict() kw.update(client=g.client) kw.update(start_date=g.start_date) kw.update(end_date=g.end_date) kw.update(aid_type=AidType.objects.get(short_name="DMH")) yield Granting(**kw) urgent_aid_generated += 1 if False: # no need to print them all. # lino_welfare.modlib.welfare.fixtures.demo2 is enough. ses = rt.login('theresia') for at in rt.modules.aids.AidType.objects.exclude( confirmation_type=''): M = at.confirmation_type.model et = ExcerptType.get_for_model(M) qs = M.objects.filter(granting__aid_type=at) for obj in qs: ses.selected_rows = [obj] yield et.get_or_create_excerpt(ses) def person2client(f, l): obj = Person.objects.get(first_name=f, last_name=l) mti.insert_child(obj, Client) person2client("Paul", "Frisch") person2client("Bruno", "Braun") # create a clothing_refund granting and excerpt for Paul Frisch: ses = rt.login("alicia") obj = Client.objects.get(name="Frisch Paul") at = AidType.objects.get( body_template='clothing_bank.body.html') g = Granting(aid_type=at, client=obj) g.full_clean() yield g M = at.confirmation_type.model conf = M(client=obj, granting=g) conf.full_clean() conf.on_create(ses) yield conf et = ExcerptType.get_for_model(M) ses.selected_rows = [conf] yield et.get_or_create_excerpt(ses)
def objects(): cal = rt.models.cal PlannerColumns = cal.PlannerColumns # add = Instantiator('cal.Priority', 'ref').build # yield add('1', **dd.babel_values('name', en=u"very urgent", de=u"sehr dringend", fr=u"très urgent", et=u"väga kiire")) # yield add('3', **dd.babel_values('name', en=u"urgent", de=u"dringend", fr=u"urgent", et="kiire")) # yield add('5', **dd.babel_values('name', en=u"normal", de=u"normal", fr=u"normal", et="keskmine")) # yield add('9', **dd.babel_values('name', en=u"not urgent", de=u"nicht dringend", fr=u"pas urgent", et="mitte kiire")) calendar = Instantiator('cal.Calendar').build general = calendar(**dd.str2kw('name', _("General"))) yield general # settings.SITE.site_config.site_calendar = general d = dd.demo_date() if d.month > 4: d = d.replace(month=1, day=1) else: d = d.replace(month=1, day=1, year=d.year-1) settings.SITE.site_config.update( site_calendar=general, hide_events_before=d) # yield settings.SITE.site_config event_type = Instantiator('cal.EventType').build holidays = event_type( planner_column=PlannerColumns.external, is_appointment=False, all_rooms=True, **dd.str2kw('name', _("Holidays"))) yield holidays meeting = event_type( planner_column=PlannerColumns.external, default_duration="1:00", **dd.str2kw('name', _("Meeting"))) yield meeting yield event_type( planner_column=PlannerColumns.internal, transparent=True, default_duration="0:30", **dd.str2kw('name', _("Internal"))) RecurrentEvent = rt.models.cal.RecurrentEvent add = Instantiator(RecurrentEvent, event_type=holidays).build def holiday(month, day, en, de, fr, et=None): if et is None: et = en return add( every_unit=Recurrencies.yearly, monday=True, tuesday=True, wednesday=True, thursday=True, friday=True, saturday=True, sunday=True, every=1, start_date=datetime.date( year=cal.DEMO_START_YEAR, month=month, day=day), **dd.babelkw('name', en=en, de=de, fr=fr, et=et)) yield holiday(1, 1, "New Year's Day", "Neujahr", "Jour de l'an", "Uusaasta") yield holiday(5, 1, "International Workers' Day", "Tag der Arbeit", "Premier Mai", "kevadpüha") yield holiday(7, 21, "National Day", "Nationalfeiertag", "Fête nationale", "Belgia riigipüha") yield holiday(8, 15, "Assumption of Mary", "Mariä Himmelfahrt", "Assomption de Marie") yield holiday(10, 31, "All Souls' Day", "Allerseelen", "Commémoration des fidèles défunts") yield holiday(11, 1, "All Saints' Day", "Allerheiligen", "Toussaint") yield holiday(11, 11, "Armistice with Germany", "Waffenstillstand", "Armistice") yield holiday(12, 25, "Christmas", "Weihnachten", "Noël", "Esimene Jõulupüha") easter1 = easter(cal.DEMO_START_YEAR) def relative_holiday(offset, name): return add( every_unit=Recurrencies.easter, every=1, start_date=easter1+relativedelta(days=offset), **dd.str2kw('name', name)) yield relative_holiday(0, _("Easter sunday")) yield relative_holiday(1, _("Easter monday")) yield relative_holiday(39, _("Ascension of Jesus")) yield relative_holiday(50, _("Pentecost")) yield relative_holiday(-2, _("Good Friday")) yield relative_holiday(-46, _("Ash Wednesday")) yield relative_holiday(-48, _("Rosenmontag")) ar = settings.SITE.login() for obj in RecurrentEvent.objects.all(): if not obj.update_reminders(ar): raise Exception("Oops, %s generated no events" % obj) # event policies kw = dict() for wd in WORKDAYS: kw[wd.name] = True kw.update(event_type=meeting) exam_policy = Instantiator( 'cal.EventPolicy', 'every', every_unit=DurationUnits.months, **kw).build yield exam_policy( 1, start_time="9:00", **dd.str2kw('name', _("Every month"))) yield exam_policy( 2, start_time="9:00", **dd.str2kw('name', _("Every 2 months"))) yield exam_policy( 3, **dd.str2kw('name', _("Every 3 months"))) exam_policy = Instantiator( 'cal.EventPolicy', 'every', every_unit=DurationUnits.weeks, **kw).build yield exam_policy( 2, start_time="9:00", **dd.str2kw('name', _("Every 2 weeks"))) exam_policy = Instantiator( 'cal.EventPolicy', 'every', every_unit=DurationUnits.days, **kw).build yield exam_policy( 10, max_events=1, start_time="9:00", **dd.str2kw('name', _("Once after 10 days"))) exam_policy = Instantiator('cal.EventPolicy').build yield exam_policy(**dd.str2kw('name', _("Other"))) DPR = rt.models.cal.DailyPlannerRow yield DPR(end_time="12:00", **dd.str2kw('designation', _("AM"))) yield DPR(start_time="12:00", **dd.str2kw('designation', _("PM"))) yield DPR(**dd.str2kw('designation', _("All day")))
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