Beispiel #1
0
def get_glyphs_jsondata(glyphid, master):
    """ Returns dictionary with glyph's information for concrete master and
        interpolated glyph.

        Example result:

        ```yaml
        ---
          M: {} # same as `get_json`
          R: {} # same as `get_json`
          master_id: 1
        ```
    """
    project = master.project
    masters = project.get_ordered_masters()
    glyph = Glyph.get(master_id=master.id, name=glyphid)

    metapost = Metapost(project)
    metapost.execute_interpolated_single(glyph)

    instancelog = project.get_instancelog(masters[0].version)
    M_glyphjson = get_glyph_info_from_log(instancelog, glyphid)

    metapost.execute_single(master, glyph)

    instancelog = project.get_instancelog(master.version, 'a')
    glyphjson = get_glyph_info_from_log(instancelog, glyphid, master)

    return {'M': M_glyphjson, 'R': glyphjson, 'master_id': master.id}
Beispiel #2
0
def get_glyphs_jsondata(glyphid, master):
    """ Returns dictionary with glyph's information for concrete master and
        interpolated glyph.

        Example result:

        ```yaml
        ---
          M: {} # same as `get_json`
          R: {} # same as `get_json`
          master_id: 1
        ```
    """
    project = master.project
    masters = project.get_ordered_masters()
    glyph = Glyph.get(master_id=master.id, name=glyphid)

    metapost = Metapost(project)
    metapost.execute_interpolated_single(glyph)

    instancelog = project.get_instancelog(masters[0].version)
    M_glyphjson = get_glyph_info_from_log(instancelog, glyphid)

    metapost.execute_single(master, glyph)
    instancelog = project.get_instancelog(master.version, 'a')
    glyphjson = get_glyph_info_from_log(instancelog, glyphid, master)

    return {'M': M_glyphjson, 'R': glyphjson, 'master_id': master.id}
Beispiel #3
0
def get_master_data(master, glyph, axislabel):
    project = master.project

    masters = project.get_ordered_masters()
    prepare_master_environment(masters[0])
    prepare_master_environment(master)

    metapost = Metapost(project)

    glyphs = masters[0].get_glyphs()
    glyphs = glyphs.filter(models.Glyph.name == glyph)
    if not metapost.execute_single(masters[0], glyphs.first()):
        return

    instancelog = project.get_instancelog(masters[0].version)
    metaglyphs = get_glyph_info_from_log(instancelog)

    glyphs = master.get_glyphs()
    glyphs = glyphs.filter(models.Glyph.name == glyph)
    if not metapost.execute_single(master, glyphs.first()):
        return
    master_instancelog = project.get_instancelog(master.version, 'a')

    glyphsdata = get_glyph_info_from_log(master_instancelog, master=master)

    metalabel = get_metapolation_label(axislabel)

    return {'glyphs': glyphsdata,
            'metaglyphs': metaglyphs,
            'master_name': master.name,
            'master_version': '{0:03d}'.format(master.version),
            'master_id': master.id,
            'metapolation': metalabel,
            'label': axislabel,
            'versions': project.get_versions()}
Beispiel #4
0
    def GET(self):
        x = web.input(project=0)

        project = models.Project.get(id=x.project)
        if not project:
            raise web.notfound()

        if x.get('glyph'):
            if not models.Glyph.exists(name=x.get('glyph'),
                                       project_id=project.id):
                raise web.notfound()
            project.currentglyph = x.glyph
            web.ctx.orm.commit()

        masters = project.get_ordered_masters()

        masters_list = []

        metapost = Metapost(project)

        for i, master in enumerate(masters):

            prepare_master_environment(master)

            glyphs = master.get_glyphs()
            glyphs = glyphs.filter(models.Glyph.name == project.currentglyph)

            if not metapost.execute_single(master, glyphs.first()):
                return web.badrequest()

            master_instancelog = project.get_instancelog(master.version, 'a')
            glyphsdata = get_glyph_info_from_log(master_instancelog,
                                                 master=master)

            metalabel = get_metapolation_label(chr(models.LABELS[i]))

            masters_list.append({'glyphs': glyphsdata,
                                 'label': chr(models.LABELS[i]),
                                 'metapolation': metalabel,
                                 'master_id': master.id})

        glyphs = masters[0].get_glyphs()

        glyphs = glyphs.filter(models.Glyph.name == project.currentglyph)

        if not metapost.execute_interpolated_single(glyphs.first()):
            return web.badrequest()

        instancelog = project.get_instancelog(masters[0].version)
        metaglyphs = get_glyph_info_from_log(instancelog)

        import operator
        masters = map(operator.attrgetter('id', 'version'),
                      models.Master.filter(project_id=project.id))

        return ujson.dumps({'masters': masters_list,
                            'versions': project.get_versions(),
                            'metaglyphs': metaglyphs,
                            'mode': project.mfparser,
                            'project_id': project.id})
Beispiel #5
0
    def GET(self):
        x = web.input(project=0)

        project = models.Project.get(id=x.project)
        if not project:
            raise web.notfound()

        if x.get('glyph'):
            if not models.Glyph.exists(name=x.get('glyph'),
                                       project_id=project.id):
                raise web.notfound()
            project.currentglyph = x.glyph
            web.ctx.orm.commit()

        masters = project.get_ordered_masters()

        masters_list = []

        metapost = Metapost(project)

        for i, master in enumerate(masters):

            prepare_master_environment(master)

            glyphs = master.get_glyphs()
            glyphs = glyphs.filter(models.Glyph.name == project.currentglyph)

            if not metapost.execute_single(master, glyphs.first()):
                return web.badrequest()

            master_instancelog = project.get_instancelog(master.version, 'a')
            glyphsdata = get_glyph_info_from_log(master_instancelog,
                                                 master=master)

            metalabel = get_metapolation_label(chr(models.LABELS[i]))

            masters_list.append({
                'glyphs': glyphsdata,
                'label': chr(models.LABELS[i]),
                'metapolation': metalabel,
                'master_id': master.id
            })

        glyphs = masters[0].get_glyphs()

        glyphs = glyphs.filter(models.Glyph.name == project.currentglyph)

        if not metapost.execute_interpolated_single(glyphs.first()):
            return web.badrequest()

        instancelog = project.get_instancelog(masters[0].version)
        metaglyphs = get_glyph_info_from_log(instancelog)

        import operator
        masters = map(operator.attrgetter('id', 'version'),
                      models.Master.filter(project_id=project.id))

        return ujson.dumps({
            'masters': masters_list,
            'versions': project.get_versions(),
            'metaglyphs': metaglyphs,
            'mode': project.mfparser,
            'project_id': project.id
        })