Beispiel #1
0
 def __addReplicateActions(self, menu, link):
     c = Connector()
     try:
         allVolumes = set(c.lookup_rev(self.rev()))
         if isinstance(link, struct.DocLink):
             lookup = c.lookup_doc(link.doc())
             curVolumes = set(lookup.stores())
             try:
                 for rev in lookup.revs():
                     curVolumes = curVolumes & set(
                         c.lookup_rev(rev, curVolumes))
             except IOError:
                 curVolumes = set()
         else:
             curVolumes = set(c.lookup_rev(link.rev()))
     except IOError:
         return
     repVolumes = allVolumes - curVolumes
     for store in repVolumes:
         try:
             rev = c.lookup_doc(store).rev(store)
             with c.peek(rev) as r:
                 metaData = struct.loads(r.readAll('META'))
                 try:
                     name = metaData["org.hotchpotch.annotation"]["title"]
                 except:
                     name = "Unknown store"
                 action = menu.addAction("Replicate item to '%s'" % name)
                 action.triggered.connect(
                     lambda x, l=link, s=store: self.__doReplicate(l, s))
         except:
             pass
Beispiel #2
0
	def __addReplicateActions(self, menu, link):
		c = Connector()
		try:
			allVolumes = set(c.lookup_rev(self.rev()))
			if isinstance(link, struct.DocLink):
				lookup = c.lookup_doc(link.doc())
				curVolumes = set(lookup.stores())
				try:
					for rev in lookup.revs():
						curVolumes = curVolumes & set(c.lookup_rev(rev, curVolumes))
				except IOError:
					curVolumes = set()
			else:
				curVolumes = set(c.lookup_rev(link.rev()))
		except IOError:
			return
		repVolumes = allVolumes - curVolumes
		for store in repVolumes:
			try:
				rev = c.lookup_doc(store).rev(store)
				with c.peek(rev) as r:
					metaData = struct.loads(r.readAll('META'))
					try:
						name = metaData["org.hotchpotch.annotation"]["title"]
					except:
						name = "Unknown store"
					action = menu.addAction("Replicate item to '%s'" % name)
					action.triggered.connect(
						lambda x,l=link,s=store: self.__doReplicate(l, s))
			except:
				pass
Beispiel #3
0
	def test_merge(self):
		c = Connector()
		stores = [self.store1, self.store2]
		w = self.create("public.data", "test.ignore", stores)
		w.commit()
		doc = w.getDoc()
		rev = w.getRev()

		with c.update(doc, rev, stores=[self.store1]) as w:
			w.write('FILE', 'first')
			w.commit()
			rev1 = w.getRev()

		with c.update(doc, rev, stores=[self.store2]) as w:
			w.write('FILE', 'second')
			w.commit()
			rev2 = w.getRev()

		with c.update(doc, rev1, stores=stores) as w:
			w.setParents([rev1, rev2])
			w.commit()
			rev3 = w.getRev()

		self.assertTrue(c.sync(doc) == rev3)

		l = c.lookup_doc(doc)
		self.assertEqual(l.revs(), [rev3])

		self.assertEqual(set(c.lookup_rev(rev)), set(stores))
		self.assertEqual(set(c.lookup_rev(rev1)), set(stores))
		self.assertEqual(set(c.lookup_rev(rev2)), set(stores))
		self.assertEqual(set(c.lookup_rev(rev3)), set(stores))
Beispiel #4
0
    def test_merge(self):
        c = Connector()
        stores = [self.store1, self.store2]
        w = self.create("public.data", "test.ignore", stores)
        w.commit()
        doc = w.getDoc()
        rev = w.getRev()

        with c.update(doc, rev, stores=[self.store1]) as w:
            w.write('FILE', 'first')
            w.commit()
            rev1 = w.getRev()

        with c.update(doc, rev, stores=[self.store2]) as w:
            w.write('FILE', 'second')
            w.commit()
            rev2 = w.getRev()

        with c.update(doc, rev1, stores=stores) as w:
            w.setParents([rev1, rev2])
            w.commit()
            rev3 = w.getRev()

        self.assertTrue(c.sync(doc) == rev3)

        l = c.lookup_doc(doc)
        self.assertEqual(l.revs(), [rev3])

        self.assertEqual(set(c.lookup_rev(rev)), set(stores))
        self.assertEqual(set(c.lookup_rev(rev1)), set(stores))
        self.assertEqual(set(c.lookup_rev(rev2)), set(stores))
        self.assertEqual(set(c.lookup_rev(rev3)), set(stores))