def post(self): data = self.application.data lattice_ids = self.get_arguments("lattice") if len(lattice_ids) < 2: self.send_error(400, message="Must select two lattice for comparison") return lattice1 = yield data.find_lattice_by_id(lattice_ids[0]) if not lattice1: self.send_error(400, message="Lattice (1) not found: " + lattice_ids[0]) return lattice_elements1 = yield data.find_lattice_elements_by_lattice_id(lattice_ids[0]) lattice2 = yield data.find_lattice_by_id(lattice_ids[1]) if not lattice2: self.send_error(400, message="Lattice (2) not found: " + lattice_ids[1]) return lattice_elements2 = yield data.find_lattice_elements_by_lattice_id(lattice_ids[1]) ctx = ObjectDict() ctx.lattice = (lattice1, lattice2) n1 = len(lattice_elements1) n2 = len(lattice_elements2) ctx.lattice_elements = [] for idx in range(max(n1, n2)): if idx < n1 and idx < n2: ctx.lattice_elements.append((lattice_elements1[idx], lattice_elements2[idx])) elif idx < n1: ctx.lattice_elements.append((lattice_elements1[idx], None)) elif idx < n2: ctx.lattice_elements.append((None, lattice_elements2[idx])) ctx.particle_types = yield data.find_particle_types() self.render("latticemodel/lattice_compare.html", **ctx)
def _create_upload_context(self): data = self.application.data ctx = ObjectDict() ctx.upload_active = True ctx.particle_types = yield data.find_particle_types() ctx.lattice_types = yield data.find_lattice_types() ctx.lattice = ObjectDict(lattice_type=self.type) ctx.lattice_autoversion = True ctx.errors = ObjectDict() raise Return(ctx)
def post(self): data = self.application.data model_ids = self.get_arguments("model") if len(model_ids) < 2: self.send_error(400, message="Must select two models for comparison") return model1, model2 = yield [ data.find_model_by_id(model_ids[0]), data.find_model_by_id(model_ids[1]) ] if not model1: self.send_error(400, message="Model (1) not found: " + model_ids[0]) return if not model2: self.send_error(400, message="Model (2) not found: " + model_ids[1]) return lattice1, lattice2, model_elements1, model_elements2 = yield [ data.find_lattice_by_id(model1.lattice_id), data.find_lattice_by_id(model2.lattice_id), data.find_model_elements_by_model_id(model1._id), data.find_model_elements_by_model_id(model2._id) ] ctx = ObjectDict() ctx.model = (model1, model2) ctx.lattice = (lattice1, lattice2) n1 = len(model_elements1) n2 = len(model_elements2) ctx.model_elements = [] for idx in range(max(n1, n2)): if idx < n1 and idx < n2: ctx.model_elements.append((model_elements1[idx], model_elements2[idx])) elif idx < n1: ctx.model_elements.append((model_elements1[idx], None)) elif idx < n2: ctx.model_elements.append((None, model_elements2[idx])) self.render("latticemodel/model_compare.html", **ctx)