-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathset_offline_id.py
37 lines (29 loc) · 1.17 KB
/
set_offline_id.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
33
34
35
import os
import ssl
import argparse
import pymongo
import bson
import uuid
from datetime import date
parser = argparse.ArgumentParser()
parser.add_argument('mongo_url',
help='URL')
parser.add_argument('db_name',
help='Database name')
parser.add_argument('--user',
default='everyone',
help='Filter by owner')
args = parser.parse_args()
client = pymongo.MongoClient(args.mongo_url, ssl_cert_reqs=ssl.CERT_NONE)
db = client.get_database(args.db_name)
apply_to = ['shopping_lists', 'recipes', 'menu', 'ingredients']
for coll_name in apply_to:
print('Setting offline_id to:', coll_name, 'owner:', args.user)
if(args.user == 'everyone'):
documents = db[coll_name].find({'offline_id': None})
else:
documents = db[coll_name].find({'offline_id': None, 'owner': bson.ObjectId(args.user)})
for doc in documents:
print('Update doc', doc['_id'])
db[coll_name].update_one({'_id': doc['_id']}, {'$set': {'offline_id': str(uuid.uuid4()), 'create_timestamp': int(datetime.utcnow().timestamp()*1000), 'update_timestamp': int(datetime.utcnow().timestamp()*1000)}})
print('Updated document', doc['_id'])