from django.contrib.auth.models import User, Group
from django.dispatch import dispatcher
from django.db.models import signals

def pre_approve(module):
    amod = module
    check = (amod.listing, amod.is_staff, amod.group)
    def approve(instance=None, **kwdargs):
        user = instance
        if not user.is_active: return
        if user.email in amod.listing:
            if amod.is_staff:
                user.is_staff = amod.is_staff
            if amod.group and user.id:
                group, is_new = Group.objects.get_or_create(name=amod.group)
                if is_new: group.save()
                user.groups.add(group)
    return approve

try:
    import organizers
    approve_org = pre_approve(organizers)
    dispatcher.connect(approve_org,
                       sender=User,
                       signal=signals.pre_save)
except: pass

try:
    import reviewers
    approve_rev = pre_approve(reviewers)
    dispatcher.connect(approve_rev,
                       sender=User,
                       signal=signals.pre_save)
except: pass
