From 8a5d8b92d9c29d6799761db686f8256ba2656444 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Stefan=20K=C3=B6gl?= Date: Sun, 3 Aug 2014 15:07:28 +0200 Subject: [PATCH] [Migration] fix subscription migration --- mygpo/maintenance/migrate.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/mygpo/maintenance/migrate.py b/mygpo/maintenance/migrate.py index a17e062b..cdc068e1 100644 --- a/mygpo/maintenance/migrate.py +++ b/mygpo/maintenance/migrate.py @@ -65,7 +65,12 @@ def migrate_pstate(state): history = HistoryEntry.objects.filter(user=user, podcast=podcast) for action in state.actions: timestamp = action.timestamp - client = user.client_set.get(id=action.device) + try: + client = user.client_set.get(id=action.device) + except Client.DoesNotExist: + logger.warn("Client '{cid}' does not exist; skipping".format( + cid=action.device)) + continue action = action.action he_data = { 'timestamp': timestamp, @@ -93,17 +98,27 @@ def migrate_pstate(state): 'user': user, 'client': client, 'podcast': podcast, + } + defaults = { 'ref_url': state.ref_url, 'created': ts, 'modified': ts, 'deleted': client.id.hex in state.disabled_devices, } - subscription, created = Subscription.objects.get_or_create(**sub_data) + subscription, created = Subscription.objects.get_or_create( + defaults, **sub_data) if created: + sub_data.update(defaults) logger.info('Subscription created: {user} subscribed to {podcast} ' 'on {client} @ {created}'.format(**sub_data)) + else: + subscription.modified = ts + subscription.deleted = client.id.hex in state.disabled_devices + subscription.ref_url = state.ref_url + subscription.save() + # delete all other subscriptions Subscription.objects.filter(user=user, podcast=podcast, client__in=unsubscribed_clients).delete() @@ -135,7 +150,7 @@ def get_subscribed_devices(state): from couchdbkit import Database -db = Database('http://127.0.0.1:5984/mygpo_userdata_copy') +db = Database('http://127.0.0.1:6984/mygpo_userdata_copy') from couchdbkit.changes import ChangesStream, fold, foreach -- 2.11.4.GIT