import django
from django.dispatch import dispatcher
from django.db.models import signals
from pycon.features import models as feature_models
from pycon.attendeereg import models as attendeereg_models

features = [
    'EarlyBirdReg',
    'Register',
    'RegistrationCheckout',
    'HandlePayPalAck',
    'FakePayPalAck',
    'ViewRegInvoice',
    'EditRegistration',
    'ChangeRegistrationRequest',
    'ConnectRegistration',
    'RegBadgePreview',
    'RegistrationAdmin', ]

groups = [
    'Attendees',
    'Payors', ## SIC
    'Vendors',
    'Sponsors',
    'Presenters',
    'Keynotes',
    'Session Chairs' ]

def create_features(app=None, created_models=None, verbosity=None, **kwdargs):
    for name in features:
        feat, isnew = feature_models.Feature.objects.get_or_create(name=name)
        if isnew:
            if name in ['FakePayPalAck', 'RegBadgePreview']:
                feat.status=feature_models.STATUS_CHOICES.index('Closed')
                feat.allow_staff=False
            feat.save()

def create_groups(app=None, created_models=None, verbosity=None, **kwdargs):
    from django.contrib.auth.models import Group
    for gname in groups:
        group, is_new = Group.objects.get_or_create(name=gname)
        if is_new: group.save()

dispatcher.connect(create_features, sender=feature_models,
                   signal=signals.post_syncdb)

dispatcher.connect(create_groups,   sender=attendeereg_models,
                   signal=signals.post_syncdb)
