def test_get_multi_molecule_status_new(self): string = ','.join(self.names) results = utils.get_multi_molecule_status(string) expected = [ tuple(self.names), (None, None, True, None), (None, "Bad Substituent Name(s): ['_N']", None, None), (True, True, True, False) ] self.assertEqual(results, expected)
def molecule_check(request, string): a = { "error": None, } try: autoflip = request.REQUEST.get("autoflip") molecules, warnings, errors, news = get_multi_molecule_status( string, autoflip=autoflip) # This is used to fix the issue with ( and ) not being allowed for # the id of an HTML tag. name_ids = [x.replace('(', 'z').replace(')', 'z') for x in molecules] a["molecules"] = zip(molecules, warnings, errors, news, name_ids) except ValueError as e: logger.warn(str(e)) a["error"] = str(e) a["molecules"] = None if request.REQUEST.get("html", ''): html = render_to_string("chem/multi_table.html", a) return HttpResponse(html) else: return HttpResponse(json.dumps(a), content_type="application/json")
def multi_molecule_zip(request, string): try: autoflip = request.REQUEST.get("autoflip") molecules, warnings, errors, news = get_multi_molecule_status( string, autoflip=autoflip) except ValueError as e: logger.warn(str(e)) c = { "error": str(e) } return render(request, "chem/multi_molecule.html", c) mol_form = MoleculeForm(request.REQUEST) mol_form.is_valid() if request.REQUEST.get("job"): job_form = JobForm.get_form(request, "{{ name }}") if not job_form.is_valid(): f = lambda x: 'checked' if request.REQUEST.get(x) else '' c = { "pagename": string, "job_form": job_form, "mol_form": mol_form, "gjf": f("gjf"), "mol2": f("mol2"), "image": f("image"), "job": f("job"), } return render(request, "chem/multi_molecule.html", c) else: job_form = None selection = ("image", "mol2", "job", "gjf") options = [x for x in selection if request.REQUEST.get(x)] if request.REQUEST.get("new", ''): molecules = [x for i, x in enumerate(molecules) if news[i]] ret_zip = get_multi_molecule(molecules, options, mol_form, job_form) response = HttpResponse(ret_zip, content_type="application/zip") response["Content-Disposition"] = "attachment; filename=molecules.zip" return response
def multi_molecule_zip(request, string): try: autoflip = request.REQUEST.get("autoflip") molecules, warnings, errors, news = get_multi_molecule_status( string, autoflip=autoflip) except ValueError as e: logger.warn(str(e)) c = {"error": str(e)} return render(request, "chem/multi_molecule.html", c) mol_form = MoleculeForm(request.REQUEST) mol_form.is_valid() if request.REQUEST.get("job"): job_form = JobForm.get_form(request, "{{ name }}") if not job_form.is_valid(): f = lambda x: 'checked' if request.REQUEST.get(x) else '' c = { "pagename": string, "job_form": job_form, "mol_form": mol_form, "gjf": f("gjf"), "mol2": f("mol2"), "image": f("image"), "job": f("job"), } return render(request, "chem/multi_molecule.html", c) else: job_form = None selection = ("image", "mol2", "job", "gjf") options = [x for x in selection if request.REQUEST.get(x)] if request.REQUEST.get("new", ''): molecules = [x for i, x in enumerate(molecules) if news[i]] ret_zip = get_multi_molecule(molecules, options, mol_form, job_form) response = HttpResponse(ret_zip, content_type="application/zip") response["Content-Disposition"] = "attachment; filename=molecules.zip" return response