Skip to content

Instantly share code, notes, and snippets.

@magopian
Created October 12, 2016 17:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save magopian/6663b0c97bd2c351dc9a0c61c5b2d992 to your computer and use it in GitHub Desktop.
Save magopian/6663b0c97bd2c351dc9a0c61c5b2d992 to your computer and use it in GitHub Desktop.
Dirty script to get/filter attendees for the PyConFR 2016
# Needs the following libraries:
# requests==2.11.1
# unidecode
import csv
import requests
import sys
from collections import OrderedDict
from unidecode import unidecode
# Keys:
# [u'si_vous-souhaitez-preciser-quelque-chose-nhesitez-pas',
# u'je_serais-presente-le-vendredi-pour-les-sprints',
# u'je_serais-presente-le-jeudi-pour-les-sprints',
# u'il_sera-possible-dacheter-des-tshirts-sur-place-souhaiteriez-vous-en-acheter-le-jour-meme-ceci-na-pas-valeur-dune-reservation',
# u'nous_sommes-a-la-recherche-de-quelques-bonnes-volontees-durant-les-conferences-si-vous-souhaitez-nous-epauler-merci-de-cocher-cette-case-nous-vous-recontacterons',
# u'prenom_et-nom-ou-pseudo',
# u'si_vous-souhaitez-un-tshirt-quelle-coupe',
# u'last_modified',
# u'si_vous-souhaitez-un-tshirt-quelle-taille',
# u'email_si-vous-souhaitez-etre-contactes-pour-des-informations-de-derniere-minute',
# u'je_serais-presente-le-dimanche-pour-les-conferences',
# u'id',
# u'je_serais-presente-le-samedi-pour-les-conferences']
NAME_FIELD = 'prenom_et-nom-ou-pseudo'
EMAIL_FIELD = 'email_si-vous-souhaitez-etre-contactes-pour-des-informations-de-derniere-minute'
THURSDAY = 'je_serais-presente-le-jeudi-pour-les-sprints'
FRIDAY = 'je_serais-presente-le-vendredi-pour-les-sprints'
SATURDAY = 'je_serais-presente-le-samedi-pour-les-conferences'
SUNDAY = 'je_serais-presente-le-dimanche-pour-les-conferences'
TSHIRT = 'il_sera-possible-dacheter-des-tshirts-sur-place-souhaiteriez-vous-en-acheter-le-jour-meme-ceci-na-pas-valeur-dune-reservation'
inscrits = requests.get(
'https://kinto.notmyidea.org/v1/buckets/formbuilder/collections/696b6731ce0441ff/records',
headers={'Authorization': 'Basic Zm9ybTo2OTZiNjczMWNlMDQ0MWZmYTk4ZDNjOGJhZWMzZjFjYw=='},
params={'_sort': '-prenom_et-nom-ou-pseudo'}).json()['data']
fields = [
'prenom_et-nom-ou-pseudo',
'Bénévole',
'TB',
'ISEN',
'Rennes1',
'INSA',
'ESIR',
'Supelec',
'Epitech',
'SupInfo',
'Chercheu-r-se',
'Dév',
'Autre',
]
inscrits = [[r[NAME_FIELD].title(), r] for r in inscrits
if (NAME_FIELD in r) and
r[NAME_FIELD] and
r.get(THURSDAY, False)
# r.get(FRIDAY, False)
# r.get(SATURDAY, False)
# r.get(SUNDAY, False)
# r.get(TSHIRT, False) == "Je souhaite acheter un t-shirt le jour de l'événement"
]
inscrits = OrderedDict(sorted(inscrits, key=lambda r: unidecode(r[0])))
# inscrits = OrderedDict(inscrits)
with open('benevoles.txt', 'r') as f:
benevoles = f.read().split('\n')
for name, inscrit in inscrits.items():
email = inscrit.get(EMAIL_FIELD)
if email and email in benevoles:
inscrit['Bénévole'] = 'X'
writer = csv.DictWriter(sys.stdout, fieldnames=fields, extrasaction='ignore')
writer.writeheader()
writer.writerows(inscrits.values())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment