예제 #1
0
def populate_user(row):
    for k, v in row.items():
        if v == '':
            del row[k]

    NON_REQUIRED_FIELDS = ['email', 'supervisor', 'phone']

    for k, v in row.iteritems():
        if v is None and k not in NON_REQUIRED_FIELDS:
            print '%s is required' % k
            return

    try:
        User.objects.get(username=row['username'])
        print 'user %s already exists' % row['username']
        return
    except User.DoesNotExist:
        pass

    ALLOWED_STATES = ('fct', 'nasawara', 'national')
    if not row['state'] in ALLOWED_STATES:
        print 'state must be one of: %s' % ', '.join(ALLOWED_STATES)
        return

    ALLOWED_PROGRAMS = ('pbf', 'fadama', 'both')
    if not row['program'] in ALLOWED_PROGRAMS:
        print 'program must be one of: %s' % ', '.join(ALLOWED_PROGRAMS)
        return

    PROGRAM_PERMS = {
        'pbf': 'pbf_view',
        'fadama': 'fadama_view',
    }
    perms = []
    if row['program'] == 'both':
        perms.extend(PROGRAM_PERMS.values())
    else:
        perms.append(PROGRAM_PERMS[row['program']])

    is_supervisor = (row.get('supervisor', '').lower() in ('y', 'yes', 'x'))
    if is_supervisor:
        perms.append('supervisor')

    def add_perm(u, perm_name):
        u.user_permissions.add(Permission.objects.get(codename=perm_name))

    u = User()
    u.username = row['username']
    u.first_name = row['first name']
    u.last_name = row['last name']
    u.email = row.get('email', '*****@*****.**')
    u.set_password(row['password'])
    u.save()

    for p in perms:
        add_perm(u, p)
    u.save()

    try:
        contact = Contact.objects.get(user__username=row['username'])
        return
    except Contact.DoesNotExist:
        pass

    if row['state'] == 'national':
        loc = Location.objects.get(slug='nigeria')
    else:
        loc = Location.objects.get(type__slug='state', slug=row['state'])

    c = Contact()
    c.name = '%s %s' % (u.first_name, u.last_name)
    c.first_name = u.first_name
    c.last_name = u.last_name
    c.email = row.get('email', '')
    c.user = u
    c.location = loc
    c.save()

    backend = Backend.objects.get(name='httptester')

    if row.get('phone'):
        conn = Connection()
        conn.backend = backend
        conn.identity = row['phone']
        conn.contact = c
        conn.save()
예제 #2
0
def populate_user(row):
    for k, v in row.items():
        if v == "":
            del row[k]

    NON_REQUIRED_FIELDS = ["email", "perm"]

    for k, v in row.iteritems():
        if v is None and k not in NON_REQUIRED_FIELDS:
            print "%s is required" % k
            return

    try:
        User.objects.get(username=row["username"])
        print "user %s already exists" % row["username"]
        return
    except User.DoesNotExist:
        pass

    ALLOWED_STATES = ("fct", "nasawara", "national")
    if not row["state"] in ALLOWED_STATES:
        print "state must be one of: %s" % ", ".join(ALLOWED_STATES)
        return

    if "perm" in row and not row["perm"] in ALLOWED_PERMS:
        print "perm must be one of: %s" % ", ".join(ALLOWED_PERMS)
        return

    if "perm" in row:
        perm = Permission.objects.get(codename=row["perm"])
    else:
        perm = None

    u = User()
    u.username = row["username"]
    u.first_name = row["first name"]
    u.last_name = row["last name"]
    u.email = row.get("email", "*****@*****.**")
    u.set_password(row["password"])
    u.save()

    if perm:
        u.user_permissions.add(perm)

    try:
        contact = Contact.objects.get(user__username=row["username"])
        return
    except Contact.DoesNotExist:
        pass

    if row["state"] == "national":
        loc = Location.objects.get(slug="nigeria")
    else:
        loc = Location.objects.get(type__slug="state", slug=row["state"])

    c = Contact()
    c.name = "%s %s" % (u.first_name, u.last_name)
    c.first_name = u.first_name
    c.last_name = u.last_name
    c.email = row.get("email", "")
    c.user = u
    c.location = loc
    c.save()