Пример #1
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, pos_access_group = TicketsEventMeta.get_or_create_groups(self.event, ['admins', 'pos'])

        defaults = dict(
            admin_group=tickets_admin_group,
            pos_access_group=pos_access_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2019{:05d}",
            contact_email='Ropecon 2019 -lipunmyynti <*****@*****.**>',
            ticket_free_text="Tämä on sähköinen lippusi Ropecon 2019 -tapahtumaan. Sähköinen lippu vaihdetaan rannekkeeseen\n"
                "lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai näyttää sen\n"
                "älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole mahdollista, ota ylös\n"
                "kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva Kissakoodi ja ilmoita se\n"
                "lipunvaihtopisteessä.\n\n"
                "Tervetuloa Ropeconiin!",
            front_page_text="<h2>Tervetuloa Ropeconin lippukauppaan!</h2>"
                "<p>Liput maksetaan tilauksen yhteydessä käyttämällä suomalaia verkkopankkipalveluja.</p>"
                "<p>Maksetut liput toimitetaan e-lippuina sähköpostitse asiakkaan antamaan osoitteeseen. E-liput vaihdetaan rannekkeiksi tapahtuman lipunmyyntipisteillä 27.–29.7.2019.</p>"
                "<p>Lisätietoja lipuista saat tapahtuman verkkosivuilta. <a href='https://2019.ropecon.fi/liput/'>Siirry takaisin tapahtuman verkkosivuille</a>.</p>"
                "<p>Huom! Tämä verkkokauppa palvelee ainoastaan asiakkaita, joilla on osoite Suomessa. Mikäli tarvitset "
                "toimituksen ulkomaille, ole hyvä ja ota sähköpostitse yhteyttä: <em>[email protected]</em>"
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )
        else:
            defaults.update(
                ticket_sales_starts=datetime(2019, 2, 28, 10, 0, tzinfo=self.tz),
                ticket_sales_ends=datetime(2019, 7, 26, 0, 0, tzinfo=self.tz),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        for product_info in [
            dict(
                name='Ropecon 2019 Early Dragon -viikonloppulippu',
                description='Sisältää pääsyn Ropecon 2019 -tapahtumaan koko viikonlopun ajan.',
                limit_groups=[
                    limit_group('Pääsyliput', 9999),
                ],
                price_cents=4000,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=self.get_ordering_number(),
            ),
            dict(
                name='Ropecon 2019 Lasten Early Dragon -viikonloppulippu',
                description='Sisältää pääsyn lapselle (7-12 v) Ropecon 2019 -tapahtumaan koko viikonlopun ajan.',
                limit_groups=[
                    limit_group('Pääsyliput', 9999),
                ],
                price_cents=2000,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=self.get_ordering_number(),
            ),
            dict(
                name='Ropecon 2019 Ennakkoviikonloppulippu',
                description='Sisältää pääsyn Ropecon 2019 -tapahtumaan koko viikonlopun ajan.',
                limit_groups=[
                    limit_group('Pääsyliput', 9999),
                ],
                price_cents=4500,
                requires_shipping=False,
                electronic_ticket=True,
                available=False,
                ordering=self.get_ordering_number(),
            ),
            dict(
                name='Ropecon 2019 Lasten ennakkoviikonloppulippu',
                description='Sisältää pääsyn lapselle (7-12 v) Ropecon 2019 -tapahtumaan koko viikonlopun ajan.',
                limit_groups=[
                    limit_group('Pääsyliput', 9999),
                ],
                price_cents=2500,
                requires_shipping=False,
                electronic_ticket=True,
                available=False,
                ordering=self.get_ordering_number(),
            ),
            dict(
                name='Ropecon 2019 Perheviikonloppulippupaketti',
                description='Sisältää pääsyn Ropecon 2019 -tapahtumaan 2 aikuiselle ja 1-3 lapselle (7-12 v) koko viikonlopun ajan.',
                limit_groups=[
                    limit_group('Pääsyliput', 9999),
                ],
                price_cents=9900,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=self.get_ordering_number(),
            ),
            dict(
                name='Ropecon 2019 Sponsoriviikonloppulippu',
                description='Sisältää pääsyn Ropecon 2019 -tapahtumaan koko viikonlopun ajan.',
                limit_groups=[
                    limit_group('Pääsyliput', 9999),
                ],
                price_cents=10000,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=self.get_ordering_number(),
            ),
            dict(
                name='Ropecon 2019 Akateeminen seminaari + perjantaipäivälippu',
                description='Sisältää pääsyn Akateemiseen seminaariin ja Ropecon 2019 -tapahtumaan perjantaina. Muista myös <a href="https://goo.gl/forms/J9X1401lERxaX3M52">rekisteröityä</a>!',
                limit_groups=[
                    limit_group('Pääsyliput', 9999),
                ],
                price_cents=5500,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=self.get_ordering_number(),
            ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event,
                name=name,
                defaults=product_info
            )

            if not product.limit_groups.exists():
                product.limit_groups.set(limit_groups)
                product.save()
Пример #2
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=120,
            reference_number_template="2016{:05d}",
            contact_email='Animecon 2016 <*****@*****.**>',
            ticket_free_text="Tämä on sähköinen lippusi Animecon 2016 -tapahtumaan. Sähköinen lippu vaihdetaan rannekkeeseen\n"
                "lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai näyttää sen\n"
                "älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole mahdollista, ota ylös\n"
                "kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva Kissakoodi ja ilmoita se\n"
                "lipunvaihtopisteessä.\n\n"
                "Tervetuloa Animecon 2016 -tapahtumaan!",
            front_page_text="<h2>Tervetuloa ostamaan pääsylippuja Animecon 2016 -tapahtumaan!</h2>"
                "<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
                "<p>Lue lisää tapahtumasta <a href='http://2016.animecon.fi'>Animecon 2016 -tapahtuman kotisivuilta</a>.</p>"
                "<p>Huom! Tämä verkkokauppa palvelee ainoastaan asiakkaita, joilla on osoite Suomessa. Mikäli tarvitset "
                "toimituksen ulkomaille, ole hyvä ja ota sähköpostitse yhteyttä: <em>[email protected]</em>"
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        for product_info in [
            dict(
                name='Animecon 2016 -pääsylippu',
                description='Viikonloppuranneke Kuopiossa järjestettävään Animecon-tapahtumaan. Huom. myynnissä vain viikonloppurannekkeita. Lippu on PDF-muotoinen e-lippu, joka vaihdetaan rannekkeeseen tapahtumaan saavuttaessa.',
                limit_groups=[
                    limit_group('Pääsyliput', 3300),
                ],
                price_cents=2000,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=self.get_ordering_number(),
            ),
            dict(
                name='Lattiamajoitus Viitaniemen koululla pe-la-yöksi',
                description='Lattiamajoituspaikka 8.-9.7.2016 välisenä yönä Viitaniemen koululla. Luethan ohjeet majoittumiseen Animeconin nettisivuilta. Jos maksat muitakin henkilöitä kuin itsesi, niin ilmoitathan kaikkien majoittujien yhteystiedot (nimi, puhelinnumero, sähköposti) lisätiedoissa. Emme lähetä lattiamajoituksesta erillistä lippua.',
                limit_groups=[
                    limit_group('Majoitus Viitaniemi pe-la', 200),
                ],
                price_cents=1000,
                requires_shipping=False,
                electronic_ticket=False,
                requires_accommodation_information=True,
                available=True,
                ordering=self.get_ordering_number(),
            ),
            dict(
                name='Lattiamajoitus Viitaniemen koululla la-su-yöksi',
                description='Lattiamajoituspaikka 9.-10.7.2016 välisenä yönä Viitaniemen koululla. Luethan ohjeet majoittumiseen Animeconin nettisivuilta. Jos maksat muitakin majoittujia kuin itsesi, niin ilmoitathan kaikkien majoittujien yhteystiedot (nimi, puhelinnumero, sähköposti) lisätiedoissa. Emme lähetä lattiamajoituksesta erillistä lippua.',
                limit_groups=[
                    limit_group('Majoitus Viitaniemi la-su', 200),
                ],
                price_cents=1000,
                requires_shipping=False,
                electronic_ticket=False,
                requires_accommodation_information=True,
                available=True,
                ordering=self.get_ordering_number(),
            ),
            dict(
                name='Aamupala Viitaniemen koululla lauantaiaamuna',
                description='Aamupala Viitaniemen koululla lauantaiaamuna 9.7.2016. Ilmoitathan erityisruokavalioista ja allergioista etukäteen. Jos olet varannut aamiaisen myös muille kuin itsellesi, niin ilmoitathan henkilöiden nimet lisätiedoissa.',
                limit_groups=[
                    limit_group('Aamupala Viitaniemi la', 200),
                ],
                price_cents=350,
                requires_shipping=False,
                electronic_ticket=False,
                requires_accommodation_information=True,
                available=True,
                ordering=self.get_ordering_number(),
            ),
            dict(
                name='Aamupala Viitaniemen koululla sunnuntaiaamuna',
                description='Aamupala Viitaniemen koululla sunnuntai-aamuna 10.7.2016. Ilmoitathan erityisruokavalioista ja allergioista etukäteen. Jos olet varannut aamiaisen myös muille kuin itsellesi, niin ilmoitathan henkilöiden nimet lisätiedoissa.',
                limit_groups=[
                    limit_group('Aamupala Viitaniemi su', 200),
                ],
                price_cents=350,
                requires_shipping=False,
                electronic_ticket=False,
                requires_accommodation_information=True,
                available=True,
                ordering=self.get_ordering_number(),
            ),
            dict(
                name='Lattiamajoituspaikka Jyväskylän Tanssiopistolla perjantai-lauantai-yöksi',
                description='Lattiamajoituspaikka 8.-9.7.2016 välisenä yönä Jyväskylän Tanssiopistolla. Luethan ohjeet majoittumiseen Animeconin nettisivuilta. Jos maksat muitakin majoittujia kuin itsesi, niin ilmoitathan kaikkien majoittujien yhteystiedot (nimi, puhelinnumero, sähköposti) lisätiedoissa. Emme lähetä lattiamajoituksesta erillistä lippua',
                limit_groups=[
                    limit_group('Majoitus Tanssiopisto pe-la', 118),
                ],
                price_cents=1000,
                requires_shipping=False,
                electronic_ticket=False,
                requires_accommodation_information=True,
                available=True,
                ordering=self.get_ordering_number(),
            ),
            dict(
                name='Lattiamajoituspaikka Jyväskylän Tanssiopistolla lauantai-sunnuntai-yöksi',
                description='Lattiamajoituspaikka 9.-10.7.2016 välisenä yönä Jyväskylän Tanssiopistolla. Luethan ohjeet majoittumiseen Animeconin nettisivuilta. Jos maksat muitakin majoittujia kuin itsesi, niin ilmoitathan kaikkien majoittujien yhteystiedot (nimi, puhelinnumero, sähköposti) lisätiedoissa. Emme lähetä lattiamajoituksesta erillistä lippua',
                limit_groups=[
                    limit_group('Majoitus Tanssiopisto la-su', 118),
                ],
                price_cents=1000,
                requires_shipping=False,
                electronic_ticket=False,
                requires_accommodation_information=True,
                available=True,
                ordering=self.get_ordering_number(),
            ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event,
                name=name,
                defaults=product_info
            )

            if not product.limit_groups.exists():
                product.limit_groups = limit_groups
                product.save()
Пример #3
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(
            self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2017{:05d}",
            contact_email='Pääkaupunkiseudun cosplay <*****@*****.**>',
            ticket_free_text=
            "Tämä on sähköinen lippusi. Sähköinen lippu vaihdetaan rannekkeeseen\n"
            "lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai näyttää sen\n"
            "älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole mahdollista, ota ylös\n"
            "kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva sanakoodi ja ilmoita se\n"
            "lipunvaihtopisteessä.\n\n"
            "Tervetuloa tapahtumaan!",
            front_page_text=
            "<h2>Tervetuloa ostamaan pääsylippuja Super Galactic Space Partyyn!</h2>"
            "<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
            "<p>Lue lisää <a href='https://pkscosplay.wordpress.com/tapahtuma/' target='_blank'>tapahtuman kotisivuilta</a>.</p>",
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(
            event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        for product_info in [
                dict(
                    name='Lippu Super Galactic Space Party -tapahtumaan ',
                    description=
                    'Yksi lippu Super Galactic Space Party -tapahtumaan, joka järjestetään Kulttuuriareena Glorian tiloissa 3.12.2016. Lipun hinta sisältää sisäänpääsyn ja narikan. PDF -lippua vastaan saat tapahtumapaikalla pinssin, joka toimii pääsylippunasi tapahtuman ajan.',
                    limit_groups=[
                        limit_group('Pääsyliput', 400),
                    ],
                    price_cents=700,
                    requires_shipping=False,
                    electronic_ticket=True,
                    available=True,
                    ordering=self.get_ordering_number(),
                ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event, name=name, defaults=product_info)

            if not product.limit_groups.exists():
                product.limit_groups = limit_groups
                product.save()
Пример #4
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2018{:05d}",
            contact_email='Aicon <*****@*****.**>',
            ticket_free_text=(
                "Tämä on sähköinen lippusi. Sähköinen lippu vaihdetaan rannekkeeseen\n"
                "lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai näyttää sen\n"
                "älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole mahdollista, ota ylös\n"
                "kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva sanakoodi ja ilmoita se\n"
                "lipunvaihtopisteessä.\n\n"
                "Tervetuloa tapahtumaan!"
            ),
            front_page_text=(
                "<h2>Tervetuloa ostamaan pääsylippuja vuoden 2018 Aiconiin!</h2>"
                "<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
                "<p>Lue lisää tapahtumasta "
                "<a href='http://2018.aicon.fi' target='_blank'>Aiconin kotisivuilta</a>.</p>"
            ),
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        for product_info in [
            dict(
                name='VIP-lippu',
                description='Koko viikonlopun lippu Aiconiin huikein VIP-eduin!',
                limit_groups=[
                    limit_group('VIP-liput', 50),
                ],
                price_cents=3000,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=self.get_ordering_number(),
            ),
            dict(
                name='Pääsylippu',
                description='Koko viikonlopun lippu Aiconiin.',
                limit_groups=[
                    limit_group('Viikonloppuliput', 800),
                ],
                price_cents=1500,
                requires_shipping=False,
                electronic_ticket=True,
                available=False,
                ordering=self.get_ordering_number(),
            ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event,
                name=name,
                defaults=product_info
            )

            if not product.limit_groups.exists():
                product.limit_groups = limit_groups
                product.save()
Пример #5
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(
            self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2017{:05d}",
            contact_email='Yukicon <*****@*****.**>',
            ticket_free_text=
            "Tämä on sähköinen lippusi. Sähköinen lippu vaihdetaan rannekkeeseen\n"
            "lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai näyttää sen\n"
            "älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole mahdollista, ota ylös\n"
            "kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva sanakoodi ja ilmoita se\n"
            "lipunvaihtopisteessä.\n\n"
            "Tervetuloa tapahtumaan!",
            front_page_text=
            "<h2>Tervetuloa ostamaan pääsylippuja Yukicon 4.0- ja Pyrycon-tapahtumiin!</h2>"
            "<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
            "<p>Lue lisää tapahtumasta <a href='http://www.yukicon.fi' target='_blank'>Yukiconin kotisivuilta</a>.</p>",
            print_logo_path=mkpath('static', 'images', 'yukicon2017_logo.jpg'),
            print_logo_width_mm=50,
            print_logo_height_mm=16)

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(
            event=self.event, defaults=defaults)

        if 'yukicon_436_test' in meta.print_logo_path or 'png' in meta.print_logo_path:
            meta.print_logo_path = mkpath('static', 'images',
                                          'yukicon2017_logo.jpg')
            meta.print_logo_height_mm = 16
            meta.save()

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        for product_info in [
                dict(
                    name='Yukicon 4.0 – Early Access',
                    description=
                    'Early Access -lipulla pääset Yukiconiin 18.–19.2.2017. Lippu oikeuttaa Early Access -etuuksien lunastuksen. Lippu ei oikeuta pääsyä Pyryconiin. Maksettuasi sinulle lähetetään PDF-lippu antamaasi sähköpostiin, jota vastaan saat rannekkeen tapahtuman ovelta.',
                    limit_groups=[
                        limit_group('Early Access', 200),
                    ],
                    price_cents=2900,
                    requires_shipping=False,
                    electronic_ticket=True,
                    available=True,
                    ordering=self.get_ordering_number(),
                ),
                dict(
                    name='Pyryconin pääsylippu',
                    description=
                    'Lipulla pääset Pyryconiin perjantaina 17. helmikuuta 2017. Lippu ei oikeuta pääsyä Yukiconiin. Maksettuasi sinulle lähetetään PDF-lippu antamaasi sähköpostiin, jota vastaan saat rannekkeen tapahtuman ovelta. Ei palautus- tai vaihto-oikeutta.',
                    limit_groups=[
                        limit_group('Pyrycon', 1200),
                    ],
                    price_cents=600,
                    requires_shipping=False,
                    electronic_ticket=True,
                    available=True,
                    ordering=self.get_ordering_number(),
                ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event, name=name, defaults=product_info)

            if not product.limit_groups.exists():
                product.limit_groups = limit_groups
                product.save()
Пример #6
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(
            self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2019{:06d}",
            contact_email='Popcult Helsinki <*****@*****.**>',
            ticket_free_text=
            "Tämä on sähköinen lippusi Popcult Helsinki 2019 -tapahtumaan. Sähköinen lippu vaihdetaan\n"
            "rannekkeeseen lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai\n"
            "näyttää sen älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole\n"
            "mahdollista, ota ylös kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva\n"
            "Kissakoodi ja ilmoita se lipunvaihtopisteessä.\n\n"
            "Tervetuloa Popcult Helsinkihin!",
            front_page_text=
            "<h2>Tervetuloa ostamaan pääsylippuja Popcult Helsinki 2019 -tapahtumaan!</h2>"
            "<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
            "<p>Lue lisää tapahtumasta <a href='http://popcult.fi/helsinki-2019'>Popcult Helsinki 2019 -tapahtuman kotisivuilta</a>.</p>",
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(
            event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        def ordering():
            ordering.counter += 10
            return ordering.counter

        ordering.counter = 0

        for product_info in [
                dict(
                    name='Viikonloppulippu: Popcult Helsinki 2019',
                    description=
                    'Pääsylippu Popcult Helsinki -tapahtumaan Marina Congress Centeriin 11.-12.5.2019. Sähköinen lippu vaihdetaan rannekkeeseen tapahtumapaikalla.',
                    limit_groups=[
                        limit_group('Pääsyliput', 1800),
                    ],
                    price_cents=2900,
                    requires_shipping=False,
                    electronic_ticket=True,
                    available=True,
                    ordering=ordering(),
                ),

                # dict(
                #     name='Kahden lipun tarjouspaketti Popcult Helsinkihin 2018',
                #     override_electronic_ticket_title='Popcult Helsinki 2019 -tarjouslippu',
                #     description='Kaksi pääsylippua Popcult Helsinki -tapahtumaan lauantaille 12.5.2018. Osta liput edullisemmin itsellesi ja vaikka lahjaksi kaverille! Sisältää kaksi sähköistä lippua, jotka vaihdetaan rannekkeisiin tapahtumapaikalla. Rajoitettu tarjous, myynnissä su 18.2. klo 23:59 asti.',
                #     limit_groups=[
                #         limit_group('Kahden lipun tarjouspaketit', 100),
                #     ],
                #     price_cents=2500,
                #     requires_shipping=False,
                #     electronic_ticket=True,
                #     electronic_tickets_per_product=2,
                #     available=True,
                #     ordering=ordering(),
                # ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event, name=name, defaults=product_info)

            if not product.limit_groups.exists():
                product.limit_groups.set(limit_groups)
                product.save()
Пример #7
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(
            self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2018{:05d}",
            contact_email='Traconin lipunmyynti <*****@*****.**>',
            ticket_free_text=
            ("Tämä on sähköinen lippusi Traconiin. Sähköinen lippu vaihdetaan rannekkeeseen\n"
             "lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai näyttää sen\n"
             "älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole mahdollista, ota ylös\n"
             "kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva sanakoodi ja ilmoita se\n"
             "lipunvaihtopisteessä.\n\n"
             "Tervetuloa Traconiin!"),
            front_page_text=
            ("<h2>Tervetuloa ostamaan pääsylippuja Traconiin!</h2>"
             "<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
             "<p>Lue lisää tapahtumasta <a href='http://2018.tracon.fi'>Traconin kotisivuilta</a>.</p>"
             ),
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )
        else:
            pass

        meta, unused = TicketsEventMeta.objects.get_or_create(
            event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        for product_info in [
                # dict(
                #     name='Viikonloppulippu',
                #     description='Voimassa koko viikonlopun ajan la klo 10 - su klo 18. Toimitetaan sähköpostitse PDF-tiedostona.',
                #     limit_groups=[
                #         limit_group('Lauantain liput', 4300),
                #         limit_group('Sunnuntain liput', 4300),
                #     ],
                #     price_cents=2800,
                #     requires_shipping=False,
                #     electronic_ticket=True,
                #     available=True,
                #     ordering=self.get_ordering_number(),
                # ),
                # dict(
                #     name='Lauantailippu',
                #     description='Voimassa koko lauantaipäivän ajan la klo 10 - su klo 08. Toimitetaan sähköpostitse PDF-tiedostona.',
                #     limit_groups=[
                #         limit_group('Lauantain liput', 4300),
                #     ],
                #     price_cents=2000,
                #     requires_shipping=False,
                #     electronic_ticket=True,
                #     available=True,
                #     ordering=self.get_ordering_number(),
                # ),
                # dict(
                #     name='Sunnuntailippu',
                #     description='Voimassa koko sunnuntaipäivän ajan su klo 00 - su klo 18. Toimitetaan sähköpostitse PDF-tiedostona.',
                #     limit_groups=[
                #         limit_group('Sunnuntain liput', 4300),
                #     ],
                #     price_cents=1800,
                #     requires_shipping=False,
                #     electronic_ticket=True,
                #     available=True,
                #     ordering=self.get_ordering_number(),
                # ),
                # dict(
                #     name='Iltabilelippu',
                #     description='Pääsylippu maksullisiin K18-iltabileisiin Pakkahuoneella. Lisää tietoa iltabileistä lähempänä tapahtumaa. Toimitetaan sähköpostitse PDF-tiedostona.',
                #     limit_groups=[
                #         limit_group('Iltabileliput', 1100),
                #     ],
                #     price_cents=500,
                #     requires_shipping=False,
                #     electronic_ticket=True,
                #     available=True,
                #     ordering=self.get_ordering_number(),
                # ),
                # dict(
                #     name='Lattiamajoitus 1 yö pe-la - Aleksanterin koulu (sis. makuualusta)',
                #     description='Lattiamajoituspaikka perjantain ja lauantain väliseksi yöksi Aleksanterin koululta. Aleksanterin koulun majoituspaikat sisältävät makuualustan, joten sinun tarvitsee tuoda vain makuupussi.',
                #     limit_groups=[
                #         limit_group('Majoitus Aleksanteri pe-la', 100),
                #     ],
                #     price_cents=1300,
                #     requires_shipping=False,
                #     requires_accommodation_information=True,
                #     electronic_ticket=False,
                #     available=True,
                #     ordering=self.get_ordering_number(),
                # ),
                # dict(
                #     name='Lattiamajoitus 1 yö la-su - Aleksanterin koulu (sis. makuualusta)',
                #     description='Lattiamajoituspaikka lauantain ja sunnuntain väliseksi yöksi Aleksanterin koululta. Aleksanterin koulun majoituspaikat sisältävät makuualustan, joten sinun tarvitsee tuoda vain makuupussi.',
                #     limit_groups=[
                #         limit_group('Majoitus Aleksanteri la-su', 100),
                #     ],
                #     price_cents=1300,
                #     requires_shipping=False,
                #     requires_accommodation_information=True,
                #     electronic_ticket=False,
                #     available=True,
                #     ordering=self.get_ordering_number(),
                # ),
                # dict(
                #     name='Lattiamajoitus 1 yö pe-la - Pyynikin koulu (ei sis. makuualustaa)',
                #     description='Lattiamajoituspaikka lauantain ja sunnuntain väliseksi yöksi Pyynikin koululta. Pyynikin koulun majoituspaikat eivät sisällä makuualustaa, joten sinun tarvitsee tuoda makuupussi ja makuualusta tai patja.',
                #     limit_groups=[
                #         limit_group('Majoitus Pyynikki pe-la', 120),
                #     ],
                #     price_cents=1000,
                #     requires_shipping=False,
                #     requires_accommodation_information=True,
                #     electronic_ticket=False,
                #     available=True,
                #     ordering=self.get_ordering_number(),
                # ),
                # dict(
                #     name='Lattiamajoitus 1 yö la-su - Pyynikin koulu (ei sis. makuualustaa)',
                #     description='Lattiamajoituspaikka lauantain ja sunnuntain väliseksi yöksi Pyynikin koululta. Pyynikin koulun majoituspaikat eivät sisällä makuualustaa, joten sinun tarvitsee tuoda makuupussi ja makuualusta tai patja.',
                #     limit_groups=[
                #         limit_group('Majoitus Pyynikki la-su', 120),
                #     ],
                #     price_cents=1000,
                #     requires_shipping=False,
                #     requires_accommodation_information=True,
                #     electronic_ticket=False,
                #     available=True,
                #     ordering=self.get_ordering_number(),
                # ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event, name=name, defaults=product_info)

            if not product.limit_groups.exists():
                product.limit_groups = limit_groups
                product.save()

        if not meta.receipt_footer:
            meta.receipt_footer = "Tracon ry / Yhdrek. nro. 194.820 / [email protected]"
            meta.save()
Пример #8
0
    def handle(*args, **options):
        if settings.DEBUG:
            print 'Setting up tracon9 in test mode'
        else:
            print 'Setting up tracon9 in production mode'

        tz = tzlocal()


        #
        # Core
        #

        venue, unused = Venue.objects.get_or_create(name='Tampere-talo')
        content_type = ContentType.objects.get_for_model(SignupExtra)
        event, unused = Event.objects.get_or_create(slug='tracon9', defaults=dict(
            name='Tracon 9',
            name_genitive='Tracon 9 -tapahtuman',
            name_illative='Tracon 9 -tapahtumaan',
            name_inessive='Tracon 9 -tapahtumassa',
            homepage_url='http://2014.tracon.fi',
            organization_name='Tracon ry',
            organization_url='http://ry.tracon.fi',
            start_time=datetime(2014, 9, 13, 10, 0, tzinfo=tz),
            end_time=datetime(2014, 9, 14, 18, 0, tzinfo=tz),
            venue=venue,
        ))

        #
        # Labour
        #

        labour_admin_group, = LabourEventMeta.get_or_create_groups(event, ['admins'])

        if settings.DEBUG:
            person, unused = Person.get_or_create_dummy()
            labour_admin_group.user_set.add(person.user)

        labour_event_meta_defaults = dict(
            signup_extra_content_type=content_type,
            work_begins=datetime(2014, 9, 12, 8, 0, tzinfo=tz),
            work_ends=datetime(2014, 9, 14, 22, 0, tzinfo=tz),
            admin_group=labour_admin_group,
        )

        if settings.DEBUG:
            t = now()
            labour_event_meta_defaults.update(
                registration_opens=t - timedelta(days=60),
                registration_closes=t + timedelta(days=60),

            )
        else:
            labour_event_meta_defaults.update(
                registration_opens=datetime(2014, 3, 1, 0, 0, tzinfo=tz),
                registration_closes=datetime(2014, 8, 1, 0, 0, tzinfo=tz),
            )

        labour_event_meta, unused = LabourEventMeta.objects.get_or_create(event=event, defaults=labour_event_meta_defaults)

        # labour v7
        if not labour_event_meta.contact_email:
            labour_event_meta.contact_email = 'Tracon 9 -työvoimatiimi <*****@*****.**>'
            labour_event_meta.save()

        for name, description in [
            (u'Conitea', u'Tapahtuman järjestelytoimikunnan eli conitean jäsen'),
            (u'Erikoistehtävä', u'Mikäli olet sopinut erikseen työtehtävistä ja/tai sinut on ohjeistettu täyttämään lomake, valitse tämä ja kerro tarkemmin Vapaa alue -kentässä mihin tehtävään ja kenen toimesta sinut on valittu.'),
            (u'Järjestyksenvalvoja', u'Kävijöiden turvallisuuden valvominen conipaikalla ja yömajoituksessa. Edellyttää voimassa olevaa JV-korttia ja asiakaspalveluasennetta. HUOM! Et voi valita tätä tehtävää hakemukseesi, ellet ole täyttänyt tietoihisi JV-kortin numeroa (oikealta ylhäältä oma nimesi &gt; Pätevyydet).'),
            (u'Ensiapu', 'Toimit osana tapahtuman omaa ensiapuryhmää. Vuoroja päivisin ja öisin tapahtuman aukioloaikoina. Vaaditaan vähintään voimassa oleva EA1 -kortti ja osalta myös voimassa oleva EA2 -kortti. Kerro Työkokemus -kohdassa osaamisestasi, esim. oletko toiminut EA-tehtävissä tapahtumissa tai oletko sairaanhoitaja/lähihoitaja koulutuksestaltasi.'),
            (u'Kasaus ja purku', u'Kalusteiden siirtelyä & opasteiden kiinnittämistä. Ei vaadi erikoisosaamista. Työvuoroja myös jo pe sekä su conin sulkeuduttua, kerro lisätiedoissa jos voit osallistua näihin.'),
            (u'Logistiikka', u'Autokuskina toimimista ja tavaroiden/ihmisten hakua ja noutamista. B-luokan ajokortti vaaditaan. Työvuoroja myös perjantaille.'),
            (u'Majoitusvalvoja', u'Huolehtivat lattiamajoituspaikkojen pyörittämisestä yöaikaan. Työvuoroja myös molempina öinä.'),
            (u'Myynti', u'Pääsylippujen ja Tracon-oheistuotteiden myyntiä sekä lippujen tarkastamista. Myyjiltä edellytetään täysi-ikäisyyttä, asiakaspalveluhenkeä ja huolellisuutta rahankäsittelyssä. Vuoroja myös perjantaina.'),
            (u'Narikka', u'Narikassa ja isotavara- eli asenarikassa säilytetään tapahtuman aikana kävijöiden omaisuutta. Tehtävä ei vaadi erikoisosaamista.'),
            (u'Ohjelma-avustaja', u'Lautapelien pyörittämistä, karaoken valvontaa, cosplay-kisaajien avustamista. Kerro Vapaa alue -kohdassa tarkemmin, mitä haluaisit tehdä. Huom! Puheohjelmasalien vänkäreiltä toivotaan AV-tekniikan osaamista.'),
            (u'Green room', u'Työvoiman ruokahuolto green roomissa. Hygieniapassi suositeltava.'),
            (u'Taltiointi', u'Taltioinnin keskeisiin tehtäviin kuuluvat mm. saleissa esitettävien ohjelmanumeroiden videointi tapahtumassa ja editointi tapahtuman jälkeen. Lisäksi videoidaan dokumentaarisella otteella myös yleisesti tapahtumaa. Kerro Työkokemus-kentässä aiemmasta videokuvauskokemuksestasi (esim. linkkejä videogallerioihisi) sekä mitä haluaisit taltioinnissa tehdä.'),
            (u'Tekniikka', u'Salitekniikan (AV) ja tietotekniikan (tulostimet, lähiverkot, WLAN) nopeaa MacGyver-henkistä ongelmanratkaisua.'),
            (u'Valokuvaus', u'Valokuvaus tapahtuu pääasiassa kuvaajien omilla järjestelmäkameroilla. Tehtäviä voivat olla studiokuvaus, salikuvaus sekä yleinen valokuvaus. Kerro Työkokemus-kentässä aiemmasta valokuvauskokemuksestasi (esim. linkkejä kuvagallerioihisi) sekä mitä/missä haluaisit tapahtumassa valokuvata.'),
            (u'Yleisvänkäri', u'Sekalaisia tehtäviä laidasta laitaan, jotka eivät vaadi erikoisosaamista. Voit halutessasi kirjata lisätietoihin, mitä osaat ja haluaisit tehdä.'),
            (u'Info', u'Infopisteen henkilökunta vastaa kävijöiden kysymyksiin ja ratkaisee heidän ongelmiaan tapahtuman paikana. Tehtävä edellyttää asiakaspalveluasennetta, tervettä järkeä ja ongelmanratkaisukykyä.'),
        ]:
            JobCategory.objects.get_or_create(
                event=event,
                name=name,
                defaults=dict(
                    description=description,
                    slug=slugify(name),
                )
            )

        labour_event_meta.create_groups()

        for name in [u'Conitea']:
            JobCategory.objects.filter(event=event, name=name).update(public=False)

        jvkortti = Qualification.objects.get(name='JV-kortti')
        jv = JobCategory.objects.get(
            event=event,
            name=u'Järjestyksenvalvoja'
        )
        if not jv.required_qualifications.exists():
            jv.required_qualifications = [jvkortti]
            jv.save()

        b_ajokortti = Qualification.objects.get(slug='b-ajokortti')
        logistiikka = JobCategory.objects.get(
            event=event,
            name=u'Logistiikka',
        )
        if not logistiikka.required_qualifications.exists():
            logistiikka.required_qualifications = [b_ajokortti]
            logistiikka.save()

        period_length = timedelta(hours=8)
        for period_description, period_start in [
            ("Lauantain aamuvuoro (la klo 08-16)", event.start_time.replace(hour=8)),
            ("Lauantain iltavuoro (la klo 16-24)", event.start_time.replace(hour=16)),
            ("Lauantai-sunnuntai-yövuoro (su klo 00-08)", event.end_time.replace(hour=0)),
            ("Sunnuntain aamuvuoro (su klo 08-16)", event.end_time.replace(hour=8)),
            ("Sunnuntain iltavuoro (su klo 16-20)", event.end_time.replace(hour=16)),
        ]:
            WorkPeriod.objects.get_or_create(
                event=event,
                description=period_description,
                defaults=dict(
                    start_time=period_start,
                    end_time=period_start + period_length
                )
            )

        for diet_name in [
            u'Gluteeniton',
            u'Laktoositon',
            u'Maidoton',
            u'Vegaaninen',
            u'Lakto-ovo-vegetaristinen',
        ]:
            SpecialDiet.objects.get_or_create(name=diet_name)

        for night in [
            u'Perjantain ja lauantain välinen yö',
            u'Lauantain ja sunnuntain välinen yö',
        ]:
            Night.objects.get_or_create(name=night)

        AlternativeSignupForm.objects.get_or_create(
            event=event,
            slug=u'conitea',
            defaults=dict(
                title=u'Conitean ilmoittautumislomake',
                signup_form_class_path='events.tracon9.forms:OrganizerSignupForm',
                signup_extra_form_class_path='events.tracon9.forms:OrganizerSignupExtraForm',
                active_from=datetime(2014, 7, 7, 12, 0, 0, tzinfo=tz),
                active_until=datetime(2014, 8, 31, 23, 59, 59, tzinfo=tz),
            ),
        )

        for wiki_space, link_title, link_group in [
            ('TERA', 'Työvoimawiki', 'accepted'),
            ('INFO', 'Infowiki', 'info'),
        ]:
            InfoLink.objects.get_or_create(
                event=event,
                title=link_title,
                defaults=dict(
                    url='https://confluence.tracon.fi/display/{wiki_space}'.format(wiki_space=wiki_space),
                    group=labour_event_meta.get_group(link_group),
                )
            )


        #
        # Programme
        #

        programme_admin_group, = ProgrammeEventMeta.get_or_create_groups(event, ['admins'])
        programme_event_meta, unused = ProgrammeEventMeta.objects.get_or_create(event=event, defaults=dict(
            public=False,
            admin_group=programme_admin_group,
            contact_email='Tracon 9 -ohjelmatiimi <*****@*****.**>',
        ))

        room_order = 0
        for room_name in [
            u'Iso sali',
            u'Pieni sali',
            u'Sopraano',
            u'Rondo',
            u'Studio',
            u'Sonaatti 1',
            u'Sonaatti 2',
            u'Basso',
            u'Opus 1',
            u'Opus 2',
            u'Opus 3',
            u'Opus 4',
            u'Puistolava',
            u'Puisto - Iso miittiteltta',
            u'Puisto - Pieni miittiteltta',
            u'Puisto - Bofferiteltta',
        ]:
            room_order += 100
            Room.objects.get_or_create(
                venue=venue,
                slug=slugify(room_name),
                defaults=dict(
                    name=room_name,
                    order=room_order
                )
            )

        # programme v5
        if not programme_event_meta.contact_email:
            programme_event_meta.contact_email = '*****@*****.**'
            programme_event_meta.save()

        role, unused = Role.objects.get_or_create(
            title=u'Ohjelmanjärjestäjä',
            defaults=dict(
                is_default=True,
                require_contact_info=True,
            )
        )

        # programme v8
        role.is_default = True
        role.save()

        for title, style in [
            (u'Animeohjelma', u'anime'),
            (u'Cosplayohjelma', u'cosplay'),
            (u'Miitti', u'miitti'),
            (u'Muu ohjelma', u'muu'),
            (u'Roolipeliohjelma', u'rope'),
        ]:
            Category.objects.get_or_create(
                event=event,
                style=style,
                defaults=dict(
                    title=title,
                )
            )

        if settings.DEBUG:
            # create some test programme
            Programme.objects.get_or_create(
                category=Category.objects.get(title='Animeohjelma', event=event),
                title='Yaoi-paneeli',
                defaults=dict(
                    description='Kika-kika tirsk',
                )
            )

        # programme v6
        for start_time, end_time in [
            (
                datetime(2014, 9, 13, 11, 0, 0, tzinfo=tz),
                datetime(2014, 9, 14, 1 , 0, 0, tzinfo=tz)
            ),
            (
                datetime(2014, 9, 14, 9 , 0, 0, tzinfo=tz),
                datetime(2014, 9, 14, 17, 0, 0, tzinfo=tz)
            )
        ]:
            TimeBlock.objects.get_or_create(
                event=event,
                start_time=start_time,
                defaults=dict(
                    end_time=end_time
                )
            )

        SpecialStartTime.objects.get_or_create(
            event=event,
            start_time=datetime(2014, 9, 13, 10, 30, 0, tzinfo=tz),
        )

        for view_name, room_names in [
            (u'Pääohjelmatilat', [
                u'Iso sali',
                u'Pieni sali',
                u'Studio',
                u'Sonaatti 1',
                u'Sonaatti 2',
                u'Sopraano',
            ]),
            (u'Toissijaiset ohjelmatilat', [
                u'Opus 1',
                u'Puistolava',
                u'Puisto - Iso miittiteltta',
                u'Puisto - Pieni miittiteltta',
            ]),
        ]:
            rooms = [Room.objects.get(name__iexact=room_name, venue=venue)
                for room_name in room_names]

            view, created = View.objects.get_or_create(event=event, name=view_name)

            if created:
                view.rooms = rooms
                view.save()


        #
        # Tickets
        #

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(event, ['admins'])
        give_all_app_perms_to_group('tickets', tickets_admin_group)

        tickets_event_meta_defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=100,
            reference_number_template='9{:05d}',
            contact_email='Tracon 9 -lipunmyynti <*****@*****.**>',
            plain_contact_email='*****@*****.**',
            ticket_spam_email='*****@*****.**',
            ticket_free_text=u"Tämä on sähköinen lippusi Tracon 9 -tapahtumaan. Sähköinen lippu vaihdetaan rannekkeeseen\n"
                u"lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai näyttää sen\n"
                u"älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole mahdollista, ota ylös\n"
                u"kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva sanakoodi ja ilmoita se\n"
                u"lipunvaihtopisteessä.\n\n"
                u"Tervetuloa Traconiin!"
        )

        if settings.DEBUG:
            t = now()
            tickets_event_meta_defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )
        else:
            tickets_event_meta_defaults.update(
                ticket_sales_starts=datetime(2014, 3, 1, 0, 0, tzinfo=tz),
                ticket_sales_ends=datetime(2014, 8, 31, 0, 0, tzinfo=tz),
            )

        tickets_meta, unused = TicketsEventMeta.objects.get_or_create(
            event=event,
            defaults=tickets_event_meta_defaults,
        )

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        def ordering():
            ordering.counter += 10
            return ordering.counter
        ordering.counter = 0

        for product_info in [
            dict(
                name=u'Koko viikonlopun lippu (e-lippu)',
                description=u'Voimassa koko viikonlopun ajan la klo 10 - su klo 18. Toimitetaan sähköpostitse PDF-tiedostona. Ei toimituskuluja.',
                limit_groups=[
                    limit_group('Lauantain liput', 5000),
                    limit_group('Sunnuntain liput', 5000),
                ],
                price_cents=1800,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=ordering()
            ),

            dict(
                name=u'Koko viikonlopun lippu (postitse)',
                description=u'Voimassa koko viikonlopun ajan la klo 10 - su klo 18. Toimitetaan kirjeenä kotiisi. Toimituskulut 1,00 €/tilaus.',
                limit_groups=[
                    limit_group('Lauantain liput', 5000),
                    limit_group('Sunnuntain liput', 5000),
                ],
                price_cents=1800,
                requires_shipping=True,
                available=True,
                ordering=ordering()
            ),

            dict(
                name=u'Lauantailippu (e-lippu)',
                description=u'Voimassa koko lauantaipäivän ajan la klo 10 - su klo 08. Toimitetaan sähköpostitse PDF-tiedostona. Ei toimituskuluja.',
                limit_groups=[
                    limit_group('Lauantain liput', 5000),
                ],
                price_cents=1200,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=ordering()
            ),

            dict(
                name=u'Lauantailippu (postitse)',
                description=u'Voimassa koko lauantaipäivän ajan la klo 10 - su klo 08. Toimitetaan kirjeenä kotiisi. Toimituskulut 1,00 €/tilaus.',
                limit_groups=[
                    limit_group('Lauantain liput', 5000),
                ],
                price_cents=1200,
                requires_shipping=True,
                available=True,
                ordering=ordering()
            ),

            dict(
                name=u'Sunnuntailippu (e-lippu)',
                description=u'Voimassa koko sunnuntai ajan su klo 00 - su klo 18. Toimitetaan sähköpostitse PDF-tiedostona. Ei toimituskuluja.',
                limit_groups=[
                    limit_group('Sunnuntain liput', 5000),
                ],
                price_cents=1000,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=ordering()
            ),

            dict(
                name=u'Sunnuntailippu (postitse)',
                description=u'Voimassa koko sunnuntai ajan su klo 00 - su klo 18. Toimitetaan kirjeenä kotiisi. Toimituskulut 1,00 €/tilaus.',
                limit_groups=[
                    limit_group('Sunnuntain liput', 5000),
                ],
                price_cents=1000,
                requires_shipping=True,
                available=True,
                ordering=ordering()
            ),

            dict(
                name=u'Lattiamajoitus 2 yötä pe-su (Aleksanterin koulu)',
                description=u'Lattiamajoituspaikka pe-la ja la-su välisiksi öiksi Aleksanterin koululta. Majoituspaikasta ei tule erillistä lippua, vaan majoitus toimii nimilistaperiaatteella. Majoituspaikoista ei aiheudu toimituskuluja. Saat lisäohjeita majoituksesta sähköpostiisi ennen tapahtumaa.',
                limit_groups=[
                    limit_group('Lattiamajoitus pe-la, Aleksanterin koulu', 80),
                    limit_group('Lattiamajoitus la-su, Aleksanterin koulu', 130),
                ],
                price_cents=2000,
                requires_shipping=False,
                available=True,
                ordering=ordering()
            ),

            dict(
                name=u'Lattiamajoitus 1 yö la-su (Amurin koulu)',
                description=u'Lattiamajoituspaikka lauantain ja sunnuntain väliseksi yöksi Amurin koululta. Majoituspaikasta ei tule erillistä lippua, vaan majoitus toimii nimilistaperiaatteella. Majoituspaikoista ei aiheudu toimituskuluja. Saat lisäohjeita majoituksesta sähköpostiisi ennen tapahtumaa.',
                limit_groups=[
                    limit_group('Lattiamajoitus la-su, Amurin koulu', 250),
                ],
                price_cents=1000,
                requires_shipping=False,
                available=True,
                ordering=ordering()
            ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')
            product, unused = Product.objects.get_or_create(event=event, name=name, defaults=product_info)
            if not product.limit_groups.exists():
                product.limit_groups = limit_groups
                product.save()

        for tag_title, tag_class in [
            ('Suositeltu', 'hilight'),
            ('In English', 'label-success'),
            ('K-18', 'label-danger'),
            ('K-16', 'label-warning'),
            ('K-15', 'label-warning'),
        ]:
            Tag.objects.get_or_create(
                event=event,
                title=tag_title,
                defaults=dict(
                    style=tag_class,
                ),
            )



        #
        # Badges
        #
        badge_admin_group, = BadgesEventMeta.get_or_create_groups(event, ['admins'])

        BadgesEventMeta.objects.get_or_create(
            event=event,
            defaults=dict(
                badge_factory_code='tracon9.badges:badge_factory',
                admin_group=badge_admin_group,
            )
        )

        if False:  # Disabled -- where has "Template" gone?
            for template_name in [
                u'Conitea',
                u'Ylivänkäri',
                u'Työvoima',
                u'Ohjelmanjärjestäjä',
                u'Media',
                u'Myyjä',
                u'Vieras',
                u'Guest of Honour',
                u'Viikonloppulippu',
                u'Lauantailippu',
                u'Sunnuntailippu',
            ]:
                Template.objects.get_or_create(
                    event=event,
                    slug=slugify(template_name),
                    defaults=dict(
                        name=template_name
                    ),
                )
Пример #9
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2017{:05d}",
            contact_email='Yukicon <*****@*****.**>',
            ticket_free_text="Tämä on sähköinen lippusi. Sähköinen lippu vaihdetaan rannekkeeseen\n"
                "lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai näyttää sen\n"
                "älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole mahdollista, ota ylös\n"
                "kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva sanakoodi ja ilmoita se\n"
                "lipunvaihtopisteessä.\n\n"
                "Tervetuloa tapahtumaan!",
            front_page_text="<h2>Tervetuloa ostamaan pääsylippuja Yukicon 4.0- ja Pyrycon-tapahtumiin!</h2>"
                "<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
                "<p>Lue lisää tapahtumasta <a href='http://www.yukicon.fi' target='_blank'>Yukiconin kotisivuilta</a>.</p>",
            print_logo_path=mkpath('static', 'images', 'yukicon2017_logo.jpg'),
            print_logo_width_mm=50,
            print_logo_height_mm=16
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(event=self.event, defaults=defaults)

        if 'yukicon_436_test' in meta.print_logo_path or 'png' in meta.print_logo_path:
            meta.print_logo_path = mkpath('static', 'images', 'yukicon2017_logo.jpg')
            meta.print_logo_height_mm = 16
            meta.save()

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        for product_info in [
            dict(
                name='Yukicon 4.0 – Early Access',
                description='Early Access -lipulla pääset Yukiconiin 18.–19.2.2017. Lippu oikeuttaa Early Access -etuuksien lunastuksen. Lippu ei oikeuta pääsyä Pyryconiin. Maksettuasi sinulle lähetetään PDF-lippu antamaasi sähköpostiin, jota vastaan saat rannekkeen tapahtuman ovelta.',
                limit_groups=[
                    limit_group('Early Access', 200),
                ],
                price_cents=2900,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=self.get_ordering_number(),
            ),
            dict(
                name='Pyryconin pääsylippu',
                description='Lipulla pääset Pyryconiin perjantaina 17. helmikuuta 2017. Lippu ei oikeuta pääsyä Yukiconiin. Maksettuasi sinulle lähetetään PDF-lippu antamaasi sähköpostiin, jota vastaan saat rannekkeen tapahtuman ovelta. Ei palautus- tai vaihto-oikeutta.',
                limit_groups=[
                    limit_group('Pyrycon', 1200),
                ],
                price_cents=600,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=self.get_ordering_number(),
            ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event,
                name=name,
                defaults=product_info
            )

            if not product.limit_groups.exists():
                product.limit_groups = limit_groups
                product.save()
Пример #10
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, pos_access_group = TicketsEventMeta.get_or_create_groups(self.event, ['admins', 'pos'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2018{:05d}",
            contact_email='Ropecon 2018 -lipunmyynti <*****@*****.**>',
            ticket_free_text="Tämä on sähköinen lippusi Ropecon 2018 -tapahtumaan. Sähköinen lippu vaihdetaan rannekkeeseen\n"
                "lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai näyttää sen\n"
                "älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole mahdollista, ota ylös\n"
                "kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva Kissakoodi ja ilmoita se\n"
                "lipunvaihtopisteessä.\n\n"
                "Tervetuloa Ropeconiin!",
            front_page_text="<h2>Tervetuloa Ropeconin lippukauppaan!</h2>"
                "<p>Liput maksetaan tilauksen yhteydessä käyttämällä suomalaia verkkopankkipalveluja.</p>"
                "<p>Maksetut liput toimitetaan e-lippuina sähköpostitse asiakkaan antamaan osoitteeseen. E-liput vaihdetaan rannekkeiksi tapahtuman lipunmyyntipisteillä 27.–29.7.2018.</p>"
                "<p>Lisätietoja lipuista saat tapahtuman verkkosivuilta. <a href='https://2018.ropecon.fi/liput/'>Siirry takaisin tapahtuman verkkosivuille</a>.</p>"
                "<p>Huom! Tämä verkkokauppa palvelee ainoastaan asiakkaita, joilla on osoite Suomessa. Mikäli tarvitset "
                "toimituksen ulkomaille, ole hyvä ja ota sähköpostitse yhteyttä: <em>[email protected]</em>"
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )
        else:
            defaults.update(
                ticket_sales_starts=datetime(2018, 2, 14, 10, 0, tzinfo=self.tz),
                ticket_sales_ends=datetime(2018, 7, 2, 0, 0, tzinfo=self.tz),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(event=self.event, defaults=defaults)

        # migration 0024_ticketseventmeta_pos_access_group
        if meta.pos_access_group is None:
            meta.pos_access_group = pos_access_group
            meta.save()

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        for product_info in [
            dict(
                name='Ropecon 2018 viikonloppulippu pe-su, aikuiset',
                description='Ropecon 2018-tapahtuman pääsylippu 27.-29.7.2018.',
                limit_groups=[
                    limit_group('Pääsyliput', 9999),
                ],
                price_cents=3800,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=self.get_ordering_number(),
            ),
            dict(
                name='Ropecon 2018 viikonloppulippu pe-su, lapset',
                description='7-12-vuotiaat lapset aikuisen seurassa.',
                limit_groups=[
                    limit_group('Pääsyliput', 9999),
                ],
                price_cents=2000,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=self.get_ordering_number(),
            ),
            dict(
                name='Ropecon 2018 -tapahtuman kannatusranneke',
                description='Sisältää pääsylipun Ropecon 2018 -tapahtumaan 27.–29.7.2018 sekä Ropecon ry:n jäsenyyden vuodelle 2018.',
                limit_groups=[
                    limit_group('Pääsyliput', 9999),
                ],
                price_cents=7000,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=self.get_ordering_number(),
            ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event,
                name=name,
                defaults=product_info
            )

            if not product.limit_groups.exists():
                product.limit_groups.set(limit_groups)
                product.save()
Пример #11
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product, ShirtType, ShirtSize

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2017{:05d}",
            contact_email='Ropeconin lipunmyynti <*****@*****.**>',
            front_page_text=(
                "<h2>Tervetuloa ostamaan pääsylippuja Ropeconiin!</h2>"
                "<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä. Liput lähetetään "
                "sähköpostitse e-lippuina, jotka vaihdetaan rannekkeiksi saapuessasi tapahtumaan.</p>"
                "<p>Lue lisää tapahtumasta <a href='http://ropecon.fi'>Ropeconin kotisivuilta</a>.</p>"
            ),
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )
        else:
            # defaults.update(
            #     ticket_sales_starts=datetime(2015, 1, 25, 18, 0, tzinfo=self.tz),
            #     # ticket_sales_ends=datetime(2015, 1, 11, 18, 0, tzinfo=self.tz),
            # )
            pass

        meta, unused = TicketsEventMeta.objects.get_or_create(event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        def ordering():
            ordering.counter += 10
            return ordering.counter
        ordering.counter = 0

        for product_info in [
            dict(
                name='Ropecon 2017 viikonloppulippu pe–su (Norppa & Kultisti -kampanja)',
                description=(
                    'Ropecon 2017 -tapahtuman pääsylippu, joka oikeuttaa kolmen päivän '
                    'sisäänpääsyrannekkeeseen. Kun tilaat lippusi 28.2. mennessä, saat myös Norppa & Kultisti '
                    '-kangasmerkin!'
                ),
                limit_groups=[
                    limit_group('Pääsyliput perjantai', 10000),
                    limit_group('Pääsyliput lauantai', 10000),
                    limit_group('Pääsyliput sunnuntai', 10000),
                ],
                price_cents=3500,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=ordering(),
            ),
            dict(
                name='Ropecon 2017 viikonloppulippu pe–su',
                description=(
                    'Ropecon 2017 -tapahtuman pääsylippu, joka oikeuttaa kolmen päivän '
                    'sisäänpääsyrannekkeeseen.'
                ),
                limit_groups=[
                    limit_group('Pääsyliput perjantai', 10000),
                    limit_group('Pääsyliput lauantai', 10000),
                    limit_group('Pääsyliput sunnuntai', 10000),
                ],
                price_cents=3500,
                requires_shipping=False,
                electronic_ticket=True,
                available=False,
                ordering=ordering(),
            ),
            dict(
                name='Ropecon 2017 Conformers -paita',
                description=(
                    'T-paidat maksetaan ennakkoon ja noudetaan tapahtumasta. Paitakoot valitaan seuraavassa '
                    'vaiheessa. <a href="https://2017.ropecon.fi/spessupaita-2017/" target="_blank">Lue lisää '
                    'paitamalleista ja katso kokotaulukot</a>'
                ),
                limit_groups=[
                    limit_group('T-paidat', 10000),
                ],
                price_cents=3000,
                requires_shipping=False,
                electronic_ticket=True,
                requires_shirt_size=True,
                available=True,
                ordering=ordering(),
            ),

            # dict(
            #     name='Ropecon 2017 päivälippu perjantai',
            #     description='Ropecon 2017 tapahtuman pääsylippu oikeuttaen yhden päivän sisäänpääsyrannekkeeseen.',
            #     limit_groups=[
            #         limit_group('Pääsyliput perjantai', 10000),
            #     ],
            #     price_cents=2200,
            #     requires_shipping=False,
            #     electronic_ticket=True,
            #     available=True,
            #     ordering=ordering(),
            # ),
            # dict(
            #     name='Ropecon 2017 päivälippu lauantai',
            #     description='Ropecon 2017 tapahtuman pääsylippu oikeuttaen yhden päivän sisäänpääsyrannekkeeseen.',
            #     limit_groups=[
            #         limit_group('Pääsyliput lauantai', 10000),
            #     ],
            #     price_cents=2200,
            #     requires_shipping=False,
            #     electronic_ticket=True,
            #     available=True,
            #     ordering=ordering(),
            # ),
            # dict(
            #     name='Ropecon 2017 päivälippu sunnuntai',
            #     description='Ropecon 2017 tapahtuman pääsylippu oikeuttaen yhden päivän sisäänpääsyrannekkeeseen.',
            #     limit_groups=[
            #         limit_group('Pääsyliput sunnuntai', 10000),
            #     ],
            #     price_cents=1500,
            #     requires_shipping=False,
            #     electronic_ticket=True,
            #     available=True,
            #     ordering=ordering(),
            # ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event,
                name=name,
                defaults=product_info
            )

            if not product.limit_groups.exists():
                product.limit_groups = limit_groups
                product.save()

        for shirt_type_name, shirt_size_names in [
            ('Unisex-T-paita', ['XS', 'S', 'M', 'L', 'XL', 'XXL', '3XL', '4XL']),
            ('Naisten muotoonleikattu paita', ['XS', 'S', 'M', 'L', 'XL', 'XXL']),
            ('Miesten muotoonleikattu paita', ['S', 'M', 'L', 'XL', 'XXL']),
        ]:
            for shirt_color in [
                'Musta',
            ]:
                shirt_type, created = ShirtType.objects.get_or_create(
                    event=self.event,
                    name='{shirt_type_name} – {shirt_color}'.format(
                        shirt_type_name=shirt_type_name,
                        shirt_color=shirt_color,
                    ),
                )

                for shirt_size_name in shirt_size_names:
                    ShirtSize.objects.get_or_create(
                        type=shirt_type,
                        name=shirt_size_name,
                    )
Пример #12
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2016{:05d}",
            contact_email='Ropeconin lipunmyynti <*****@*****.**>',
            plain_contact_email='*****@*****.**',
            front_page_text=u"<h2>Tervetuloa ostamaan pääsylippuja Ropeconiin!</h2>"
                u"<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä. Liput lähetetään sähköpostitse e-lippuina, jotka vaihdetaan rannekkeiksi saapuessasi tapahtumaan.</p>"
                u"<p>Lue lisää tapahtumasta <a href='http://ropecon.fi'>Ropeconin kotisivuilta</a>.</p>",
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )
        else:
            # defaults.update(
            #     ticket_sales_starts=datetime(2015, 1, 25, 18, 0, tzinfo=self.tz),
            #     # ticket_sales_ends=datetime(2015, 1, 11, 18, 0, tzinfo=self.tz),
            # )
            pass

        meta, unused = TicketsEventMeta.objects.get_or_create(event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        def ordering():
            ordering.counter += 10
            return ordering.counter
        ordering.counter = 0

        for product_info in [
            dict(
                name=u'Ropecon 2016 viikonloppulippu pe-su',
                description=u'Ropecon 2016 tapahtuman pääsylippu oikeuttaen kolmen päivän sisäänpääsyrannekkeeseen.',
                limit_groups=[
                    limit_group('Pääsyliput perjantai', 10000),
                    limit_group('Pääsyliput lauantai', 10000),
                    limit_group('Pääsyliput sunnuntai', 10000),
                ],
                price_cents=3200,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=ordering(),
            ),
            dict(
                name=u'Ropecon 2016 päivälippu perjantai',
                description=u'Ropecon 2016 tapahtuman pääsylippu oikeuttaen yhden päivän sisäänpääsyrannekkeeseen.',
                limit_groups=[
                    limit_group('Pääsyliput perjantai', 10000),
                ],
                price_cents=2200,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=ordering(),
            ),
            dict(
                name=u'Ropecon 2016 päivälippu lauantai',
                description=u'Ropecon 2016 tapahtuman pääsylippu oikeuttaen yhden päivän sisäänpääsyrannekkeeseen.',
                limit_groups=[
                    limit_group('Pääsyliput lauantai', 10000),
                ],
                price_cents=2200,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=ordering(),
            ),
          dict(
                name=u'Ropecon 2016 päivälippu sunnuntai',
                description=u'Ropecon 2016 tapahtuman pääsylippu oikeuttaen yhden päivän sisäänpääsyrannekkeeseen.',
                limit_groups=[
                    limit_group('Pääsyliput sunnuntai', 10000),
                ],
                price_cents=1500,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=ordering(),
            ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event,
                name=name,
                defaults=product_info
            )

            if not product.limit_groups.exists():
                product.limit_groups = limit_groups
                product.save()
Пример #13
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2019{:06d}",
            contact_email='Matsucon <*****@*****.**>',
            ticket_free_text=
                "Tämä on sähköinen lippusi Matsucon 2019 -tapahtumaan. Sähköinen lippu vaihdetaan\n"
                "rannekkeeseen lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai\n"
                "näyttää sen älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole\n"
                "mahdollista, ota ylös kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva\n"
                "Kissakoodi ja ilmoita se lipunvaihtopisteessä.\n\n"
                "Tervetuloa Matsuconhin!",
            front_page_text="<h2>Tervetuloa ostamaan pääsylippuja Matsucon 2019 -tapahtumaan!</h2>"
                "<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
                "<p>Lue lisää tapahtumasta <a href='http://matsucon.fi'>Matsucon 2019 -tapahtuman kotisivuilta</a>.</p>",
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        def ordering():
            ordering.counter += 10
            return ordering.counter
        ordering.counter = 0

        for product_info in [
            dict(
                name='Viikonlopun lippu',
                description='Viikonloppulippu oikeuttaa sisäänpääsyyn Matsuconin kumpanakin päivänä (3.–4.8.). Sähköinen lippu vaihdetaan ovella rannekkeeseen.',
                limit_groups=[
                    limit_group('Viikonloppuliput', 460),
                ],
                price_cents=1500,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=ordering(),
            ),

            dict(
                name='Lauantain lippu',
                description='Lauantailippu oikeuttaa sisäänpääsyyn Matsuconin ensimmäisenä päivänä (3.8.). Sähköinen lippu vaihdetaan ovella rannekkeeseen.',
                limit_groups=[
                    limit_group('Lauantailiput', 125),
                ],
                price_cents=1000,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=ordering(),
            ),

            dict(
                name='Sunnuntain lippu',
                description='Sunnuntailippu oikeuttaa sisäänpääsyyn Matsuconin toisena päivänä (4.8.). Sähköinen lippu vaihdetaan ovella rannekkeeseen.',
                limit_groups=[
                    limit_group('Sunnuntailiput', 110),
                ],
                price_cents=1000,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=ordering(),
            ),

            # dict(
            #     name='Lattiamajoitus',
            #     description='Lattiamajoitus lauantain ja sunnuntain väliselle yölle tapahtumapaikalla.',
            #     limit_groups=[
            #         limit_group('Lattiamajoituspaikat', 40),
            #     ],
            #     price_cents=700,
            #     requires_shipping=False,
            #     electronic_ticket=False,
            #     requires_accommodation_information=True,
            #     available=True,
            #     ordering=ordering(),
            # ),

            # dict(
            #     name='Lattiamajoitus + aamiainen',
            #     description='Lattiamajoitus sekä aamiainen lauantain ja sunnuntain väliselle yölle tapahtumapaikalla.',
            #     limit_groups=[
            #         limit_group('Lattiamajoituspaikat', 40),
            #     ],
            #     price_cents=1000,
            #     requires_shipping=False,
            #     electronic_ticket=False,
            #     requires_accommodation_information=True,
            #     available=True,
            #     ordering=ordering(),
            # ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event,
                name=name,
                defaults=product_info
            )

            if not product.limit_groups.exists():
                product.limit_groups.set(limit_groups)
                product.save()
Пример #14
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2015{:05d}",
            contact_email='Traconin lipunmyynti <*****@*****.**>',
            ticket_free_text="Tämä on sähköinen lippusi Tracon X -tapahtumaan. Sähköinen lippu vaihdetaan rannekkeeseen\n"
                "lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai näyttää sen\n"
                "älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole mahdollista, ota ylös\n"
                "kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva sanakoodi ja ilmoita se\n"
                "lipunvaihtopisteessä.\n\n"
                "Tervetuloa Traconiin!",
            front_page_text="<h2>Tervetuloa ostamaan pääsylippuja Tracon X -tapahtumaan!</h2>"
                "<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
                "<p>Lue lisää tapahtumasta <a href='http://2015.tracon.fi'>Traconin kotisivuilta</a>.</p>",
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )
        else:
            defaults.update(
                ticket_sales_starts=datetime(2014, 12, 1, 0, 0, tzinfo=self.tz),
                ticket_sales_ends=datetime(2015, 12, 12, 23, 59, 59, tzinfo=self.tz),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        def ordering():
            ordering.counter += 10
            return ordering.counter
        ordering.counter = 0

        for product_info in [
            dict(
                name='Joulupaketti - 2 kpl viikonloppulippu ja 1 kpl kalenteri',
                description='Paketti sisältää kaksi viikonloppulippua ja yhden Tracon 2015 -seinäkalenterin. Tuotteet toimitetaan antamaasi osoitteeseen postitse, ja postikulut sisältyvät hintaan.',
                internal_description='HUOM! Järjestelmä ei tue lippukiintiöiden kuluttamista kahdella per myyty paketti, joten lippukiintiöt täytyy korjata käsin kun joulupaketit on myyty.',
                limit_groups=[
                    # limit_group('Lauantain liput', 5000, 2),
                    # limit_group('Sunnuntain liput', 5000, 2),
                    limit_group('Joulupaketti A', 80),
                ],
                price_cents=6000,
                requires_shipping=True,
                electronic_ticket=False,
                available=False,
                ordering=ordering(),
            ),
            dict(
                name='Joulupaketti - 1 kpl viikonloppulippu ja 1 kpl kalenteri',
                description='Paketti sisältää yhden viikonloppulipun ja yhden Tracon 2015 -seinäkalenterin. Tuotteet toimitetaan antamaasi osoitteeseen postitse, ja postikulut sisältyvät hintaan.',
                limit_groups=[
                    limit_group('Lauantain liput', 3525),
                    limit_group('Sunnuntain liput', 3525),
                    limit_group('Joulupaketti B', 80),
                ],
                price_cents=3500,
                requires_shipping=True,
                electronic_ticket=False,
                available=False,
                ordering=ordering(),
            ),
            dict(
                name='Viikonloppulippu',
                description='Viikonloppulippu Tracon 2015 -tapahtumaan. Voimassa koko viikonlopun ajan la klo 10 – su klo 18. Toimitetaan sähköpostitse PDF-tiedostona, jossa olevaa viivakoodia vastaan saat rannekkeen tapahtumaan saapuessasi.',
                limit_groups=[
                    limit_group('Lauantain liput', 3525),
                    limit_group('Sunnuntain liput', 3525),
                ],
                price_cents=2500,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=ordering(),
            ),
            dict(
                name='Lauantailippu',
                description='Lauantailippu Tracon 2015 -tapahtumaan. Voimassa koko lauantaipäivän ajan la klo 10 – su klo 08. Toimitetaan sähköpostitse PDF-tiedostona, jossa olevaa viivakoodia vastaan saat rannekkeen tapahtumaan saapuessasi.',
                limit_groups=[
                    limit_group('Lauantain liput', 3525),
                ],
                price_cents=1800,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=ordering(),
            ),
            dict(
                name='Sunnuntailippu',
                description='Lauantailippu Tracon 2015 -tapahtumaan. Voimassa koko sunnuntaipäivän ajan su klo 00 - su klo 18. Toimitetaan sähköpostitse PDF-tiedostona, jossa olevaa viivakoodia vastaan saat rannekkeen tapahtumaan saapuessasi.',
                limit_groups=[
                    limit_group('Sunnuntain liput', 3525),
                ],
                price_cents=1500,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=ordering(),
            ),
            dict(
                name='Konserttipaketti Traconin kävijälle',
                description='Sisältää liput The Super Sound of Videogames 2 -konserttiin sekä Traconin iltabileisiin.</p><p>'
                    'The Super Sound of Videogames 2 -konsertti perjantaina 4. syyskuuta klo 19 Tampere-talossa. Esiintymässä QUINSONITUS ja TAKOMO PERCUSSION. Lisätietoja <a href="http://www.tampere-talo.fi/supersound" target="_blank">Tampere-talon sivuilta</a> (avautuu uuteen ikkunaan).</p><p>'
                    'Traconin iltabileet Pakkahuoneella lauantaina 5. syyskuuta 2015 kello 19–01. Esiintymässä MACHINAE SUPREMACY (SWE) sekä YOHIO (SWE) + DJ:t Klubilla. Ei sisällä narikkamaksua 2 €.</p><p>'
                    'HUOM! Tämä lippu oikeuttaa pääsyyn tilaisuuksiin vain yhdessä Tracon-rannekkeen kanssa (lauantai, sunnuntai tai koko viikonloppu).',
                limit_groups=[
                    limit_group('Iltabileliput', 1200),
                    limit_group('The Super Sound of Videogames 2', 500),
                ],
                price_cents=3000,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=ordering(),
            ),
            dict(
                name='Iltabilelippu Traconin kävijälle',
                description='Traconin iltabileet Pakkahuoneella lauantaina 5. syyskuuta 2015 kello 19–01. Esiintymässä MACHINAE SUPREMACY (SWE) sekä YOHIO (SWE) + DJ:t Klubilla. Ei sisällä narikkamaksua 2 €.</p><p>'
                    'HUOM! Tämä lippu oikeuttaa pääsyyn Traconin iltabileisiin vain yhdessä Tracon-rannekkeen kanssa (lauantai, sunnuntai tai koko viikonloppu).',
                limit_groups=[
                    limit_group('Iltabileliput', 1200),
                ],
                price_cents=1000,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=ordering(),
            ),
            dict(
                name='Iltabilelippu ei-kävijälle',
                description='Traconin iltabileet Pakkahuoneella lauantaina 5. syyskuuta 2015 kello 19–01. Esiintymässä MACHINAE SUPREMACY (SWE) sekä YOHIO (SWE) + DJ:t Klubilla. Ei sisällä narikkamaksua 2 €.</p><p>'
                    'Tämä lippu oikeuttaa pääsyyn Traconin iltabileisiin ilman Tracon-ranneketta.',
                limit_groups=[
                    limit_group('Iltabileliput', 1200),
                ],
                price_cents=2000,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=ordering(),
            ),
            dict(
                name='Lattiamajoitus 1 yö pe-la - Aleksanterin koulu (sis. makuualusta)',
                description='Lattiamajoituspaikka perjantain ja lauantain väliseksi yöksi Aleksanterin koululta. Aleksanterin koulun majoituspaikat sisältävät makuualustan, joten sinun tarvitsee tuoda vain makuupussi.',
                limit_groups=[
                    limit_group('Majoitus Aleksanteri pe-la', 80),
                ],
                price_cents=1300,
                requires_shipping=False,
                requires_accommodation_information=True,
                electronic_ticket=False,
                available=self.test,
                ordering=ordering(),
            ),
            dict(
                name='Lattiamajoitus 1 yö la-su - Aleksanterin koulu (sis. makuualusta)',
                description='Lattiamajoituspaikka lauantain ja sunnuntain väliseksi yöksi Aleksanterin koululta. Aleksanterin koulun majoituspaikat sisältävät makuualustan, joten sinun tarvitsee tuoda vain makuupussi.',
                limit_groups=[
                    limit_group('Majoitus Aleksanteri la-su', 130),
                ],
                price_cents=1300,
                requires_shipping=False,
                requires_accommodation_information=True,
                electronic_ticket=False,
                available=self.test,
                ordering=ordering(),
            ),
            dict(
                name='Lattiamajoitus 1 yö pe-la - Pyynikin koulu (ei sis. makuualustaa)',
                description='Lattiamajoituspaikka perjantain ja lauantain väliseksi yöksi Pyynikin koululta. Pyynikin koulun majoituspaikat eivät sisällä makuualustaa, joten sinun tarvitsee tuoda makuupussi ja makuualusta tai patja.',
                limit_groups=[
                    limit_group('Majoitus Pyynikki pe-la', 120),
                ],
                price_cents=1000,
                requires_shipping=False,
                requires_accommodation_information=True,
                electronic_ticket=False,
                available=self.test,
                ordering=ordering(),
            ),
            dict(
                name='Lattiamajoitus 1 yö la-su - Pyynikin koulu (ei sis. makuualustaa)',
                description='Lattiamajoituspaikka lauantain ja sunnuntain väliseksi yöksi Pyynikin koululta. Pyynikin koulun majoituspaikat eivät sisällä makuualustaa, joten sinun tarvitsee tuoda makuupussi ja makuualusta tai patja.',
                limit_groups=[
                    limit_group('Majoitus Pyynikki la-su', 120),
                ],
                price_cents=1000,
                requires_shipping=False,
                requires_accommodation_information=True,
                electronic_ticket=False,
                available=self.test,
                ordering=ordering(),
            ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event,
                name=name,
                defaults=product_info
            )

            if not product.limit_groups.exists():
                product.limit_groups = limit_groups
                product.save()

        if not meta.receipt_footer:
            meta.receipt_footer = "Tracon ry / Yhdrek. nro. 194.820 / [email protected]"
            meta.save()
Пример #15
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(
            self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2018{:05d}",
            contact_email='Matsucon <*****@*****.**>',
            ticket_free_text=
            "Tämä on sähköinen lippusi Matsucon 2018 -tapahtumaan. Sähköinen lippu vaihdetaan\n"
            "rannekkeeseen lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai\n"
            "näyttää sen älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole\n"
            "mahdollista, ota ylös kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva\n"
            "Kissakoodi ja ilmoita se lipunvaihtopisteessä.\n\n"
            "Tervetuloa Matsuconhin!",
            front_page_text=
            "<h2>Tervetuloa ostamaan pääsylippuja Matsucon 2018 -tapahtumaan!</h2>"
            "<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
            "<p>Lue lisää tapahtumasta <a href='http://matsucon.fi'>Matsucon 2018 -tapahtuman kotisivuilta</a>.</p>",
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(
            event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        def ordering():
            ordering.counter += 10
            return ordering.counter

        ordering.counter = 0

        for product_info in [
                dict(
                    name='Viikonlopun lippu',
                    description=
                    'Matsuconin pääsylippu, joka oikeuttaa pääsyn tapahtumaan molempina päivinä.',
                    limit_groups=[
                        limit_group('Viikonloppuliput', 720),
                    ],
                    price_cents=1500,
                    requires_shipping=False,
                    electronic_ticket=True,
                    available=True,
                    ordering=ordering(),
                ),
                dict(
                    name='Lauantain lippu',
                    description=
                    'Matsuconin pääsylippu, joka oikeuttaa pääsyn tapahtumaan lauantaina.',
                    limit_groups=[
                        limit_group('Lauantailiput', 120),
                    ],
                    price_cents=1000,
                    requires_shipping=False,
                    electronic_ticket=True,
                    available=True,
                    ordering=ordering(),
                ),
                dict(
                    name='Sunnuntain lippu',
                    description=
                    'Matsuconin pääsylippu, joka oikeuttaa pääsyn tapahtumaan sunnuntaina.',
                    limit_groups=[
                        limit_group('Sunnuntailiput', 120),
                    ],
                    price_cents=1000,
                    requires_shipping=False,
                    electronic_ticket=True,
                    available=True,
                    ordering=ordering(),
                ),
                dict(
                    name='Lattiamajoitus',
                    description=
                    'Lattiamajoitus lauantain ja sunnuntain väliselle yölle tapahtumapaikalla.',
                    limit_groups=[
                        limit_group('Lattiamajoituspaikat', 40),
                    ],
                    price_cents=700,
                    requires_shipping=False,
                    electronic_ticket=False,
                    requires_accommodation_information=True,
                    available=True,
                    ordering=ordering(),
                ),
                dict(
                    name='Lattiamajoitus + aamiainen',
                    description=
                    'Lattiamajoitus sekä aamiainen lauantain ja sunnuntain väliselle yölle tapahtumapaikalla.',
                    limit_groups=[
                        limit_group('Lattiamajoituspaikat', 40),
                    ],
                    price_cents=1000,
                    requires_shipping=False,
                    electronic_ticket=False,
                    requires_accommodation_information=True,
                    available=True,
                    ordering=ordering(),
                ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event, name=name, defaults=product_info)

            if not product.limit_groups.exists():
                product.limit_groups.set(limit_groups)
                product.save()
Пример #16
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(
            self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=120,
            reference_number_template="2016{:05d}",
            contact_email='Aicon-lipunmyynti <*****@*****.**>',
            ticket_free_text=
            "Tämä on sähköinen lippusi Aiconiin. Sähköinen lippu vaihdetaan rannekkeeseen\n"
            "lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai näyttää sen\n"
            "älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole mahdollista, ota ylös\n"
            "kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva Kissakoodi ja ilmoita se\n"
            "lipunvaihtopisteessä.\n\n"
            "Tervetuloa Aiconiin!",
            front_page_text="<h2>Tervetuloa ostamaan pääsylippuja Aiconiin!</h2>"
            "<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
            "<p>Lue lisää tapahtumasta <a href='http://aicon.fi'>Aiconin kotisivuilta</a>.</p>"
            "<p>Huom! Tämä verkkokauppa palvelee ainoastaan asiakkaita, joilla on osoite Suomessa. Mikäli tarvitset "
            "toimituksen ulkomaille, ole hyvä ja ota sähköpostitse yhteyttä: <em>[email protected]</em>"
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(
            event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        for product_info in [
                dict(
                    name='Joukkorahoitus – Viikonloppulippu',
                    description=
                    'Tällä lipulla sisäänpääsy Aiconiin koko tapahtuman ajan! Lisäksi saat nimesi nettisivuillemme tulevaan kiitoslistaan, sekä kiitoskortin ja kangasmerkin! Myymme tavallisia viikonloppulippuja vielä myöhemminkin, mutta varmista omasi jo nyt!',
                    limit_groups=[
                        limit_group('Pääsyliput', 11),
                    ],
                    price_cents=3000,
                    requires_shipping=False,
                    electronic_ticket=True,
                    available=True,
                    ordering=self.get_ordering_number(),
                ),
                dict(
                    name='Joukkorahoitus – VIP-lippu',
                    description=
                    """Aiconin kaikki VIP-liput ovat myynnissä joukkorahoituksessa! Tartu tilaisuuteen nyt, sillä toista ei välttämättä tule!
Aiconin VIP-lippu sisältää tietenkin koko viikonlopun sisäänpääsyn tapahtumaan, mutta myös muuta! VIP-lippuihin saatetaan julkistaa vielä lisää sisältöä lähempänä conia, mutta nämä edut ovat varmoja:
- VIP-lippulla pääset conin alkaessa vaihtamaan lippusi erillisestä VIP-jonosta
- Conin aikana käytössäsi on VIP-tila, jota ylläpitää läpi tapahtuman VIP-asiakkaiden viihtyvyydestä vastaava host tai hostess.
- VIP-tilasta on pääsy pääsaliin VIP-parvelle, joten et välttämättä tarvitse paikkalippua pääsalin ohjelmiin, toisin kuin muut conikävijät.
- Saat conista mukaasi VIP-tuotepussin.
Lisäksi saat nimesi nettisivuillamme julkaistavaan kiitoslistaan, sekä kiitoskortin ja kangasmerkin toimitettuna sinulle jo kevään aikana.""",
                    limit_groups=[
                        limit_group('VIP-liput', 56),
                    ],
                    price_cents=5500,
                    requires_shipping=False,
                    electronic_ticket=True,
                    available=True,
                    ordering=self.get_ordering_number(),
                ),
                dict(
                    name='Viikonloppulippu',
                    description=
                    'Tällä lipulla sisäänpääsy Aiconiin koko tapahtuman ajan! Lippu toimitetaan sähköpostiisi PDF-muotoisena E-lippuna, jonka vaihdat rannekkeeseen tapahtumaan saapuessasi.',
                    limit_groups=[
                        limit_group('Pääsyliput', 11),
                    ],
                    price_cents=2500,
                    requires_shipping=False,
                    electronic_ticket=True,
                    available=True,
                    ordering=self.get_ordering_number(),
                ),
                dict(
                    name='Lauantailippu',
                    description=
                    'Tällä lipulla sisäänpääsy Aiconiin lauantain 8.10.2016 ajan! Lippu toimitetaan sähköpostiisi PDF-muotoisena E-lippuna, jonka vaihdat rannekkeeseen tapahtumaan saapuessasi.',
                    limit_groups=[
                        limit_group('Lauantailiput', 100),
                    ],
                    price_cents=1500,
                    requires_shipping=False,
                    electronic_ticket=True,
                    available=True,
                    ordering=self.get_ordering_number(),
                ),
                dict(
                    name='Sunnuntailippu',
                    description=
                    'Tällä lipulla sisäänpääsy Aiconiin sunnuntain 9.10.2016 ajan! Lippu toimitetaan sähköpostiisi PDF-muotoisena E-lippuna, jonka vaihdat rannekkeeseen tapahtumaan saapuessasi.',
                    limit_groups=[
                        limit_group('Sunnuntailiput', 100),
                    ],
                    price_cents=1000,
                    requires_shipping=False,
                    electronic_ticket=True,
                    available=True,
                    ordering=self.get_ordering_number(),
                ),
                dict(
                    name='Iltabilelippu',
                    description=
                    'Tällä lipulla sisäänpääsy Aiconin iltabileisiin lauantai-iltana 8.10.2016 Skogsterissa! Lippu toimitetaan sähköpostiisi PDF-muotoisena E-lippuna. Iltabilelippu ei oikeuta pääsyyn Aiconiin, etkä tarvitse Aiconin ranneketta osallistuaksesi iltabileisiin.',
                    limit_groups=[
                        limit_group('Iltabilelippu', 300),
                    ],
                    price_cents=400,
                    requires_shipping=False,
                    electronic_ticket=True,
                    available=True,
                    ordering=self.get_ordering_number(),
                ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event, name=name, defaults=product_info)

            if not product.limit_groups.exists():
                product.limit_groups = limit_groups
                product.save()
Пример #17
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, pos_access_group = TicketsEventMeta.get_or_create_groups(
            self.event, ['admins', 'pos'])

        defaults = dict(
            admin_group=tickets_admin_group,
            pos_access_group=pos_access_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2020{:06d}",
            contact_email='Ropecon 2020 -lipunmyynti <*****@*****.**>',
            ticket_free_text=
            "Tämä on sähköinen lippusi Ropecon 2020 -tapahtumaan. Sähköinen lippu vaihdetaan rannekkeeseen\n"
            "lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai näyttää sen\n"
            "älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole mahdollista, ota ylös\n"
            "kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva Kissakoodi ja ilmoita se\n"
            "lipunvaihtopisteessä.\n\n"
            "Tervetuloa Ropeconiin!",
            front_page_text="<h2>Tervetuloa Ropeconin lippukauppaan!</h2>"
            "<p>Liput maksetaan tilauksen yhteydessä käyttämällä suomalaia verkkopankkipalveluja.</p>"
            "<p>Maksetut liput toimitetaan e-lippuina sähköpostitse asiakkaan antamaan osoitteeseen. E-liput vaihdetaan rannekkeiksi tapahtumaan saavuttaessa.</p>"
            "<p>Lisätietoja lipuista saat verkko verkkosivuilta. <a href='https://2020.ropecon.fi/liput/'>Siirry takaisin tapahtuman verkkosivuille</a>.</p>"
            "<p>Huom! Tämä verkkokauppa palvelee ainoastaan asiakkaita, joilla on osoite Suomessa. Mikäli tarvitset "
            "toimituksen ulkomaille, ole hyvä ja ota sähköpostitse yhteyttä: <em>[email protected]</em>"
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(
            event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        for product_info in [
                dict(
                    name='Ropecon 2020 Christmas Dragon -viikonloppulippu',
                    description=
                    'Sisältää pääsyn Ropecon 2020 -tapahtumaan koko viikonlopun ajan. Jos haluat antaa lipun lahjaksi, voit ladata <a href="https://2020.ropecon.fi/wp-content/uploads/2019/11/joulukortti.pdf" target="_blank" rel="noopener nofollow">tästä</a> taitettavan kortin annettavaksi lipun kanssa.',
                    limit_groups=[
                        limit_group('Pääsyliput', 9999),
                    ],
                    price_cents=4000,
                    requires_shipping=False,
                    electronic_ticket=True,
                    available=True,
                    ordering=self.get_ordering_number(),
                ),
                dict(
                    name=
                    'Ropecon 2020 Lasten Christmas Dragon -viikonloppulippu',
                    description=
                    'Sisältää pääsyn lapselle (7–12 v) Ropecon 2020 -tapahtumaan koko viikonlopun ajan. Jos haluat antaa lipun lahjaksi, voit ladata <a href="https://2020.ropecon.fi/wp-content/uploads/2019/11/joulukortti.pdf" target="_blank" rel="noopener nofollow">tästä</a> taitettavan kortin annettavaksi lipun kanssa.',
                    limit_groups=[
                        limit_group('Pääsyliput', 9999),
                    ],
                    price_cents=2000,
                    requires_shipping=False,
                    electronic_ticket=True,
                    available=True,
                    ordering=self.get_ordering_number(),
                ),
                dict(
                    name='Ropecon 2020 Perhelippu',
                    description=
                    'Sisältää pääsyn Ropecon 2020 -tapahtumaan 2 aikuiselle ja 1–3 lapselle (7–12 v) koko viikonlopun ajan.',
                    limit_groups=[
                        limit_group('Pääsyliput', 9999),
                    ],
                    price_cents=9900,
                    requires_shipping=False,
                    electronic_ticket=True,
                    available=True,
                    ordering=self.get_ordering_number(),
                ),
                dict(
                    name='Ropecon 2020 Early Dragon -viikonloppulippu',
                    description=
                    'Sisältää pääsyn Ropecon 2020 -tapahtumaan koko viikonlopun ajan.',
                    limit_groups=[
                        limit_group('Pääsyliput', 9999),
                    ],
                    price_cents=4000,
                    requires_shipping=False,
                    electronic_ticket=True,
                    available=True,
                    ordering=self.get_ordering_number(),
                ),
                dict(
                    name='Ropecon 2020 Lasten Early Dragon -viikonloppulippu',
                    description=
                    'Sisältää pääsyn lapselle (7–12 v) Ropecon 2020 -tapahtumaan koko viikonlopun ajan.',
                    limit_groups=[
                        limit_group('Pääsyliput', 9999),
                    ],
                    price_cents=2000,
                    requires_shipping=False,
                    electronic_ticket=True,
                    available=True,
                    ordering=self.get_ordering_number(),
                ),
                # dict(
                #     name='Ropecon 2020 Sponsoriviikonloppulippu',
                #     description='Sisältää pääsyn Ropecon 2020 -tapahtumaan koko viikonlopun ajan.',
                #     limit_groups=[
                #         limit_group('Pääsyliput', 9999),
                #     ],
                #     price_cents=10000,
                #     requires_shipping=False,
                #     electronic_ticket=True,
                #     available=True,
                #     ordering=self.get_ordering_number(),
                # ),
                # dict(
                #     name='Ropecon 2020 Akateeminen seminaari + perjantaipäivälippu',
                #     description='Sisältää pääsyn Akateemiseen seminaariin ja Ropecon 2020 -tapahtumaan perjantaina. Muista myös <a href="https://goo.gl/forms/J9X1401lERxaX3M52">rekisteröityä</a>!',
                #     limit_groups=[
                #         limit_group('Pääsyliput', 9999),
                #     ],
                #     price_cents=5500,
                #     requires_shipping=False,
                #     electronic_ticket=True,
                #     available=True,
                #     ordering=self.get_ordering_number(),
                # ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event, name=name, defaults=product_info)

            if not product.limit_groups.exists():
                product.limit_groups.set(limit_groups)
                product.save()
Пример #18
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(
            self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=120,
            reference_number_template="2020{:06d}",
            contact_email='Tracon Hitpoint -lipunmyynti <*****@*****.**>',
            ticket_free_text=
            "Tämä on sähköinen lippusi Tracon Hitpoint -tapahtumaan. Sähköinen lippu vaihdetaan rannekkeeseen\n"
            "lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai näyttää sen\n"
            "älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole mahdollista, ota ylös\n"
            "kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva Kissakoodi ja ilmoita se\n"
            "lipunvaihtopisteessä.\n\n"
            "Tervetuloa Tracon Hitpointiin!",
            front_page_text=
            "<h2>Tervetuloa ostamaan pääsylippuja Tracon Hitpoint -tapahtumaan!</h2>"
            "<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
            "<p>Lue lisää tapahtumasta <a href='http://2020.hitpoint.tracon.fi' target='_blank' rel='noreferer noopener'>Tracon Hitpoint -tapahtuman kotisivuilta</a>.</p>"
            "<p><strong>Note</strong>: Purchasing Tracont Hitpoint tickets through this web shop requires a Finnish web bank service. "
            "If you do not have one, please contact us to purchase tickets: <em>[email protected]</em>.</p>"
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(
            event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        for product_info in [
                dict(
                    name='Tracon Hitpoint -pääsylippu',
                    description=
                    'Viikonloppulippu Tracon Hitpoint 2020 -tapahtumaan. Voimassa koko viikonlopun ajan la klo 10–00 ja su klo 10–18. Toimitetaan sähköpostitse PDF-tiedostona, jossa olevaa viivakoodia vastaan saat rannekkeen tapahtumaan saapuessasi.',
                    limit_groups=[
                        limit_group('Pääsyliput', 800),
                    ],
                    price_cents=1000,
                    requires_shipping=False,
                    electronic_ticket=True,
                    available=True,
                    ordering=self.get_ordering_number(),
                ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event, name=name, defaults=product_info)

            if not product.limit_groups.exists():
                product.limit_groups.set(limit_groups)
                product.save()
Пример #19
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2015{:05d}",
            contact_email='Traconin lipunmyynti <*****@*****.**>',
            plain_contact_email='*****@*****.**',
            ticket_free_text=u"Tämä on sähköinen lippusi Tracon X -tapahtumaan. Sähköinen lippu vaihdetaan rannekkeeseen\n"
                u"lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai näyttää sen\n"
                u"älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole mahdollista, ota ylös\n"
                u"kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva sanakoodi ja ilmoita se\n"
                u"lipunvaihtopisteessä.\n\n"
                u"Tervetuloa Traconiin!",
            front_page_text=u"<h2>Tervetuloa ostamaan pääsylippuja Tracon X -tapahtumaan!</h2>"
                u"<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
                u"<p>Lue lisää tapahtumasta <a href='http://2015.tracon.fi'>Traconin kotisivuilta</a>.</p>",
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )
        else:
            defaults.update(
                ticket_sales_starts=datetime(2014, 12, 1, 0, 0, tzinfo=self.tz),
                ticket_sales_ends=datetime(2015, 12, 12, 23, 59, 59, tzinfo=self.tz),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        def ordering():
            ordering.counter += 10
            return ordering.counter
        ordering.counter = 0

        for product_info in [
            dict(
                name=u'Joulupaketti - 2 kpl viikonloppulippu ja 1 kpl kalenteri',
                description=u'Paketti sisältää kaksi viikonloppulippua ja yhden Tracon 2015 -seinäkalenterin. Tuotteet toimitetaan antamaasi osoitteeseen postitse, ja postikulut sisältyvät hintaan.',
                internal_description=u'HUOM! Järjestelmä ei tue lippukiintiöiden kuluttamista kahdella per myyty paketti, joten lippukiintiöt täytyy korjata käsin kun joulupaketit on myyty.',
                limit_groups=[
                    # limit_group('Lauantain liput', 5000, 2),
                    # limit_group('Sunnuntain liput', 5000, 2),
                    limit_group('Joulupaketti A', 80),
                ],
                price_cents=6000,
                requires_shipping=True,
                electronic_ticket=False,
                available=False,
                ordering=ordering(),
            ),
            dict(
                name=u'Joulupaketti - 1 kpl viikonloppulippu ja 1 kpl kalenteri',
                description=u'Paketti sisältää yhden viikonloppulipun ja yhden Tracon 2015 -seinäkalenterin. Tuotteet toimitetaan antamaasi osoitteeseen postitse, ja postikulut sisältyvät hintaan.',
                limit_groups=[
                    limit_group('Lauantain liput', 3525),
                    limit_group('Sunnuntain liput', 3525),
                    limit_group('Joulupaketti B', 80),
                ],
                price_cents=3500,
                requires_shipping=True,
                electronic_ticket=False,
                available=False,
                ordering=ordering(),
            ),
            dict(
                name=u'Viikonloppulippu',
                description=u'Viikonloppulippu Tracon 2015 -tapahtumaan. Voimassa koko viikonlopun ajan la klo 10 – su klo 18. Toimitetaan sähköpostitse PDF-tiedostona, jossa olevaa viivakoodia vastaan saat rannekkeen tapahtumaan saapuessasi.',
                limit_groups=[
                    limit_group('Lauantain liput', 3525),
                    limit_group('Sunnuntain liput', 3525),
                ],
                price_cents=2500,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=ordering(),
            ),
            dict(
                name=u'Lauantailippu',
                description=u'Lauantailippu Tracon 2015 -tapahtumaan. Voimassa koko lauantaipäivän ajan la klo 10 – su klo 08. Toimitetaan sähköpostitse PDF-tiedostona, jossa olevaa viivakoodia vastaan saat rannekkeen tapahtumaan saapuessasi.',
                limit_groups=[
                    limit_group('Lauantain liput', 3525),
                ],
                price_cents=1800,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=ordering(),
            ),
            dict(
                name=u'Sunnuntailippu',
                description=u'Lauantailippu Tracon 2015 -tapahtumaan. Voimassa koko sunnuntaipäivän ajan su klo 00 - su klo 18. Toimitetaan sähköpostitse PDF-tiedostona, jossa olevaa viivakoodia vastaan saat rannekkeen tapahtumaan saapuessasi.',
                limit_groups=[
                    limit_group('Sunnuntain liput', 3525),
                ],
                price_cents=1500,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=ordering(),
            ),
            dict(
                name=u'Konserttipaketti Traconin kävijälle',
                description=u'Sisältää liput The Super Sound of Videogames 2 -konserttiin sekä Traconin iltabileisiin.</p><p>'
                    u'The Super Sound of Videogames 2 -konsertti perjantaina 4. syyskuuta klo 19 Tampere-talossa. Esiintymässä QUINSONITUS ja TAKOMO PERCUSSION. Lisätietoja <a href="http://www.tampere-talo.fi/supersound" target="_blank">Tampere-talon sivuilta</a> (avautuu uuteen ikkunaan).</p><p>'
                    u'Traconin iltabileet Pakkahuoneella lauantaina 5. syyskuuta 2015 kello 19–01. Esiintymässä MACHINAE SUPREMACY (SWE) sekä YOHIO (SWE) + DJ:t Klubilla. Ei sisällä narikkamaksua 2 €.</p><p>'
                    u'HUOM! Tämä lippu oikeuttaa pääsyyn tilaisuuksiin vain yhdessä Tracon-rannekkeen kanssa (lauantai, sunnuntai tai koko viikonloppu).',
                limit_groups=[
                    limit_group('Iltabileliput', 1200),
                    limit_group('The Super Sound of Videogames 2', 500),
                ],
                price_cents=3000,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=ordering(),
            ),
            dict(
                name=u'Iltabilelippu Traconin kävijälle',
                description=u'Traconin iltabileet Pakkahuoneella lauantaina 5. syyskuuta 2015 kello 19–01. Esiintymässä MACHINAE SUPREMACY (SWE) sekä YOHIO (SWE) + DJ:t Klubilla. Ei sisällä narikkamaksua 2 €.</p><p>'
                    u'HUOM! Tämä lippu oikeuttaa pääsyyn Traconin iltabileisiin vain yhdessä Tracon-rannekkeen kanssa (lauantai, sunnuntai tai koko viikonloppu).',
                limit_groups=[
                    limit_group('Iltabileliput', 1200),
                ],
                price_cents=1000,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=ordering(),
            ),
            dict(
                name=u'Iltabilelippu ei-kävijälle',
                description=u'Traconin iltabileet Pakkahuoneella lauantaina 5. syyskuuta 2015 kello 19–01. Esiintymässä MACHINAE SUPREMACY (SWE) sekä YOHIO (SWE) + DJ:t Klubilla. Ei sisällä narikkamaksua 2 €.</p><p>'
                    u'Tämä lippu oikeuttaa pääsyyn Traconin iltabileisiin ilman Tracon-ranneketta.',
                limit_groups=[
                    limit_group('Iltabileliput', 1200),
                ],
                price_cents=2000,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=ordering(),
            ),
            dict(
                name=u'Lattiamajoitus 1 yö pe-la - Aleksanterin koulu (sis. makuualusta)',
                description=u'Lattiamajoituspaikka perjantain ja lauantain väliseksi yöksi Aleksanterin koululta. Aleksanterin koulun majoituspaikat sisältävät makuualustan, joten sinun tarvitsee tuoda vain makuupussi.',
                limit_groups=[
                    limit_group('Majoitus Aleksanteri pe-la', 80),
                ],
                price_cents=1300,
                requires_shipping=False,
                requires_accommodation_information=True,
                electronic_ticket=False,
                available=self.test,
                ordering=ordering(),
            ),
            dict(
                name=u'Lattiamajoitus 1 yö la-su - Aleksanterin koulu (sis. makuualusta)',
                description=u'Lattiamajoituspaikka lauantain ja sunnuntain väliseksi yöksi Aleksanterin koululta. Aleksanterin koulun majoituspaikat sisältävät makuualustan, joten sinun tarvitsee tuoda vain makuupussi.',
                limit_groups=[
                    limit_group('Majoitus Aleksanteri la-su', 130),
                ],
                price_cents=1300,
                requires_shipping=False,
                requires_accommodation_information=True,
                electronic_ticket=False,
                available=self.test,
                ordering=ordering(),
            ),
            dict(
                name=u'Lattiamajoitus 1 yö pe-la - Pyynikin koulu (ei sis. makuualustaa)',
                description=u'Lattiamajoituspaikka perjantain ja lauantain väliseksi yöksi Pyynikin koululta. Pyynikin koulun majoituspaikat eivät sisällä makuualustaa, joten sinun tarvitsee tuoda makuupussi ja makuualusta tai patja.',
                limit_groups=[
                    limit_group('Majoitus Pyynikki pe-la', 120),
                ],
                price_cents=1000,
                requires_shipping=False,
                requires_accommodation_information=True,
                electronic_ticket=False,
                available=self.test,
                ordering=ordering(),
            ),
            dict(
                name=u'Lattiamajoitus 1 yö la-su - Pyynikin koulu (ei sis. makuualustaa)',
                description=u'Lattiamajoituspaikka lauantain ja sunnuntain väliseksi yöksi Pyynikin koululta. Pyynikin koulun majoituspaikat eivät sisällä makuualustaa, joten sinun tarvitsee tuoda makuupussi ja makuualusta tai patja.',
                limit_groups=[
                    limit_group('Majoitus Pyynikki la-su', 120),
                ],
                price_cents=1000,
                requires_shipping=False,
                requires_accommodation_information=True,
                electronic_ticket=False,
                available=self.test,
                ordering=ordering(),
            ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event,
                name=name,
                defaults=product_info
            )

            if not product.limit_groups.exists():
                product.limit_groups = limit_groups
                product.save()

        if not meta.receipt_footer:
            meta.receipt_footer = u"Tracon ry / Yhdrek. nro. 194.820 / [email protected]"
            meta.save()
Пример #20
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(
            self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=120,
            reference_number_template="2015{:05d}",
            contact_email='Animecon 2015 <*****@*****.**>',
            ticket_free_text=
            "Tämä on sähköinen lippusi Animecon 2015 -tapahtumaan. Sähköinen lippu vaihdetaan rannekkeeseen\n"
            "lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai näyttää sen\n"
            "älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole mahdollista, ota ylös\n"
            "kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva Kissakoodi ja ilmoita se\n"
            "lipunvaihtopisteessä.\n\n"
            "Tervetuloa Animecon 2015 -tapahtumaan!",
            front_page_text=
            "<h2>Tervetuloa ostamaan pääsylippuja Animecon 2015 -tapahtumaan!</h2>"
            "<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
            "<p>Lue lisää tapahtumasta <a href='http://2015.animecon.fi'>Animecon 2015 -tapahtuman kotisivuilta</a>.</p>"
            "<p>Huom! Tämä verkkokauppa palvelee ainoastaan asiakkaita, joilla on osoite Suomessa. Mikäli tarvitset "
            "toimituksen ulkomaille, ole hyvä ja ota sähköpostitse yhteyttä: <em>[email protected]</em>"
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )
        else:
            defaults.update(
                ticket_sales_starts=datetime(2015, 3, 4, 18, 0,
                                             tzinfo=self.tz),
                ticket_sales_ends=datetime(2015, 6, 28, 18, 0, tzinfo=self.tz),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(
            event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        for product_info in [
                dict(
                    name='Animecon 2015 -pääsylippu',
                    description=
                    'Viikonloppuranneke Kuopiossa järjestettävään Animecon-tapahtumaan. Huom. myynnissä vain viikonloppurannekkeita. Lippu lähetetään postitse.',
                    limit_groups=[
                        limit_group('Pääsyliput', 3000),
                    ],
                    price_cents=1600,
                    requires_shipping=True,
                    electronic_ticket=False,
                    available=True,
                    ordering=self.get_ordering_number(),
                ),
                dict(
                    name='Lattiamajoituspaikka (koko vkl)',
                    description=
                    'Lattiamajoituspaikka molemmiksi öiksi pe-la ja la-su. Majoituksesta lisää tietoa sivuillamme www.animecon.fi.',
                    limit_groups=[
                        limit_group('Lattiamajoitus pe-la', 445),
                        limit_group('Lattiamajoitus la-su', 445),
                    ],
                    price_cents=1000,
                    requires_shipping=False,
                    electronic_ticket=False,
                    available=True,
                    ordering=self.get_ordering_number(),
                ),
                dict(
                    name='Lattiamajoituspaikka (pe-la)',
                    description=
                    'Lattiamajoituspaikka perjantain ja lauantain väliseksi yöksi. Majoituksesta lisää tietoa sivuillamme www.animecon.fi.',
                    limit_groups=[
                        limit_group('Lattiamajoitus pe-la', 445),
                    ],
                    price_cents=700,
                    requires_shipping=False,
                    electronic_ticket=False,
                    available=True,
                    ordering=self.get_ordering_number(),
                ),
                dict(
                    name='Lattiamajoituspaikka (la-su)',
                    description=
                    'Lattiamajoituspaikka lauantain ja sunnuntain väliseksi yöksi. Majoituksesta lisää tietoa sivuillamme www.animecon.fi.',
                    limit_groups=[
                        limit_group('Lattiamajoitus la-su', 445),
                    ],
                    price_cents=700,
                    requires_shipping=False,
                    electronic_ticket=False,
                    available=True,
                    ordering=self.get_ordering_number(),
                ),
                dict(
                    name='Animecon 2015 -konserttilippu',
                    description=
                    'Lippu Animeconin konserttiin. Mikäli tarvitset pyörätuolipaikkaa, otathan ennen ostoa yhteyttä <em>[email protected]</em>, jotta voimme varmistaa paikkatilanteen.',
                    limit_groups=[
                        limit_group('Konserttiliput', 820),
                    ],
                    price_cents=500,
                    requires_shipping=True,
                    electronic_ticket=False,
                    available=True,
                    ordering=self.get_ordering_number(),
                ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event, name=name, defaults=product_info)

            if not product.limit_groups.exists():
                product.limit_groups = limit_groups
                product.save()

        # v5
        if not meta.print_logo_path:
            meta.print_logo_path = mkpath('static', 'images', 'animecon.png')
            meta.print_logo_width_mm = 30
            meta.print_logo_height_mm = 30
            meta.save()
Пример #21
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=120,
            reference_number_template="2015{:05d}",
            contact_email='Animecon 2015 <*****@*****.**>',
            plain_contact_email='*****@*****.**',
            ticket_free_text=u"Tämä on sähköinen lippusi Animecon 2015 -tapahtumaan. Sähköinen lippu vaihdetaan rannekkeeseen\n"
                u"lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai näyttää sen\n"
                u"älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole mahdollista, ota ylös\n"
                u"kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva Kissakoodi ja ilmoita se\n"
                u"lipunvaihtopisteessä.\n\n"
                u"Tervetuloa Animecon 2015 -tapahtumaan!",
            front_page_text=u"<h2>Tervetuloa ostamaan pääsylippuja Animecon 2015 -tapahtumaan!</h2>"
                u"<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
                u"<p>Lue lisää tapahtumasta <a href='http://2015.animecon.fi'>Animecon 2015 -tapahtuman kotisivuilta</a>.</p>"
                u"<p>Huom! Tämä verkkokauppa palvelee ainoastaan asiakkaita, joilla on osoite Suomessa. Mikäli tarvitset "
                u"toimituksen ulkomaille, ole hyvä ja ota sähköpostitse yhteyttä: <em>[email protected]</em>"
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )
        else:
            defaults.update(
                ticket_sales_starts=datetime(2015, 3, 4, 18, 0, tzinfo=self.tz),
                ticket_sales_ends=datetime(2015, 6, 28, 18, 0, tzinfo=self.tz),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        for product_info in [
            dict(
                name=u'Animecon 2015 -pääsylippu',
                description=u'Viikonloppuranneke Kuopiossa järjestettävään Animecon-tapahtumaan. Huom. myynnissä vain viikonloppurannekkeita. Lippu lähetetään postitse.',
                limit_groups=[
                    limit_group('Pääsyliput', 3000),
                ],
                price_cents=1600,
                requires_shipping=True,
                electronic_ticket=False,
                available=True,
                ordering=self.get_ordering_number(),
            ),
            dict(
                name=u'Lattiamajoituspaikka (koko vkl)',
                description=u'Lattiamajoituspaikka molemmiksi öiksi pe-la ja la-su. Majoituksesta lisää tietoa sivuillamme www.animecon.fi.',
                limit_groups=[
                    limit_group('Lattiamajoitus pe-la', 445),
                    limit_group('Lattiamajoitus la-su', 445),
                ],
                price_cents=1000,
                requires_shipping=False,
                electronic_ticket=False,
                available=True,
                ordering=self.get_ordering_number(),
            ),
            dict(
                name=u'Lattiamajoituspaikka (pe-la)',
                description=u'Lattiamajoituspaikka perjantain ja lauantain väliseksi yöksi. Majoituksesta lisää tietoa sivuillamme www.animecon.fi.',
                limit_groups=[
                    limit_group('Lattiamajoitus pe-la', 445),
                ],
                price_cents=700,
                requires_shipping=False,
                electronic_ticket=False,
                available=True,
                ordering=self.get_ordering_number(),
            ),
            dict(
                name=u'Lattiamajoituspaikka (la-su)',
                description=u'Lattiamajoituspaikka lauantain ja sunnuntain väliseksi yöksi. Majoituksesta lisää tietoa sivuillamme www.animecon.fi.',
                limit_groups=[
                    limit_group('Lattiamajoitus la-su', 445),
                ],
                price_cents=700,
                requires_shipping=False,
                electronic_ticket=False,
                available=True,
                ordering=self.get_ordering_number(),
            ),
            dict(
                name=u'Animecon 2015 -konserttilippu',
                description=u'Lippu Animeconin konserttiin. Mikäli tarvitset pyörätuolipaikkaa, otathan ennen ostoa yhteyttä <em>[email protected]</em>, jotta voimme varmistaa paikkatilanteen.',
                limit_groups=[
                    limit_group('Konserttiliput', 820),
                ],
                price_cents=500,
                requires_shipping=True,
                electronic_ticket=False,
                available=True,
                ordering=self.get_ordering_number(),
            ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event,
                name=name,
                defaults=product_info
            )

            if not product.limit_groups.exists():
                product.limit_groups = limit_groups
                product.save()

        # v5
        if not meta.print_logo_path:
            meta.print_logo_path = mkpath('static', 'images', 'animecon.png')
            meta.print_logo_width_mm = 30
            meta.print_logo_height_mm = 30
            meta.save()
Пример #22
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2018{:05d}",
            contact_email='Ropecon 2018 -lipunmyynti <*****@*****.**>',
            ticket_free_text="Tämä on sähköinen lippusi Ropecon 2018 -tapahtumaan. Sähköinen lippu vaihdetaan rannekkeeseen\n"
                "lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai näyttää sen\n"
                "älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole mahdollista, ota ylös\n"
                "kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva Kissakoodi ja ilmoita se\n"
                "lipunvaihtopisteessä.\n\n"
                "Tervetuloa Ropeconiin!",
            front_page_text="<h2>Tervetuloa Ropeconin lippukauppaan!</h2>"
                "<p>Liput maksetaan tilauksen yhteydessä käyttämällä suomalaia verkkopankkipalveluja.</p>"
                "<p>Maksetut liput toimitetaan e-lippuina sähköpostitse asiakkaan antamaan osoitteeseen. E-liput vaihdetaan rannekkeiksi tapahtuman lipunmyyntipisteillä 27.–29.7.2018.</p>"
                "<p>Lisätietoja lipuista saat tapahtuman verkkosivuilta. <a href='https://2018.ropecon.fi/liput/'>Siirry takaisin tapahtuman verkkosivuille</a>.</p>"
                "<p>Huom! Tämä verkkokauppa palvelee ainoastaan asiakkaita, joilla on osoite Suomessa. Mikäli tarvitset "
                "toimituksen ulkomaille, ole hyvä ja ota sähköpostitse yhteyttä: <em>[email protected]</em>"
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )
        else:
            defaults.update(
                ticket_sales_starts=datetime(2018, 2, 14, 10, 0, tzinfo=self.tz),
                ticket_sales_ends=datetime(2018, 7, 2, 0, 0, tzinfo=self.tz),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        for product_info in [
            dict(
                name='Ropecon 2018 viikonloppulippu pe-su, aikuiset',
                description='Ropecon 2018-tapahtuman pääsylippu 27.-29.7.2018.',
                limit_groups=[
                    limit_group('Pääsyliput', 9999),
                ],
                price_cents=3800,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=self.get_ordering_number(),
            ),
            dict(
                name='Ropecon 2018 viikonloppulippu pe-su, lapset',
                description='7-12-vuotiaat lapset aikuisen seurassa.',
                limit_groups=[
                    limit_group('Pääsyliput', 9999),
                ],
                price_cents=2000,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=self.get_ordering_number(),
            ),
            dict(
                name='Ropecon 2018 -tapahtuman kannatusranneke',
                description='Sisältää pääsylipun Ropecon 2018 -tapahtumaan 27.–29.7.2018 sekä Ropecon ry:n jäsenyyden vuodelle 2018.',
                limit_groups=[
                    limit_group('Pääsyliput', 9999),
                ],
                price_cents=7000,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=self.get_ordering_number(),
            ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event,
                name=name,
                defaults=product_info
            )

            if not product.limit_groups.exists():
                product.limit_groups = limit_groups
                product.save()
Пример #23
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=120,
            reference_number_template="2015{:05d}",
            contact_email='Tracon Hitpoint -lipunmyynti <*****@*****.**>',
            ticket_free_text="Tämä on sähköinen lippusi Tracon Hitpoint -tapahtumaan. Sähköinen lippu vaihdetaan rannekkeeseen\n"
                "lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai näyttää sen\n"
                "älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole mahdollista, ota ylös\n"
                "kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva Kissakoodi ja ilmoita se\n"
                "lipunvaihtopisteessä.\n\n"
                "Tervetuloa Tracon Hitpointiin!",
            front_page_text="<h2>Tervetuloa ostamaan pääsylippuja Tracon Hitpoint -tapahtumaan!</h2>"
                "<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
                "<p>Lue lisää tapahtumasta <a href='http://2015.hitpoint.tracon.fi'>Tracon Hitpoint -tapahtuman kotisivuilta</a>.</p>"
                "<p>Huom! Tämä verkkokauppa palvelee ainoastaan asiakkaita, joilla on osoite Suomessa. Mikäli tarvitset "
                "toimituksen ulkomaille, ole hyvä ja ota sähköpostitse yhteyttä: <em>[email protected]</em>"
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )
        else:
            # TODO
            # defaults.update(
            #     ticket_sales_starts=datetime(2015, 3, 4, 18, 0, tzinfo=self.tz),
            #     ticket_sales_ends=datetime(2015, 6, 28, 18, 0, tzinfo=self.tz),
            # )
            pass

        meta, unused = TicketsEventMeta.objects.get_or_create(event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        for product_info in [
            dict(
                name='Tracon Hitpoint -pääsylippu',
                description='Viikonloppulippu Tracon Hitpoint -tapahtumaan. Voimassa koko viikonlopun ajan la klo 12 – su klo 18. Toimitetaan sähköpostitse PDF-tiedostona, jossa olevaa viivakoodia vastaan saat rannekkeen tapahtumaan saapuessasi.',
                limit_groups=[
                    limit_group('Pääsyliput', 400),
                ],
                price_cents=1000,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=self.get_ordering_number(),
            ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event,
                name=name,
                defaults=product_info
            )

            if not product.limit_groups.exists():
                product.limit_groups = limit_groups
                product.save()
Пример #24
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2017{:05d}",
            contact_email='Looking for Alice <*****@*****.**>',
            ticket_free_text=(
                "Tämä on sähköinen lippusi Looking for Alice -tapahtumaan. Voit tulostaa tämän lipun tai\n"
                "näyttää sen älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole\n"
                "mahdollista, ota ylös kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva\n"
                "Kissakoodi ja ilmoita se lipunvaihtopisteessä.\n\n"

                "This is your electronic ticket to Looking for Alice. You can print it or show it from your\n"
                "smartphone or tablet. If neither of these are suitable for you, please write down the four\n"
                "to six Finnish words under the barcode – they will function as your ticket code at the\n"
                "ticket exchange point.\n\n"

                "Tervetuloa Looking for Alice -tapahtumaan! Welcome to Looking for Alice!"
            ),
            front_page_text=(
                "<h2>Tervetuloa ostamaan pääsylippuja Looking for Alice -tapahtumaan!</h2>"
                "<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla tai luottokortilla heti tilauksen yhteydessä.</p>"

                "<h2>Welcome to the Looking for Alice ticket shop!</h2>"
                "<p>We accept Finnish Internet bank payments and international credit cards.</p>"
            ),
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )
        else:
            defaults.update(
                ticket_sales_starts=datetime(2016, 12, 11, 18, 0, tzinfo=self.tz),
                # ticket_sales_ends=datetime(2015, 1, 11, 18, 0, tzinfo=self.tz),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        def ordering():
            ordering.counter += 10
            return ordering.counter
        ordering.counter = 0

        for product_info in [
            dict(
                name='The White Rabbit',
                description=(
                    'The White Rabbit -lippu johdattaa sinut seikkailuun sekä In The Wonderland -päiväosioon että Through the Looking Glass -iltaosioon.\n\n'
                    'The White Rabbit – a regular full day ticket, includes entrance to the In the Wonderland day section and Through the Looking Glass evening section.'
                ),
                limit_groups=[
                    limit_group('The White Rabbit', 130),
                ],
                price_cents=5500,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=ordering(),
            ),
            dict(
                name='The Queen of Hearts',
                description=(
                    'Kuninkaallisen menon takaa The Queen of Hearts-lippu, jolla pääset päiväosioon aikaisemmin sisälle ja saat sisäänpääsyn Through the Looking Glass -iltaosioon. Lisäksi lippu sisältää kuva-session upeiden kunniavieraidemme kanssa ihanan Sanni Siiran kuvaamana sekä pienen lahjakassin!\n\n'
                    'The Queen of Hearts – Vip full day ticket, includes early entrance to the In the Wonderland day section and entrance to the Through the looking Glass evening section. The ticket also includes a small goodie bag and a photosession with the guests of honors by Sanni Siira!'
                ),
                limit_groups=[
                    limit_group('The Queen of Hearts', 30),
                ],
                price_cents=7000,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=15,
            ),
            dict(
                name='Through the Looking Glass',
                description=(
                    'Through the Looking Glass -lipulla pääset osallistumaan Through the Looking Glass -iltaosioon.\n\n'
                    'Through the Looking Glass – evening section ticket. This ticket allows an entrance to the Through the Looking Glass evening section of the event.'
                ),
                limit_groups=[
                    limit_group('Through the Looking Glass', 100),
                ],
                price_cents=1500,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=ordering(),
            ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event,
                name=name,
                defaults=product_info
            )

            if not product.limit_groups.exists():
                product.limit_groups = limit_groups
                product.save()
Пример #25
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(
            self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=120,
            reference_number_template="2019{:05d}",
            contact_email=
            'Tracon Hitpoint -lipunmyynti <*****@*****.**>',
            ticket_free_text=
            "Tämä on sähköinen lippusi Tracon Hitpoint -tapahtumaan. Sähköinen lippu vaihdetaan rannekkeeseen\n"
            "lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai näyttää sen\n"
            "älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole mahdollista, ota ylös\n"
            "kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva Kissakoodi ja ilmoita se\n"
            "lipunvaihtopisteessä.\n\n"
            "Tervetuloa Tracon Hitpointiin!",
            front_page_text=
            "<h2>Tervetuloa ostamaan pääsylippuja Tracon Hitpoint -tapahtumaan!</h2>"
            "<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
            "<p>Lue lisää tapahtumasta <a href='http://2019.hitpoint.tracon.fi'>Tracon Hitpoint -tapahtuman kotisivuilta</a>.</p>"
            "<p>Huom! Tämä verkkokauppa palvelee ainoastaan asiakkaita, joilla on osoite Suomessa. Mikäli tarvitset "
            "toimituksen ulkomaille, ole hyvä ja ota sähköpostitse yhteyttä: <em>[email protected]</em>"
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )
        else:
            # TODO
            # defaults.update(
            #     ticket_sales_starts=datetime(2015, 3, 4, 18, 0, tzinfo=self.tz),
            #     ticket_sales_ends=datetime(2015, 6, 28, 18, 0, tzinfo=self.tz),
            # )
            pass

        meta, unused = TicketsEventMeta.objects.get_or_create(
            event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        for product_info in [
                dict(
                    name='Tracon Hitpoint -pääsylippu',
                    description=
                    'Viikonloppulippu Tracon Hitpoint 2019-tapahtumaan. Voimassa koko viikonlopun ajan la klo 10 – su klo 18. Toimitetaan sähköpostitse PDF-tiedostona, jossa olevaa viivakoodia vastaan saat rannekkeen tapahtumaan saapuessasi.',
                    limit_groups=[
                        limit_group('Pääsyliput', 900),
                    ],
                    price_cents=1500,
                    requires_shipping=False,
                    electronic_ticket=True,
                    available=True,
                    ordering=self.get_ordering_number(),
                ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event, name=name, defaults=product_info)

            if not product.limit_groups.exists():
                product.limit_groups = limit_groups
                product.save()
Пример #26
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, unused = TicketsEventMeta.get_or_create_group(self.event, 'admins')

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2015{:05d}",
            contact_email='Traconin lipunmyynti <*****@*****.**>',
            plain_contact_email='*****@*****.**',
            ticket_free_text=u"Tämä on sähköinen lippusi Tracon X -tapahtumaan. Sähköinen lippu vaihdetaan rannekkeeseen\n"
                u"lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai näyttää sen\n"
                u"älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole mahdollista, ota ylös\n"
                u"kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva sanakoodi ja ilmoita se\n"
                u"lipunvaihtopisteessä.\n\n"
                u"Tervetuloa Traconiin!",
            front_page_text=u"<h2>Tervetuloa ostamaan pääsylippuja Tracon X -tapahtumaan!</h2>"
                u"<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
                u"<p>Lue lisää tapahtumasta <a href='http://2015.tracon.fi'>Traconin kotisivuilta</a>.</p>",
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )
        else:
            defaults.update(
                ticket_sales_starts=datetime(2014, 12, 1, 0, 0, tzinfo=self.tz),
                ticket_sales_ends=datetime(2015, 12, 12, 23, 59, 59, tzinfo=self.tz),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        def ordering():
            ordering.counter += 10
            return ordering.counter
        ordering.counter = 0

        for product_info in [
            dict(
                name=u'Joulupaketti - 2 kpl viikonloppulippu ja 1 kpl kalenteri',
                description=u'Paketti sisältää kaksi viikonloppulippua ja yhden Tracon 2015 -seinäkalenterin. Tuotteet toimitetaan antamaasi osoitteeseen postitse, ja postikulut sisältyvät hintaan.',
                internal_description=u'HUOM! Järjestelmä ei tue lippukiintiöiden kuluttamista kahdella per myyty paketti, joten lippukiintiöt täytyy korjata käsin kun joulupaketit on myyty.',
                limit_groups=[
                    # limit_group('Lauantain liput', 5000, 2),
                    # limit_group('Sunnuntain liput', 5000, 2),
                    limit_group('Joulupaketti A', 80),
                ],
                price_cents=6000,
                requires_shipping=True,
                electronic_ticket=False,
                available=True,
                ordering=ordering(),
            ),
            dict(
                name=u'Joulupaketti - 1 kpl viikonloppulippu ja 1 kpl kalenteri',
                description=u'Paketti sisältää yhden viikonloppulipun ja yhden Tracon 2015 -seinäkalenterin. Tuotteet toimitetaan antamaasi osoitteeseen postitse, ja postikulut sisältyvät hintaan.',
                limit_groups=[
                    limit_group('Lauantain liput', 5000),
                    limit_group('Sunnuntain liput', 5000),
                    limit_group('Joulupaketti B', 80),
                ],
                price_cents=3500,
                requires_shipping=True,
                electronic_ticket=False,
                available=True,
                ordering=ordering(),
            ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event,
                name=name,
                defaults=product_info
            )

            if not product.limit_groups.exists():
                product.limit_groups = limit_groups
                product.save()
Пример #27
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=120,
            reference_number_template="2017{:05d}",
            contact_email='Kawacon -lipunmyynti <*****@*****.**>',
            ticket_free_text=(
                "Tämä on sähköinen lippusi Kawaconiin. Sähköinen lippu vaihdetaan rannekkeeseen\n"
                "lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai näyttää sen\n"
                "älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole mahdollista, ota ylös\n"
                "kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva Kissakoodi ja ilmoita se\n"
                "lipunvaihtopisteessä.\n\n"
                "Tervetuloa Kawaconiin!"
            ),
            front_page_text=(
                "<h2>Tervetuloa ostamaan pääsylippuja Kawacon 2017 -tapahtumaan!</h2>"
                "<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
                "<p>Lue lisää tapahtumasta <a href='http://kawacon.info'>Kawaconin kotisivuilta</a>.</p>"
            ),
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )
        else:
            defaults.update(
                ticket_sales_starts=datetime(2017, 3, 31, 0, 0, 0, tzinfo=self.tz),
                ticket_sales_ends=datetime(2017, 6, 30, 23, 59, 59, tzinfo=self.tz),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        for product_info in [
            dict(
                name='Viikonloppulippu',
                description=(
                    'Viikonloppulippu Kawacon 2017 -tapahtumaan. Voimassa koko viikonlopun '
                    'ajan. Toimitetaan sähköpostitse PDF-tiedostona, jossa olevaa viivakoodia '
                    'vastaan saat rannekkeen tapahtumaan saapuessasi.'
                ),
                limit_groups=[
                    limit_group('Pääsyliput', 10000),
                ],
                price_cents=1300,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=self.get_ordering_number(),
            ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event,
                name=name,
                defaults=product_info
            )

            if not product.limit_groups.exists():
                product.limit_groups = limit_groups
                product.save()
Пример #28
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, pos_access_group = TicketsEventMeta.get_or_create_groups(self.event, ['admins', 'pos'])

        defaults = dict(
            admin_group=tickets_admin_group,
            pos_access_group=pos_access_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2019{:06d}",
            contact_email='Traconin lipunmyynti <*****@*****.**>',
            ticket_free_text=(
                "Tämä on sähköinen lippusi vuoden 2019 Traconiin. Sähköinen lippu vaihdetaan rannekkeeseen\n"
                "lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai näyttää sen\n"
                "älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole mahdollista, ota ylös\n"
                "kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva sanakoodi ja ilmoita se\n"
                "lipunvaihtopisteessä.\n\n"
                "Tervetuloa Traconiin!"
            ),
            front_page_text=(
                "<h2>Tervetuloa ostamaan pääsylippuja Traconiin!</h2>"
                "<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
                "<p>Lue lisää tapahtumasta <a href='http://2019.tracon.fi'>Traconin kotisivuilta</a>.</p>"
            ),
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )
        else:
            defaults.update(
                ticket_sales_starts=datetime(2019, 7, 1, 18, 0, 0, tzinfo=self.tz),
            )
        meta, unused = TicketsEventMeta.objects.get_or_create(event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        for product_info in [
            # dict(
            #     name='Viikonloppulippu',
            #     description='Voimassa koko viikonlopun ajan la klo 10–02 ja su klo 07–18. Toimitetaan sähköpostitse PDF-tiedostona.',
            #     limit_groups=[
            #         limit_group('Lauantain liput', 4400),
            #         limit_group('Sunnuntain liput', 4400),
            #     ],
            #     price_cents=2800,
            #     requires_shipping=False,
            #     electronic_ticket=True,
            #     available=True,
            #     ordering=self.get_ordering_number(),
            # ),
            # dict(
            #     name='Lauantailippu',
            #     description='Voimassa koko lauantaipäivän ajan klo 10–02. Toimitetaan sähköpostitse PDF-tiedostona.',
            #     limit_groups=[
            #         limit_group('Lauantain liput', 4400),
            #     ],
            #     price_cents=2000,
            #     requires_shipping=False,
            #     electronic_ticket=True,
            #     available=True,
            #     ordering=self.get_ordering_number(),
            # ),
            # dict(
            #     name='Sunnuntailippu',
            #     description='Voimassa koko sunnuntaipäivän ajan klo 07–18. Toimitetaan sähköpostitse PDF-tiedostona.',
            #     limit_groups=[
            #         limit_group('Sunnuntain liput', 4400),
            #     ],
            #     price_cents=1800,
            #     requires_shipping=False,
            #     electronic_ticket=True,
            #     available=True,
            #     ordering=self.get_ordering_number(),
            # ),
            # dict(
            #     name='Iltabilelippu',
            #     description='Pääsylippu maksullisiin K18-iltabileisiin Pakkahuoneella. Toimitetaan sähköpostitse PDF-tiedostona. Huomaathan, että tänä vuonna pääsy iltabileisiin edellyttää iltabilelipun lisäksi Traconin pääsylippua (lauantai-, sunnuntai- tai viikonloppulippu tai badge).',
            #     limit_groups=[
            #         limit_group('Iltabileliput', 235),
            #     ],
            #     price_cents=500,
            #     requires_shipping=False,
            #     electronic_ticket=True,
            #     available=True,
            #     ordering=self.get_ordering_number() + 9000, # XXX
            # ),
            # dict(
            #     name='Lattiamajoitus 1 yö pe-la - Aleksanterin koulu (sis. makuualusta)',
            #     description='Lattiamajoituspaikka perjantain ja lauantain väliseksi yöksi Aleksanterin koululta. Aleksanterin koulun majoituspaikat sisältävät makuualustan, joten sinun tarvitsee tuoda vain makuupussi.',
            #     limit_groups=[
            #         limit_group('Majoitus Aleksanteri pe-la', 90),
            #     ],
            #     price_cents=1300,
            #     requires_shipping=False,
            #     requires_accommodation_information=True,
            #     electronic_ticket=False,
            #     available=True,
            #     ordering=self.get_ordering_number(),
            # ),
            # dict(
            #     name='Lattiamajoitus 1 yö la-su - Aleksanterin koulu (sis. makuualusta)',
            #     description='Lattiamajoituspaikka lauantain ja sunnuntain väliseksi yöksi Aleksanterin koululta. Aleksanterin koulun majoituspaikat sisältävät makuualustan, joten sinun tarvitsee tuoda vain makuupussi.',
            #     limit_groups=[
            #         limit_group('Majoitus Aleksanteri la-su', 90),
            #     ],
            #     price_cents=1300,
            #     requires_shipping=False,
            #     requires_accommodation_information=True,
            #     electronic_ticket=False,
            #     available=True,
            #     ordering=self.get_ordering_number(),
            # ),
            # dict(
            #     name='Lattiamajoitus 1 yö pe-la - Pyynikin koulu (ei sis. makuualustaa)',
            #     description='Lattiamajoituspaikka lauantain ja sunnuntain väliseksi yöksi Pyynikin koululta. Pyynikin koulun majoituspaikat eivät sisällä makuualustaa, joten sinun tarvitsee tuoda makuupussi ja makuualusta tai patja.',
            #     limit_groups=[
            #         limit_group('Majoitus Pyynikki pe-la', 120),
            #     ],
            #     price_cents=1000,
            #     requires_shipping=False,
            #     requires_accommodation_information=True,
            #     electronic_ticket=False,
            #     available=True,
            #     ordering=self.get_ordering_number(),
            # ),
            # dict(
            #     name='Lattiamajoitus 1 yö la-su - Pyynikin koulu (ei sis. makuualustaa)',
            #     description='Lattiamajoituspaikka lauantain ja sunnuntain väliseksi yöksi Pyynikin koululta. Pyynikin koulun majoituspaikat eivät sisällä makuualustaa, joten sinun tarvitsee tuoda makuupussi ja makuualusta tai patja.',
            #     limit_groups=[
            #         limit_group('Majoitus Pyynikki la-su', 120),
            #     ],
            #     price_cents=1000,
            #     requires_shipping=False,
            #     requires_accommodation_information=True,
            #     electronic_ticket=False,
            #     available=True,
            #     ordering=self.get_ordering_number(),
            # ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event,
                name=name,
                defaults=product_info
            )

            if not product.limit_groups.exists():
                product.limit_groups.set(limit_groups)
                product.save()

        if not meta.receipt_footer:
            meta.receipt_footer = "Tracon ry / Y-tunnus 2886274-5 / [email protected]"
            meta.save()
Пример #29
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(
            self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2019{:06d}",
            contact_email='Yukicon <*****@*****.**>',
            ticket_free_text=
            ("Tämä on sähköinen lippusi. Sähköinen lippu vaihdetaan rannekkeeseen\n"
             "lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai näyttää sen\n"
             "älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole mahdollista, ota ylös\n"
             "kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva sanakoodi ja ilmoita se\n"
             "lipunvaihtopisteessä.\n\n"
             "Tervetuloa tapahtumaan!"),
            front_page_text=
            ("<h2>Tervetuloa ostamaan pääsylippuja Yukicon-tapahtumaan!</h2>"
             "<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
             "<p>Lue lisää tapahtumasta "
             "<a href='http://www.yukicon.fi' target='_blank'>Yukiconin kotisivuilta</a>.</p>"
             ),
            print_logo_path=mkpath('static', 'images',
                                   'Yukicon_logo_taustaton.jpg'),
            print_logo_width_mm=50,
            print_logo_height_mm=16)

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(
            event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        for product_info in [
                dict(
                    name='Yukicon 6.0 – Early Access',
                    description=
                    ('Early Access -lipulla pääset Yukiconiin 9.–10.3.2019. Lippu oikeuttaa Early Access '
                     '-etuuksien lunastuksen. Maksettuasi sinulle lähetetään PDF-lippu antamaasi sähköpostiin, '
                     'jota vastaan saat rannekkeen tapahtuman ovelta.'),
                    limit_groups=[
                        limit_group('Yuki19 VIP-liput', 100),
                    ],
                    price_cents=4000,
                    requires_shipping=False,
                    electronic_ticket=True,
                    available=True,
                    ordering=self.get_ordering_number(),
                ),
                dict(
                    name='Yukicon 6.0 viikonloppulippu',
                    description=
                    ('Pääsylippu Yukicon 6.0 -tapahtumaan Helsingin Messukeskuksen Siivessä 9.-10.3.2019.'
                     ),
                    limit_groups=[
                        limit_group('Yuki19 tavalliset liput', 2658),
                    ],
                    price_cents=3200,
                    requires_shipping=False,
                    electronic_ticket=True,
                    available=True,
                    ordering=self.get_ordering_number(),
                ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event, name=name, defaults=product_info)

            if not product.limit_groups.exists():
                product.limit_groups.set(limit_groups)
                product.save()
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2017{:05d}",
            contact_email='Pääkaupunkiseudun cosplay <*****@*****.**>',
            ticket_free_text="Tämä on sähköinen lippusi. Sähköinen lippu vaihdetaan rannekkeeseen\n"
                "lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai näyttää sen\n"
                "älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole mahdollista, ota ylös\n"
                "kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva sanakoodi ja ilmoita se\n"
                "lipunvaihtopisteessä.\n\n"
                "Tervetuloa tapahtumaan!",
            front_page_text="<h2>Tervetuloa ostamaan pääsylippuja Super Galactic Space Partyyn!</h2>"
                "<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
                "<p>Lue lisää <a href='https://pkscosplay.wordpress.com/tapahtuma/' target='_blank'>tapahtuman kotisivuilta</a>.</p>",
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        for product_info in [
            dict(
                name='Lippu Super Galactic Space Party -tapahtumaan ',
                description='Yksi lippu Super Galactic Space Party -tapahtumaan, joka järjestetään Kulttuuriareena Glorian tiloissa 3.12.2016. Lipun hinta sisältää sisäänpääsyn ja narikan. PDF -lippua vastaan saat tapahtumapaikalla pinssin, joka toimii pääsylippunasi tapahtuman ajan.',
                limit_groups=[
                    limit_group('Pääsyliput', 400),
                ],
                price_cents=700,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=self.get_ordering_number(),
            ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event,
                name=name,
                defaults=product_info
            )

            if not product.limit_groups.exists():
                product.limit_groups = limit_groups
                product.save()
Пример #31
0
    def handle(self, *args, **opts):
        from core.models import Event, Organization, Venue
        from enrollment.models import EnrollmentEventMeta
        from payments.models import PaymentsEventMeta
        from tickets.models import TicketsEventMeta, LimitGroup, Product, ShirtType, ShirtSize

        tz = tzlocal()
        organization = Organization.objects.get(slug='tracon-ry')
        venue, unused = Venue.objects.get_or_create(name='Ilmoitetaan myöhemmin')
        event, unused = Event.objects.get_or_create(
            slug='traconpaidat2019',
            defaults=dict(
                public=False,
                name='Traconin edustuspaitatilaus 2019',
                name_genitive='Traconin edustuspaitatilauksen',
                name_illative='Traconin edustuspaitatilaukseen',
                name_inessive='Traconin edustuspaitatilauksen',
                homepage_url='http://ry.tracon.fi/',
                organization=organization,
                start_time=datetime(2019, 9, 6, 10, 0, tzinfo=tz),
                end_time=datetime(2019, 9, 8, 22, 0, tzinfo=tz),
                venue=venue,
            )
        )

        tickets_admin_group, pos_access_group = TicketsEventMeta.get_or_create_groups(event, ['admins', 'pos'])
        payments_admin_group, = PaymentsEventMeta.get_or_create_groups(event, ['admins'])

        tracon_payments = PaymentsEventMeta.objects.get(event__slug='tracon2019')
        PaymentsEventMeta.objects.get_or_create(
            event=event,
            defaults=dict(
                admin_group=payments_admin_group,
                checkout_delivery_date='20190906',
                checkout_merchant=tracon_payments.checkout_merchant,
                checkout_password=tracon_payments.checkout_password,
            ),
        )

        defaults = dict(
            admin_group=tickets_admin_group,
            pos_access_group=pos_access_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2019{:06d}",
            contact_email='Traconin lipunmyynti <*****@*****.**>',
            front_page_text=(
                "<h2>Tervetuloa tilaamaan Traconin edustustuotteita!</h2>"
                "<p>Omavastuuosuus maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
                "<p>Huomaathan, että vaikka Toimitusosoite-vaiheessa kysytään postiosoitetta, edustustuotteita ei pääsääntöisesti postiteta. Edustustuotteita jaetaan conitean tilaisuuksissa kuten workshopeissa, ja voit sopia noudosta myös muiden tapahtumien edustuspöydiltä. Viimeistään saat edustustuotteesi Traconissa.</p>"
                "<p><strong>TÄRKEÄÄ:</strong> Lue kaikki ohjeet huolellisesti, sillä sovellamme verkkokauppaa sellaiseen käyttötarkoitukseen johon sitä ei ole suunniteltu. Erityisesti nimikoinnin ohjeet seuraavalla sivulla ovat epäintuitiiviset. Sori siitä.</p>"
            ),
        )

        if settings.DEBUG:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(event=event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        for index, product_info in enumerate([
            dict(
                name='Kauluspaita tai huppari',
                description=(
                    'Teknisistä syistä kauluspaidat ja hupparit on tässä niputettu samaan tuotteeseen. '
                    'Syötä tässä lukumääräksi haluamiesi paitojen ja hupparien yhteenlaskettu määrä. '
                    'Pääset seuraavassa vaiheessa valitsemaan, tilaatko paidan, hupparin vai molemmat, '
                    'sekä valitsemaan värit ja koot.</p>'
                    '<p><strong>TÄRKEÄÄ:</strong> Tilattavien tuotteiden enimmäismäärä on 3 kpl per hlö,'
                    'mutta verkkokauppa ei valvo tätä. Jos tilaat yli 3 kpl, aiheuttaa tilauksesi peruminen '
                    'ja rahojen palautus vaivalloista käsityötä.'
                ),
                limit_groups=[
                    limit_group('Edustustuotteet', 9999),
                ],
                price_cents=1500,
                requires_shipping=False,
                electronic_ticket=False,
                requires_shirt_size=True,
                available=True,
            ),
            dict(
                name='Nimikointi',
                description=(
                    'Jos haluat kauluspaitasi tai hupparisi nimikoituna, lisää tilaukseesi yhtä monta tätä tuotetta kuin tilaat huppareita tai kauluspaitoja.</p>'
                    '<p><strong>TÄRKEÄÄ:</strong> Jos tilaat nimikointeja, nimikointien määrän täytyy olla sama kuin tilattujen hupparien/kauluspaitojen määrän. '
                    'Verkkokauppa ei tarkista tätä automaattisesti, joten ole huolellinen tai aiheutat lisätyötä. '
                    'Jos haluat tilata sekä nimikoituja että nimikoimattomia tuotteita, tee niistä erilliset tilaukset. </p>'
                    '<p><strong>Syötä nimikointiteksti Toimitusosoite-vaiheessa Etunimi-kenttään, vaikkei se olisi oikea etunimesi.</strong>'
                ),
                limit_groups=[
                    limit_group('Nimikoinnit', 9999),
                ],
                price_cents=500,
                requires_shipping=False,
                electronic_ticket=False,
                requires_shirt_size=False,
                available=True,
            ),
        ]):
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=event,
                name=name,
                defaults=dict(product_info, ordering=index * 10),
            )

            if not product.limit_groups.exists():
                product.limit_groups.set(limit_groups)
                product.save()

        for shirt_type_slug, shirt_type_name, shirt_size_names in [
            ('huppari-musta', 'Huppari, musta', ['XS', 'S', 'M', 'L', 'XL', '2XL', '3XL']),
            ('huppari-punainen', 'Huppari, punainen', ['XS', 'S', 'M', 'L', 'XL', '2XL', '3XL']),
            ('kauluspaita-miehet', 'Miesten kauluspaita, musta', ['S', 'M', 'L', 'XL', '2XL', '3XL', '4XL']),
            ('kauluspaita-naiset', 'Naisten kauluspaita, musta', ['S', 'M', 'L', 'XL', '2XL', '3XL', '4XL']),
        ]:
            shirt_type, created = ShirtType.objects.get_or_create(
                event=event,
                slug=shirt_type_slug,
                defaults=dict(
                    name=shirt_type_name,
                ),
            )

            if created:
                for shirt_size_name in shirt_size_names:
                    ShirtSize.objects.get_or_create(
                        type=shirt_type,
                        slug=shirt_size_name,
                        defaults=dict(
                            name=shirt_size_name,
                        ),
                    )
Пример #32
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2018{:05d}",
            contact_email='Popcult Helsinki <*****@*****.**>',
            ticket_free_text=
                "Tämä on sähköinen lippusi Popcult Day 2018 -tapahtumaan. Sähköinen lippu vaihdetaan\n"
                "rannekkeeseen lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai\n"
                "näyttää sen älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole\n"
                "mahdollista, ota ylös kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva\n"
                "Kissakoodi ja ilmoita se lipunvaihtopisteessä.\n\n"
                "Tervetuloa Popcult Dayhin!",
            front_page_text="<h2>Tervetuloa ostamaan pääsylippuja Popcult Day 2018 -tapahtumaan!</h2>"
                "<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
                "<p>Lue lisää tapahtumasta <a href='http://popcult.fi/day-2018'>Popcult Day 2018 -tapahtuman kotisivuilta</a>.</p>",
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        def ordering():
            ordering.counter += 10
            return ordering.counter
        ordering.counter = 0

        for product_info in [
            dict(
                name='Popcult Day 2018 -lippu',
                description='Yksi pääsylippu Popcult Day -tapahtumaan lauantaille 12.5.2018. Sähköinen lippu vaihdetaan rannekkeeseen tapahtumapaikalla.',
                limit_groups=[
                    limit_group('Pääsyliput', 800),
                ],
                price_cents=1400,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=ordering(),
            ),

            dict(
                name='Kahden lipun tarjouspaketti Popcult Dayhin 2018',
                override_electronic_ticket_title='Popcult Day 2018 -tarjouslippu',
                description='Kaksi pääsylippua Popcult Day -tapahtumaan lauantaille 12.5.2018. Osta liput edullisemmin itsellesi ja vaikka lahjaksi kaverille! Sisältää kaksi sähköistä lippua, jotka vaihdetaan rannekkeisiin tapahtumapaikalla. Rajoitettu tarjous, myynnissä su 18.2. klo 23:59 asti.',
                limit_groups=[
                    limit_group('Kahden lipun tarjouspaketit', 100),
                ],
                price_cents=2500,
                requires_shipping=False,
                electronic_ticket=True,
                electronic_tickets_per_product=2,
                available=True,
                ordering=ordering(),
            ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event,
                name=name,
                defaults=product_info
            )

            if not product.limit_groups.exists():
                product.limit_groups.set(limit_groups)
                product.save()

        # v5
        if not meta.print_logo_path:
            meta.print_logo_path = mkpath('static', 'images', 'popcult.png')
            meta.print_logo_width_mm = 30
            meta.print_logo_height_mm = 30
            meta.save()
Пример #33
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(
            self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2017{:05d}",
            contact_email='Popcult Helsinki <*****@*****.**>',
            ticket_free_text=
            "Tämä on sähköinen lippusi Popcult Helsinki 2017 -tapahtumaan. Sähköinen lippu vaihdetaan\n"
            "rannekkeeseen lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai\n"
            "näyttää sen älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole\n"
            "mahdollista, ota ylös kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva\n"
            "Kissakoodi ja ilmoita se lipunvaihtopisteessä.\n\n"
            "Tervetuloa Popcult Helsinkiin!",
            front_page_text=
            "<h2>Tervetuloa ostamaan pääsylippuja Popcult Helsinki 2017 -tapahtumaan!</h2>"
            "<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
            "<p>Lue lisää tapahtumasta <a href='http://popcult.fi/helsinki-2017'>Popcult Helsinki 2017 -tapahtuman kotisivuilta</a>.</p>",
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )
        else:
            defaults.update(
                ticket_sales_starts=datetime(2016,
                                             12,
                                             5,
                                             18,
                                             0,
                                             tzinfo=self.tz),
                # ticket_sales_ends=datetime(2015, 1, 11, 18, 0, tzinfo=self.tz),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(
            event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        def ordering():
            ordering.counter += 10
            return ordering.counter

        ordering.counter = 0

        for product_info in [
                dict(
                    name='Popcult Helsinki 2017 -pääsylippu',
                    description=
                    'Lippu kattaa koko viikonlopun. Maksettuasi sinulle lähetetään PDF-lippu antamaasi sähköpostiin, jota vastaan saat rannekkeen tapahtuman ovelta.',
                    limit_groups=[
                        limit_group('Pääsyliput', 2000),
                    ],
                    price_cents=2600,
                    requires_shipping=False,
                    electronic_ticket=True,
                    available=True,
                    ordering=ordering(),
                ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event, name=name, defaults=product_info)

            if not product.limit_groups.exists():
                product.limit_groups = limit_groups
                product.save()

        # v5
        if not meta.print_logo_path:
            meta.print_logo_path = mkpath('static', 'images', 'popcult.png')
            meta.print_logo_width_mm = 30
            meta.print_logo_height_mm = 30
            meta.save()
Пример #34
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(
            self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2016{:05d}",
            contact_email='Lakeuscon NY <*****@*****.**>',
            ticket_free_text=
            "Tämä on sähköinen lippusi Lakeusconiin. Sähköinen lippu vaihdetaan rannekkeeseen\n"
            "lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai näyttää sen\n"
            "älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole mahdollista, ota ylös\n"
            "kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva Kissakoodi ja ilmoita se\n"
            "lipunvaihtopisteessä.\n\n"
            "Tervetuloa Lakeusconhin lauantaina 23. elokuuta 2016 Malmitalolle!",
            front_page_text=
            "<h2>Tervetuloa ostamaan pääsylippuja Lakeusconiin!</h2>"
            "<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
            "<p>Lue lisää tapahtumasta <a href='http://www.lakeusconny.fi'>Lakeusconin kotisivuilta</a>.</p>",
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )
        else:
            pass

        meta, unused = TicketsEventMeta.objects.get_or_create(
            event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        def ordering():
            ordering.counter += 10
            return ordering.counter

        ordering.counter = 0

        for product_info in [
                dict(
                    name='Lakeuscon-pääsylippu',
                    description=
                    'Maksettuasi sinulle lähetetään PDF-lippu antamaasi sähköpostiin, jota vastaan saat rannekkeen tapahtuman ovelta.',
                    limit_groups=[
                        limit_group('Pääsyliput', 500),
                    ],
                    price_cents=700,
                    requires_shipping=False,
                    electronic_ticket=True,
                    available=True,
                    ordering=ordering(),
                ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event, name=name, defaults=product_info)

            if not product.limit_groups.exists():
                product.limit_groups = limit_groups
                product.save()
Пример #35
0
    def handle(self, *args, **options):
        if settings.DEBUG:
            print('Setting up tracon9 in test mode')
        else:
            print('Setting up tracon9 in production mode')

        tz = tzlocal()

        #
        # Core
        #

        venue, unused = Venue.objects.get_or_create(name='Tampere-talo')
        content_type = ContentType.objects.get_for_model(SignupExtra)
        event, unused = Event.objects.get_or_create(
            slug='tracon9',
            defaults=dict(
                name='Tracon 9',
                name_genitive='Tracon 9 -tapahtuman',
                name_illative='Tracon 9 -tapahtumaan',
                name_inessive='Tracon 9 -tapahtumassa',
                homepage_url='http://2014.tracon.fi',
                organization_name='Tracon ry',
                organization_url='http://ry.tracon.fi',
                start_time=datetime(2014, 9, 13, 10, 0, tzinfo=tz),
                end_time=datetime(2014, 9, 14, 18, 0, tzinfo=tz),
                venue=venue,
            ))

        #
        # Labour
        #

        labour_admin_group, = LabourEventMeta.get_or_create_groups(
            event, ['admins'])

        if settings.DEBUG:
            person, unused = Person.get_or_create_dummy()
            labour_admin_group.user_set.add(person.user)

        labour_event_meta_defaults = dict(
            signup_extra_content_type=content_type,
            work_begins=datetime(2014, 9, 12, 8, 0, tzinfo=tz),
            work_ends=datetime(2014, 9, 14, 22, 0, tzinfo=tz),
            admin_group=labour_admin_group,
        )

        if settings.DEBUG:
            t = now()
            labour_event_meta_defaults.update(
                registration_opens=t - timedelta(days=60),
                registration_closes=t + timedelta(days=60),
            )
        else:
            labour_event_meta_defaults.update(
                registration_opens=datetime(2014, 3, 1, 0, 0, tzinfo=tz),
                registration_closes=datetime(2014, 8, 1, 0, 0, tzinfo=tz),
            )

        labour_event_meta, unused = LabourEventMeta.objects.get_or_create(
            event=event, defaults=labour_event_meta_defaults)

        # labour v7
        if not labour_event_meta.contact_email:
            labour_event_meta.contact_email = 'Tracon 9 -työvoimatiimi <*****@*****.**>'
            labour_event_meta.save()

        for name, description in [
            ('Conitea', 'Tapahtuman järjestelytoimikunnan eli conitean jäsen'),
            ('Erikoistehtävä',
             'Mikäli olet sopinut erikseen työtehtävistä ja/tai sinut on ohjeistettu täyttämään lomake, valitse tämä ja kerro tarkemmin Vapaa alue -kentässä mihin tehtävään ja kenen toimesta sinut on valittu.'
             ),
            ('Järjestyksenvalvoja',
             'Kävijöiden turvallisuuden valvominen conipaikalla ja yömajoituksessa. Edellyttää voimassa olevaa JV-korttia ja asiakaspalveluasennetta. HUOM! Et voi valita tätä tehtävää hakemukseesi, ellet ole täyttänyt tietoihisi JV-kortin numeroa (oikealta ylhäältä oma nimesi &gt; Pätevyydet).'
             ),
            ('Ensiapu',
             'Toimit osana tapahtuman omaa ensiapuryhmää. Vuoroja päivisin ja öisin tapahtuman aukioloaikoina. Vaaditaan vähintään voimassa oleva EA1 -kortti ja osalta myös voimassa oleva EA2 -kortti. Kerro Työkokemus -kohdassa osaamisestasi, esim. oletko toiminut EA-tehtävissä tapahtumissa tai oletko sairaanhoitaja/lähihoitaja koulutuksestaltasi.'
             ),
            ('Kasaus ja purku',
             'Kalusteiden siirtelyä & opasteiden kiinnittämistä. Ei vaadi erikoisosaamista. Työvuoroja myös jo pe sekä su conin sulkeuduttua, kerro lisätiedoissa jos voit osallistua näihin.'
             ),
            ('Logistiikka',
             'Autokuskina toimimista ja tavaroiden/ihmisten hakua ja noutamista. B-luokan ajokortti vaaditaan. Työvuoroja myös perjantaille.'
             ),
            ('Majoitusvalvoja',
             'Huolehtivat lattiamajoituspaikkojen pyörittämisestä yöaikaan. Työvuoroja myös molempina öinä.'
             ),
            ('Myynti',
             'Pääsylippujen ja Tracon-oheistuotteiden myyntiä sekä lippujen tarkastamista. Myyjiltä edellytetään täysi-ikäisyyttä, asiakaspalveluhenkeä ja huolellisuutta rahankäsittelyssä. Vuoroja myös perjantaina.'
             ),
            ('Narikka',
             'Narikassa ja isotavara- eli asenarikassa säilytetään tapahtuman aikana kävijöiden omaisuutta. Tehtävä ei vaadi erikoisosaamista.'
             ),
            ('Ohjelma-avustaja',
             'Lautapelien pyörittämistä, karaoken valvontaa, cosplay-kisaajien avustamista. Kerro Vapaa alue -kohdassa tarkemmin, mitä haluaisit tehdä. Huom! Puheohjelmasalien vänkäreiltä toivotaan AV-tekniikan osaamista.'
             ),
            ('Green room',
             'Työvoiman ruokahuolto green roomissa. Hygieniapassi suositeltava.'
             ),
            ('Taltiointi',
             'Taltioinnin keskeisiin tehtäviin kuuluvat mm. saleissa esitettävien ohjelmanumeroiden videointi tapahtumassa ja editointi tapahtuman jälkeen. Lisäksi videoidaan dokumentaarisella otteella myös yleisesti tapahtumaa. Kerro Työkokemus-kentässä aiemmasta videokuvauskokemuksestasi (esim. linkkejä videogallerioihisi) sekä mitä haluaisit taltioinnissa tehdä.'
             ),
            ('Tekniikka',
             'Salitekniikan (AV) ja tietotekniikan (tulostimet, lähiverkot, WLAN) nopeaa MacGyver-henkistä ongelmanratkaisua.'
             ),
            ('Valokuvaus',
             'Valokuvaus tapahtuu pääasiassa kuvaajien omilla järjestelmäkameroilla. Tehtäviä voivat olla studiokuvaus, salikuvaus sekä yleinen valokuvaus. Kerro Työkokemus-kentässä aiemmasta valokuvauskokemuksestasi (esim. linkkejä kuvagallerioihisi) sekä mitä/missä haluaisit tapahtumassa valokuvata.'
             ),
            ('Yleisvänkäri',
             'Sekalaisia tehtäviä laidasta laitaan, jotka eivät vaadi erikoisosaamista. Voit halutessasi kirjata lisätietoihin, mitä osaat ja haluaisit tehdä.'
             ),
            ('Info',
             'Infopisteen henkilökunta vastaa kävijöiden kysymyksiin ja ratkaisee heidän ongelmiaan tapahtuman paikana. Tehtävä edellyttää asiakaspalveluasennetta, tervettä järkeä ja ongelmanratkaisukykyä.'
             ),
        ]:
            JobCategory.objects.get_or_create(event=event,
                                              name=name,
                                              defaults=dict(
                                                  description=description,
                                                  slug=slugify(name),
                                              ))

        labour_event_meta.create_groups()

        for name in ['Conitea']:
            JobCategory.objects.filter(event=event,
                                       name=name).update(public=False)

        jvkortti = Qualification.objects.get(name='JV-kortti')
        jv = JobCategory.objects.get(event=event, name='Järjestyksenvalvoja')
        if not jv.required_qualifications.exists():
            jv.required_qualifications = [jvkortti]
            jv.save()

        b_ajokortti = Qualification.objects.get(slug='b-ajokortti')
        logistiikka = JobCategory.objects.get(
            event=event,
            name='Logistiikka',
        )
        if not logistiikka.required_qualifications.exists():
            logistiikka.required_qualifications = [b_ajokortti]
            logistiikka.save()

        period_length = timedelta(hours=8)
        for period_description, period_start in [
            ("Lauantain aamuvuoro (la klo 08-16)",
             event.start_time.replace(hour=8)),
            ("Lauantain iltavuoro (la klo 16-24)",
             event.start_time.replace(hour=16)),
            ("Lauantai-sunnuntai-yövuoro (su klo 00-08)",
             event.end_time.replace(hour=0)),
            ("Sunnuntain aamuvuoro (su klo 08-16)",
             event.end_time.replace(hour=8)),
            ("Sunnuntain iltavuoro (su klo 16-20)",
             event.end_time.replace(hour=16)),
        ]:
            WorkPeriod.objects.get_or_create(
                event=event,
                description=period_description,
                defaults=dict(start_time=period_start,
                              end_time=period_start + period_length))

        for diet_name in [
                'Gluteeniton',
                'Laktoositon',
                'Maidoton',
                'Vegaaninen',
                'Lakto-ovo-vegetaristinen',
        ]:
            SpecialDiet.objects.get_or_create(name=diet_name)

        for night in [
                'Perjantain ja lauantain välinen yö',
                'Lauantain ja sunnuntain välinen yö',
        ]:
            Night.objects.get_or_create(name=night)

        AlternativeSignupForm.objects.get_or_create(
            event=event,
            slug='conitea',
            defaults=dict(
                title='Conitean ilmoittautumislomake',
                signup_form_class_path=
                'events.tracon9.forms:OrganizerSignupForm',
                signup_extra_form_class_path=
                'events.tracon9.forms:OrganizerSignupExtraForm',
                active_from=datetime(2014, 7, 7, 12, 0, 0, tzinfo=tz),
                active_until=datetime(2014, 8, 31, 23, 59, 59, tzinfo=tz),
            ),
        )

        for wiki_space, link_title, link_group in [
            ('TERA', 'Työvoimawiki', 'accepted'),
            ('INFO', 'Infowiki', 'info'),
        ]:
            InfoLink.objects.get_or_create(
                event=event,
                title=link_title,
                defaults=dict(
                    url='https://confluence.tracon.fi/display/{wiki_space}'.
                    format(wiki_space=wiki_space),
                    group=labour_event_meta.get_group(link_group),
                ))

        #
        # Programme
        #

        programme_admin_group, = ProgrammeEventMeta.get_or_create_groups(
            event, ['admins'])
        programme_event_meta, unused = ProgrammeEventMeta.objects.get_or_create(
            event=event,
            defaults=dict(
                public=False,
                admin_group=programme_admin_group,
                contact_email='Tracon 9 -ohjelmatiimi <*****@*****.**>',
            ))

        room_order = 0
        for room_name in [
                'Iso sali',
                'Pieni sali',
                'Sopraano',
                'Rondo',
                'Studio',
                'Sonaatti 1',
                'Sonaatti 2',
                'Basso',
                'Opus 1',
                'Opus 2',
                'Opus 3',
                'Opus 4',
                'Puistolava',
                'Puisto - Iso miittiteltta',
                'Puisto - Pieni miittiteltta',
                'Puisto - Bofferiteltta',
        ]:
            room_order += 100
            Room.objects.get_or_create(venue=venue,
                                       slug=slugify(room_name),
                                       defaults=dict(name=room_name,
                                                     order=room_order))

        # programme v5
        if not programme_event_meta.contact_email:
            programme_event_meta.contact_email = '*****@*****.**'
            programme_event_meta.save()

        personnel_class, unused = PersonnelClass.objects.get_or_create(
            event=event,
            slug='ohjelma',
            defaults=dict(
                app_label='programme',
                name='Ohjelmanjärjestäjä',
            ))
        role, unused = Role.objects.get_or_create(
            personnel_class=personnel_class,
            title='Ohjelmanjärjestäjä',
            defaults=dict(
                is_default=True,
                require_contact_info=True,
            ))

        # programme v8
        role.is_default = True
        role.save()

        for title, style in [
            ('Animeohjelma', 'anime'),
            ('Cosplayohjelma', 'cosplay'),
            ('Miitti', 'miitti'),
            ('Muu ohjelma', 'muu'),
            ('Roolipeliohjelma', 'rope'),
        ]:
            Category.objects.get_or_create(event=event,
                                           style=style,
                                           defaults=dict(title=title, ))

        if settings.DEBUG:
            # create some test programme
            Programme.objects.get_or_create(
                category=Category.objects.get(title='Animeohjelma',
                                              event=event),
                title='Yaoi-paneeli',
                defaults=dict(description='Kika-kika tirsk', ))

        # programme v6
        for start_time, end_time in [
            (datetime(2014, 9, 13, 11, 0, 0,
                      tzinfo=tz), datetime(2014, 9, 14, 1, 0, 0, tzinfo=tz)),
            (datetime(2014, 9, 14, 9, 0, 0,
                      tzinfo=tz), datetime(2014, 9, 14, 17, 0, 0, tzinfo=tz))
        ]:
            TimeBlock.objects.get_or_create(event=event,
                                            start_time=start_time,
                                            defaults=dict(end_time=end_time))

        SpecialStartTime.objects.get_or_create(
            event=event,
            start_time=datetime(2014, 9, 13, 10, 30, 0, tzinfo=tz),
        )

        for view_name, room_names in [
            ('Pääohjelmatilat', [
                'Iso sali',
                'Pieni sali',
                'Studio',
                'Sonaatti 1',
                'Sonaatti 2',
                'Sopraano',
            ]),
            ('Toissijaiset ohjelmatilat', [
                'Opus 1',
                'Puistolava',
                'Puisto - Iso miittiteltta',
                'Puisto - Pieni miittiteltta',
            ]),
        ]:
            rooms = [
                Room.objects.get(name__iexact=room_name, venue=venue)
                for room_name in room_names
            ]

            view, created = View.objects.get_or_create(event=event,
                                                       name=view_name)

            if created:
                view.rooms = rooms
                view.save()

        #
        # Tickets
        #

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(
            event, ['admins'])
        give_all_app_perms_to_group('tickets', tickets_admin_group)

        tickets_event_meta_defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=100,
            reference_number_template='9{:05d}',
            contact_email='Tracon 9 -lipunmyynti <*****@*****.**>',
            ticket_spam_email='*****@*****.**',
            ticket_free_text=
            "Tämä on sähköinen lippusi Tracon 9 -tapahtumaan. Sähköinen lippu vaihdetaan rannekkeeseen\n"
            "lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai näyttää sen\n"
            "älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole mahdollista, ota ylös\n"
            "kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva sanakoodi ja ilmoita se\n"
            "lipunvaihtopisteessä.\n\n"
            "Tervetuloa Traconiin!")

        if settings.DEBUG:
            t = now()
            tickets_event_meta_defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )
        else:
            tickets_event_meta_defaults.update(
                ticket_sales_starts=datetime(2014, 3, 1, 0, 0, tzinfo=tz),
                ticket_sales_ends=datetime(2014, 8, 31, 0, 0, tzinfo=tz),
            )

        tickets_meta, unused = TicketsEventMeta.objects.get_or_create(
            event=event,
            defaults=tickets_event_meta_defaults,
        )

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        def ordering():
            ordering.counter += 10
            return ordering.counter

        ordering.counter = 0

        for product_info in [
                dict(
                    name='Koko viikonlopun lippu (e-lippu)',
                    description=
                    'Voimassa koko viikonlopun ajan la klo 10 - su klo 18. Toimitetaan sähköpostitse PDF-tiedostona. Ei toimituskuluja.',
                    limit_groups=[
                        limit_group('Lauantain liput', 5000),
                        limit_group('Sunnuntain liput', 5000),
                    ],
                    price_cents=1800,
                    requires_shipping=False,
                    electronic_ticket=True,
                    available=True,
                    ordering=ordering()),
                dict(
                    name='Koko viikonlopun lippu (postitse)',
                    description=
                    'Voimassa koko viikonlopun ajan la klo 10 - su klo 18. Toimitetaan kirjeenä kotiisi. Toimituskulut 1,00 €/tilaus.',
                    limit_groups=[
                        limit_group('Lauantain liput', 5000),
                        limit_group('Sunnuntain liput', 5000),
                    ],
                    price_cents=1800,
                    requires_shipping=True,
                    available=True,
                    ordering=ordering()),
                dict(
                    name='Lauantailippu (e-lippu)',
                    description=
                    'Voimassa koko lauantaipäivän ajan la klo 10 - su klo 08. Toimitetaan sähköpostitse PDF-tiedostona. Ei toimituskuluja.',
                    limit_groups=[
                        limit_group('Lauantain liput', 5000),
                    ],
                    price_cents=1200,
                    requires_shipping=False,
                    electronic_ticket=True,
                    available=True,
                    ordering=ordering()),
                dict(
                    name='Lauantailippu (postitse)',
                    description=
                    'Voimassa koko lauantaipäivän ajan la klo 10 - su klo 08. Toimitetaan kirjeenä kotiisi. Toimituskulut 1,00 €/tilaus.',
                    limit_groups=[
                        limit_group('Lauantain liput', 5000),
                    ],
                    price_cents=1200,
                    requires_shipping=True,
                    available=True,
                    ordering=ordering()),
                dict(
                    name='Sunnuntailippu (e-lippu)',
                    description=
                    'Voimassa koko sunnuntai ajan su klo 00 - su klo 18. Toimitetaan sähköpostitse PDF-tiedostona. Ei toimituskuluja.',
                    limit_groups=[
                        limit_group('Sunnuntain liput', 5000),
                    ],
                    price_cents=1000,
                    requires_shipping=False,
                    electronic_ticket=True,
                    available=True,
                    ordering=ordering()),
                dict(
                    name='Sunnuntailippu (postitse)',
                    description=
                    'Voimassa koko sunnuntai ajan su klo 00 - su klo 18. Toimitetaan kirjeenä kotiisi. Toimituskulut 1,00 €/tilaus.',
                    limit_groups=[
                        limit_group('Sunnuntain liput', 5000),
                    ],
                    price_cents=1000,
                    requires_shipping=True,
                    available=True,
                    ordering=ordering()),
                dict(
                    name='Lattiamajoitus 2 yötä pe-su (Aleksanterin koulu)',
                    description=
                    'Lattiamajoituspaikka pe-la ja la-su välisiksi öiksi Aleksanterin koululta. Majoituspaikasta ei tule erillistä lippua, vaan majoitus toimii nimilistaperiaatteella. Majoituspaikoista ei aiheudu toimituskuluja. Saat lisäohjeita majoituksesta sähköpostiisi ennen tapahtumaa.',
                    limit_groups=[
                        limit_group('Lattiamajoitus pe-la, Aleksanterin koulu',
                                    80),
                        limit_group('Lattiamajoitus la-su, Aleksanterin koulu',
                                    130),
                    ],
                    price_cents=2000,
                    requires_shipping=False,
                    available=True,
                    ordering=ordering()),
                dict(
                    name='Lattiamajoitus 1 yö la-su (Amurin koulu)',
                    description=
                    'Lattiamajoituspaikka lauantain ja sunnuntain väliseksi yöksi Amurin koululta. Majoituspaikasta ei tule erillistä lippua, vaan majoitus toimii nimilistaperiaatteella. Majoituspaikoista ei aiheudu toimituskuluja. Saat lisäohjeita majoituksesta sähköpostiisi ennen tapahtumaa.',
                    limit_groups=[
                        limit_group('Lattiamajoitus la-su, Amurin koulu', 250),
                    ],
                    price_cents=1000,
                    requires_shipping=False,
                    available=True,
                    ordering=ordering()),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')
            product, unused = Product.objects.get_or_create(
                event=event, name=name, defaults=product_info)
            if not product.limit_groups.exists():
                product.limit_groups = limit_groups
                product.save()

        for tag_title, tag_class in [
            ('Suositeltu', 'hilight'),
            ('In English', 'label-success'),
            ('K-18', 'label-danger'),
            ('K-16', 'label-warning'),
            ('K-15', 'label-warning'),
        ]:
            Tag.objects.get_or_create(
                event=event,
                title=tag_title,
                defaults=dict(style=tag_class, ),
            )

        #
        # Badges
        #
        badge_admin_group, = BadgesEventMeta.get_or_create_groups(
            event, ['admins'])

        BadgesEventMeta.objects.get_or_create(
            event=event, defaults=dict(admin_group=badge_admin_group, ))

        if False:  # Disabled -- where has "Template" gone?
            for template_name in [
                    'Conitea',
                    'Ylivänkäri',
                    'Työvoima',
                    'Ohjelmanjärjestäjä',
                    'Media',
                    'Myyjä',
                    'Vieras',
                    'Guest of Honour',
                    'Viikonloppulippu',
                    'Lauantailippu',
                    'Sunnuntailippu',
            ]:
                Template.objects.get_or_create(
                    event=event,
                    slug=slugify(template_name),
                    defaults=dict(name=template_name),
                )
Пример #36
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(
            self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2019{:06}",
            contact_email='Nekocon (2019) <*****@*****.**>',
            ticket_free_text=
            "Tämä on sähköinen lippusi vuoden 2019 Nekoconiin. Sähköinen lippu vaihdetaan rannekkeeseen\n"
            "lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai näyttää sen\n"
            "älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole mahdollista, ota ylös\n"
            "kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva Kissakoodi ja ilmoita se\n"
            "lipunvaihtopisteessä.\n\n"
            "Tervetuloa Nekocon (2019) -tapahtumaan!",
            front_page_text=
            "<h2>Tervetuloa ostamaan pääsylippuja Nekoconiin!</h2>"
            "<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
            "<p>Lue lisää tapahtumasta <a href='http://nekocon.fi'>Nekoconin kotisivuilta</a>.</p>"
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(
            event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        for product_info in [
                dict(
                    name='Nekocon (2019) -pääsylippu',
                    description=
                    'Viikonloppuranneke Kuopiossa järjestettävään vuoden 2019 Nekoconiin. Huom. myynnissä vain viikonloppurannekkeita. E-lippu vaihdetaan ovella rannekkeeseen.',
                    limit_groups=[
                        limit_group('Pääsyliput', 3000),
                    ],
                    price_cents=2200,
                    requires_shipping=False,
                    electronic_ticket=True,
                    available=True,
                    ordering=self.get_ordering_number(),
                ),
                # dict(
                #     name='Lattiamajoituspaikka (koko vkl)',
                #     description='Lattiamajoituspaikka molemmiksi öiksi pe-la ja la-su. Majoituksesta lisää tietoa sivuillamme www.nekocon.fi.',
                #     limit_groups=[
                #         limit_group('Lattiamajoitus pe-la', 445),
                #         limit_group('Lattiamajoitus la-su', 445),
                #     ],
                #     price_cents=1000,
                #     requires_shipping=False,
                #     electronic_ticket=False,
                #     available=True,
                #     ordering=self.get_ordering_number(),
                # ),
                # dict(
                #     name='Lattiamajoituspaikka (pe-la)',
                #     description='Lattiamajoituspaikka perjantain ja lauantain väliseksi yöksi. Majoituksesta lisää tietoa sivuillamme www.nekocon.fi.',
                #     limit_groups=[
                #         limit_group('Lattiamajoitus pe-la', 445),
                #     ],
                #     price_cents=700,
                #     requires_shipping=False,
                #     electronic_ticket=False,
                #     available=True,
                #     ordering=self.get_ordering_number(),
                # ),
                # dict(
                #     name='Lattiamajoituspaikka (la-su)',
                #     description='Lattiamajoituspaikka lauantain ja sunnuntain väliseksi yöksi. Majoituksesta lisää tietoa sivuillamme www.nekocon.fi.',
                #     limit_groups=[
                #         limit_group('Lattiamajoitus la-su', 445),
                #     ],
                #     price_cents=700,
                #     requires_shipping=False,
                #     electronic_ticket=False,
                #     available=True,
                #     ordering=self.get_ordering_number(),
                # ),
                # dict(
                #     name='Nekocon (2019) -konserttilippu',
                #     description='Lippu Nekoconin konserttiin. Mikäli tarvitset pyörätuolipaikkaa, otathan ennen ostoa yhteyttä <em>[email protected]</em>, jotta voimme varmistaa paikkatilanteen.',
                #     limit_groups=[
                #         limit_group('Konserttiliput', 820),
                #     ],
                #     price_cents=500,
                #     requires_shipping=True,
                #     electronic_ticket=False,
                #     available=True,
                #     ordering=self.get_ordering_number(),
                # ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event, name=name, defaults=product_info)

            if not product.limit_groups.exists():
                product.limit_groups.set(limit_groups)
                product.save()
Пример #37
0
    def handle(self, *args, **opts):
        from core.models import Event, Organization, Venue
        from enrollment.models import EnrollmentEventMeta
        from payments.models import PaymentsEventMeta
        from tickets.models import TicketsEventMeta, LimitGroup, Product, ShirtType, ShirtSize

        tz = tzlocal()
        organization = Organization.objects.get(slug='tracon-ry')
        venue, unused = Venue.objects.get_or_create(
            name='Ilmoitetaan myöhemmin')
        event, unused = Event.objects.get_or_create(
            slug='traconpaidat2019',
            defaults=dict(
                public=False,
                name='Traconin edustuspaitatilaus 2019',
                name_genitive='Traconin edustuspaitatilauksen',
                name_illative='Traconin edustuspaitatilaukseen',
                name_inessive='Traconin edustuspaitatilauksen',
                homepage_url='http://ry.tracon.fi/',
                organization=organization,
                start_time=datetime(2019, 9, 6, 10, 0, tzinfo=tz),
                end_time=datetime(2019, 9, 8, 22, 0, tzinfo=tz),
                venue=venue,
            ))

        tickets_admin_group, pos_access_group = TicketsEventMeta.get_or_create_groups(
            event, ['admins', 'pos'])
        payments_admin_group, = PaymentsEventMeta.get_or_create_groups(
            event, ['admins'])

        tracon_payments = PaymentsEventMeta.objects.get(
            event__slug='tracon2019')
        PaymentsEventMeta.objects.get_or_create(
            event=event,
            defaults=dict(
                admin_group=payments_admin_group,
                checkout_delivery_date='20190906',
                checkout_merchant=tracon_payments.checkout_merchant,
                checkout_password=tracon_payments.checkout_password,
            ),
        )

        defaults = dict(
            admin_group=tickets_admin_group,
            pos_access_group=pos_access_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2019{:06d}",
            contact_email='Traconin lipunmyynti <*****@*****.**>',
            front_page_text=
            ("<h2>Tervetuloa tilaamaan Traconin edustustuotteita!</h2>"
             "<p>Omavastuuosuus maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
             "<p>Huomaathan, että vaikka Toimitusosoite-vaiheessa kysytään postiosoitetta, edustustuotteita ei pääsääntöisesti postiteta. Edustustuotteita jaetaan conitean tilaisuuksissa kuten workshopeissa, ja voit sopia noudosta myös muiden tapahtumien edustuspöydiltä. Viimeistään saat edustustuotteesi Traconissa.</p>"
             "<p><strong>TÄRKEÄÄ:</strong> Lue kaikki ohjeet huolellisesti, sillä sovellamme verkkokauppaa sellaiseen käyttötarkoitukseen johon sitä ei ole suunniteltu. Erityisesti nimikoinnin ohjeet seuraavalla sivulla ovat epäintuitiiviset. Sori siitä.</p>"
             ),
        )

        if settings.DEBUG:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(
            event=event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        for index, product_info in enumerate([
                dict(
                    name='Kauluspaita tai huppari',
                    description=
                    ('Teknisistä syistä kauluspaidat ja hupparit on tässä niputettu samaan tuotteeseen. '
                     'Syötä tässä lukumääräksi haluamiesi paitojen ja hupparien yhteenlaskettu määrä. '
                     'Pääset seuraavassa vaiheessa valitsemaan, tilaatko paidan, hupparin vai molemmat, '
                     'sekä valitsemaan värit ja koot.</p>'
                     '<p><strong>TÄRKEÄÄ:</strong> Tilattavien tuotteiden enimmäismäärä on 3 kpl per hlö,'
                     'mutta verkkokauppa ei valvo tätä. Jos tilaat yli 3 kpl, aiheuttaa tilauksesi peruminen '
                     'ja rahojen palautus vaivalloista käsityötä.'),
                    limit_groups=[
                        limit_group('Edustustuotteet', 9999),
                    ],
                    price_cents=1500,
                    requires_shipping=False,
                    electronic_ticket=False,
                    requires_shirt_size=True,
                    available=True,
                ),
                dict(
                    name='Nimikointi',
                    description=
                    ('Jos haluat kauluspaitasi tai hupparisi nimikoituna, lisää tilaukseesi yhtä monta tätä tuotetta kuin tilaat huppareita tai kauluspaitoja.</p>'
                     '<p><strong>TÄRKEÄÄ:</strong> Jos tilaat nimikointeja, nimikointien määrän täytyy olla sama kuin tilattujen hupparien/kauluspaitojen määrän. '
                     'Verkkokauppa ei tarkista tätä automaattisesti, joten ole huolellinen tai aiheutat lisätyötä. '
                     'Jos haluat tilata sekä nimikoituja että nimikoimattomia tuotteita, tee niistä erilliset tilaukset. </p>'
                     '<p><strong>Syötä nimikointiteksti Toimitusosoite-vaiheessa Etunimi-kenttään, vaikkei se olisi oikea etunimesi.</strong>'
                     ),
                    limit_groups=[
                        limit_group('Nimikoinnit', 9999),
                    ],
                    price_cents=500,
                    requires_shipping=False,
                    electronic_ticket=False,
                    requires_shirt_size=False,
                    available=True,
                ),
        ]):
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=event,
                name=name,
                defaults=dict(product_info, ordering=index * 10),
            )

            if not product.limit_groups.exists():
                product.limit_groups.set(limit_groups)
                product.save()

        for shirt_type_slug, shirt_type_name, shirt_size_names in [
            ('huppari-musta', 'Huppari, musta',
             ['XS', 'S', 'M', 'L', 'XL', '2XL', '3XL']),
            ('huppari-punainen', 'Huppari, punainen',
             ['XS', 'S', 'M', 'L', 'XL', '2XL', '3XL']),
            ('kauluspaita-miehet', 'Miesten kauluspaita, musta',
             ['S', 'M', 'L', 'XL', '2XL', '3XL', '4XL']),
            ('kauluspaita-naiset', 'Naisten kauluspaita, musta',
             ['S', 'M', 'L', 'XL', '2XL', '3XL', '4XL']),
        ]:
            shirt_type, created = ShirtType.objects.get_or_create(
                event=event,
                slug=shirt_type_slug,
                defaults=dict(name=shirt_type_name, ),
            )

            if created:
                for shirt_size_name in shirt_size_names:
                    ShirtSize.objects.get_or_create(
                        type=shirt_type,
                        slug=shirt_size_name,
                        defaults=dict(name=shirt_size_name, ),
                    )
Пример #38
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2019{:06}",
            contact_email='Nekocon (2019) <*****@*****.**>',
            ticket_free_text="Tämä on sähköinen lippusi vuoden 2019 Nekoconiin. Sähköinen lippu vaihdetaan rannekkeeseen\n"
                "lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai näyttää sen\n"
                "älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole mahdollista, ota ylös\n"
                "kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva Kissakoodi ja ilmoita se\n"
                "lipunvaihtopisteessä.\n\n"
                "Tervetuloa Nekocon (2019) -tapahtumaan!",
            front_page_text="<h2>Tervetuloa ostamaan pääsylippuja Nekoconiin!</h2>"
                "<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
                "<p>Lue lisää tapahtumasta <a href='http://nekocon.fi'>Nekoconin kotisivuilta</a>.</p>"
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        for product_info in [
            dict(
                name='Nekocon (2019) -pääsylippu',
                description='Viikonloppuranneke Kuopiossa järjestettävään vuoden 2019 Nekoconiin. Huom. myynnissä vain viikonloppurannekkeita. E-lippu vaihdetaan ovella rannekkeeseen.',
                limit_groups=[
                    limit_group('Pääsyliput', 3000),
                ],
                price_cents=2200,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=self.get_ordering_number(),
            ),
            dict(
                name='Lattiamajoituspaikka (koko vkl)',
                description='Lattiamajoituspaikka molemmiksi öiksi pe-la ja la-su. Majoitus aukeaa perjantaina 18:00 ja sulkeutuu sunnuntaina 12:00.',
                limit_groups=[
                    limit_group('Lattiamajoitus pe-la', 220),
                    limit_group('Lattiamajoitus la-su', 220),
                ],
                price_cents=1500,
                requires_shipping=False,
                electronic_ticket=False,
                requires_accommodation_information=True,
                available=True,
                ordering=self.get_ordering_number(),
            ),
            # dict(
            #     name='Lattiamajoituspaikka (pe-la)',
            #     description='Lattiamajoituspaikka perjantain ja lauantain väliseksi yöksi. Majoituksesta lisää tietoa sivuillamme www.nekocon.fi.',
            #     limit_groups=[
            #         limit_group('Lattiamajoitus pe-la', 445),
            #     ],
            #     price_cents=700,
            #     requires_shipping=False,
            #     electronic_ticket=False,
            #     available=True,
            #     ordering=self.get_ordering_number(),
            # ),
            # dict(
            #     name='Lattiamajoituspaikka (la-su)',
            #     description='Lattiamajoituspaikka lauantain ja sunnuntain väliseksi yöksi. Majoituksesta lisää tietoa sivuillamme www.nekocon.fi.',
            #     limit_groups=[
            #         limit_group('Lattiamajoitus la-su', 445),
            #     ],
            #     price_cents=700,
            #     requires_shipping=False,
            #     electronic_ticket=False,
            #     available=True,
            #     ordering=self.get_ordering_number(),
            # ),
            # dict(
            #     name='Nekocon (2019) -konserttilippu',
            #     description='Lippu Nekoconin konserttiin. Mikäli tarvitset pyörätuolipaikkaa, otathan ennen ostoa yhteyttä <em>[email protected]</em>, jotta voimme varmistaa paikkatilanteen.',
            #     limit_groups=[
            #         limit_group('Konserttiliput', 820),
            #     ],
            #     price_cents=500,
            #     requires_shipping=True,
            #     electronic_ticket=False,
            #     available=True,
            #     ordering=self.get_ordering_number(),
            # ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event,
                name=name,
                defaults=product_info
            )

            if not product.limit_groups.exists():
                product.limit_groups.set(limit_groups)
                product.save()
Пример #39
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2017{:05d}",
            contact_email='Traconin lipunmyynti <*****@*****.**>',
            ticket_free_text="Tämä on sähköinen lippusi Traconiin. Sähköinen lippu vaihdetaan rannekkeeseen\n"
                "lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai näyttää sen\n"
                "älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole mahdollista, ota ylös\n"
                "kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva sanakoodi ja ilmoita se\n"
                "lipunvaihtopisteessä.\n\n"
                "Tervetuloa Traconiin!",
            front_page_text="<h2>Tervetuloa ostamaan pääsylippuja Traconiin!</h2>"
                "<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
                "<p>Lue lisää tapahtumasta <a href='http://2017.tracon.fi'>Traconin kotisivuilta</a>.</p>",
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )
        else:
            pass

        meta, unused = TicketsEventMeta.objects.get_or_create(event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        for product_info in [
            dict(
                name='Viikonloppulippu',
                description='Voimassa koko viikonlopun ajan la klo 10 - su klo 18. Toimitetaan sähköpostitse PDF-tiedostona.',
                limit_groups=[
                    limit_group('Lauantain liput', 2900),
                    limit_group('Sunnuntain liput', 2900),
                ],
                price_cents=2500,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=self.get_ordering_number(),
            ),
            dict(
                name='Lauantailippu',
                description='   Voimassa koko lauantaipäivän ajan la klo 10 - su klo 08. Toimitetaan sähköpostitse PDF-tiedostona.',
                limit_groups=[
                    limit_group('Lauantain liput', 2900),
                ],
                price_cents=1800,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=self.get_ordering_number(),
            ),
            dict(
                name='Sunnuntailippu',
                description='   Voimassa koko sunnuntaipäivän ajan su klo 00 - su klo 18. Toimitetaan sähköpostitse PDF-tiedostona.',
                limit_groups=[
                    limit_group('Sunnuntain liput', 2900),
                ],
                price_cents=1500,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=self.get_ordering_number(),
            ),
            dict(
                name='Iltabilelippu',
                description='Traconin iltabileet Pakkahuoneella lauantaina 3. syyskuuta 2017 kello 19–01. Esiintyjät julkistetaan lähempänä tapahtumaa. Ei edellytä pääsylippua Traconiin.',
                limit_groups=[
                    limit_group('Iltabileliput', 1300),
                ],
                price_cents=500,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=self.get_ordering_number(),
            ),
            dict(
                name='Lattiamajoitus 1 yö pe-la - Aleksanterin koulu (sis. makuualusta)',
                description='Lattiamajoituspaikka perjantain ja lauantain väliseksi yöksi Aleksanterin koululta. Aleksanterin koulun majoituspaikat sisältävät makuualustan, joten sinun tarvitsee tuoda vain makuupussi.',
                limit_groups=[
                    limit_group('Majoitus Aleksanteri pe-la', 130),
                ],
                price_cents=1300,
                requires_shipping=False,
                requires_accommodation_information=True,
                electronic_ticket=False,
                available=True,
                ordering=self.get_ordering_number(),
            ),
            dict(
                name='Lattiamajoitus 1 yö la-su - Aleksanterin koulu (sis. makuualusta)',
                description='Lattiamajoituspaikka lauantain ja sunnuntain väliseksi yöksi Aleksanterin koululta. Aleksanterin koulun majoituspaikat sisältävät makuualustan, joten sinun tarvitsee tuoda vain makuupussi.',
                limit_groups=[
                    limit_group('Majoitus Aleksanteri la-su', 130),
                ],
                price_cents=1300,
                requires_shipping=False,
                requires_accommodation_information=True,
                electronic_ticket=False,
                available=True,
                ordering=self.get_ordering_number(),
            ),
            dict(
                name='Lattiamajoitus 1 yö pe-la - Pyynikin koulu (ei sis. makuualustaa)',
                description='Lattiamajoituspaikka lauantain ja sunnuntain väliseksi yöksi Pyynikin koululta. Pyynikin koulun majoituspaikat eivät sisällä makuualustaa, joten sinun tarvitsee tuoda makuupussi ja makuualusta tai patja.',
                limit_groups=[
                    limit_group('Majoitus Pyynikki pe-la', 120),
                ],
                price_cents=1000,
                requires_shipping=False,
                requires_accommodation_information=True,
                electronic_ticket=False,
                available=True,
                ordering=self.get_ordering_number(),
            ),
            dict(
                name='Lattiamajoitus 1 yö la-su - Pyynikin koulu (ei sis. makuualustaa)',
                description='Lattiamajoituspaikka lauantain ja sunnuntain väliseksi yöksi Pyynikin koululta. Pyynikin koulun majoituspaikat eivät sisällä makuualustaa, joten sinun tarvitsee tuoda makuupussi ja makuualusta tai patja.',
                limit_groups=[
                    limit_group('Majoitus Pyynikki la-su', 120),
                ],
                price_cents=1000,
                requires_shipping=False,
                requires_accommodation_information=True,
                electronic_ticket=False,
                available=True,
                ordering=self.get_ordering_number(),
            ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event,
                name=name,
                defaults=product_info
            )

            if not product.limit_groups.exists():
                product.limit_groups = limit_groups
                product.save()

        if not meta.receipt_footer:
            meta.receipt_footer = "Tracon ry / Yhdrek. nro. 194.820 / [email protected]"
            meta.save()
Пример #40
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2016{:05d}",
            contact_email='Mimicon <*****@*****.**>',
            plain_contact_email='*****@*****.**',
            ticket_free_text=u"Tämä on sähköinen lippusi Mimicon 2016 -tapahtumaan. Sähköinen lippu vaihdetaan rannekkeeseen\n"
                u"lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai näyttää sen\n"
                u"älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole mahdollista, ota ylös\n"
                u"kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva sanakoodi ja ilmoita se\n"
                u"lipunvaihtopisteessä.\n\n"
                u"Tervetuloa Mimiconiin!",
            front_page_text=u"<h2>Tervetuloa ostamaan pääsylippuja Mimicon 2016 -tapahtumaan!</h2>"
                u"<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
                u"<p>Lue lisää tapahtumasta <a href='http://www.mimicon.fi'>Mimiconin kotisivuilta</a>.</p>",
            print_logo_path = mkpath('static', 'images', 'mimicon2016_logo.png'),
            print_logo_width_mm = 30,
            print_logo_height_mm = 30,
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )
        else:
            defaults.update(
                ticket_sales_starts=datetime(2016, 1, 15, 16, 0, tzinfo=self.tz),
                #ticket_sales_ends=datetime(2016, 1, 11, 18, 0, tzinfo=self.tz),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        def ordering():
            ordering.counter += 10
            return ordering.counter
        ordering.counter = 0

        for product_info in [
            dict(
                name=u'Mimicon 2016 -pääsylippu',
                description=u'Lippu kattaa koko viikonlopun. Maksettuasi sinulle lähetetään PDF-lippu antamaasi sähköpostiin, jota vastaan saat rannekkeen tapahtuman ovelta.',
                limit_groups=[
                    limit_group('Pääsyliput', 500),
                ],
                price_cents=1600,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=ordering(),
            ),
            dict(
                name=u'Lattiamajoituspaikka',
                description=u'Lattiamajoituspaikka lauantain ja sunnuntain väliseksi yöksi. Tarvitset oman makuupussin ja -alustan. Lattiamajoituksesta ei lähetetä erillistä lippua, vaan lattiamajoitus toimii nimi listaan -periaatteella.',
                limit_groups=[
                    limit_group('Lattiamajoitus', 80),
                ],
                price_cents=500,
                requires_shipping=False,
                electronic_ticket=False,
                available=True,
                ordering=ordering(),
            ),
            # dict(
            #     name=u'Lounaslippu',
            #     description=u'Tällä lipukkeella saat herkullisen lounaan ravintola Napostellasta kumpana tahansa tapahtumapäivänä. Lounasliput toimitetaan samalla PDF-lipulla pääsylippujesi kanssa.',
            #     limit_groups=[
            #         limit_group('Lounas', 100),
            #     ],
            #     price_cents=780,
            #     requires_shipping=False,
            #     electronic_ticket=True,
            #     available=False,
            #     ordering=ordering(),
            # ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event,
                name=name,
                defaults=product_info
            )

            if not product.limit_groups.exists():
                product.limit_groups = limit_groups
                product.save()
Пример #41
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2015{:05d}",
            contact_email='Yukicon <*****@*****.**>',
            plain_contact_email='*****@*****.**',
            ticket_free_text=u"Tämä on sähköinen lippusi Yukicon 2.0 -tapahtumaan. Sähköinen lippu vaihdetaan rannekkeeseen\n"
                u"lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai näyttää sen\n"
                u"älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole mahdollista, ota ylös\n"
                u"kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva sanakoodi ja ilmoita se\n"
                u"lipunvaihtopisteessä.\n\n"
                u"Tervetuloa Yukiconiin!",
            front_page_text=u"<h2>Tervetuloa ostamaan pääsylippuja Yukicon 2.0 -tapahtumaan!</h2>"
                u"<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
                u"<p>Lue lisää tapahtumasta <a href='http://www.yukicon.fi'>Yukiconin kotisivuilta</a>.</p>",
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )
        else:
            defaults.update(
                ticket_sales_starts=datetime(2014, 11, 20, 18, 0, tzinfo=self.tz),
                ticket_sales_ends=datetime(2015, 1, 11, 18, 0, tzinfo=self.tz),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        def ordering():
            ordering.counter += 10
            return ordering.counter
        ordering.counter = 0

        for product_info in [
            dict(
                name=u'Yukicon 2015 -pääsylippu',
                description=u'Lippu kattaa koko viikonlopun. Maksettuasi sinulle lähetetään PDF-lippu antamaasi sähköpostiin, jota vastaan saat rannekkeen tapahtuman ovelta.',
                limit_groups=[
                    limit_group('Pääsyliput', 1450),
                ],
                price_cents=1700,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=ordering(),
            ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event,
                name=name,
                defaults=product_info
            )

            if not product.limit_groups.exists():
                product.limit_groups = limit_groups
                product.save()
Пример #42
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(
            self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2019{:05d}",
            contact_email='Popcult Helsinki <*****@*****.**>',
            ticket_free_text=
            "Tämä on sähköinen lippusi Popcult Nights 2019 -tapahtumaan. Voit tulostaa tämän lipun tai\n"
            "näyttää sen älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole\n"
            "mahdollista, ota ylös kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva\n"
            "Kissakoodi ja ilmoita se lipunvaihtopisteessä.\n\n"
            "Tervetuloa Popcult Nightsiin!",
            front_page_text=
            "<h2>Tervetuloa ostamaan pääsylippuja Popcult Nights 2019 -tapahtumaan!</h2>"
            "<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
            "<p>Lue lisää tapahtumasta <a href='http://popcult.fi/nights-2019'>Popcult Nights 2019 -tapahtuman kotisivuilta</a>.</p>",
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(
            event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        def ordering():
            ordering.counter += 10
            return ordering.counter

        ordering.counter = 0

        for product_info in [
                dict(
                    name='Popcult Nights 2019 -pääsylippu',
                    description=
                    'Yksi pääsylippu Popcult Nights -tapahtumaan perjantaille 27.9.2019. Ovet kello 19:00. Sisältää narikan.',
                    limit_groups=[
                        limit_group('Pääsyliput', 180),
                    ],
                    price_cents=900,
                    requires_shipping=False,
                    electronic_ticket=True,
                    available=True,
                    ordering=ordering(),
                ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event, name=name, defaults=product_info)

            if not product.limit_groups.exists():
                product.limit_groups.set(limit_groups)
                product.save()
Пример #43
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(
            self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2018{:05d}",
            contact_email='Mimicon <*****@*****.**>',
            ticket_free_text=
            "Tämä on sähköinen lippusi Mimicon 2018 -tapahtumaan. Sähköinen lippu vaihdetaan rannekkeeseen\n"
            "lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai näyttää sen\n"
            "älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole mahdollista, ota ylös\n"
            "kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva sanakoodi ja ilmoita se\n"
            "lipunvaihtopisteessä.\n\n"
            "Tervetuloa Mimiconiin!",
            front_page_text=
            "<h2>Tervetuloa ostamaan pääsylippuja Mimicon 2018 -tapahtumaan!</h2>"
            "<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
            "<p>Lue lisää tapahtumasta <a href='http://www.mimicon.fi'>Mimiconin kotisivuilta</a>.</p>",
            print_logo_path=mkpath('static', 'images', 'mimicon2018_logo.png'),
            print_logo_width_mm=30,
            print_logo_height_mm=30,
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(
            event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        def ordering():
            ordering.counter += 10
            return ordering.counter

        ordering.counter = 0

        for product_info in [
                dict(
                    name='Mimicon 2018 -pääsylippu',
                    description=
                    'Lippu kattaa koko viikonlopun. Maksettuasi sinulle lähetetään PDF-lippu antamaasi sähköpostiin, jota vastaan saat rannekkeen tapahtuman ovelta.',
                    limit_groups=[
                        limit_group('Pääsyliput', 500),
                    ],
                    price_cents=1600,
                    requires_shipping=False,
                    electronic_ticket=True,
                    available=True,
                    ordering=ordering(),
                ),
                dict(
                    name='Lattiamajoituspaikka',
                    description=
                    'Lattiamajoituspaikka lauantain ja sunnuntain väliseksi yöksi. Tarvitset oman makuupussin ja -alustan. Lattiamajoituksesta ei lähetetä erillistä lippua, vaan lattiamajoitus toimii nimi listaan -periaatteella.',
                    limit_groups=[
                        limit_group('Lattiamajoitus', 80),
                    ],
                    price_cents=500,
                    requires_shipping=False,
                    electronic_ticket=False,
                    available=True,
                    ordering=ordering(),
                ),
                # dict(
                #     name='Lounaslippu',
                #     description='Tällä lipukkeella saat herkullisen lounaan ravintola Napostellasta kumpana tahansa tapahtumapäivänä. Lounasliput toimitetaan samalla PDF-lipulla pääsylippujesi kanssa.',
                #     limit_groups=[
                #         limit_group('Lounas', 100),
                #     ],
                #     price_cents=780,
                #     requires_shipping=False,
                #     electronic_ticket=True,
                #     available=False,
                #     ordering=ordering(),
                # ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event, name=name, defaults=product_info)

            if not product.limit_groups.exists():
                product.limit_groups = limit_groups
                product.save()
Пример #44
0
    def setup_tickets(self):
        from tickets.models import TicketsEventMeta, LimitGroup, Product

        tickets_admin_group, = TicketsEventMeta.get_or_create_groups(self.event, ['admins'])

        defaults = dict(
            admin_group=tickets_admin_group,
            due_days=14,
            shipping_and_handling_cents=0,
            reference_number_template="2015{:05d}",
            contact_email='Popcult Day <*****@*****.**>',
            plain_contact_email='*****@*****.**',
            ticket_free_text=u"Tämä on sähköinen lippusi Popcult Day -tapahtumaan. Sähköinen lippu vaihdetaan rannekkeeseen\n"
                u"lipunvaihtopisteessä saapuessasi tapahtumaan. Voit tulostaa tämän lipun tai näyttää sen\n"
                u"älypuhelimen tai tablettitietokoneen näytöltä. Mikäli kumpikaan näistä ei ole mahdollista, ota ylös\n"
                u"kunkin viivakoodin alla oleva neljästä tai viidestä sanasta koostuva Kissakoodi ja ilmoita se\n"
                u"lipunvaihtopisteessä.\n\n"
                u"Tervetuloa Popcult Dayhin lauantaina 23. elokuuta 2015 Malmitalolle!",
            front_page_text=u"<h2>Tervetuloa ostamaan pääsylippuja Popcult Day -tapahtumaan!</h2>"
                u"<p>Liput maksetaan suomalaisilla verkkopankkitunnuksilla heti tilauksen yhteydessä.</p>"
                u"<p>Lue lisää tapahtumasta <a href='http://popcult.fi/day'>Popcult Day -tapahtuman kotisivuilta</a>.</p>",
        )

        if self.test:
            t = now()
            defaults.update(
                ticket_sales_starts=t - timedelta(days=60),
                ticket_sales_ends=t + timedelta(days=60),
            )
        else:
            defaults.update(
                ticket_sales_starts=datetime(2015, 7, 20, 18, 0, tzinfo=self.tz),
                # ticket_sales_ends=datetime(2015, 1, 11, 18, 0, tzinfo=self.tz),
            )

        meta, unused = TicketsEventMeta.objects.get_or_create(event=self.event, defaults=defaults)

        def limit_group(description, limit):
            limit_group, unused = LimitGroup.objects.get_or_create(
                event=self.event,
                description=description,
                defaults=dict(limit=limit),
            )

            return limit_group

        def ordering():
            ordering.counter += 10
            return ordering.counter
        ordering.counter = 0

        for product_info in [
            dict(
                name=u'Popcult Day -pääsylippu',
                description=u'Rannekkeella pääset seuraamaan puheohjelmaa sekä osallistumaan työpajoihin. Työpajojen mahdollisista materiaalimaksuista ilmoitetaan erikseen. Maksettuasi sinulle lähetetään PDF-lippu antamaasi sähköpostiin, jota vastaan saat rannekkeen tapahtuman ovelta.',
                limit_groups=[
                    limit_group('Pääsyliput', 500),
                ],
                price_cents=500,
                requires_shipping=False,
                electronic_ticket=True,
                available=True,
                ordering=ordering(),
            ),
        ]:
            name = product_info.pop('name')
            limit_groups = product_info.pop('limit_groups')

            product, unused = Product.objects.get_or_create(
                event=self.event,
                name=name,
                defaults=product_info
            )

            if not product.limit_groups.exists():
                product.limit_groups = limit_groups
                product.save()

        # v5
        if not meta.print_logo_path:
            meta.print_logo_path = mkpath('static', 'images', 'popcult.png')
            meta.print_logo_width_mm = 30
            meta.print_logo_height_mm = 30
            meta.save()