In [ ]:
import csv
import os
from collections import namedtuple

KEY = os.getenv('DISCOURSE_KEY')
USER = os.getenv('DISCOURSE_USER')
BASE = 'https://community.lsst.org'

In [ ]:
contacts_path = '/Users/jsick/Downloads/contactdbexport.csv'

Person = namedtuple('Person', ['first', 'last', 'email', 'phone', 'company', 'category', 'role'])

contacts = {}

with open(contacts_path, encoding='utf-8') as f:
    reader = csv.reader(f)
    _ = next(reader)  # skip header
    for row in reader:
        if len(row) == 1:
            continue
        p = Person(*[s.strip() for s in row[:7]])
        if p.email not in contacts:
            contacts[p.email] = {
                'name': ' '.join([p.first, p.last]),
                'membership': {p.category: p.role}
            }
        else:
            contacts[p.email]['membership'][p.category] = p.role

In [ ]:
groups = []
for _, c in contacts.items():
    groups.extend(c['membership'].keys())
groups = set(groups)
print(groups)

In [ ]: