summaryrefslogtreecommitdiff
path: root/squaredeal/__init__.py
diff options
context:
space:
mode:
authoremkael <emkael@tlen.pl>2024-01-16 23:49:53 +0100
committeremkael <emkael@tlen.pl>2024-01-16 23:49:53 +0100
commit1c4d342e281ab8641486d42d4a916cc2c47c8671 (patch)
tree5d51c27ca178ab246cf86e3c408ee787f4b87460 /squaredeal/__init__.py
parente5a1d0bf6f62cface6ef751c318f2d4733a56970 (diff)
Generating deals
Diffstat (limited to 'squaredeal/__init__.py')
-rw-r--r--squaredeal/__init__.py33
1 files changed, 32 insertions, 1 deletions
diff --git a/squaredeal/__init__.py b/squaredeal/__init__.py
index 742b28d..2d4a020 100644
--- a/squaredeal/__init__.py
+++ b/squaredeal/__init__.py
@@ -1,4 +1,4 @@
-import hashlib, os, random, string, shutil
+import base64, hashlib, os, random, shutil, string, subprocess
class SquareDealError(Exception):
@@ -26,8 +26,34 @@ class SquareDealPhase(object):
def tostring(self):
return ':'.join([str(self.sessions), str(self.boards), self.prefix, self.info or ''])
+ def _output_file_name(self, session):
+ return self.prefix.replace('#', str(session))
+
+ def generate(self, session, delayed_info, reserve=False):
+ if not SquareDeal.BIGDEALX_PATH:
+ raise SquareDealError('Path to BigDeal is not set, initialize SquareDeal.BIGDEALX_PATH value')
+ delayed_info = base64.b64encode(delayed_info.encode('utf-8')).decode()
+ sessions_to_generate = range(0, self.sessions) if session is None else [session-1]
+ for session in sessions_to_generate:
+ session_key = self.s_keys[session]
+ session_key_len = int(len(session_key)/2)
+ session_left = session_key[0:session_key_len]
+ session_right = session_key[session_key_len:]
+ reserve_info = 'reserve' if reserve else 'original'
+ args = [SquareDeal.BIGDEALX_PATH,
+ '-W', session_left,
+ '-e', session_right,
+ '-e', delayed_info,
+ '-e', reserve_info,
+ '-p', self._output_file_name(session+1),
+ '-n', str(self.boards)]
+ subprocess.run(args, cwd=os.path.realpath(SquareDeal.BIGDEALX_PATH))
+
class SquareDeal(object):
+
+ BIGDEALX_PATH=None
+
def __init__(self):
self.name = ''
self.delayed_info = ''
@@ -142,3 +168,8 @@ class SquareDeal(object):
for i in range(0, phase.sessions):
phase.s_keys.append(self._generate_session_key())
self.phases.append(phase)
+
+ def generate(self, phase, session):
+ phases_to_generate = range(0, len(self.phases)) if phase is None else [phase-1]
+ for phase in phases_to_generate:
+ self.phases[phase].generate(session, self.delayed_info)