openflexure-microscope-server/openflexure_microscope/plugins/testing/form_example/plugin.py
2019-11-01 16:11:07 +00:00

78 lines
2.1 KiB
Python

import random
import time
import os
import json
from openflexure_microscope.devel import MicroscopePlugin, update_task_progress
from .api import DoAPI, TaskAPI
HERE = os.path.dirname(os.path.realpath(__file__))
FORM_PATH = os.path.join(HERE, "forms.json")
class ExamplePlugin(MicroscopePlugin):
"""
An example plugin using a comprehensive form
"""
global FORM_PATH
with open(FORM_PATH, "r") as sc:
api_form = json.load(sc)
api_views = {"/do": DoAPI, "/task": TaskAPI}
def __init__(self):
self.val_int = 10
self.val_str = "Hello"
self.val_radio = "First"
self.val_check = ["Foo", "Bar"]
self.val_select = "Most"
self.val_unused = "I'm an unused string, here to confuse the form parsing"
self.run_time = 5
def set_values(
self, val_int, val_str, val_radio, val_check, val_select, val_disposable
):
"""
Demonstrate a plugin with form
"""
if val_int:
self.val_int = int(val_int)
if val_str:
self.val_str = str(val_str)
if val_radio:
self.val_radio = val_radio
if val_check is not None:
print(val_check)
self.val_check = val_check if (type(val_check) is list) else [val_check]
if val_select:
self.val_select = val_select
if val_disposable:
print("DISPOSABLE VALUE: {}".format(val_disposable))
def get_values_dict(self):
return {
"val_int": self.val_int,
"val_str": self.val_str,
"val_radio": self.val_radio,
"val_check": self.val_check,
"val_select": self.val_select,
"val_unused": self.val_unused,
}
def generate_random_numbers_for_a_while(self, run_time: int):
self.run_time = run_time
vals = []
for t in range(run_time):
vals.append(random.random())
time.sleep(1)
# Update task progress (if running as a task)
percent_complete = int(((t + 1)/run_time)*100)
update_task_progress(percent_complete)
return vals