def testSQLSyncToCouch(self): self.assertEqual(self.getCouchCount(), 0) self.assertEqual(self.getSQLCount(), 0) # Test Create sql_obj = Keyword() self.setRandomSQLObjectValues(sql_obj) self.assertEqual(self.getCouchCount(), 1) self.assertEqual(self.getSQLCount(), 1) couch_obj = SurveyKeyword.get(sql_obj.couch_id) self.compareObjects(couch_obj, sql_obj) self.assertTrue(SurveyKeyword.get_db().get_rev(couch_obj._id).startswith('2-')) # Test Update self.setRandomSQLObjectValues(sql_obj) self.assertEqual(self.getCouchCount(), 1) self.assertEqual(self.getSQLCount(), 1) couch_obj = SurveyKeyword.get(sql_obj.couch_id) self.compareObjects(couch_obj, sql_obj) self.assertTrue(SurveyKeyword.get_db().get_rev(couch_obj._id).startswith('3-')) # Test Delete couch_id = couch_obj._id sql_obj.delete() with self.assertRaises(ResourceNotFound): SurveyKeyword.get(couch_id) self.assertEqual(self.getCouchCount(), 0) self.assertEqual(self.getSQLCount(), 0)
def total(self): data = ( SurveyKeyword.get_db() .view("reminders/survey_keywords", reduce=True, startkey=[self.domain], endkey=[self.domain, {}]) .first() ) return data["value"] if data else 0
def total(self): data = SurveyKeyword.get_db().view( 'reminders/survey_keywords', reduce=True, startkey=[self.domain], endkey=[self.domain, {}], ).first() return data['value'] if data else 0
def total(self): data = SurveyKeyword.get_db().view( 'reminders/survey_keywords', reduce=True, startkey=[self.domain], endkey=[self.domain, {}], ).first() return data['value'] if data else 0
def migrate(self, log_file): count = 0 ids = self.get_couch_ids() total_count = len(ids) for doc in iter_docs_with_retry(SurveyKeyword.get_db(), ids): try: couch_obj = SurveyKeyword.wrap(doc) couch_obj._migration_do_sync() except Exception as e: log_file.write('Could not sync SurveyKeyword %s: %s\n' % (doc['_id'], e)) count += 1 if (count % 1000) == 0: print 'Processed %s / %s documents' % (count, total_count)
def handle(self, dry_run=False, **options): def _add_field(doc): updated = False log_prefix = "{} Domain {}, form unique_id {}".format( "[DRY RUN]" if dry_run else "", doc['domain'], doc['form_unique_id']) if doc.get('form_unique_id', None) and not doc.get('app_id', None): doc['app_id'] = get_app_id_from_form_unique_id( doc['domain'], doc['form_unique_id']) if doc['app_id']: updated = True logger.info("{}: Updated {} to use app id {}".format( log_prefix, doc['_id'], doc['app_id'])) else: logger.info("{}: Could not find app".format(log_prefix)) for action in doc.get('actions', []): if action.get('form_unique_id', None) and not action.get('app_id', None): action['app_id'] = get_app_id_from_form_unique_id( doc['domain'], action['form_unique_id']) if action['app_id']: updated = True logger.info( "{}: Updated action in {} to use app id {}".format( log_prefix, doc['_id'], action['app_id'])) else: logger.info( "{}: Could not find app".format(log_prefix)) if updated and not dry_run: return DocUpdate(doc) doc_ids = get_doc_ids_by_class( SurveyKeyword) + get_deleted_doc_ids_by_class(SurveyKeyword) iter_update(SurveyKeyword.get_db(), _add_field, doc_ids)