blob: c245607ce0db53aa9a429e6d584cea335077a294 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
#!/usr/bin/env python3
"""Planet PostgreSQL - list synchronizer
This file contains the functions to synchronize the list of subscribers
to planet with those of a pglister mailinglist.
Copyright (C) 2008-2017 PostgreSQL Global Development Group
"""
import sys
import configparser
import psycopg2
import requests
if __name__ == "__main__":
c = configparser.ConfigParser()
c.read('planet.ini')
conn = psycopg2.connect(c.get('planet', 'db'))
curs = conn.cursor()
curs.execute("""
SELECT DISTINCT email FROM auth_user
INNER JOIN feeds ON auth_user.id=feeds.user_id
WHERE feeds.approved AND NOT feeds.archived
""")
syncstruct = [{'email': r[0]} for r in curs.fetchall()]
r = requests.put(
'{0}/api/subscribers/{1}/'.format(c.get('list', 'server'), c.get('list', 'listname')),
headers={'X-api-key': c.get('list', 'apikey')},
json=syncstruct,
)
if r.status_code != 200:
print("Failed to talk to pglister api: %s" % r.status_code)
print(r.text)
sys.exit(1)
j = r.json()
for a in j['added']:
print("Added subscriber %s" % a)
for a in j['deleted']:
print("Removed subscriber %s" % a)
|