-
Notifications
You must be signed in to change notification settings - Fork 4
/
test5.py
32 lines (26 loc) · 1.06 KB
/
test5.py
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
'Update customers'
from itertools import izip
def synchronize(requestProcessor, itemName, requestFields, allPacks):
'Find existing data and add new data'
requestName = itemName + 'Query'
newPacks = get_new(requestProcessor, requestName, requestFields, allPacks)
if not newPacks:
return
for onePack in newPacks:
print onePack
if raw_input('Proceed (y/[n])? ').lower() != 'y':
return
requestName = itemName + 'Add'
return add_new(requestProcessor, requestName, requestFields, newPacks)
def get_new(requestProcessor, requestName, requestFields, allPacks):
'Get new data'
oldPacks = []
for result in requestProcessor.call(requestName + 'Rq', {}):
oldPacks.append(tuple(result.get(x) for x in requestFields))
return set(map(tuple, allPacks)).difference(oldPacks)
def add_new(requestProcessor, requestName, requestFields, newPacks):
'Add new data'
for onePack in newPacks:
print requestProcessor.call(requestName + 'Rq', {
requestName: dict(izip(requestFields, onePack))
})