directory=""
def __init__(self, file=""):
+ self.reset(file)
+
+ def reset(self, file=""):
self.file=file
self.directory=tempfile.TemporaryDirectory()
with ZipFile(self.file, "r", strict_timestamps=False) as source:
source.extractall(self.directory.name)
- #def hash(self):
- # allfiles=[]
- # allhash=""
- # #with open(os.path.join(self.directory.name, "prescription.json"), "rb") as f:
- # # print(sha256(f.read()).hexdigest())
- # for root, dirs, files in os.walk(self.directory.name):
- # for file in files:
- # allfiles.append(os.path.join(root, file))
- # try:
- # allfiles.remove(os.path.join(self.directory.name, "certificate.pem"))
- # allfiles.remove(os.path.join(self.directory.name, "signature.p7m"))
- # except ValueError as e:
- # pass
- # for file in allfiles:
- # with open(file, "rb") as f:
- # allhash=allhash+sha256(f.read()).hexdigest()
- # return(allhash)
-
def sign(self):
with open(os.path.join(self.directory.name, "prescription.json"), "r") as file:
data=file.read()
return Signature.verify(data, certificate=os.path.join(self.directory.name, "certificate.pem"), signature=os.path.join(self.directory.name, "signature.p7m"))
except FileNotFoundError as e:
print(e)
+
+ def is_signed(self):
+ return(os.path.exists(os.path.join(self.directory.name, "certificate.pem")) and (os.path.exists(os.path.join(self.directory.name, "signature.p7m"))))
def cmd_open(self, file=None):
if(self.confirm_close()):
try:
+ self.current_file.reset()
if(file):
self.current_file.set_file(file)
else:
def load_interface(self, file="", date=None, id="", name="", age="", sex="", address="", contact="", extra="", mode="", daw="", diagnosis="", note="", report="", advice="", investigation="", medication="", additional=""):
try:
- self.statusbar.showMessage(self.current_file.file)
+ file_msg=self.current_file.file if self.current_file.file else "New file"
+ sign_msg="(signed)" if self.current_file.is_signed() else ""
+ self.statusbar.showMessage(file_msg+" "+sign_msg)
if date is None:
d=QDateTime.currentDateTime()
else:
print(e)
def new_doc(self):
+ self.current_file.reset()
self.prescription.set_data()
self.input_attachment.clear()
self.load_interface()
action_sign.triggered.connect(self.cmd_sign)
action_verify=QAction("Verify", self)
action_verify.triggered.connect(self.cmd_verify)
- action_prescriber=QAction("Prescriber", self)
+ action_prescriber=QAction("Settings", self)
action_prescriber.triggered.connect(self.cmd_prescriber)
action_switch=QAction("Switch", self)
action_switch.triggered.connect(self.cmd_switch)
menu_file.addAction(action_quit)
menu_prepare=menubar.addMenu("Prepare")
menu_prepare.addAction(action_render)
+ menu_prepare.addAction(action_refresh)
menu_prepare.addAction(action_sign)
menu_prepare.addAction(action_verify)
- menu_prepare.addAction(action_refresh)
- menu_prepare.addAction(action_prescriber)
- menu_prepare.addAction(action_switch)
+ menu_prescriber=menubar.addMenu("Prescriber")
+ menu_prescriber.addAction(action_prescriber)
+ menu_prescriber.addAction(action_switch)
menu_help=menubar.addMenu("Help")
menu_help.addAction(action_about)
menu_help.addAction(action_help)