From d2dcf6dbee14535569b757fe15ca2a7fcbb4bd8d Mon Sep 17 00:00:00 2001 From: Jeremy Penner Date: Thu, 13 Aug 2020 17:06:41 -0400 Subject: [PATCH] whiteboard merge tool --- marmmerge.py | 36 ++++++++++++++++++++++++++++++++++++ whiteboard.py | 5 ++++- 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100755 marmmerge.py diff --git a/marmmerge.py b/marmmerge.py new file mode 100755 index 0000000..34085ee --- /dev/null +++ b/marmmerge.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python2 + +# This file is part of MarMOTS. +# +# MarMOTS is free software: you can redistribute it and/or modify it under the terms of the GNU Affero +# General Public License as published by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# MarMOTS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General +# Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License along with MarMOTS. If not, +# see . +# +# Copyright 2009, 2010, 2011, 2020 Jeremy Penner + +from whiteboard import * +import sys + +def merge_whiteboards(runner1, runner2): + runner1.gameLobby.rgproject.extend(runner2.gameLobby.rgproject) + runner1.gameLobby.rgproject.sort(key=lambda p: p.DrawingLastModified().dtLastModified, reverse=True) + return runner1 + +def merge_whiteboard_files(infile1, infile2, outfile): + runner1 = tpers.Odb.Load(infile1) + runner2 = tpers.Odb.Load(infile2) + out = merge_whiteboards(runner1, runner2) + tpers.Odb.Save(out, outfile) + +if __name__ == '__main__': + if len(sys.argv) < 4: + print('Usage:', sys.argv[0], 'infile1 infile2 outfile') + else: + merge_whiteboard_files(sys.argv[1], sys.argv[2], sys.argv[3]) diff --git a/whiteboard.py b/whiteboard.py index 9c71e95..823648f 100755 --- a/whiteboard.py +++ b/whiteboard.py @@ -67,11 +67,14 @@ class Project(Ownable): self.owner.DrawingTouched(drawing) def StName(self): return self.owner.StNameProject(self) - def StLastModified(self): + def DrawingLastModified(self): drawingLast = None for drawing in self.rgdrawing: if drawingLast == None or drawing.dtLastModified > drawingLast.dtLastModified: drawingLast = drawing + return drawingLast + def StLastModified(self): + drawingLast = self.DrawingLastModified() if drawingLast != None: return drawingLast.StLastModified() return "never"