示例#1
0
文件: demo.py 项目: khchine5/book
def skills_objects():
    "was previously in skills.fixtures.demo2"

    Skill = rt.models.skills.Skill
    Competence = rt.models.skills.Competence
    Demand = rt.models.skills.Demand
    # Ticket = rt.models.tickets.Ticket
    User = rt.models.users.User

    yield named(Skill, _('Psychotherapy'))
    yield named(Skill, _('Psychiatry'))

    SKILLS = Cycler(Skill.objects.all())
    END_USERS = Cycler(dd.plugins.skills.end_user_model.objects.all())

    i = 0
    for j in range(2):
        for u in User.objects.all():
            i += 1
            yield Competence(user=u, faculty=SKILLS.pop())
            if i % 2:
                yield Competence(user=u, faculty=SKILLS.pop())
            if i % 3:
                yield Competence(
                    user=u, faculty=SKILLS.pop(),
                    end_user=END_USERS.pop())
            
    for i, t in enumerate(
            dd.plugins.skills.demander_model.objects.all()):
        yield Demand(demander=t, skill=SKILLS.pop())
        if i % 3:
            yield Demand(demander=t, skill=SKILLS.pop())
示例#2
0
文件: demo.py 项目: forexblog/book
def skills_objects():
    "was previously in skills.fixtures.demo2"

    Skill = rt.models.skills.Skill
    Competence = rt.models.skills.Competence
    Demand = rt.models.skills.Demand
    # Ticket = rt.models.tickets.Ticket
    User = rt.models.users.User

    yield named(Skill, _('Psychotherapy'))
    yield named(Skill, _('Psychiatry'))

    SKILLS = Cycler(Skill.objects.all())
    END_USERS = Cycler(dd.plugins.skills.end_user_model.objects.all())

    i = 0
    for j in range(2):
        for u in User.objects.all():
            i += 1
            yield Competence(user=u, faculty=SKILLS.pop())
            if i % 2:
                yield Competence(user=u, faculty=SKILLS.pop())
            if i % 3:
                yield Competence(
                    user=u, faculty=SKILLS.pop(),
                    end_user=END_USERS.pop())

    for i, t in enumerate(
            dd.plugins.skills.demander_model.objects.all()):
        yield Demand(demander=t, skill=SKILLS.pop())
        if i % 3:
            yield Demand(demander=t, skill=SKILLS.pop())
示例#3
0
def objects():
    Topic = rt.models.topics.Topic
    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, _("Travel"))
    yield workshop
    camp = named(EventType, _("Camp"))
    yield camp

    nature = named(Topic, _("Nature"))
    yield nature
    folk = named(Topic, _("Folk"))
    yield folk
    health = named(Topic, _("Health"))
    yield health
    comp = named(Topic, _("Computer"))
    yield comp
示例#4
0
文件: demo.py 项目: khchine5/book
def objects():
    UserTypes = rt.models.users.UserTypes
    Company = rt.models.contacts.Company
    Product = rt.models.products.Product
    Account = rt.models.accounts.Account
    AccountTypes = rt.models.accounts.AccountTypes
    CommonAccounts = rt.models.accounts.CommonAccounts

    yield create_user("daniel", UserTypes.therapist)
    yield create_user("elmar", UserTypes.therapist)
    yield create_user("lydia", UserTypes.secretary)

    # yield skills_objects()

    obj = Company(
        name="Tough Thorough Thought Therapies",
        country_id="BE", vat_id="BE12 3456 7890")
    yield obj
    settings.SITE.site_config.update(site_company=obj)

    yield named(Product, _("Group therapy"), sales_price=30)
    indacc = named(
        Account, _("Sales on individual therapies"),
        group=CommonAccounts.sales.get_object().group,
        type=AccountTypes.incomes, ref="7010")
    yield indacc
    yield named(
        Product, _("Individual therapy"),
        sales_price=60, sales_account=indacc)
    yield named(Product, _("Other"), sales_price=35)
示例#5
0
文件: demo.py 项目: forexblog/xl
def objects():
    Group = rt.models.groups.Group
    User = rt.models.users.User
    UserTypes = rt.models.users.UserTypes

    yield named(Group, _("Hitchhiker's Guide to the Galaxy"))
    yield named(Group, _("Star Trek"))
    yield named(Group, _("Harry Potter"))

    yield User(username="******", user_type=UserTypes.user, first_name="Andy")
    yield User(username="******", user_type=UserTypes.user, first_name="Bert")
    yield User(username="******", user_type=UserTypes.user, first_name="Chloe")
示例#6
0
文件: demo.py 项目: lino-framework/xl
def objects():
    Group = rt.models.groups.Group
    User = rt.models.users.User
    UserTypes = rt.models.users.UserTypes

    yield named(Group, _("Hitchhiker's Guide to the Galaxy"))
    yield named(Group, _("Star Trek"))
    yield named(Group, _("Harry Potter"))

    yield User(username="******", user_type=UserTypes.user)
    yield User(username="******", user_type=UserTypes.user)
    yield User(username="******", user_type=UserTypes.user)
示例#7
0
文件: demo.py 项目: khchine5/book
def skills_objects():
    "was previously in skills.fixtures.demo2"

    Skill = rt.models.skills.Skill
    Competence = rt.models.skills.Competence
    Demand = rt.models.skills.Demand
    # Ticket = rt.models.tickets.Ticket
    User = rt.models.users.User

    yield named(Skill, _('Analysis'))
    yield named(Skill, _('Code changes'))
    yield named(Skill, _('Documentation'))
    yield named(Skill, _('Testing'))
    yield named(Skill, _('Configuration'))
    yield named(Skill, _('Enhancement'))
    yield named(Skill, _('Optimization'))
    yield named(Skill, _('Offer'))

    SKILLS = Cycler(Skill.objects.all())
    END_USERS = Cycler(dd.plugins.skills.end_user_model.objects.all())

    i = 0
    for j in range(2):
        for u in User.objects.all():
            i += 1
            yield Competence(user=u, faculty=SKILLS.pop())
            if i % 2:
                yield Competence(user=u, faculty=SKILLS.pop())
            if i % 3:
                yield Competence(
                    user=u, faculty=SKILLS.pop(),
                    end_user=END_USERS.pop())
            
    for i, t in enumerate(
            dd.plugins.skills.demander_model.objects.all()):
        yield Demand(demander=t, skill=SKILLS.pop())
        if i % 3:
            yield Demand(demander=t, skill=SKILLS.pop())
示例#8
0
文件: demo.py 项目: forexblog/book
def skills_objects():
    "was previously in skills.fixtures.demo2"

    Skill = rt.models.skills.Skill
    Competence = rt.models.skills.Competence
    Demand = rt.models.skills.Demand
    # Ticket = rt.models.tickets.Ticket
    User = rt.models.users.User

    yield named(Skill, _('Analysis'))
    yield named(Skill, _('Code changes'))
    yield named(Skill, _('Documentation'))
    yield named(Skill, _('Testing'))
    yield named(Skill, _('Configuration'))
    yield named(Skill, _('Enhancement'))
    yield named(Skill, _('Optimization'))
    yield named(Skill, _('Offer'))

    SKILLS = Cycler(Skill.objects.all())
    END_USERS = Cycler(dd.plugins.skills.end_user_model.objects.all())

    i = 0
    for j in range(2):
        for u in User.objects.all():
            i += 1
            yield Competence(user=u, faculty=SKILLS.pop())
            if i % 2:
                yield Competence(user=u, faculty=SKILLS.pop())
            if i % 3:
                yield Competence(user=u,
                                 faculty=SKILLS.pop(),
                                 end_user=END_USERS.pop())

    for i, t in enumerate(dd.plugins.skills.demander_model.objects.all()):
        yield Demand(demander=t, skill=SKILLS.pop())
        if i % 3:
            yield Demand(demander=t, skill=SKILLS.pop())
示例#9
0
文件: demo.py 项目: forexblog/avanti
def objects():

    Person = rt.models.contacts.Person
    Company = rt.models.contacts.Company
    Client = rt.models.avanti.Client
    ClientContact = rt.models.clients.ClientContact
    ClientContactType = rt.models.clients.ClientContactType
    TranslatorTypes = rt.models.avanti.TranslatorTypes
    ClientStates = rt.models.avanti.ClientStates
    EndingReason = rt.models.avanti.EndingReason
    Category = rt.models.avanti.Category
    LanguageKnowledge = rt.models.cv.LanguageKnowledge

    yield babeld(EndingReason, _("Successfully ended"), id=1)
    yield babeld(EndingReason, _("Health problems"), id=2)
    yield babeld(EndingReason, _("Familiar reasons"), id=3)
    yield babeld(EndingReason, _("Missing motivation"), id=4)
    yield babeld(EndingReason, _("Return to home country"), id=5)
    yield babeld(EndingReason, _("Other"), id=9)

    yield babeld(Category, _("Language course"))
    yield babeld(Category, _("Integration course"))
    yield babeld(Category, _("Language & integration course"))
    yield babeld(Category, _("External course"))
    yield babeld(Category, _("Justified interruption"))
    yield babeld(Category, _("Successfully terminated"))

    # yield named(ClientContactType, _("Health insurance"))
    # yield named(ClientContactType, _("School"))
    # yield named(ClientContactType, _("Pharmacy"))
    # yield named(ClientContactType, _("GSS"))
    # yield named(ClientContactType, _("ISS"))
    for i in KnownContactTypes.get_list_items():
        yield i.create_object()

    yield named(ClientContactType, _("Other"))

    TRTYPES = Cycler(TranslatorTypes.objects())
    POLICIES = Cycler(rt.models.cal.EventPolicy.objects.all())
    CCTYPES = Cycler(ClientContactType.objects.all())

    for cct in ClientContactType.objects.all():
        yield Company(
            name="Favourite {}".format(cct), client_contact_type=cct)
        yield Company(
            name="Best {}".format(cct), client_contact_type=cct)

    CCT2COMPANIES = dict()
    for cct in ClientContactType.objects.all():
        CCT2COMPANIES[cct] = Cycler(Company.objects.filter(
            client_contact_type=cct))

    count = 0
    for person in Person.objects.all():
        count += 1
        if count % 7 and person.gender and not person.birth_date:
            # most persons, but not those from humanlinks and those
            # with empty gender field, become clients and receive a
            # new exotic name. Youngest client is 16; 170 days between
            # each client
            birth_date = settings.SITE.demo_date(-170 * count - 16 * 365)
            national_id = generate_ssin(birth_date, person.gender)

            client = mtichild(
                person, Client,
                national_id=national_id,
                birth_date=birth_date)

            if count % 2:
                client.client_state = ClientStates.coached
                client.event_policy = POLICIES.pop()
            # elif count % 5:
            #     client.client_state = ClientStates.newcomer
            else:
                client.client_state = ClientStates.former

            # Dorothée is three times in our database
            if client.first_name == "Dorothée":
                client.national_id = None
                client.birth_date = ''
            else:
                p = client
                p.last_name = LAST_NAMES.pop()
                if p.gender == dd.Genders.male:
                    p.first_name = MALES.pop()
                    FEMALES.pop()
                else:
                    p.first_name = FEMALES.pop()
                    MALES.pop()
                p.first_name = p.first_name.replace('a', 'á')
                p.name = join_words(p.last_name, p.first_name)


            if count % 4:
                client.translator_type = TRTYPES.pop()

            # client.full_clean()
            # client.save()
            yield client

        else:
            pass
            # yield mtichild(
            #     person, Translator, translator_type=TT.pop())

    CefLevel = rt.models.cv.CefLevel
    LANGUAGES = Cycler(rt.models.languages.Language.objects.all())
    HOW_WELL = Cycler(rt.models.cv.HowWell.get_list_items())
    CEF_LEVELS = Cycler(CefLevel.get_list_items())
    LK_COUNTS = Cycler(1, 2, 3, 2, 1, 4)

    def language_knowledge(person, offset, language, native, **kwargs):
        kwargs.update(entry_date=dd.today(offset))
        kwargs.update(language=language, native=native)
        if not native:
            kwargs.update(
                spoken=HOW_WELL.pop(),
                written=HOW_WELL.pop(),
                spoken_passively=HOW_WELL.pop(),
                written_passively=HOW_WELL.pop(),
                cef_level=CEF_LEVELS.pop())
            kwargs.update(has_certificate=person.id % 2)
        return LanguageKnowledge(person=person, **kwargs)

    for i, obj in enumerate(Client.objects.all()):
        for j in range(i % 2):
            cct = CCTYPES.pop()
            company = CCT2COMPANIES[cct].pop()
            yield ClientContact(type=cct, client=obj, company=company)

        if obj.client_state == ClientStates.coached:
            for i in range(LK_COUNTS.pop()):
                yield language_knowledge(obj, -400, LANGUAGES.pop(), i==0)
            lk = LanguageKnowledge.objects.filter(person=obj, native=False).first()
            if lk:
                better = next_choice(CefLevel, lk.cef_level)
                if better:
                    # raise Exception("okay")
                    new_lk = language_knowledge(obj, -10, lk.language, False)
                    new_lk.cef_level = better
                    yield new_lk
示例#10
0
文件: demo.py 项目: khchine5/book
def tickets_objects():
    # was previously in tickets
    User = rt.models.users.User
    Company = rt.models.contacts.Company
    Topic = rt.models.topics.Topic
    TT = rt.models.tickets.TicketType
    Ticket = rt.models.tickets.Ticket
    # Competence = rt.models.tickets.Competence
    Interest = rt.models.topics.Interest
    Milestone = dd.plugins.tickets.milestone_model
    # Milestone = rt.models.deploy.Milestone
    # Deployment = rt.models.deploy.Deployment
    # WishTypes = rt.models.deploy.WishTypes
    # Project = rt.models.tickets.Project
    # Site = rt.models.tickets.Site
    Site = dd.plugins.tickets.site_model
    Link = rt.models.tickets.Link
    LinkTypes = rt.models.tickets.LinkTypes
    Subscription = rt.models.tickets.Subscription
    #EntryType = rt.models.blogs.EntryType
    #Entry = rt.models.blogs.Entry
    # Star = rt.models.stars.Star
    # Tagging = rt.models.blogs.Tagging
    # Line = rt.models.courses.Line
    List = rt.models.lists.List
    cons = rt.models.users.UserTypes.consultant
    dev = rt.models.users.UserTypes.developer
    yield create_user("marc")
    yield create_user("mathieu", cons)
    yield create_user("luc", dev)
    yield create_user("jean", rt.models.users.UserTypes.senior)

    USERS = Cycler(User.objects.all())
    WORKERS = Cycler(User.objects.filter(
        username__in='mathieu luc jean'.split()))
    END_USERS = Cycler(User.objects.filter(user_type=''))

    yield named(TT, _("Bugfix"))
    yield named(TT, _("Enhancement"))
    yield named(TT, _("Upgrade"))
    
    # sprint = named(Line, _("Sprint"))
    # yield sprint

    TYPES = Cycler(TT.objects.all())

    yield Topic(name="Lino Core", ref="linõ")
    yield Topic(name="Lino Welfare", ref="welfäre")
    yield Topic(name="Lino Cosi", ref="così")
    yield Topic(name="Lino Voga", ref="faggio")
    # ref differs from name

    TOPICS = Cycler(Topic.objects.all())
    RTYPES = Cycler(ReportingTypes.objects())

    for name in "welket welsch pypi".split():
        obj = Company(name=name)
        yield obj
        yield Site(
            name=name, company=obj, reporting_type=RTYPES.pop())

    COMPANIES = Cycler(Company.objects.all())
    
    yield Company(name="Saffre-Rumma")
    
    for u in Company.objects.exclude(name="pypi"):
        for i in range(3):
            yield Interest(owner=u, topic=TOPICS.pop())

    # prj1 = Project(
    #     name="Framewörk", ref="linö", private=False,
    #     company=COMPANIES.pop(),
    #     reporting_type=RTYPES.pop(),
    #     start_date=i2d(20090101))
    # yield prj1
    # yield Project(
    #     name="Téam", ref="téam", start_date=i2d(20100101),
    #     reporting_type=RTYPES.pop(),
    #     company=COMPANIES.pop(),
    #     parent=prj1, private=True)
    # prj2 = Project(
    #     name="Documentatión", ref="docs", private=False,
    #     reporting_type=RTYPES.pop(),
    #     company=COMPANIES.pop(),
    #     start_date=i2d(20090101), parent=prj1)
    # yield prj2
    # yield Project(
    #     name="Research", ref="research", private=False,
    #     company=COMPANIES.pop(),
    #     start_date=i2d(19980101), parent=prj2)
    # yield Project(
    #     name="Shop", ref="shop", private=False,
    #     reporting_type=RTYPES.pop(),
    #     company=COMPANIES.pop(),
    #     start_date=i2d(20120201), end_date=i2d(20120630))

    # PROJECTS = Cycler(Project.objects.all())

    # for u in User.objects.all():
    #     yield Competence(user=u, project=PROJECTS.pop())
    #     yield Competence(user=u, project=PROJECTS.pop())

    if dd.is_installed('meetings'):
        SITES = Cycler(Site.objects.exclude(name="pypi"))
        # LISTS = Cycler(List.objects.all())
        for i in range(7):
            site = SITES.pop()
            d = dd.today(i*2-20)
            kw = dict(
                user=WORKERS.pop(),
                start_date=d,
                # line=sprint,
                # project=PROJECTS.pop(), # expected=d, reached=d,
                # expected=d, reached=d,
                name="{}@{}".format(d.strftime("%Y%m%d"), site),
                # list=LISTS.pop()
            )
            kw[Milestone.site_field_name] = site
            yield Milestone(**kw)
    # yield Milestone(site=SITES.pop(), expected=dd.today())
    # yield Milestone(project=PROJECTS.pop(), expected=dd.today())
    
    SITES = Cycler(Site.objects.all())
    
    TicketStates = rt.models.tickets.TicketStates
    TSTATES = Cycler(TicketStates.objects())
    
    # Vote = rt.models.votes.Vote
    # VoteStates = rt.models.votes.VoteStates
    # VSTATES = Cycler(VoteStates.objects())

    num = [0]
    
    def ticket(summary, **kwargs):
        num[0] += 1
        u = WORKERS.pop()
        kwargs.update(
            ticket_type=TYPES.pop(), summary=summary,
            user=u,
            state=TSTATES.pop(),
            topic=TOPICS.pop())
        if num[0] % 2:
            kwargs.update(site=SITES.pop())
        if num[0] % 4:
            kwargs.update(private=True)
        else:
            kwargs.update(private=False)
        if num[0] % 5:
            kwargs.update(end_user=END_USERS.pop())
        # if False:
        #     kwargs.update(project=PROJECTS.pop())
        obj = Ticket(**kwargs)
        yield obj
        # if obj.state.active:
        #     yield Vote(
        #         votable=obj, user=WORKERS.pop(), state=VSTATES.pop())

    yield ticket("Föö fails to bar when baz")
    yield ticket("Bar is not always baz")
    yield ticket("Baz sucks")
    yield ticket("Foo and bar don't baz")
    yield ticket("Cannot create Foo", description="""<p>When I try to create
    a <b>Foo</b>, then I get a <b>Bar</b> instead of a Foo.</p>""")

    yield ticket("Sell bar in baz")
    yield ticket("No Foo after deleting Bar")
    yield ticket("Is there any Bar in Foo?")
    yield ticket("Foo never matches Bar")
    yield ticket("Where can I find a Foo when bazing Bazes?")
    yield ticket("Class-based Foos and Bars?")
    yield ticket("Foo cannot bar")

    # Example of memo markup:
    yield ticket("Bar cannot foo",
                 description="""<p>Linking to [ticket 1] and to
                 [url http://luc.lino-framework.org/blog/2015/0923.html blog].</p>
                 """)
 
    yield ticket("Bar cannot baz")
    yield ticket("Bars have no foo")
    yield ticket("How to get bar from foo")

    TEXTS = Cycler("""
    Foo never bars
    No more foo when bar is gone
    Cannot delete foo
    Why is foo so bar
    Irritating message when bar
    How can I see where bar?
    Misc optimizations in Baz
    Default account in invoices per partner
    'NoneType' object has no attribute 'isocode'
    """.strip().splitlines())

    # n = Ticket.objects.count()

    for i in range(100):
        # yield ticket("Ticket {}".format(i+n+1))
        yield ticket(TEXTS.pop())

    if dd.is_installed('meetings'):
        WTYPES = Cycler(WishTypes.objects())
        MILESTONES = Cycler(Milestone.objects.all())
        for t in Ticket.objects.all():
            # t.set_author_votes()
            if t.id % 4:
                yield Deployment(
                    milestone=MILESTONES.pop(), ticket=t,
                    wish_type=WTYPES.pop())

    
    yield Link(
        type=LinkTypes.requires,
        parent=Ticket.objects.get(pk=1),
        child=Ticket.objects.get(pk=2))

    # yield EntryType(**dd.str2kw('name', _('Release note')))
    # yield EntryType(**dd.str2kw('name', _('Feature')))
    # yield EntryType(**dd.str2kw('name', _('Upgrade instruction')))
    
    # ETYPES = Cycler(EntryType.objects.all())
    # TIMES = Cycler('12:34', '8:30', '3:45', '6:02')
    #blogger = USERS.pop()
    
    # def entry(offset, title, body, **kwargs):
    #     kwargs['user'] = blogger
    #     kwargs['entry_type'] = ETYPES.pop()
    #     kwargs['pub_date'] = dd.today(offset)
    #     kwargs['pub_time'] = TIMES.pop()
    #     return Entry(title=title, body=body, **kwargs)
    
    # yield entry(-3, "Hello, world!", "This is our first blog entry.")
    # e = entry(-2, "Hello again", "Our second blog entry is about [ticket 1]")
    # yield e
    # yield Interest(owner=e, topic=TOPICS.pop())
    
    # e = entry(-1, "Our third entry", """\
    # Yet another blog entry about [ticket 1] and [ticket 2].
    # This entry has two taggings""")
    # yield e
    # yield Interest(owner=e, topic=TOPICS.pop())
    # yield Interest(owner=e, topic=TOPICS.pop())

    for U in User.objects.all():
        if U.user_type >= rt.models.users.UserTypes.senior:
            for s in Site.objects.all():
                yield Subscription(site=s, user=U)
示例#11
0
文件: demo.py 项目: forexblog/book
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()
示例#12
0
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)
示例#13
0
文件: demo.py 项目: forexblog/book
def tickets_objects():
    # was previously in tickets
    User = rt.models.users.User
    Company = rt.models.contacts.Company
    Topic = rt.models.topics.Topic
    TT = rt.models.tickets.TicketType
    Ticket = rt.models.tickets.Ticket
    # Competence = rt.models.tickets.Competence
    Interest = rt.models.topics.Interest
    Milestone = dd.plugins.tickets.milestone_model
    # Milestone = rt.models.deploy.Milestone
    if Milestone:
        Deployment = rt.models.deploy.Deployment
        WishTypes = rt.models.deploy.WishTypes
    Project = rt.models.tickets.Project
    # Site = rt.models.tickets.Site
    Site = dd.plugins.tickets.site_model
    Link = rt.models.tickets.Link
    LinkTypes = rt.models.tickets.LinkTypes
    # EntryType = rt.models.blogs.EntryType
    # Entry = rt.models.blogs.Entry
    # Tagging = rt.models.blogs.Tagging
    # Line = rt.models.courses.Line
    # List = rt.models.lists.List
    cons = rt.models.users.UserTypes.consultant
    dev = rt.models.users.UserTypes.developer
    yield create_user("marc", rt.models.users.UserTypes.user)
    yield create_user("mathieu", rt.models.users.UserTypes.user)
    yield create_user("luc", dev)
    yield create_user("jean", rt.models.users.UserTypes.senior)

    USERS = Cycler(User.objects.all())
    WORKERS = Cycler(User.objects.filter(username__in='luc jean'.split()))
    END_USERS = Cycler(User.objects.filter(user_type=''))

    yield named(TT, _("Bugfix"))
    yield named(TT, _("Enhancement"))
    yield named(TT, _("Upgrade"))

    # sprint = named(Line, _("Sprint"))
    # yield sprint

    TYPES = Cycler(TT.objects.all())

    yield Topic(name="Lino Core", ref="linõ")
    yield Topic(name="Lino Welfare", ref="welfäre")
    yield Topic(name="Lino Cosi", ref="così")
    yield Topic(name="Lino Voga", ref="faggio")
    # ref differs from name

    TOPICS = Cycler(Topic.objects.all())

    for name in "Bus.co farm.co share.co".split():

        obj = Company(name=name)
        yield obj
        yield Site(name=name + ".com", partner=obj)

    COMPANIES = Cycler(Company.objects.all())

    yield Company(name="in3x")

    for u in Company.objects.exclude(name="in3x"):
        for i in range(3):
            yield Interest(owner=u, topic=TOPICS.pop())

    roletype = rt.models.contacts.RoleType
    yield roletype(**dd.babel_values('name',
                                     en="Manager",
                                     fr='Gérant',
                                     de="Geschäftsführer",
                                     et="Tegevjuht"))
    yield roletype(**dd.babel_values(
        'name', en="Director", fr='Directeur', de="Direktor", et="Direktor"))
    yield roletype(**dd.babel_values(
        'name', en="Secretary", fr='Secrétaire', de="Sekretär", et="Sekretär"))
    yield roletype(**dd.babel_values('name',
                                     en="IT Manager",
                                     fr='Gérant informatique',
                                     de="EDV-Manager",
                                     et="IT manager"))
    yield roletype(**dd.babel_values(
        'name', en="President", fr='Président', de="Präsident",
        et="President"))

    # RTYPES = Cycler(ReportingTypes.objects())

    prj1 = Project(
        name="Framewörk",
        ref="linö",
        private=False,
        company=COMPANIES.pop(),
        # reporting_type=RTYPES.pop(),
        start_date=i2d(20090101))
    yield prj1
    yield Project(
        name="Téam",
        ref="téam",
        start_date=i2d(20100101),
        # reporting_type=RTYPES.pop(),
        company=COMPANIES.pop(),
        parent=prj1,
        private=True)
    prj2 = Project(
        name="Documentatión",
        ref="docs",
        private=False,
        # reporting_type=RTYPES.pop(),
        company=COMPANIES.pop(),
        start_date=i2d(20090101),
        parent=prj1)
    yield prj2
    yield Project(name="Research",
                  ref="research",
                  private=False,
                  company=COMPANIES.pop(),
                  start_date=i2d(19980101),
                  parent=prj2)
    yield Project(
        name="Shop",
        ref="shop",
        private=False,
        # reporting_type=RTYPES.pop(),
        company=COMPANIES.pop(),
        start_date=i2d(20120201),
        end_date=i2d(20120630))

    PROJECTS = Cycler(Project.objects.all())

    # for u in User.objects.all():
    #     yield Competence(user=u, project=PROJECTS.pop())
    #     yield Competence(user=u, project=PROJECTS.pop())

    SITES = Cycler(Site.objects.exclude(name="pypi"))
    # LISTS = Cycler(List.objects.all())

    if Milestone:
        for i in range(7):
            site = SITES.pop()
            d = dd.today(i * 2 - 20)
            kw = dict(
                user=WORKERS.pop(),
                start_date=d,
                # line=sprint,
                # project=PROJECTS.pop(), # expected=d, reached=d,
                # expected=d, reached=d,
                name="{}@{}".format(d.strftime("%Y%m%d"), site),
                # list=LISTS.pop()
            )
            kw[Milestone.site_field_name] = site
            yield Milestone(**kw)
        # yield Milestone(site=SITES.pop(), expected=dd.today())
        # yield Milestone(project=PROJECTS.pop(), expected=dd.today())

    SITES = Cycler(Site.objects.all())

    TicketStates = rt.models.tickets.TicketStates
    TSTATES = Cycler(TicketStates.objects())

    Vote = rt.models.votes.Vote
    VoteStates = rt.models.votes.VoteStates
    VSTATES = Cycler(VoteStates.objects())

    num = [0]

    def ticket(summary, **kwargs):
        num[0] += 1
        u = WORKERS.pop()
        kwargs.update(ticket_type=TYPES.pop(),
                      summary=summary,
                      user=u,
                      state=TSTATES.pop(),
                      topic=TOPICS.pop())
        if num[0] % 2:
            kwargs.update(site=SITES.pop())
        if num[0] % 4:
            kwargs.update(private=True)
        if num[0] % 5:
            kwargs.update(end_user=END_USERS.pop())
        if False:
            kwargs.update(project=PROJECTS.pop())
        obj = Ticket(**kwargs)
        yield obj
        if obj.state.active:
            yield Vote(votable=obj, user=WORKERS.pop(), state=VSTATES.pop())

    yield ticket("Föö fails to bar when baz", project=PROJECTS.pop())
    yield ticket("Bar is not always baz", project=PROJECTS.pop())
    yield ticket("Baz sucks")
    yield ticket("Foo and bar don't baz", project=PROJECTS.pop())
    # a ticket without project:
    yield ticket("Cannot create Foo",
                 description="""<p>When I try to create
    a <b>Foo</b>, then I get a <b>Bar</b> instead of a Foo.</p>""")

    yield ticket("Sell bar in baz", project=PROJECTS.pop())
    yield ticket("No Foo after deleting Bar", project=PROJECTS.pop())
    yield ticket("Is there any Bar in Foo?", project=PROJECTS.pop())
    yield ticket("Foo never matches Bar", project=PROJECTS.pop())
    yield ticket("Where can I find a Foo when bazing Bazes?",
                 project=PROJECTS.pop())
    yield ticket("Class-based Foos and Bars?", project=PROJECTS.pop())
    yield ticket("Foo cannot bar", project=PROJECTS.pop())

    # Example of memo markup:
    yield ticket("Bar cannot foo",
                 project=PROJECTS.pop(),
                 description="""<p>Linking to [ticket 1] and to
                 [url http://luc.lino-framework.org/blog/2015/0923.html blog].</p>
                 """)

    yield ticket("Bar cannot baz", project=PROJECTS.pop())
    yield ticket("Bars have no foo", project=PROJECTS.pop())
    yield ticket("How to get bar from foo", project=PROJECTS.pop())

    n = Ticket.objects.count()

    for i in range(100):
        yield ticket("Ticket {}".format(i + n + 1), project=PROJECTS.pop())

    if Milestone:
        WTYPES = Cycler(WishTypes.objects())
        MILESTONES = Cycler(Milestone.objects.all())
        for t in Ticket.objects.all():
            t.set_author_votes()
            if t.id % 4:
                yield Deployment(milestone=MILESTONES.pop(),
                                 ticket=t,
                                 wish_type=WTYPES.pop())

    yield Link(type=LinkTypes.requires,
               parent=Ticket.objects.get(pk=1),
               child=Ticket.objects.get(pk=2))
示例#14
0
def tickets_objects():
    # was previously in tickets
    User = rt.models.users.User
    Company = rt.models.contacts.Company
    # Topic = rt.models.topics.Topic
    TT = rt.models.tickets.TicketType
    Ticket = rt.models.tickets.Ticket
    # Competence = rt.models.tickets.Competence
    # Interest = rt.models.topics.Interest
    Milestone = dd.plugins.tickets.milestone_model
    # Milestone = rt.models.deploy.Milestone
    # Project = rt.models.tickets.Project
    # Site = rt.models.tickets.Site
    Site = dd.plugins.tickets.site_model
    Link = rt.models.tickets.Link
    LinkTypes = rt.models.tickets.LinkTypes
    Subscription = rt.models.tickets.Subscription
    #EntryType = rt.models.blogs.EntryType
    #Entry = rt.models.blogs.Entry
    # Star = rt.models.stars.Star
    # Tagging = rt.models.blogs.Tagging
    # Line = rt.models.courses.Line
    List = rt.models.lists.List
    cons = UserTypes.consultant
    dev = UserTypes.developer
    end_user = UserTypes.user

    yield create_user("marc", UserTypes.user)
    yield create_user("mathieu", cons)
    yield create_user("luc", dev)
    yield create_user("jean", UserTypes.senior)

    # USERS = Cycler(User.objects.all())
    WORKERS = Cycler(
        User.objects.filter(username__in='mathieu luc jean'.split()))
    END_USERS = Cycler(
        User.objects.filter(user_type=rt.models.users.UserTypes.user))
    reporter_types = [
        t for t in UserTypes.get_list_items()
        if t.has_required_roles([Reporter])
    ]
    REPORTERS = Cycler(User.objects.filter(user_type__in=reporter_types))

    yield named(TT, _("Bugfix"))
    yield named(TT, _("Enhancement"))
    yield named(TT, _("Upgrade"))

    # sprint = named(Line, _("Sprint"))
    # yield sprint

    TYPES = Cycler(TT.objects.all())

    # yield Topic(name="Lino Core", ref="linõ")
    # yield Topic(name="Lino Welfare", ref="welfäre")
    # yield Topic(name="Lino Cosi", ref="così")
    # yield Topic(name="Lino Voga", ref="faggio")
    # ref differs from name

    # TOPICS = Cycler(Topic.objects.all())
    RTYPES = Cycler(ReportingTypes.objects())

    for name in "welket welsch pypi".split():
        obj = Company(name=name)
        yield obj
        yield Site(name=name, company=obj, reporting_type=RTYPES.pop())

    COMPANIES = Cycler(Company.objects.all())

    yield Company(name="Saffre-Rumma")

    # for u in Company.objects.exclude(name="pypi"):
    #     for i in range(3):
    #         yield Interest(owner=u, topic=TOPICS.pop())

    # prj1 = Project(
    #     name="Framewörk", ref="linö", private=False,
    #     company=COMPANIES.pop(),
    #     reporting_type=RTYPES.pop(),
    #     start_date=i2d(20090101))
    # yield prj1
    # yield Project(
    #     name="Téam", ref="téam", start_date=i2d(20100101),
    #     reporting_type=RTYPES.pop(),
    #     company=COMPANIES.pop(),
    #     parent=prj1, private=True)
    # prj2 = Project(
    #     name="Documentatión", ref="docs", private=False,
    #     reporting_type=RTYPES.pop(),
    #     company=COMPANIES.pop(),
    #     start_date=i2d(20090101), parent=prj1)
    # yield prj2
    # yield Project(
    #     name="Research", ref="research", private=False,
    #     company=COMPANIES.pop(),
    #     start_date=i2d(19980101), parent=prj2)
    # yield Project(
    #     name="Shop", ref="shop", private=False,
    #     reporting_type=RTYPES.pop(),
    #     company=COMPANIES.pop(),
    #     start_date=i2d(20120201), end_date=i2d(20120630))

    # PROJECTS = Cycler(Project.objects.all())

    # for u in User.objects.all():
    #     yield Competence(user=u, project=PROJECTS.pop())
    #     yield Competence(user=u, project=PROJECTS.pop())

    if dd.is_installed('meetings'):
        SITES = Cycler(Site.objects.exclude(name="pypi"))
        # LISTS = Cycler(List.objects.all())
        for i in range(7):
            site = SITES.pop()
            d = dd.today(i * 2 - 20)
            kw = dict(
                user=WORKERS.pop(),
                start_date=d,
                # line=sprint,
                # project=PROJECTS.pop(), # expected=d, reached=d,
                # expected=d, reached=d,
                name="{}@{}".format(d.strftime("%Y%m%d"), site),
                # list=LISTS.pop()
            )
            kw[Milestone.site_field_name] = site
            yield Milestone(**kw)
    # yield Milestone(site=SITES.pop(), expected=dd.today())
    # yield Milestone(project=PROJECTS.pop(), expected=dd.today())

    SITES = Cycler(Site.objects.all())

    TicketStates = rt.models.tickets.TicketStates
    TSTATES = Cycler(TicketStates.objects())

    # Vote = rt.models.votes.Vote
    # VoteStates = rt.models.votes.VoteStates
    # VSTATES = Cycler(VoteStates.objects())

    num = [0]

    def ticket(summary, **kwargs):
        num[0] += 1
        u = REPORTERS.pop()
        kwargs.update(ticket_type=TYPES.pop(),
                      summary=summary,
                      user=u,
                      state=TSTATES.pop())
        if num[0] % 2:
            kwargs.update(site=SITES.pop())
        if num[0] % 4:
            kwargs.update(private=True)
        else:
            kwargs.update(private=False)
        if u.user_type.has_required_roles([Worker]):
            if num[0] % 5:
                kwargs.update(end_user=END_USERS.pop())
        # if False:
        #     kwargs.update(project=PROJECTS.pop())
        obj = Ticket(**kwargs)
        yield obj
        # if obj.state.active:
        #     yield Vote(
        #         votable=obj, user=WORKERS.pop(), state=VSTATES.pop())

    yield ticket("Föö fails to bar when baz")
    yield ticket("Bar is not always baz")
    yield ticket("Baz sucks")
    yield ticket("Foo and bar don't baz")
    yield ticket("Cannot create Foo",
                 description="""<p>When I try to create
    a <b>Foo</b>, then I get a <b>Bar</b> instead of a Foo.</p>""")

    yield ticket("Sell bar in baz")
    yield ticket("No Foo after deleting Bar")
    yield ticket("Is there any Bar in Foo?")
    yield ticket("Foo never matches Bar")
    yield ticket("Where can I find a Foo when bazing Bazes?")
    yield ticket("Class-based Foos and Bars?")
    yield ticket("Foo cannot bar")

    # Example of memo markup:
    yield ticket("Bar cannot foo",
                 description="""<p>Linking to [ticket 1] and to
                 [url http://luc.lino-framework.org/blog/2015/0923.html blog].</p>
                 """)

    yield ticket("Bar cannot baz")
    yield ticket("Bars have no foo")
    yield ticket("How to get bar from foo")

    TEXTS = Cycler([
        ln.strip() for ln in """
    Foo never bars
    No more foo when bar is gone
    Cannot delete foo
    Why is foo so bar
    Irritating message when bar
    How can I see where bar?
    Misc optimizations in Baz
    Default account in invoices per partner
    'NoneType' object has no attribute 'isocode'
    """.splitlines() if ln.strip()
    ])

    # n = Ticket.objects.count()

    for i in range(100):
        # yield ticket("Ticket {}".format(i+n+1))
        yield ticket(TEXTS.pop())

    if dd.is_installed('meetings'):
        Deployment = rt.models.deploy.Deployment
        WishTypes = rt.models.deploy.WishTypes
        WTYPES = Cycler(WishTypes.objects())
        MILESTONES = Cycler(Milestone.objects.all())
        for t in Ticket.objects.all():
            # t.set_author_votes()
            if t.id % 4:
                yield Deployment(milestone=MILESTONES.pop(),
                                 ticket=t,
                                 wish_type=WTYPES.pop())

    yield Link(type=LinkTypes.requires,
               parent=Ticket.objects.get(pk=1),
               child=Ticket.objects.get(pk=2))

    # yield EntryType(**dd.str2kw('name', _('Release note')))
    # yield EntryType(**dd.str2kw('name', _('Feature')))
    # yield EntryType(**dd.str2kw('name', _('Upgrade instruction')))

    # ETYPES = Cycler(EntryType.objects.all())
    # TIMES = Cycler('12:34', '8:30', '3:45', '6:02')
    #blogger = USERS.pop()

    # def entry(offset, title, body, **kwargs):
    #     kwargs['user'] = blogger
    #     kwargs['entry_type'] = ETYPES.pop()
    #     kwargs['pub_date'] = dd.today(offset)
    #     kwargs['pub_time'] = TIMES.pop()
    #     return Entry(title=title, body=body, **kwargs)

    # yield entry(-3, "Hello, world!", "This is our first blog entry.")
    # e = entry(-2, "Hello again", "Our second blog entry is about [ticket 1]")
    # yield e
    # yield Interest(owner=e, topic=TOPICS.pop())

    # e = entry(-1, "Our third entry", """\
    # Yet another blog entry about [ticket 1] and [ticket 2].
    # This entry has two taggings""")
    # yield e
    # yield Interest(owner=e, topic=TOPICS.pop())
    # yield Interest(owner=e, topic=TOPICS.pop())

    for u in User.objects.all():
        if u.user_type.has_required_roles([Reporter]):
            if not u.user_type.has_required_roles([TicketsStaff]):
                yield Subscription(site=SITES.pop(), user=u, primary=True)
示例#15
0
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)
示例#16
0
文件: demo.py 项目: khchine5/book
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()
示例#17
0
def tickets_objects():
    # was previously in tickets
    User = rt.models.users.User
    Company = rt.models.contacts.Company
    Topic = rt.models.topics.Topic
    TT = rt.models.tickets.TicketType
    Ticket = rt.models.tickets.Ticket
    # Competence = rt.models.tickets.Competence
    Interest = rt.models.topics.Interest
    Milestone = dd.plugins.tickets.milestone_model
    # Milestone = rt.models.deploy.Milestone
    if Milestone:
        Deployment = rt.models.deploy.Deployment
        WishTypes = rt.models.deploy.WishTypes
    Project = rt.models.tickets.Project
    # Site = rt.models.tickets.Site
    Site = dd.plugins.tickets.site_model
    Link = rt.models.tickets.Link
    LinkTypes = rt.models.tickets.LinkTypes
    # EntryType = rt.models.blogs.EntryType
    # Entry = rt.models.blogs.Entry
    # Tagging = rt.models.blogs.Tagging
    # Line = rt.models.courses.Line
    # List = rt.models.lists.List
    cons = rt.models.users.UserTypes.consultant
    dev = rt.models.users.UserTypes.developer
    yield create_user("marc", rt.models.users.UserTypes.user)
    yield create_user("mathieu", rt.models.users.UserTypes.user)
    yield create_user("luc", dev)
    yield create_user("jean", rt.models.users.UserTypes.senior)

    USERS = Cycler(User.objects.all())
    WORKERS = Cycler(User.objects.filter(
        username__in='luc jean'.split()))
    END_USERS = Cycler(User.objects.filter(user_type=''))

    yield named(TT, _("Bugfix"))
    yield named(TT, _("Enhancement"))
    yield named(TT, _("Upgrade"))
    
    # sprint = named(Line, _("Sprint"))
    # yield sprint

    TYPES = Cycler(TT.objects.all())

    yield Topic(name="Lino Core", ref="linõ")
    yield Topic(name="Lino Welfare", ref="welfäre")
    yield Topic(name="Lino Cosi", ref="così")
    yield Topic(name="Lino Voga", ref="faggio")
    # ref differs from name

    TOPICS = Cycler(Topic.objects.all())

    for name in "Bus.co farm.co share.co".split():

        obj = Company(name=name)
        yield obj
        yield Site(name=name + ".com", partner=obj)

    COMPANIES = Cycler(Company.objects.all())
    
    yield Company(name="in3x")
    
    for u in Company.objects.exclude(name="in3x"):
        for i in range(3):
            yield Interest(owner=u, topic=TOPICS.pop())

    roletype = rt.models.contacts.RoleType
    yield roletype(**dd.babel_values('name', en="Manager", fr='Gérant', de="Geschäftsführer", et="Tegevjuht"))
    yield roletype(**dd.babel_values('name', en="Director", fr='Directeur', de="Direktor", et="Direktor"))
    yield roletype(**dd.babel_values('name', en="Secretary", fr='Secrétaire', de="Sekretär", et="Sekretär"))
    yield roletype(**dd.babel_values('name', en="IT Manager", fr='Gérant informatique', de="EDV-Manager", et="IT manager"))
    yield roletype(**dd.babel_values('name', en="President", fr='Président', de="Präsident", et="President"))


    # RTYPES = Cycler(ReportingTypes.objects())
    
    prj1 = Project(
        name="Framewörk", ref="linö", private=False,
        company=COMPANIES.pop(),
        # reporting_type=RTYPES.pop(),
        start_date=i2d(20090101))
    yield prj1
    yield Project(
        name="Téam", ref="téam", start_date=i2d(20100101),
        # reporting_type=RTYPES.pop(),
        company=COMPANIES.pop(),
        parent=prj1, private=True)
    prj2 = Project(
        name="Documentatión", ref="docs", private=False,
        # reporting_type=RTYPES.pop(),
        company=COMPANIES.pop(),
        start_date=i2d(20090101), parent=prj1)
    yield prj2
    yield Project(
        name="Research", ref="research", private=False,
        company=COMPANIES.pop(),
        start_date=i2d(19980101), parent=prj2)
    yield Project(
        name="Shop", ref="shop", private=False,
        # reporting_type=RTYPES.pop(),
        company=COMPANIES.pop(),
        start_date=i2d(20120201), end_date=i2d(20120630))

    PROJECTS = Cycler(Project.objects.all())

    # for u in User.objects.all():
    #     yield Competence(user=u, project=PROJECTS.pop())
    #     yield Competence(user=u, project=PROJECTS.pop())
    
    SITES = Cycler(Site.objects.exclude(name="pypi"))
    # LISTS = Cycler(List.objects.all())

    if Milestone:
        for i in range(7):
            site = SITES.pop()
            d = dd.today(i*2-20)
            kw = dict(
                user=WORKERS.pop(),
                start_date=d,
                # line=sprint,
                # project=PROJECTS.pop(), # expected=d, reached=d,
                # expected=d, reached=d,
                name="{}@{}".format(d.strftime("%Y%m%d"), site),
                # list=LISTS.pop()
            )
            kw[Milestone.site_field_name] = site
            yield Milestone(**kw)
        # yield Milestone(site=SITES.pop(), expected=dd.today())
        # yield Milestone(project=PROJECTS.pop(), expected=dd.today())
    
    SITES = Cycler(Site.objects.all())
    
    TicketStates = rt.models.tickets.TicketStates
    TSTATES = Cycler(TicketStates.objects())
    
    Vote = rt.models.votes.Vote
    VoteStates = rt.models.votes.VoteStates
    VSTATES = Cycler(VoteStates.objects())

    num = [0]
    
    def ticket(summary, **kwargs):
        num[0] += 1
        u = WORKERS.pop()
        kwargs.update(
            ticket_type=TYPES.pop(), summary=summary,
            user=u,
            state=TSTATES.pop(),
            topic=TOPICS.pop())
        if num[0] % 2:
            kwargs.update(site=SITES.pop())
        if num[0] % 4:
            kwargs.update(private=True)
        if num[0] % 5:
            kwargs.update(end_user=END_USERS.pop())
        if False:
            kwargs.update(project=PROJECTS.pop())
        obj = Ticket(**kwargs)
        yield obj
        if obj.state.active:
            yield Vote(
                votable=obj, user=WORKERS.pop(), state=VSTATES.pop())

    yield ticket(
        "Föö fails to bar when baz", project=PROJECTS.pop())
    yield ticket("Bar is not always baz", project=PROJECTS.pop())
    yield ticket("Baz sucks")
    yield ticket("Foo and bar don't baz", project=PROJECTS.pop())
    # a ticket without project:
    yield ticket("Cannot create Foo", description="""<p>When I try to create
    a <b>Foo</b>, then I get a <b>Bar</b> instead of a Foo.</p>""")

    yield ticket("Sell bar in baz", project=PROJECTS.pop())
    yield ticket("No Foo after deleting Bar", project=PROJECTS.pop())
    yield ticket("Is there any Bar in Foo?", project=PROJECTS.pop())
    yield ticket("Foo never matches Bar", project=PROJECTS.pop())
    yield ticket("Where can I find a Foo when bazing Bazes?",
                 project=PROJECTS.pop())
    yield ticket("Class-based Foos and Bars?", project=PROJECTS.pop())
    yield ticket("Foo cannot bar", project=PROJECTS.pop())

    # Example of memo markup:
    yield ticket("Bar cannot foo", project=PROJECTS.pop(),
                 description="""<p>Linking to [ticket 1] and to
                 [url http://luc.lino-framework.org/blog/2015/0923.html blog].</p>
                 """)
 
    yield ticket("Bar cannot baz", project=PROJECTS.pop())
    yield ticket("Bars have no foo", project=PROJECTS.pop())
    yield ticket("How to get bar from foo", project=PROJECTS.pop())

    n = Ticket.objects.count()

    for i in range(100):
        yield ticket("Ticket {}".format(i+n+1), project=PROJECTS.pop())

    if Milestone:
        WTYPES = Cycler(WishTypes.objects())
        MILESTONES = Cycler(Milestone.objects.all())
        for t in Ticket.objects.all():
            t.set_author_votes()
            if t.id % 4:
                yield Deployment(
                    milestone=MILESTONES.pop(), ticket=t,
                    wish_type=WTYPES.pop())

    
    yield Link(
        type=LinkTypes.requires,
        parent=Ticket.objects.get(pk=1),
        child=Ticket.objects.get(pk=2))