Exemplo n.º 1
0
 def save(self, force_insert=False, force_update=False, using=None, update_fields=None):
     if not self.href:
         self.href = slugify(self.title)
     else:
         self.href = slugify(self.href)
     self.url = self.get_absolute_url()
     super(Page, self).save()
Exemplo n.º 2
0
def tickets_admin_accommodation_view(request, vars, event, limit_group_id=None):
    if limit_group_id is not None:
        limit_group_id = int(limit_group_id)
        limit_group = get_object_or_404(LimitGroup, id=limit_group_id, event=event)
        query = Q(
            # Belongs to the selected night and school
            limit_groups=limit_group,
        ) & (
            Q(
                # Accommodation information is manually added
                order_product__isnull=True
            ) | Q(
                # Order is confirmed
                order_product__order__confirm_time__isnull=False,

                # Order is paid
                order_product__order__payment_date__isnull=False,

                # Order is not cancelled
                order_product__order__cancellation_time__isnull=True,
            )
        )
        accommodees = AccommodationInformation.objects.filter(query).order_by('last_name', 'first_name')
        active_filter = limit_group
    else:
        accommodees = []
        active_filter = None

    format = request.GET.get('format', 'screen')

    if format in CSV_EXPORT_FORMATS:
        filename = "{event.slug}-{active_filter}-{timestamp}.{format}".format(
            event=event,
            active_filter=slugify(limit_group.description),
            timestamp=now().strftime('%Y%m%d%H%M%S'),
            format=format,
        )

        emit('core.person.exported', request=request, event=event)

        return csv_response(event, AccommodationInformation, accommodees, filename=filename, dialect=CSV_EXPORT_FORMATS[format])
    elif format == 'screen':
        filters = [
            (limit_group_id == lg.id, lg)
            for lg in LimitGroup.objects.filter(
                event=event,
                product__requires_accommodation_information=True,
            ).distinct()
        ]

        vars.update(
            accommodees=accommodees,
            active_filter=active_filter,
            filters=filters,
        )

        return render(request, 'tickets_admin_accommodation_view.pug', vars)
    else:
        raise NotImplementedError(format)
Exemplo n.º 3
0
    def save(self, *args, **kwargs):
        if self.name and not self.slug:
            self.slug = slugify(self.name)

        if self.slug and not self.group_id:
            self.group, = self.event.intra_event_meta.get_or_create_groups(self.event, [self.slug])

        return super(Team, self).save(*args, **kwargs)
Exemplo n.º 4
0
    def save(self, *args, **kwargs):
        if self.start_time and self.length:
            self.end_time = self.start_time + timedelta(minutes=self.length)

        if self.title and not self.slug:
            self.slug = slugify(self.title)

        return super(Programme, self).save(*args, **kwargs)
Exemplo n.º 5
0
    def clean_name(self):
        name = self.cleaned_data['name']

        if name and not self.instance.pk:
            slug = slugify(name)
            if JobCategory.objects.filter(event=self.instance.event, slug=slug).exists():
                raise forms.ValidationError(_('The slug that would be derived from this name is already taken. Please choose another name.'))

        return name
Exemplo n.º 6
0
    def get_dashboard_dictionary(self, document):

        title = document['title']
        slug = slugify(title)
        permalink = reverse('dashboard_manager.action_view',  urlconf='microsites.urls',
            kwargs={'id': document['dashboard_id'], 'slug': slug})

        dashboard_dict = dict (id=document['dashboard_id'], title=title, description=document['description'],
                               tags=[tag.strip() for tag in document['tags'].split(',')], user_nick=document['owner_nick'],
                               permalink=permalink, type = document['type'])
        return dashboard_dict
Exemplo n.º 7
0
    def _set_guid(self, force_random=False):
        #if self._title:
        title_word_list = [ word for word in slugify(self._title).split('-') if word ][:5]

        # killing duplicates?
        if not force_random:
            self.guid = '-'.join(word[:5] for word in title_word_list).upper()
        else:
            import random
            if len(title_word_list) >= 5:
                self.guid = '-'.join(word[:5] for word in title_word_list[:-1] + [str(random.randint(10000, 99999))]).upper()
            else:
                self.guid = '-'.join(word[:5] for word in title_word_list + [str(random.randint(10000, 99999))]).upper()
Exemplo n.º 8
0
    def save(self, *args, **kwargs):
        if self.name and not self.slug:
            self.slug = slugify(self.name)

        created = not self.pk

        ret_val = super(JobCategory, self).save(*args, **kwargs)

        if not created and 'mailings' in settings.INSTALLED_APPS:
            from mailings.models import RecipientGroup
            RecipientGroup.update_for_job_category(self)

        return ret_val
Exemplo n.º 9
0
    def get_or_create_dummy(cls, app_label='labour', name='Smallfolk', priority=0):
        from core.models import Event
        event, unused = Event.get_or_create_dummy()

        return PersonnelClass.objects.get_or_create(
            event=event,
            slug=slugify(name),
            app_label=app_label,
            defaults=dict(
                name=app_label,
                priority=priority,
            )
        )
Exemplo n.º 10
0
    def get_dashboard_dictionary(self, doc):

        id = doc['dashboard_id']
        title = doc['title']
        slug = slugify(title)
        permalink = reverse('dashboard_manager.view', kwargs={'id': id, 'slug': slug})
        created_at = datetime.datetime.fromtimestamp(int(doc['timestamp']))

        return dict(id=id
                    , title = title
                    , category = doc['category_name']
                    , created_at = created_at
                    , permalink = permalink
                    , type=doc['type'].upper()
                    , account_id = int(doc['account_id'])
           )
Exemplo n.º 11
0
    def query_hot_n(self, limit, lang, hot = None):

        if not hot:
            hot = Setting.objects.get(pk = settings.HOT_DATASTREAMS).value

        sql = """SELECT `ao_datastream_revisions`.`id` as 'datastream_revision_id',
                   `ao_datastream_revisions`.`datastream_id` as 'datastream_id',
                   `ao_datastream_i18n`.`title`,
                   `ao_datastream_i18n`.`description`,
                   `ao_categories_i18n`.`name` AS `category_name`,
                   `ao_users`.`nick` AS `user_nick`,
                   `ao_users`.`email` AS `user_email`,
                   `ao_users`.`account_id`
            FROM `ao_datastream_revisions`
            INNER JOIN `ao_datastream_i18n` ON (`ao_datastream_revisions`.`id` = `ao_datastream_i18n`.`datastream_revision_id`)
            INNER JOIN `ao_categories` ON (`ao_datastream_revisions`.`category_id` = `ao_categories`.`id`)
            INNER JOIN `ao_categories_i18n` ON (`ao_categories`.`id` = `ao_categories_i18n`.`category_id`)
            INNER JOIN `ao_datastreams` ON (`ao_datastream_revisions`.`datastream_id` = `ao_datastreams`.`id`)
            INNER JOIN `ao_users` ON (`ao_datastreams`.`user_id` = `ao_users`.`id`)
            WHERE `ao_datastream_revisions`.`id` IN (
                SELECT MAX(`ao_datastream_revisions`.`id`)
                FROM `ao_datastream_revisions`
                 WHERE `ao_datastream_revisions`.`datastream_id` IN (""" + hot + """)
                       AND `ao_datastream_revisions`.`status` = 3
                GROUP BY `datastream_id`
            ) -- AND `ao_categories_i18n`.`language` = %s"""

        cursor = connection.cursor()
        cursor.execute(sql, [lang])
        row = cursor.fetchone()
        datastreams = []
        while row:
            datastream_id = row[1]
            title = row[2]
            slug = slugify(title)
            permalink = reverse('datastreams-data', kwargs={'id': datastream_id, 'format': 'json'}, urlconf='microsites.urls')
            datastreams.append({'id'          : row[0],
                                'title'        : title,
                                'description'  : row[3],
                                'category_name': row[4],
                                'user_nick'    : row[5],
                                'user_email'   : row[6],
                                'permalink'    : permalink,
                                'account_id'   : row[7]
                                })
            row = cursor.fetchone()
        return datastreams
Exemplo n.º 12
0
    def get_dataset_dictionary(self, doc):

        dataset_id = doc['dataset_id']
        title = doc['title']
        slug = slugify(title)
        permalink = reverse('manageDatasets.view', urlconf='microsites.urls', kwargs={'dataset_id': dataset_id,
                                                                                               'slug': slug})
        created_at = datetime.datetime.fromtimestamp(int(doc['timestamp']))

        return dict(id=dataset_id
                    , title = title
                    , category = doc['category_name']
                    , created_at = created_at
                    , permalink = permalink
                    , type=doc['type'].upper()
                    , account_id = int(doc['account_id'])
                   )
Exemplo n.º 13
0
    def get_dataset_dictionary(self, document):

        parameters = []
        if document['parameters']:
            import json
            parameters = json.loads(document['parameters'])

        dataset_id = document['dataset_id']
        title = document['title']
        slug = slugify(title)
        permalink = reverse('manageDatasets.view', urlconf='microsites.urls', kwargs={'dataset_id': dataset_id,'slug': slug})

        dataset = dict(id=dataset_id, revision_id=document['datasetrevision_id'], title=title, description=document['description'], parameters=parameters,
                       tags=[ tag.strip() for tag in document['tags'].split(',') ], permalink=permalink,
                       type=document['type'], category=document['category_id'], category_name=document['category_name'], guid=document['docid'].split("::")[1]
                       ,end_point=document['end_point'], created_at=document['created_at'], owner_nick=document['owner_nick'], timestamp=document['timestamp'])
        return dataset
Exemplo n.º 14
0
def dashboard_query_hot_n(self, lang, hot = None):

    sql = """SELECT `ao_dashboard_revisions`.`id` as 'dashboard_revision_id',
               `ao_dashboard_revisions`.`dashboard_id` as 'dashboard_id',
               `ao_dashboard_i18n`.`title`,
               `ao_dashboard_i18n`.`description`,
               `ao_categories_i18n`.`name` AS `category_name`,
               `ao_users`.`nick` AS `user_nick`,
               `ao_users`.`email` AS `user_email`,
               `ao_users`.`account_id`
        FROM `ao_dashboard_revisions`
        INNER JOIN `ao_dashboard_i18n` ON (`ao_dashboard_revisions`.`id` = `ao_dashboard_i18n`.`dashboard_revision_id`)
        INNER JOIN `ao_categories` ON (`ao_dashboard_revisions`.`category_id` = `ao_categories`.`id`)
        INNER JOIN `ao_categories_i18n` ON (`ao_categories`.`id` = `ao_categories_i18n`.`category_id`)
        INNER JOIN `ao_dashboards` ON (`ao_dashboard_revisions`.`dashboard_id` = `ao_dashboards`.`id`)
        INNER JOIN `ao_users` ON (`ao_dashboards`.`user_id` = `ao_users`.`id`)
        WHERE `ao_dashboard_revisions`.`id` IN (
            SELECT MAX(`ao_dashboard_revisions`.`id`)
            FROM `ao_dashboard_revisions`
            WHERE `ao_dashboard_revisions`.`dashboard_id` IN (""" + hot + """)
                  AND `ao_dashboard_revisions`.`status` = 3
            GROUP BY `dashboard_id`
        ) AND `ao_categories_i18n`.`language` = %s"""

    cursor = connection.cursor()
    cursor.execute(sql, (lang))
    row = cursor.fetchone()
    dashboards = []
    while row:
        dashboard_id = row[1]
        title = row[2]
        slug = slugify(title)
        permalink = reverse('dashboard_manager.action_view', kwargs={'id': dashboard_id, 'slug': slug})
        dashboards.append({'id'          : row[0],
                            'title'        : title,
                            'description'  : row[3],
                            'category_name': row[4],
                            'user_nick'    : row[5],
                            'user_email'   : row[6],
                            'permalink'    : permalink,
                            'account_id'   : row[7]
                            })
        row = cursor.fetchone()

    return dashboards
Exemplo n.º 15
0
def gen_user(ime, priimek):
    log()
    oun = '%s%s' % (priimek[:4], ime[:4])
    
    username = slugify(oun, instance=User, slug_field='username')
    
    user = User.objects.create_user(
        username=username,
        email='',
        password='******',
    )
    
    user.first_name = ime
    user.last_name = priimek
    
    user.save()
    
    return user
Exemplo n.º 16
0
    def get_or_create_dummy(cls, event=None, title="Dummy survey", **kwargs):
        if event is None:
            from core.models import Event
            event, unused = Event.get_or_create_dummy()

        slug = slugify(title)

        defaults = dict(
            event=event,
            title=title,
            model=dict(),
        )
        defaults.update(kwargs)

        return cls.objects.get_or_create(
            slug=slug,
            defaults=defaults,
        )
Exemplo n.º 17
0
    def get_visualization_dictionary(self, document):

        try:
            if document['parameters']:
                import json
                parameters = json.loads(document['parameters'])
            else:
                parameters = []

        except:
            parameters = []

        title = document['title']
        slug = slugify(title)
        permalink = reverse('chart_manager.view',  urlconf='microsites.urls',
            kwargs={'id': document['visualization_id'], 'slug': slug})

        visualization = dict(id=document['visualization_id'], revision_id=document['visualization_revision_id'], title=title, description=document['description'],
                             parameters=parameters, tags=[tag.strip() for tag in document['tags'].split(',')],
                             permalink=permalink, timestamp=document['timestamp'],
                             type=document['type'], category=document['category_id'], category_name=document['category_name'], guid=document['docid'].split("::")[1],
                             end_point=document.get('end_point', None), created_at=document['created_at'], owner_nick=document['owner_nick'])
        return visualization
Exemplo n.º 18
0
    def setup_labour(self):
        from core.models import Person
        from labour.models import (
            AlternativeSignupForm,
            InfoLink,
            Job,
            JobCategory,
            LabourEventMeta,
            Perk,
            PersonnelClass,
            Qualification,
            WorkPeriod,
        )
        from ...models import SignupExtra, SpecialDiet
        from django.contrib.contenttypes.models import ContentType

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

        if self.test:
            person, unused = Person.get_or_create_dummy()
            labour_admin_group.user_set.add(person.user)

        content_type = ContentType.objects.get_for_model(SignupExtra)

        labour_event_meta_defaults = dict(
            signup_extra_content_type=content_type,
            work_begins=datetime(2019, 7, 26, 8, 0, tzinfo=self.tz),
            work_ends=datetime(2019, 7, 28, 23, 0, tzinfo=self.tz),
            admin_group=labour_admin_group,
            contact_email='Ropecon 2019 -työvoimatiimi <*****@*****.**>',
        )

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

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

        for pc_name, pc_slug, pc_app_label in [
            ('Conitea', 'conitea', 'labour'),
            ('Vuorovastaava', 'ylivankari', 'labour'),
            ('Ylityöntekijä', 'ylityovoima', 'labour'),
            ('Työvoima', 'tyovoima', 'labour'),
            ('Ohjelmanjärjestäjä', 'ohjelma', 'programme'),
            ('Guest of Honour', 'goh', 'programme'),
            ('Media', 'media', 'badges'),
            ('Myyjä', 'myyja', 'badges'),
            ('Vieras', 'vieras', 'badges'),
            ('Vapaalippu', 'vapaalippu', 'badges'),
        ]:
            personnel_class, created = PersonnelClass.objects.get_or_create(
                event=self.event,
                slug=pc_slug,
                defaults=dict(
                    name=pc_name,
                    app_label=pc_app_label,
                    priority=self.get_ordering_number(),
                ),
            )

        tyovoima = PersonnelClass.objects.get(event=self.event, slug='tyovoima')
        ylityovoima = PersonnelClass.objects.get(event=self.event, slug='ylityovoima')
        conitea = PersonnelClass.objects.get(event=self.event, slug='conitea')
        ylivankari = PersonnelClass.objects.get(event=self.event, slug='ylivankari')
        ohjelma = PersonnelClass.objects.get(event=self.event, slug='ohjelma')

        if not JobCategory.objects.filter(event=self.event).exists():
            for jc_data in [
                ('Conitea', 'Tapahtuman järjestelytoimikunnan eli conitean jäsen', [conitea]),
                ('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.', [tyovoima, ylityovoima, ylivankari]),
                ('jv', '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).', [tyovoima, ylityovoima, ylivankari]),
                ('kasaus', 'Kasaus ja purku', 'Kalusteiden siirtelyä & opasteiden kiinnittämistä. Ei vaadi erikoisosaamista. Työvuoroja vain perjantaina 8-16 ja sunnuntaina 15-22.', [tyovoima, ylityovoima, ylivankari]),
                ('logistiikka', 'Logistiikka', 'Tavaroiden roudaamista ja pakettiauton ajamista. Pääosa työvuoroista ajoittuu pe 8-16 ja su 15-22 väliselle ajalle.', [tyovoima, ylityovoima, ylivankari]),
                ('majoitus', 'Majoitusvalvoja', 'Huolehtivat lattiamajoituspaikkojen pyörittämisestä.', [tyovoima, ylityovoima, ylivankari]),
                ('lastenhoito', 'Lastenhoitohuone', 'Valvovat lastenhoitohuoneen toimintaa.', [tyovoima, ylityovoima, ylivankari]),
                ('takahuone', 'Takahuone', 'Pyörittävät takahuonetta.', [tyovoima, ylityovoima, ylivankari]),
                ('kaato', 'Kaato', 'Hoitavat kaadon. Tämän työpisteen toiminta tapahtuu kokonaisuudessaan conin jälkeisenä maanantaina ja osin tiistaiaamuna.', [tyovoima, ylityovoima, ylivankari]),
                ('lipunmyynti', 'Lipunmyynti', 'Pääsylippujen myyntiä sekä lippujen tarkastamista. Myyjiltä edellytetään täysi-ikäisyyttä, asiakaspalveluhenkeä ja huolellisuutta rahankäsittelyssä.', [tyovoima, ylityovoima, ylivankari]),
                ('myyntituote', 'Myyntitiski', 'Ropecon-oheistuotteiden myyntiä. Myyjiltä edellytetään täysi-ikäisyyttä, asiakaspalveluhenkeä ja huolellisuutta rahankäsittelyssä.', [tyovoima, ylityovoima, ylivankari]),
                ('kirpputori', 'Kirpputori', 'Kävijöiden tuomien kirppistuotteiden myyntiä. Myyjiltä edellytetään täysi-ikäisyyttä, asiakaspalveluhenkeä ja huolellisuutta rahankäsittelyssä.', [tyovoima, ylityovoima, ylivankari]),
                ('narikka', 'Narikka', 'Narikka, duh.', [tyovoima, ylityovoima, ylivankari]),
                ('ohjelmajuoksija', 'Ohjelmajuoksija', 'Avustaa ohjelmanjärjestäjiä salitekniikan ja ohjelmanumeron käynnistämisessä.', [tyovoima, ylityovoima, ylivankari]),
                ('info', '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ä.', [tyovoima, ylityovoima, ylivankari]),
                ('figutiski', 'Figutiski', 'Figupelien infotiski opastaa kävijöitä ja turnausjärjestäjiä erityisesti figuturnauksiin liittyvissä asioissa.', [tyovoima, ylityovoima, ylivankari]),
                ('korttitiski', 'Korttitiski', 'Korttipelien infotiski opastaa kävijöitä ja turnausjärjestäjiä erityisesti korttiturnauksiin liittyvissä asioissa.', [tyovoima, ylityovoima, ylivankari]),
                ('larptiski', 'Larppitiski', 'Larppien infotiski opastaa kävijöitä ja larppien järjestäjiä larppeihin liittyvissä asioissa.', [tyovoima, ylityovoima, ylivankari]),
                ('ropetiski', 'Ropetiski', 'Roolipelien infotiski opastaa kävijöitä ja GM:iä roolipeleihin liittyvissä asioissa.', [tyovoima, ylityovoima, ylivankari]),
                ('kp', 'Kokemuspiste', 'Kokemuspisteen infotiski opastaa kävijöitä kokemuspisteeseen liittyvissä asioissa.', [tyovoima, ylityovoima, ylivankari]),
                ('kpharraste', 'Kokemuspisteen harraste-esittelijä', 'Kokemuspisteen harraste-esittelijät esittelevät jotain tiettyä peliä ja auttavat sen pelaamisessa.', [tyovoima, ylityovoima, ylivankari]),
                ('imp', 'International Meeting Point', 'Ulkomaalaisten kävijöiden auttamista International Meeting Pointilla. Vähintään yhden vieraan kielen sujuva taito vaatimuksena.', [tyovoima, ylityovoima, ylivankari]),
                ('tekniikka', 'Tekniikka', 'Tieto- ja/tai AV-tekniikan rakentamista, ylläpitoa ja purkamista.', [tyovoima, ylityovoima, ylivankari]),
                ('taltiointi', 'Taltiointi', 'Ohjelmanumeroiden taltiointia.', [tyovoima, ylityovoima, ylivankari]),

                ('ohjelma', 'Ohjelmanjärjestäjä', 'Luennon tai muun vaativan ohjelmanumeron pitäjä', [ohjelma]),
                ('pj', 'Pelinjohtaja', 'Roolipelien tai larppien järjestäjä', [ohjelma]),
                ('peli', 'Pelinjärjestäjä', 'Muiden kuin roolipelien tai larppien järjestäjä', [ohjelma]),
            ]:
                if len(jc_data) == 3:
                    name, description, pcs = jc_data
                    slug = slugify(name)
                elif len(jc_data) == 4:
                    slug, name, description, pcs = jc_data

                job_category, created = JobCategory.objects.get_or_create(
                    event=self.event,
                    slug=slug,
                    defaults=dict(
                        name=name,
                        description=description,
                    )
                )

                if created:
                    job_category.personnel_classes.set(pcs)

        labour_event_meta.create_groups()

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

        for jc_name, qualification_name in [
            ('Järjestyksenvalvoja', 'JV-kortti'),
        ]:
            jc = JobCategory.objects.get(event=self.event, name=jc_name)
            qual = Qualification.objects.get(name=qualification_name)

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

        AlternativeSignupForm.objects.get_or_create(
            event=self.event,
            slug='conitea',
            defaults=dict(
                title='Conitean ilmoittautumislomake',
                signup_form_class_path='events.ropecon2019.forms:OrganizerSignupForm',
                signup_extra_form_class_path='events.ropecon2019.forms:OrganizerSignupExtraForm',
                active_from=datetime(2019, 2, 24, 12, 0, 0, tzinfo=self.tz),
                active_until=datetime(2019, 7, 19, 23, 59, 59, tzinfo=self.tz),
            ),
        )
Exemplo n.º 19
0
    def setup_labour(self):
        from core.models import Person
        from core.utils import slugify
        from labour.models import (
            AlternativeSignupForm,
            JobCategory,
            LabourEventMeta,
            PersonnelClass,
            Qualification,
        )
        from ...models import SignupExtra, SpecialDiet
        from django.contrib.contenttypes.models import ContentType

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

        if self.test:
            person, unused = Person.get_or_create_dummy()
            labour_admin_group.user_set.add(person.user)

        content_type = ContentType.objects.get_for_model(SignupExtra)

        labour_event_meta_defaults = dict(
            signup_extra_content_type=content_type,
            work_begins=datetime(2018, 1, 26, 8, 0, tzinfo=self.tz),
            work_ends=datetime(2018, 6, 28, 21, 0, tzinfo=self.tz),
            admin_group=labour_admin_group,
            contact_email='Desuconin työvoimavastaava <*****@*****.**>',
        )

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

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

        for pc_name, pc_slug, pc_app_label in [
            ('Vastaava', 'vastaava', 'labour'),
            ('Vuorovastaava', 'vuorovastaava', 'labour'),
            ('Työvoima', 'tyovoima', 'labour'),
            ('Ohjelmanjärjestäjä', 'ohjelma', 'programme'),
            ('Guest of Honour', 'goh', 'programme'),
            ('Media', 'media', 'badges'),
            ('Myyjä', 'myyja', 'badges'),
            ('Vieras', 'vieras', 'badges'),
        ]:
            personnel_class, created = PersonnelClass.objects.get_or_create(
                event=self.event,
                slug=pc_slug,
                defaults=dict(
                    name=pc_name,
                    app_label=pc_app_label,
                    priority=self.get_ordering_number(),
                ),
            )

        tyovoima = PersonnelClass.objects.get(event=self.event, slug='tyovoima')
        vastaava = PersonnelClass.objects.get(event=self.event, slug='vastaava')

        for name, description, pcs in [
            (
                'Vastaava',
                'Tapahtuman järjestelytoimikunnan jäsen eli vastaava',
                [vastaava]
            ),
            (
                '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).',
                [tyovoima]
            ),
        ]:
            job_category, created = JobCategory.objects.get_or_create(
                event=self.event,
                slug=slugify(name),
                defaults=dict(
                    name=name,
                    description=description,
                )
            )

            if created:
                job_category.personnel_classes.set(pcs)


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

        for jc_name, qualification_name in [
            ('Järjestyksenvalvoja', 'JV-kortti'),
        ]:
            jc = JobCategory.objects.get(event=self.event, name=jc_name)
            qual = Qualification.objects.get(name=qualification_name)

            jc.required_qualifications.set([qual])


        labour_event_meta.create_groups()

        organizer_form, unused = AlternativeSignupForm.objects.get_or_create(
            event=self.event,
            slug='vastaava',
            defaults=dict(
                title='Vastaavan ilmoittautumislomake',
                signup_form_class_path='events.frostbite2018.forms:OrganizerSignupForm',
                signup_extra_form_class_path='events.frostbite2018.forms:OrganizerSignupExtraForm',
                active_from=datetime(2017, 7, 23, 0, 0, 0, tzinfo=self.tz),
                active_until=self.event.start_time,
            ),
        )

        if organizer_form.active_until is None:
            organizer_form.active_until = self.event.start_time
            organizer_form.save()

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

        AlternativeSignupForm.objects.get_or_create(
            event=self.event,
            slug='xxlomake',
            defaults=dict(
                title='Erikoistehtävien ilmoittautumislomake',
                signup_form_class_path='events.frostbite2018.forms:SpecialistSignupForm',
                signup_extra_form_class_path='events.frostbite2018.forms:SpecialistSignupExtraForm',
                active_from=datetime(2017, 7, 23, 0, 0, 0, tzinfo=self.tz),
                active_until=self.event.start_time,
                signup_message=(
                    'Täytä tämä lomake vain, '
                    'jos joku Desuconin vastaavista on ohjeistanut sinun ilmoittautua tällä lomakkeella. '
                ),
            ),
        )
Exemplo n.º 20
0
    def get(self,
            user,
            visualization_id=None,
            visualization_revision_id=None,
            guid=None,
            published=False):
        """get all data of visualization 
        :param user: mandatory
        :param visualization_id:
        :param visualization_revision_id:
        :param guid:
        :param published: boolean
        :return: JSON Object
        """

        if settings.DEBUG:
            logger.info('Getting Visualization %s' % str(locals()))

        resource_language = Q(visualizationi18n__language=user.language)
        user_language = Q(user__language=user.language)

        if guid:
            condition = Q(visualization__guid=guid)
        elif visualization_id:
            condition = Q(visualization__id=int(visualization_id))
        elif visualization_revision_id:
            condition = Q(pk=int(visualization_revision_id))
        else:
            logger.error(
                '[ERROR] VisualizationDBDAO.get: no guid, resource id or revision id %s'
                % locals())
            raise

        # controla si esta publicado por su STATUS y no por si el padre lo tiene en su last_published_revision
        if published:
            status_condition = Q(status=StatusChoices.PUBLISHED)
            last_revision_condition = Q(
                pk=F("visualization__last_published_revision"))
        else:
            status_condition = Q(status__in=StatusChoices.ALL)
            last_revision_condition = Q(pk=F("visualization__last_revision"))

        # aca la magia
        account_condition = Q(user__account=user.account)

        try:
            visualization_revision = VisualizationRevision.objects.select_related(
            ).get(condition & resource_language & user_language
                  & status_condition & account_condition
                  & last_revision_condition)
        except VisualizationRevision.DoesNotExist:
            logger.error(
                '[ERROR] Visualization Not exist Revision (query: %s\n\t%s\n\t %s\n\t %s\n\t %s\n\t %s)'
                % (condition, resource_language, user_language,
                   status_condition, account_condition,
                   last_revision_condition.children[0][1].__dict__['name']))
            raise VisualizationRevision.DoesNotExist(
                "Visualization Not exist Revision")

        tags = visualization_revision.datastream.last_revision.tagdatastream_set.all(
        ).values('tag__name', 'tag__status', 'tag__id')
        sources = visualization_revision.datastream.last_revision.sourcedatastream_set.all(
        ).values('source__name', 'source__url', 'source__id')

        parameters = visualization_revision.get_full_parameters()

        # Get category name
        category = visualization_revision.datastream.last_revision.category.categoryi18n_set.get(
            language=user.language)
        visualizationi18n = VisualizationI18n.objects.get(
            visualization_revision=visualization_revision,
            language=user.language)

        visualization = dict(
            visualization=visualization_revision.visualization,
            resource_id=visualization_revision.visualization.id,
            revision_id=visualization_revision.id,
            visualization_id=visualization_revision.visualization.id,
            visualization_revision_id=visualization_revision.id,
            user_id=visualization_revision.user.id,
            author=visualization_revision.user.nick,
            account_id=visualization_revision.user.account.id,
            category_id=category.id,
            category_name=category.name,
            status=visualization_revision.status,
            meta_text=visualization_revision.meta_text,
            guid=visualization_revision.visualization.guid,
            impl_details=visualization_revision.impl_details,
            created_at=visualization_revision.created_at,
            modified_at=visualization_revision.modified_at,
            last_revision_id=visualization_revision.visualization.
            last_revision_id
            if visualization_revision.visualization.last_revision_id else '',
            last_published_revision_id=visualization_revision.visualization.
            last_published_revision_id
            if visualization_revision.visualization.last_published_revision_id
            else '',
            last_published_date=visualization_revision.visualization.
            last_published_revision_date if
            visualization_revision.visualization.last_published_revision_date
            else '',
            title=visualizationi18n.title,
            description=visualizationi18n.description,
            notes=visualizationi18n.notes,
            tags=tags,
            sources=sources,
            parameters=parameters,
            slug=slugify(visualizationi18n.title),
            lib=visualization_revision.lib,
            datastream_id=visualization_revision.visualization.datastream.id,
            datastream_revision_id=visualization_revision.datastream.
            last_revision_id,
            filename='',  # nice to have
            cant=VisualizationRevision.objects.filter(
                visualization__id=visualization_revision.visualization.id
            ).count(),
        )
        visualization.update(VisualizationImplBuilder().parse(
            visualization_revision.impl_details))

        # para que el title del impl_details no pise el de la VZ
        visualization['title'] = visualizationi18n.title

        return visualization
Exemplo n.º 21
0
    def setup_labour(self):
        from core.models import Person
        from labour.models import (
            AlternativeSignupForm,
            InfoLink,
            Job,
            JobCategory,
            LabourEventMeta,
            Perk,
            PersonnelClass,
            Qualification,
            WorkPeriod,
        )
        from ...models import SignupExtra, SpecialDiet
        from django.contrib.contenttypes.models import ContentType

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

        if self.test:
            from core.models import Person
            person, unused = Person.get_or_create_dummy()
            labour_admin_group.user_set.add(person.user)

        content_type = ContentType.objects.get_for_model(SignupExtra)

        labour_event_meta_defaults = dict(
            signup_extra_content_type=content_type,
            work_begins=datetime(2016, 3, 18, 8, 0, tzinfo=self.tz),
            work_ends=datetime(2016, 3, 20, 20, 0, tzinfo=self.tz),
            admin_group=labour_admin_group,
            contact_email='Tampere Kupliin työvoimatiimi <*****@*****.**>',
        )

        if self.test:
            t = now()
            labour_event_meta_defaults.update(
                registration_opens=t - timedelta(days=60),
                registration_closes=t + timedelta(days=60),
            )
        else:
            pass

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

        self.afterparty_perk, unused = Perk.objects.get_or_create(
            event=self.event,
            slug='kaatajaiset',
            defaults=dict(
                name=u'Kaatajaiset',
            ),
        )

        for pc_name, pc_slug, pc_app_label, pc_afterparty in [
            (u'Kuplitea', 'kuplitea', 'labour', True),
            (u'Työvoima', 'tyovoima', 'labour', True),
            (u'Ohjelmanjärjestäjä', 'ohjelma', 'programme', True),
            (u'Guest of Honour', 'goh', 'programme', False), # tervetullut muttei kutsuta automaattiviestillä
            (u'Media', 'media', 'badges', False),
            (u'Myyjä', 'myyja', 'badges', False),
            (u'Vieras', 'vieras', 'badges', False),
        ]:
            personnel_class, created = PersonnelClass.objects.get_or_create(
                event=self.event,
                slug=pc_slug,
                defaults=dict(
                    name=pc_name,
                    app_label=pc_app_label,
                    priority=self.get_ordering_number(),
                ),
            )

            if pc_afterparty and created:
                personnel_class.perks = [self.afterparty_perk]
                personnel_class.save()

        tyovoima = PersonnelClass.objects.get(event=self.event, slug='tyovoima')
        kuplitea = PersonnelClass.objects.get(event=self.event, slug='kuplitea')
        ohjelma = PersonnelClass.objects.get(event=self.event, slug='ohjelma')

        for name, description, pcs in [
            (u'Kuplitea', u'Tapahtuman järjestelytoimikunnan eli kuplitean jäsen', [kuplitea]),

            (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.', [tyovoima]),
            (u'Järjestyksenvalvoja', u'Kävijöiden turvallisuuden valvominen conipaikalla. 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 > Pätevyydet).', [tyovoima]),
            (u'Kasaus ja purku', u'Kalusteiden siirtelyä & opasteiden kiinnittämistä. Ei vaadi erikoisosaamista. Työvuoroja myös jo pe kello 14-18 sekä su kello 19 asti, kerro lisätiedoissa jos voit osallistua näihin.', [tyovoima]),
            (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ä.', [tyovoima]),
            (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ä.', [tyovoima]),
            (u'Salivänkäri', u'Salivänkäri vastaa ohjelmasalien toiminnasta. He pitävät huolen, että ohjelmat alkavat ja loppuvat ajallaan ja että ohjelmanjärjestäjillä on kaikki mitä he tarvitsevat salissa.', [tyovoima]),

            (u'Ohjelmanpitäjä', u'Luennon tai muun vaativan ohjelmanumeron pitäjä', [ohjelma]),
        ]:
            job_category, created = JobCategory.objects.get_or_create(
                event=self.event,
                name=name,
                defaults=dict(
                    description=description,
                    slug=slugify(name),
                )
            )

            if created:
                job_category.personnel_classes = pcs
                job_category.save()

        labour_event_meta.create_groups()

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

        for jc_name, qualification_name in [
            (u'Järjestyksenvalvoja', u'JV-kortti'),
        ]:
            jc = JobCategory.objects.get(event=self.event, name=jc_name)
            qual = Qualification.objects.get(name=qualification_name)

            jc.required_qualifications = [qual]
            jc.save()

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

        AlternativeSignupForm.objects.get_or_create(
            event=self.event,
            slug=u'kuplitea',
            defaults=dict(
                title=u'Kuplitean ilmoittautumislomake',
                signup_form_class_path='events.kuplii2016.forms:OrganizerSignupForm',
                signup_extra_form_class_path='events.kuplii2016.forms:OrganizerSignupExtraForm',
                active_from=datetime(2015, 10, 22, 20, 0, 0, tzinfo=self.tz),
                active_until=self.event.end_time,
            ),
        )

        for wiki_space, link_title, link_group in [
            ('KUPLIIWORK', 'Työvoimawiki', 'accepted'),
        ]:
            InfoLink.objects.get_or_create(
                event=self.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),
                )
            )
Exemplo n.º 22
0
def room_pre_save(sender, instance, **kwargs):
    if instance.name and not instance.slug:
        instance.slug = slugify(instance.name)
Exemplo n.º 23
0
    def setup_labour(self):
        from core.models import Person
        from labour.models import (
            AlternativeSignupForm,
            InfoLink,
            Job,
            JobCategory,
            LabourEventMeta,
            Perk,
            PersonnelClass,
            Qualification,
            WorkPeriod,
        )
        from ...models import SignupExtra
        from django.contrib.contenttypes.models import ContentType

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

        if self.test:
            from core.models import Person
            person, unused = Person.get_or_create_dummy()
            labour_admin_group.user_set.add(person.user)

        content_type = ContentType.objects.get_for_model(SignupExtra)

        labour_event_meta_defaults = dict(
            signup_extra_content_type=content_type,
            work_begins=self.event.start_time - timedelta(days=1),
            work_ends=self.event.end_time + timedelta(hours=4),
            admin_group=labour_admin_group,
            contact_email='Popcult Helsingin työvoimavastaava <*****@*****.**>',
        )

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

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

        for pc_name, pc_slug, pc_app_label in [
            ('Vastaava', 'vastaava', 'labour'),
            ('Työvoima', 'tyovoima', 'labour'),
            ('Ohjelmanjärjestäjä', 'ohjelma', 'programme'),
            ('Media', 'media', 'badges'),
            ('Myyjä', 'myyja', 'badges'),
            ('Vieras', 'vieras', 'badges'),
        ]:
            personnel_class, created = PersonnelClass.objects.get_or_create(
                event=self.event,
                slug=pc_slug,
                defaults=dict(
                    name=pc_name,
                    app_label=pc_app_label,
                    priority=self.get_ordering_number(),
                ),
            )

        tyovoima = PersonnelClass.objects.get(event=self.event, slug='tyovoima')
        vastaava = PersonnelClass.objects.get(event=self.event, slug='vastaava')

        for jc_data in [
            (
                'Vastaava',
                'Tapahtuman järjestelytoimikunnan jäsen eli vastaava',
                [vastaava]
            ),
            (
                'Järjestyksenvalvoja',
                'Järjestyksenvalvojan tehtäviin kuuluvat lippujen tarkistus, kulunvalvonta sekä ihmisten ohjaus. Tehtävään vaaditaan JV-kortti.',
                [tyovoima]
            ),
        ]:
            if len(jc_data) == 3:
                name, description, pcs = jc_data
                job_names = []
            elif len(jc_data) == 4:
                name, description, pcs, job_names = jc_data
            else:
                raise ValueError("Length of jc_data must be 3 or 4")

            job_category, created = JobCategory.objects.get_or_create(
                event=self.event,
                slug=slugify(name),
                defaults=dict(
                    name=name,
                    description=description,
                )
            )

            if created:
                job_category.personnel_classes = pcs
                job_category.save()

            for job_name in job_names:
                job, created = Job.objects.get_or_create(
                    job_category=job_category,
                    slug=slugify(job_name),
                    defaults=dict(
                        title=job_name,
                    )
                )

        labour_event_meta.create_groups()

        JobCategory.objects.filter(event=self.event, slug='vastaava').update(public=False)

        for jc_name, qualification_name in [
            ('Järjestyksenvalvoja', 'JV-kortti'),
        ]:
            jc = JobCategory.objects.get(event=self.event, name=jc_name)
            qual = Qualification.objects.get(name=qualification_name)
            if not jc.required_qualifications.exists():
                jc.required_qualifications = [qual]
                jc.save()

        AlternativeSignupForm.objects.get_or_create(
            event=self.event,
            slug='vastaava',
            defaults=dict(
                title='Vastaavien ilmoittautumislomake',
                signup_form_class_path='events.popcult2017.forms:OrganizerSignupForm',
                signup_extra_form_class_path='events.popcult2017.forms:OrganizerSignupExtraForm',
                active_from=datetime(2017, 1, 12, 0, 0, 0, tzinfo=self.tz),
                active_until=self.event.start_time,
            ),
        )
Exemplo n.º 24
0
    def setup_labour(self):
        from core.models import Person
        from labour.models import (
            AlternativeSignupForm,
            InfoLink,
            JobCategory,
            LabourEventMeta,
            PersonnelClass,
            Qualification,
        )
        from ...models import SignupExtra, SpecialDiet
        from django.contrib.contenttypes.models import ContentType

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

        if self.test:
            person, unused = Person.get_or_create_dummy()
            labour_admin_group.user_set.add(person.user)

        content_type = ContentType.objects.get_for_model(SignupExtra)

        labour_event_meta_defaults = dict(
            signup_extra_content_type=content_type,
            work_begins=self.event.start_time - timedelta(days=1),
            work_ends=self.event.end_time + timedelta(hours=4),
            admin_group=labour_admin_group,
            contact_email='Finnconin työvoimavastaava <*****@*****.**>',
        )

        if self.test:
            t = now()
            labour_event_meta_defaults.update(
                registration_opens=t - timedelta(days=60),
                registration_closes=t + timedelta(days=60),
            )
        else:
            pass

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

        for pc_name, pc_slug, pc_app_label in [
            ('Conitea', 'conitea', 'labour'),
            ('Työvoima', 'tyovoima', 'labour'),
            ('Ohjelmanjärjestäjä', 'ohjelma', 'programme'),
            ('Media', 'media', 'badges'),
            ('Myyjä', 'myyja', 'badges'),
            ('Kunniavieras', 'goh', 'badges'),
        ]:
            personnel_class, created = PersonnelClass.objects.get_or_create(
                event=self.event,
                slug=pc_slug,
                defaults=dict(
                    name=pc_name,
                    app_label=pc_app_label,
                    priority=self.get_ordering_number(),
                ),
            )

        tyovoima = PersonnelClass.objects.get(event=self.event, slug='tyovoima')
        conitea = PersonnelClass.objects.get(event=self.event, slug='conitea')

        for name, description, pcs in [
            (
                'Conitea',
                'Tapahtuman järjestelytoimikunnan jäsen eli coniitti',
                [conitea]
            ),
            (
                'Järjestyksenvalvoja',
                'Kävijöiden turvallisuuden valvominen conipaikalla. 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).',
                [tyovoima]
            ),
        ]:
            job_category, created = JobCategory.objects.get_or_create(
                event=self.event,
                slug=slugify(name),
                defaults=dict(
                    name=name,
                    description=description,
                )
            )

            if created:
                job_category.personnel_classes.set(pcs)


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

        for jc_name, qualification_name in [
            ('Järjestyksenvalvoja', 'JV-kortti'),
        ]:
            jc = JobCategory.objects.get(event=self.event, name=jc_name)
            qual = Qualification.objects.get(name=qualification_name)

            jc.required_qualifications.set([qual])


        labour_event_meta.create_groups()

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

        AlternativeSignupForm.objects.get_or_create(
            event=self.event,
            slug='conitea',
            defaults=dict(
                title='Conitean ilmoittautumislomake',
                signup_form_class_path='events.finncon2018.forms:OrganizerSignupForm',
                signup_extra_form_class_path='events.finncon2018.forms:OrganizerSignupExtraForm',
                active_from=datetime(2018, 3, 6, 0, 0, 0, tzinfo=self.tz),
                active_until=self.event.start_time,
            ),
        )

        # old, wrong info links
        for wiki_space, link_title, link_group in [
            ('FINNCONWORK', 'Finnconin työvoimawiki', 'accepted'),
            ('FINNCON2018', 'Finnconin coniteawiki', 'conitea'),
        ]:
            InfoLink.objects.filter(
                event=self.event,
                title=link_title,
                group=labour_event_meta.get_group(link_group),
            ).delete()

        # new, correct info links
        for wiki_space, link_title, link_group in [
            ('FINNCON2018', 'Finnconin työvoimawiki', 'accepted'),
        ]:
            InfoLink.objects.get_or_create(
                event=self.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),
                )
            )
Exemplo n.º 25
0
def populate_category_slug(sender, instance, **kwargs):
    if instance.title and not instance.slug:
        instance.slug = slugify(instance.title)
Exemplo n.º 26
0
    def setup_labour(self):
        from core.models import Person
        from labour.models import (
            AlternativeSignupForm,
            InfoLink,
            Job,
            JobCategory,
            LabourEventMeta,
            Perk,
            PersonnelClass,
            Qualification,
            WorkPeriod,
        )
        from ...models import SignupExtra, SpecialDiet, Night
        from django.contrib.contenttypes.models import ContentType

        labour_admin_group, created = LabourEventMeta.get_or_create_group(self.event, 'admins')

        if self.test and created:
            person, unused = Person.get_or_create_dummy()
            labour_admin_group.user_set.add(person.user)

        content_type = ContentType.objects.get_for_model(SignupExtra)

        labour_event_meta_defaults = dict(
            signup_extra_content_type=content_type,
            work_begins=datetime(2015, 9, 4, 8, 0, tzinfo=self.tz),
            work_ends=datetime(2015, 9, 6, 22, 0, tzinfo=self.tz),
            admin_group=labour_admin_group,
            contact_email='Tracon Hitpoint 2015 -työvoimatiimi <*****@*****.**>',
        )

        if self.test:
            t = now()
            labour_event_meta_defaults.update(
                registration_opens=t - timedelta(days=60),
                registration_closes=t + timedelta(days=60),
            )
        else:
            # TODO once we know when the registration opens
            # labour_event_meta_defaults.update(
            #     registration_opens=datetime(2014, 3, 1, 0, 0, tzinfo=self.tz),
            #     registration_closes=datetime(2014, 8, 1, 0, 0, tzinfo=self.tz),
            # )
            pass

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

        self.afterparty_perk, unused = Perk.objects.get_or_create(
            event=self.event,
            slug='kaatajaiset',
            defaults=dict(
                name=u'Kaatajaiset',
            ),
        )

        for pc_name, pc_slug, pc_app_label, pc_afterparty in [
            (u'Conitea', 'conitea', 'labour', True),
            (u'Ylivänkäri', 'ylivankari', 'labour', True),
            (u'Työvoima', 'tyovoima', 'labour', True),
            (u'Ohjelmanjärjestäjä', 'ohjelma', 'programme', True),
            (u'Guest of Honour', 'goh', 'programme', False), # tervetullut muttei kutsuta automaattiviestillä
            (u'Media', 'media', 'badges', False),
            (u'Myyjä', 'myyja', 'badges', False),
            (u'Vieras', 'vieras', 'badges', False),
        ]:
            personnel_class, created = PersonnelClass.objects.get_or_create(
                event=self.event,
                slug=pc_slug,
                defaults=dict(
                    name=pc_name,
                    app_label=pc_app_label,
                    priority=self.get_ordering_number(),
                ),
            )

            if pc_afterparty and created:
                personnel_class.perks = [self.afterparty_perk]
                personnel_class.save()

        tyovoima = PersonnelClass.objects.get(event=self.event, slug='tyovoima')
        conitea = PersonnelClass.objects.get(event=self.event, slug='conitea')
        ylivankari = PersonnelClass.objects.get(event=self.event, slug='ylivankari')
        ohjelma = PersonnelClass.objects.get(event=self.event, slug='ohjelma')

        for name, description, pcs in [
            (u'Conitea', u'Tapahtuman järjestelytoimikunnan eli conitean jäsen', [conitea]),

            (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.', [tyovoima, ylivankari]),
            (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).', [tyovoima, ylivankari]),
            (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.', [tyovoima, ylivankari]),
            (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.', [tyovoima, ylivankari]),
            (u'Logistiikka', u'Autokuskina toimimista ja tavaroiden/ihmisten hakua ja noutamista. B-luokan ajokortti vaaditaan. Työvuoroja myös perjantaille.', [tyovoima, ylivankari]),
            (u'Majoitusvalvoja', u'Huolehtivat lattiamajoituspaikkojen pyörittämisestä yöaikaan. Työvuoroja myös molempina öinä.', [tyovoima, ylivankari]),
            (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.', [tyovoima, ylivankari]),
            (u'Narikka', u'Narikassa ja isotavara- eli asenarikassa säilytetään tapahtuman aikana kävijöiden omaisuutta. Tehtävä ei vaadi erikoisosaamista.', [tyovoima, ylivankari]),
            (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.', [tyovoima, ylivankari]),
            (u'Green room', u'Työvoiman ruokahuolto green roomissa. Hygieniapassi suositeltava.', [tyovoima, ylivankari]),
            (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ä.', [tyovoima, ylivankari]),
            (u'Tekniikka', u'Salitekniikan (AV) ja tietotekniikan (tulostimet, lähiverkot, WLAN) nopeaa MacGyver-henkistä ongelmanratkaisua.', [tyovoima, ylivankari]),
            (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.', [tyovoima, ylivankari]),
            (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ä.', [tyovoima, ylivankari]),
            (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ä.', [tyovoima, ylivankari]),

            (u'Ohjelmanpitäjä', u'Luennon tai muun vaativan ohjelmanumeron pitäjä', [ohjelma]),
        ]:
            job_category, created = JobCategory.objects.get_or_create(
                event=self.event,
                name=name,
                defaults=dict(
                    description=description,
                    slug=slugify(name),
                )
            )

            if created:
                job_category.personnel_classes = pcs
                job_category.save()

        labour_event_meta.create_groups()

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

        for jc_name, qualification_name in [
            (u'Järjestyksenvalvoja', u'JV-kortti'),
            (u'Logistiikka', u'Henkilöauton ajokortti (B)'),
            (u'Green room', u'Hygieniapassi'),
        ]:
            jc = JobCategory.objects.get(event=self.event, name=jc_name)
            qual = Qualification.objects.get(name=qualification_name)

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

        for diet_name in [
            u'Gluteeniton',
            u'Laktoositon',
            u'Maidoton',
            u'Vegaaninen',
            u'Lakto-ovo-vegaaninen',
        ]:
            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=self.event,
            slug=u'conitea',
            defaults=dict(
                title=u'Conitean ilmoittautumislomake',
                signup_form_class_path='hitpoint2015.forms:OrganizerSignupForm',
                signup_extra_form_class_path='hitpoint2015.forms:OrganizerSignupExtraForm',
                active_from=datetime(2014, 11, 15, 12, 0, 0, tzinfo=self.tz),
                active_until=datetime(2015, 11, 22, 23, 59, 59, tzinfo=self.tz),
            ),
        )

        for wiki_space, link_title, link_group in [
            ('HITPTWORK', 'Työvoimawiki', 'accepted'),
            ('HITPTINFO', 'Infowiki', 'info'),
        ]:
            InfoLink.objects.get_or_create(
                event=self.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),
                )
            )
Exemplo n.º 27
0
def populate_room_slug(apps, schema_editor):
    Room = apps.get_model('programme', 'room')
    for room in Room.objects.all():
        room.slug = slugify(room.name)
        room.save()
Exemplo n.º 28
0
    def query_hot_n(self, lang, hot=None):

        if not hot:
            hot = Setting.objects.get(pk=settings.HOT_VISUALIZATIONS).value

        sql = """SELECT `ao_datastream_revisions`.`id` AS `datastream_revision_id`,
                   `ao_visualizations_revisions`.`id` AS `visualization_revision_id`,
                   `ao_datastreams`.`id` AS `datastream_id`,
                   `ao_visualizations`.`id` AS `visualization_id`,
                   `ao_visualizations_revisions`.`impl_details`,
                   `ao_datastream_i18n`.`title`,
                   `ao_datastream_i18n`.`description`,
                   `ao_categories_i18n`.`name` AS `category_name`,
                   `ao_users`.`account_id`
                FROM `ao_visualizations_revisions`
                INNER JOIN `ao_visualizations` ON (`ao_visualizations_revisions`.`visualization_id` = `ao_visualizations`.`id`)
                INNER JOIN `ao_datastreams` ON (`ao_visualizations`.`datastream_id` = `ao_datastreams`.`id`)
                INNER JOIN `ao_datastream_revisions` ON (`ao_datastreams`.`id` = `ao_datastream_revisions`.`datastream_id` AND `ao_datastream_revisions`.`status` = 3)
                INNER JOIN `ao_datastream_i18n` ON (`ao_datastream_revisions`.`id` = `ao_datastream_i18n`.`datastream_revision_id`)
                INNER JOIN `ao_categories` ON (`ao_datastream_revisions`.`category_id` = `ao_categories`.`id`)
                INNER JOIN `ao_categories_i18n` ON (`ao_categories`.`id` = `ao_categories_i18n`.`category_id`)
                INNER JOIN `ao_users` ON (`ao_visualizations`.`user_id` = `ao_users`.`id`)
                WHERE `ao_visualizations_revisions`.`id` IN (
                        SELECT MAX(`ao_visualizations_revisions`.`id`)
                        FROM `ao_visualizations_revisions`
                        WHERE `ao_visualizations_revisions`.`visualization_id` IN (""" + hot + """)
                              AND `ao_visualizations_revisions`.`status` = 3
                        GROUP BY `visualization_id`
                    )
                 AND `ao_categories_i18n`.`language` = %s
                ORDER BY `ao_visualizations`.`id` DESC, `ao_datastreams`.`id` DESC, `ao_visualizations_revisions`.`id` DESC, `ao_datastream_revisions`.`id` DESC"""

        cursor = connection.cursor()
        cursor.execute(sql, (lang, ))

        rows = cursor.fetchall().__iter__()
        row = helpers.next(rows, None)

        visualizations = []
        while row != None:
            datastream_id = row[2]
            visualization_id = row[3]
            title = row[5]
            permalink = reverse('chart_manager.view',
                                kwargs={
                                    'id': visualization_id,
                                    'slug': slugify(title)
                                })
            visualizations.append({
                'id': row[0],
                'sov_id': row[1],
                'impl_details': row[4],
                'title': title,
                'description': row[6],
                'category': row[7],
                'permalink': permalink,
                'account_id': row[8]
            })

            while row != None and datastream_id == row[
                    2] and visualization_id == row[3]:
                row = helpers.next(rows, None)

        return visualizations
Exemplo n.º 29
0
    def save(self, *args, **kwargs):
        if self.title and not self.slug:
            self.slug = slugify(self.title)

        return super(Job, self).save(*args, **kwargs)
Exemplo n.º 30
0
    def setup_labour(self):
        from core.models import Person
        from labour.models import (
            AlternativeSignupForm,
            Job,
            JobCategory,
            LabourEventMeta,
            PersonnelClass,
            Qualification,
        )
        from ...models import SignupExtra
        from django.contrib.contenttypes.models import ContentType

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

        if self.test:
            person, unused = Person.get_or_create_dummy()
            labour_admin_group.user_set.add(person.user)

        content_type = ContentType.objects.get_for_model(SignupExtra)

        labour_event_meta_defaults = dict(
            signup_extra_content_type=content_type,
            work_begins=self.event.start_time - timedelta(days=1),
            work_ends=self.event.end_time + timedelta(hours=4),
            admin_group=labour_admin_group,
            contact_email=
            'Popcult Helsingin työvoimavastaava <*****@*****.**>',
        )

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

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

        for pc_name, pc_slug, pc_app_label in [
            ('Järjestyksenvalvoja', 'jv', 'labour'),
        ]:
            personnel_class, created = PersonnelClass.objects.get_or_create(
                event=self.event,
                slug=pc_slug,
                defaults=dict(
                    name=pc_name,
                    app_label=pc_app_label,
                    priority=self.get_ordering_number(),
                ),
            )

        jv = PersonnelClass.objects.get(event=self.event, slug='jv')

        for jc_data in [
            ('Järjestyksenvalvoja',
             ('Worldcon 75 hakee Kompassin kautta ainoastaan järjestyksenvalvojia. '
              'Mikäli kortillisia järjestyksenvalvojia ei saada tarpeeksi, heitä voidaan myös kouluttaa. '
              'Mikäli sinulla on JV-kortti, muistathan täyttää sen numeron '
              '<a href="/profile/qualifications" target="_blank">profiiliisi</a>. '
              'Ilmoita myös, jos sinulla on ensiapukortti.'), [jv]),
        ]:
            if len(jc_data) == 3:
                name, description, pcs = jc_data
                job_names = []
            elif len(jc_data) == 4:
                name, description, pcs, job_names = jc_data
            else:
                raise ValueError("Length of jc_data must be 3 or 4")

            job_category, created = JobCategory.objects.get_or_create(
                event=self.event,
                slug=slugify(name),
                defaults=dict(
                    name=name,
                    description=description,
                ))

            if created:
                job_category.personnel_classes = pcs
                job_category.save()

            for job_name in job_names:
                job, created = Job.objects.get_or_create(
                    job_category=job_category,
                    slug=slugify(job_name),
                    defaults=dict(title=job_name, ))

        labour_event_meta.create_groups()

        for jc_name, qualification_name in [
                # ('Järjestyksenvalvoja', 'JV-kortti'), # no!
        ]:
            jc = JobCategory.objects.get(event=self.event, name=jc_name)
            qual = Qualification.objects.get(name=qualification_name)
            if not jc.required_qualifications.exists():
                jc.required_qualifications = [qual]
                jc.save()
Exemplo n.º 31
0
def populate_room_slug(sender, instance, **kwargs):
    if instance.name and not instance.slug:
        instance.slug = slugify(instance.name)
Exemplo n.º 32
0
    def save(self, *args, **kwargs):
        if self.name and not self.slug:
            self.slug = slugify(self.name)

        return super(Perk, self).save(*args, **kwargs)
Exemplo n.º 33
0
    def setup_labour(self):
        from core.models import Person
        from labour.models import (
            AlternativeSignupForm,
            InfoLink,
            Job,
            JobCategory,
            LabourEventMeta,
            Perk,
            PersonnelClass,
            Qualification,
            WorkPeriod,
        )
        from ...models import SignupExtra, SpecialDiet, Night
        from django.contrib.contenttypes.models import ContentType

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

        if self.test:
            from core.models import Person
            person, unused = Person.get_or_create_dummy()
            labour_admin_group.user_set.add(person.user)

        content_type = ContentType.objects.get_for_model(SignupExtra)

        labour_event_meta_defaults = dict(
            signup_extra_content_type=content_type,
            work_begins=datetime(2015, 7, 10, 12, 0, tzinfo=self.tz),
            work_ends=datetime(2015, 7, 12, 22, 0, tzinfo=self.tz),
            admin_group=labour_admin_group,
            contact_email='Animeconin työvoimatiimi <*****@*****.**>',
        )

        if self.test:
            t = now()
            labour_event_meta_defaults.update(
                registration_opens=t - timedelta(days=60),
                registration_closes=t + timedelta(days=60),
            )
        else:
            # TODO once we know when the registration opens
            # labour_event_meta_defaults.update(
            #     registration_opens=datetime(2014, 3, 1, 0, 0, tzinfo=self.tz),
            #     registration_closes=datetime(2014, 8, 1, 0, 0, tzinfo=self.tz),
            # )
            pass

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

        for pc_name, pc_slug, pc_app_label in [
            (u'Conitea', 'conitea', 'labour'),
            (u'Työvoima', 'tyovoima', 'labour'),
            (u'Järjestyksenvalvoja', 'jv', 'labour'),
            (u'Ohjelmanjärjestäjä', 'ohjelma', 'programme'),
            (u'Kunniavieras', 'goh', 'programme'), # tervetullut muttei kutsuta automaattiviestillä
            (u'Tulkki', 'tulkki', 'labour'),
            (u'Media', 'media', 'badges'),
            (u'Myyjä', 'myyja', 'badges'),
        ]:
            personnel_class, created = PersonnelClass.objects.get_or_create(
                event=self.event,
                slug=pc_slug,
                defaults=dict(
                    name=pc_name,
                    app_label=pc_app_label,
                    priority=self.get_ordering_number(),
                ),
            )

        tyovoima = PersonnelClass.objects.get(event=self.event, slug='tyovoima')
        jv = PersonnelClass.objects.get(event=self.event, slug='jv')
        conitea = PersonnelClass.objects.get(event=self.event, slug='conitea')
        ohjelma = PersonnelClass.objects.get(event=self.event, slug='ohjelma')

        for name, description, pcs in [
            (u'Conitea', u'Tapahtuman järjestelytoimikunnan eli conitean jäsen', [conitea]),

            (u'Narikka', u'Narikassa ja isotavara- eli asenarikassa säilytetään tapahtuman aikana kävijöiden omaisuutta. Tehtävä ei vaadi erikoisosaamista.', [tyovoima]),
            (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ä.', [tyovoima]),
            (u'Siivous', u'Tapahtumapaikan siistinä pitäminen tapahtuman aikana.', [tyovoima]),
            (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ä.', [tyovoima]),
            (u'Majoitusvalvoja', u'Huolehtivat lattiamajoituspaikkojen pyörittämisestä yöaikaan. Työvuoroja myös molempina öinä.', [tyovoima]),
            (u'Myynti', u'Pääsylippujen myyntiä sekä lippujen tarkastamista. Myyjiltä edellytetään täysi-ikäisyyttä, asiakaspalveluhenkeä ja huolellisuutta rahankäsittelyssä. Vuoroja myös perjantaina.', [tyovoima]),
            (u'Green room', u'Työvoiman ruokahuolto green roomissa. Hygieniapassi suositeltava.', [tyovoima]),
            (u'Kirjasto', u'Mangakirjaston virkailijana toimimista.', [tyovoima]),
            (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.', [tyovoima]),
            (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.', [tyovoima]),
            (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).', [jv]),
            (u'Kortiton järjestyksenvalvoja', u'Kävijöiden turvallisuuden valvominen conipaikalla ja yömajoituksessa. HUOM! Tähän tehtävään hakeminen edellyttää henkilötunnuksen syöttämistä sille varattuun kenttään.', [jv]),

            (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.', [tyovoima]),

            (u'Ohjelmanpitäjä', u'Luennon tai muun vaativan ohjelmanumeron pitäjä', [ohjelma]),
        ]:
            job_category, created = JobCategory.objects.get_or_create(
                event=self.event,
                name=name,
                defaults=dict(
                    description=description,
                    slug=slugify(name),
                )
            )

            if created:
                job_category.personnel_classes = pcs
                job_category.save()

        labour_event_meta.create_groups()

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

        for jc_name, qualification_name in [
            (u'Järjestyksenvalvoja', u'JV-kortti'),
            # (u'Green room', u'Hygieniapassi'),
        ]:
            jc = JobCategory.objects.get(event=self.event, name=jc_name)
            qual = Qualification.objects.get(name=qualification_name)

        # TODO
        period_length = timedelta(hours=8)
        for period_description, period_start in [
            ("Perjantain kasaus (pe klo 12–21)", None),
            ("Lauantain aamuvuoro (la klo 08–14)", None),
            ("Lauantain iltapäivävuoro (la klo 14–20)", None),
            ("Lauantain iltavuoro (la klo 20–02)", None),
            ("Lauantai–sunnuntai-yövuoro (su klo 02–08)", None),
            ("Sunnuntain aamuvuoro (su klo 08–14)", None),
            ("Sunnuntain iltapäivävuoro ja purku (su klo 14–20)", None),
        ]:
            WorkPeriod.objects.get_or_create(
                event=self.event,
                description=period_description,
                defaults=dict(
                    start_time=period_start,
                    end_time=(period_start + period_length) if period_start else None,
                )
            )

        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=self.event,
            slug=u'conitea',
            defaults=dict(
                title=u'Conitean ilmoittautumislomake',
                signup_form_class_path='events.animecon2015.forms:OrganizerSignupForm',
                signup_extra_form_class_path='events.animecon2015.forms:OrganizerSignupExtraForm',
                active_from=datetime(2015, 3, 3, 18, 0, 0, tzinfo=self.tz),
                active_until=datetime(2015, 11, 22, 23, 59, 59, tzinfo=self.tz),
            ),
        )

        for wiki_space, link_title, link_group in [
            ('ACONWORK', 'Työvoimawiki', 'accepted'),
        ]:
            InfoLink.objects.get_or_create(
                event=self.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),
                )
            )
Exemplo n.º 34
0
def populate_room_slug(sender, instance, **kwargs):
    if instance.name and not instance.slug:
        instance.slug = slugify(instance.name)