Ejemplo n.º 1
0
 def testSelectivePullReplication(self):
     """
     Create national patients with different clinic ids and make sure they
     get selectively replicated to the proper clinics
     """
     self.assertEqual(0, self.clinic_1_db.view(const.VIEW_PATIENT_BY_BHOMA_ID, reduce=False).count())
     self.assertEqual(0, self.clinic_2_db.view(const.VIEW_PATIENT_BY_BHOMA_ID, reduce=False).count())
     self.assertEqual(0, self.national_db.view(const.VIEW_PATIENT_BY_BHOMA_ID, reduce=False).count())
     
     self._add_patients(self.national_db, 10, TEST_CLINIC_1)
     self._add_patients(self.national_db, 20, TEST_CLINIC_2)
     self._add_patients(self.national_db, 30)
     
     self.assertEqual(0, self.clinic_1_db.view(const.VIEW_PATIENT_BY_BHOMA_ID, reduce=False).count())
     self.assertEqual(0, self.clinic_2_db.view(const.VIEW_PATIENT_BY_BHOMA_ID, reduce=False).count())
     self.assertEqual(60, self.national_db.view(const.VIEW_PATIENT_BY_BHOMA_ID, reduce=False).count())
     
     # replicate to clinic 1
     replicate(self.server, TEST_NATIONAL, TEST_CLINIC_1, 
               filter=const.FILTER_CLINIC, 
               query_params={ const.PROPERTY_CLINIC_ID: TEST_CLINIC_1 })
     
     self.assertEqual(10, self.clinic_1_db.view(const.VIEW_PATIENT_BY_BHOMA_ID, reduce=False).count())
     self.assertEqual(0, self.clinic_2_db.view(const.VIEW_PATIENT_BY_BHOMA_ID, reduce=False).count())
     self.assertEqual(60, self.national_db.view(const.VIEW_PATIENT_BY_BHOMA_ID, reduce=False).count())
     
     # replicate to clinic 2
     replicate(self.server, TEST_NATIONAL, TEST_CLINIC_2, 
               filter=const.FILTER_CLINIC, 
               query_params={ const.PROPERTY_CLINIC_ID: TEST_CLINIC_2 })
     
     self.assertEqual(10, self.clinic_1_db.view(const.VIEW_PATIENT_BY_BHOMA_ID, reduce=False).count())
     self.assertEqual(20, self.clinic_2_db.view(const.VIEW_PATIENT_BY_BHOMA_ID, reduce=False).count())
     self.assertEqual(60, self.national_db.view(const.VIEW_PATIENT_BY_BHOMA_ID, reduce=False).count())
Ejemplo n.º 2
0
 def handle(self, *args, **options):
     if len(args) != 1:
         raise CommandError('Usage: manage.py migrate_rev2_data <old_db>')
     db = get_db()
     source_db = args[0]
     # the source db needs to have the migration views built so just force-sync the 
     # design doc
     print "prepping source database %s" % source_db
     source = db.server.get_or_create_db(source_db)
     path_to_migration = os.path.join(settings.BHOMA_ROOT_DIR, "apps", "migration")
     loader = FileSystemDocLoader(path_to_migration, "_design", design_name="migration")
     loader.sync(source)
     
     print "migrating rev1 data to from %s to %s" % (source_db, db.dbname)
     replicate(db.server, source_db, db.dbname, filter="migration/migrates_rev_2")
     print "migration complete"