Esempio n. 1
0
 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)
Esempio n. 2
0
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")
Esempio n. 3
0
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")
Esempio n. 4
0
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
Esempio n. 5
0
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