145 lines
4.8 KiB
Python
145 lines
4.8 KiB
Python
from .main import AuthBaseHandler
|
||
from .js import js_import, js_code_1
|
||
import tornado.web
|
||
from .MongoDB import *
|
||
from .simulation import Simulator_CZ
|
||
from .sim_data_container import Sim_Data_Container
|
||
from tornado.escape import json_decode, json_encode, utf8
|
||
import json
|
||
|
||
|
||
# from bokeh.embed import server_document
|
||
# from jinja2 import Environment, FileSystemLoader
|
||
|
||
Container_SimResult = Sim_Data_Container()
|
||
|
||
class SpiceHandler(AuthBaseHandler):
|
||
|
||
@tornado.web.authenticated #@tornado.web.authenticated装饰器包裹get方法时,表示这个方法只有在用户合法时才会调用,authenticated装饰器会调用get_current_user()方法获取current_user的值,若值为False,则重定向到登录url装饰器判断有没有登录,如果没有则跳转到配置的路由下去,但是要在app.py里面设置login_url
|
||
def post(self,*args,**kwargs):
|
||
username = self.get_current_user()
|
||
message = self.get_argument('spice')
|
||
|
||
print('SpiceHandler: '+username+' \n'+message)
|
||
Mongo.connect(DataBase='example',Collection=username)
|
||
Mongo.update(behavior=message,tags='spice')
|
||
|
||
self.write("success")
|
||
|
||
|
||
class SimulationHandler(AuthBaseHandler):
|
||
|
||
@tornado.web.authenticated
|
||
def post(self,*args,**kwargs):
|
||
username = self.get_current_user()
|
||
|
||
sim_type = self.get_argument('sim_type')
|
||
properties_str = self.get_argument('properties')
|
||
spice = self.get_argument('spice')
|
||
|
||
properties = properties_transform(properties_str)
|
||
|
||
# print("sim type:",sim_type)
|
||
# print("property:",properties_str)
|
||
# print("spice :\n",spice)
|
||
try:
|
||
simulator = Simulator_CZ()
|
||
simulator.Get_Spice(spice)
|
||
analysis = simulator.Sim(sim_type,properties)
|
||
print('properties:\n',properties)
|
||
print('simulation finished !')
|
||
|
||
Container_SimResult.load_analysis(sim_type,analysis)
|
||
print('data container load data successfully!! ')
|
||
message = "Simulation: Success \n"
|
||
message += "Sim_Type="+ sim_type + "\n Properties=" +properties_str
|
||
Mongo.connect(DataBase='example',Collection=username)
|
||
Mongo.update(behavior=message,tags='simulation',spice=spice)
|
||
self.write("success")
|
||
except:
|
||
message = "Simulation: Fail \n"
|
||
message += "Sim_Type="+ sim_type + "\n Properties=" +properties_str
|
||
Mongo.connect(DataBase='example',Collection=username)
|
||
Mongo.update(behavior=message,tags='simulation',spice=spice)
|
||
self.write("Fail! 请检查电路元件!!!元件名字是否有重复?")
|
||
|
||
|
||
|
||
# 将properties 从字符串类型解析出来
|
||
# todo: 转换为json解析
|
||
def properties_transform(properties_str):
|
||
properties = {}
|
||
attributes = properties_str.split(";")
|
||
# print(attributes)
|
||
for attr in attributes:
|
||
if(attr != ''):
|
||
term = attr.split("=")
|
||
properties[term[0]] = term[1]
|
||
return properties
|
||
|
||
|
||
class SimulationInfoRequest_Handler(AuthBaseHandler):
|
||
@tornado.web.authenticated
|
||
def post(self,*args,**kwargs):
|
||
username = self.get_current_user()
|
||
|
||
sim_type = self.get_argument('sim_type')
|
||
|
||
print(sim_type)
|
||
|
||
sim_info = Container_SimResult.simulation_info_request(sim_type)
|
||
|
||
# print(sim_info)
|
||
|
||
sim_info_json = json.dumps( sim_info )
|
||
# print('json transform ok !!')
|
||
|
||
message = "Sim_Type="+ sim_type
|
||
Mongo.connect(DataBase='example',Collection=username)
|
||
Mongo.update(behavior=message,tags='show_result')
|
||
|
||
self.write( sim_info_json )
|
||
# print("send the simulation info request successfully!!!")
|
||
|
||
# self.write(json_decode(sim_info))
|
||
# self.write("successful")
|
||
|
||
|
||
|
||
class Schematic_Handler(AuthBaseHandler):
|
||
|
||
@tornado.web.authenticated
|
||
def get(self,*args,**kwargs):
|
||
username = self.get_current_user()
|
||
message = 'Open the Schematic'
|
||
Mongo.connect(DataBase='example',Collection=username)
|
||
Mongo.update(behavior=message,tags='schematic')
|
||
|
||
self.render('schematic/schematic.html')
|
||
|
||
|
||
class Spice_1_Handler(AuthBaseHandler):
|
||
|
||
@tornado.web.authenticated
|
||
def get(self,*args,**kwargs):
|
||
self.render('spice/spice1.html')
|
||
# script = server_document('http://localhost:5006/bkapp')
|
||
# self.render('spice/spice1.html',script=script)
|
||
|
||
class Spice_2_Handler(AuthBaseHandler):
|
||
|
||
@tornado.web.authenticated
|
||
def get(self,*args,**kwargs):
|
||
self.render('spice/spice2.html',js_import=js_import,js_code=js_code_1)
|
||
|
||
|
||
class Spice_3_Handler(AuthBaseHandler):
|
||
@tornado.web.authenticated
|
||
def get(self,*args,**kwargs):
|
||
self.render('spice/spice3.html')
|
||
|
||
|
||
class Spice_4_Handler(AuthBaseHandler):
|
||
@tornado.web.authenticated
|
||
def get(self,*args,**kwargs):
|
||
self.render('spice/spice4.html') |