Beispiel #1
0
def render_one_elliptic_modular_form(level, weight, character, label, **kwds):
    r"""
    Renders the webpage for one elliptic modular form.

    """
    if character == 0:
        dimtbl = DimensionTable()
    else:
        dimtbl = DimensionTable(1)
    emf_logger.debug("Created dimension table")
    if not dimtbl.is_in_db(level, weight, character):
        emf_logger.debug("Data not available")
        return render_template("not_available.html")
    citation = ['Sage:' + version()]
    info = set_info_for_one_modular_form(level, weight,
                                         character, label, **kwds)
    emf_logger.debug("info={0}".format(info))
    err = info.get('error', '')
    ## Check if we want to download either file of the function or Fourier coefficients
    if 'download' in info and 'error' not in info:
        return send_file(info['tempfile'], as_attachment=True, attachment_filename=info['filename'])
    url1 = url_for("emf.render_elliptic_modular_forms")
    url2 = url_for("emf.render_elliptic_modular_forms", level=level)
    url3 = url_for("emf.render_elliptic_modular_forms", level=level, weight=weight)
    url4 = url_for("emf.render_elliptic_modular_forms", level=level, weight=weight, character=character)
    bread = [(EMF_TOP, url1)]
    bread.append(("of level %s" % level, url2))
    bread.append(("weight %s" % weight, url3))
    if int(character) == 0:
        bread.append(("and trivial character", url4))
    else:
        bread.append(("and character \(\chi_{%s}\)" % character, url4))
    info['bread'] = bread
    return render_template("emf.html", **info)
def render_elliptic_modular_form_space(level=None,
                                       weight=None,
                                       character=None,
                                       label=None,
                                       **kwds):
    r"""
    Render the webpage for a elliptic modular forms space.
    """
    emf_logger.debug(
        "In render_ellitpic_modular_form_space kwds: {0}".format(kwds))
    emf_logger.debug(
        "Input: level={0},weight={1},character={2},label={3}".format(
            level, weight, character, label))
    info = to_dict(kwds)
    info['level'] = level
    info['weight'] = weight
    info['character'] = character
    # if kwds.has_key('character') and kwds['character']=='*':
    #    return render_elliptic_modular_form_space_list_chars(level,weight)
    if character == 0:
        dimtbl = DimensionTable()
    else:
        dimtbl = DimensionTable(1)
    if not dimtbl.is_in_db(level, weight, character):
        emf_logger.debug("Data not available")
        return render_template("not_available.html")
    emf_logger.debug(
        "Created dimension table in render_elliptic_modular_form_space")
    info = set_info_for_modular_form_space(**info)
    emf_logger.debug("keys={0}".format(info.keys()))
    if 'download' in kwds and 'error' not in kwds:
        return send_file(info['tempfile'],
                         as_attachment=True,
                         attachment_filename=info['filename'])
    if 'dimension_newspace' in kwds and kwds['dimension_newspace'] == 1:
        # if there is only one orbit we list it
        emf_logger.debug("Dimension of newforms is one!")
        info['label'] = 'a'
        return redirect(url_for('emf.render_elliptic_modular_forms', **info))
    info['title'] = "Newforms of weight %s on \(\Gamma_{0}(%s)\)" % (weight,
                                                                     level)
    bread = [(EMF_TOP, url_for('emf.render_elliptic_modular_forms'))]
    bread.append(("Level %s" % level,
                  url_for('emf.render_elliptic_modular_forms', level=level)))
    bread.append(("Weight %s" % weight,
                  url_for('emf.render_elliptic_modular_forms',
                          level=level,
                          weight=weight)))
    # emf_logger.debug("friends={0}".format(friends))
    info['bread'] = bread
    return render_template("emf_space.html", **info)
def render_elliptic_modular_form_space(level=None, weight=None, character=None, label=None, **kwds):
    r"""
    Render the webpage for a elliptic modular forms space.
    """
    emf_logger.debug("In render_elliptic_modular_form_space kwds: {0}".format(kwds))
    emf_logger.debug("Input: level={0},weight={1},character={2},label={3}".format(level, weight, character, label))
    info = to_dict(kwds)
    info["level"] = level
    info["weight"] = weight
    info["character"] = character
    # if kwds.has_key('character') and kwds['character']=='*':
    #    return render_elliptic_modular_form_space_list_chars(level,weight)
    if character == 0:
        dimtbl = DimensionTable()
    else:
        dimtbl = DimensionTable(1)
    if not dimtbl.is_in_db(level, weight, character):
        emf_logger.debug("Data not available")
        if character == 0:
            d = dimension_new_cusp_forms(level, weight)
        else:
            D = DirichletGroup(level)
            x = D.galois_orbits(reps_only=True)[character]
            d = dimension_new_cusp_forms(x, weight)
        if d > 0:
            return render_template("not_available.html")
        else:
            info["is_empty"] = True
            return render_template("emf_space.html", **info)

    emf_logger.debug("Created dimension table in render_elliptic_modular_form_space")
    info = set_info_for_modular_form_space(**info)
    emf_logger.debug("keys={0}".format(info.keys()))
    if "download" in kwds and "error" not in kwds:
        return send_file(info["tempfile"], as_attachment=True, attachment_filename=info["filename"])
    if "dimension_newspace" in kwds and kwds["dimension_newspace"] == 1:
        # if there is only one orbit we list it
        emf_logger.debug("Dimension of newforms is one!")
        info["label"] = "a"
        return redirect(url_for("emf.render_elliptic_modular_forms", **info))
    info["title"] = "Newforms of weight %s on \(\Gamma_{0}(%s)\)" % (weight, level)
    bread = [(EMF_TOP, url_for("emf.render_elliptic_modular_forms"))]
    bread.append(("Level %s" % level, url_for("emf.render_elliptic_modular_forms", level=level)))
    bread.append(("Weight %s" % weight, url_for("emf.render_elliptic_modular_forms", level=level, weight=weight)))
    # emf_logger.debug("friends={0}".format(friends))
    info["bread"] = bread
    return render_template("emf_space.html", **info)
def render_one_elliptic_modular_form(level, weight, character, label, **kwds):
    r"""
    Renders the webpage for one elliptic modular form.

    """
    if character == 0:
        dimtbl = DimensionTable()
    else:
        dimtbl = DimensionTable(1)
    emf_logger.debug("Created dimension table")
    if not dimtbl.is_in_db(level, weight, character):
        ## We now check explicitly
        C = lmfdb.base.getDBConnection()
        if C['modularforms2']['Newform_factors.files'].find().count() == 0:
            emf_logger.debug("Data not available")
            return render_template("not_available.html")
    citation = ['Sage:' + version()]
    info = set_info_for_one_modular_form(level, weight, character, label,
                                         **kwds)
    emf_logger.debug("info={0}".format(info))
    err = info.get('error', '')
    ## Check if we want to download either file of the function or Fourier coefficients
    if 'download' in info and 'error' not in info:
        return send_file(info['tempfile'],
                         as_attachment=True,
                         attachment_filename=info['filename'])
    url1 = url_for("emf.render_elliptic_modular_forms")
    url2 = url_for("emf.render_elliptic_modular_forms", level=level)
    url3 = url_for("emf.render_elliptic_modular_forms",
                   level=level,
                   weight=weight)
    url4 = url_for("emf.render_elliptic_modular_forms",
                   level=level,
                   weight=weight,
                   character=character)
    bread = [(EMF_TOP, url1)]
    bread.append(("of level %s" % level, url2))
    bread.append(("weight %s" % weight, url3))
    if int(character) == 0:
        bread.append(("and trivial character", url4))
    else:
        bread.append(("and character \(\chi_{%s}\)" % character, url4))
    info['bread'] = bread
    return render_template("emf.html", **info)
def render_elliptic_modular_form_space(level=None, weight=None, character=None, label=None, **kwds):
    r"""
    Render the webpage for a elliptic modular forms space.
    """
    emf_logger.debug("In render_ellitpic_modular_form_space kwds: {0}".format(kwds))
    emf_logger.debug(
        "Input: level={0},weight={1},character={2},label={3}".format(level, weight, character, label))
    info = to_dict(kwds)
    info['level'] = level
    info['weight'] = weight
    info['character'] = character
    # if kwds.has_key('character') and kwds['character']=='*':
    #    return render_elliptic_modular_form_space_list_chars(level,weight)
    if character == 0:
        dimtbl = DimensionTable()
    else:
        dimtbl = DimensionTable(1)
    if not dimtbl.is_in_db(level, weight, character):
        emf_logger.debug("Data not available")
        return render_template("not_available.html")
    emf_logger.debug("Created dimension table in render_elliptic_modular_form_space")
    info = set_info_for_modular_form_space(**info)
    emf_logger.debug("keys={0}".format(info.keys()))
    if 'download' in kwds and 'error' not in kwds:
        return send_file(info['tempfile'], as_attachment=True, attachment_filename=info['filename'])
    if 'dimension_newspace' in kwds and kwds['dimension_newspace'] == 1:
        # if there is only one orbit we list it
        emf_logger.debug("Dimension of newforms is one!")
        info['label'] = 'a'
        return redirect(url_for('emf.render_elliptic_modular_forms', **info))
    info['title'] = "Newforms of weight %s on \(\Gamma_{0}(%s)\)" % (weight, level)
    bread = [(EMF_TOP, url_for('emf.render_elliptic_modular_forms'))]
    bread.append(("Level %s" % level, url_for('emf.render_elliptic_modular_forms', level=level)))
    bread.append(
        ("Weight %s" % weight, url_for('emf.render_elliptic_modular_forms', level=level, weight=weight)))
    # emf_logger.debug("friends={0}".format(friends))
    info['bread'] = bread
    return render_template("emf_space.html", **info)