def POST(self): postdata = web.input(project_id=0) project = models.Project.get(id=postdata.project_id) if not project: raise web.notfound() instance = models.Instance.create(project_id=project.id) indexname = models.Instance.filter(project_id=project.id).count() metapost = Metapost(project, version=indexname) metapost.execute_interpolated_bulk() for extension in ['.otf']: dest_dir = op.join(project.get_directory(), 'instances') if not op.exists(dest_dir): os.makedirs(dest_dir) dest = op.join(dest_dir, '%s%s' % (instance.id, extension)) try: shutil.copy( op.join(project.get_master_directory(), 'static', 'interpolated.otf'), dest) except: pass return ujson.dumps({})
def POST(self): postdata = web.input(project_id=0) project = models.Project.get(id=postdata.project_id) if not project: raise web.notfound() instance = models.Instance.create(project_id=project.id) indexname = models.Instance.filter(project_id=project.id).count() metapost = Metapost(project, version=indexname) metapost.execute_interpolated_bulk() for extension in ['.otf']: dest_dir = op.join(project.get_directory(), 'instances') if not op.exists(dest_dir): os.makedirs(dest_dir) dest = op.join(dest_dir, '%s%s' % (instance.id, extension)) try: shutil.copy(op.join(project.get_master_directory(), 'static', 'interpolated.otf'), dest) except: pass return ujson.dumps({})
def POST(self): postdata = web.input(project_id=0) project = models.Project.get(id=postdata.project_id) if not project: raise web.notfound() masters = project.get_ordered_masters() master = project.create_master() web.ctx.orm.commit() prepare_master_environment(master) metapost = Metapost(project) metapost.execute_interpolated_bulk() primary_master = masters[0] master.name = primary_master.name logpath = project.get_instancelog(version=primary_master.version) for glyph in primary_master.get_glyphs(): json = get_glyph_info_from_log(logpath, glyph.name) if not json: error = ('could not find any contours for ' 'instance in %s for %s') % (logpath, glyph.name) raise web.badrequest(ujson.dumps({'error': error})) zpoints = glyph.get_zpoints() points = [] for i, contourpoints in enumerate(json[0]['contours']): if not contourpoints: error = ('could not find any points in contour ' 'for instance in %s') % logpath raise web.badrequest(ujson.dumps({'error': error})) metapost_points = [] for point in contourpoints: if project.mfparser == 'controlpoints': p = { 'x': self.round(point['controls'][0]['x']), 'y': self.round(point['controls'][0]['y']) } metapost_points.append(p) metapost_points.append({ 'x': self.round(point['x']), 'y': self.round(point['y']) }) if project.mfparser == 'controlpoints': p = { 'x': self.round(point['controls'][1]['x']), 'y': self.round(point['controls'][1]['y']) } metapost_points.append(p) if project.mfparser == 'controlpoints' and metapost_points: if i != 0: points_ = metapost_points[1:] + metapost_points[:1] points += points_ else: points_ = metapost_points[2:] + metapost_points[:2] points += points_[::-1] else: points += metapost_points if len(zpoints) != len(points): error = '%s zp != mp %s' % (len(zpoints), len(points)) raise web.badrequest(ujson.dumps({'error': error})) newglypha = models.Glyph.create(master_id=master.id, name=glyph.name, width=glyph.width, project_id=glyph.project_id) i = 0 for point in points: self.create_glyphpoint(newglypha, (i + 1), zpoints[i], point) i += 1 project.masters = ','.join([str(master.id)] * len(masters)) web.ctx.orm.commit() return ujson.dumps({'versions': project.get_versions()})
def POST(self): postdata = web.input(project_id=0) project = models.Project.get(id=postdata.project_id) if not project: raise web.notfound() masters = project.get_ordered_masters() master = project.create_master() web.ctx.orm.commit() prepare_master_environment(master) metapost = Metapost(project) metapost.execute_interpolated_bulk() primary_master = masters[0] master.name = primary_master.name logpath = project.get_instancelog(version=primary_master.version) for glyph in primary_master.get_glyphs(): json = get_glyph_info_from_log(logpath, glyph.name) if not json: error = ("could not find any contours for " "instance in %s for %s") % (logpath, glyph.name) raise web.badrequest(ujson.dumps({"error": error})) zpoints = glyph.get_zpoints() points = [] for i, contourpoints in enumerate(json[0]["contours"]): if not contourpoints: error = ("could not find any points in contour " "for instance in %s") % logpath raise web.badrequest(ujson.dumps({"error": error})) metapost_points = [] for point in contourpoints: if project.mfparser == "controlpoints": p = {"x": self.round(point["controls"][0]["x"]), "y": self.round(point["controls"][0]["y"])} metapost_points.append(p) metapost_points.append({"x": self.round(point["x"]), "y": self.round(point["y"])}) if project.mfparser == "controlpoints": p = {"x": self.round(point["controls"][1]["x"]), "y": self.round(point["controls"][1]["y"])} metapost_points.append(p) if project.mfparser == "controlpoints" and metapost_points: if i != 0: points_ = metapost_points[1:] + metapost_points[:1] points += points_ else: points_ = metapost_points[2:] + metapost_points[:2] points += points_[::-1] else: points += metapost_points if len(zpoints) != len(points): error = "%s zp != mp %s" % (len(zpoints), len(points)) raise web.badrequest(ujson.dumps({"error": error})) newglypha = models.Glyph.create( master_id=master.id, name=glyph.name, width=glyph.width, project_id=glyph.project_id ) i = 0 for point in points: self.create_glyphpoint(newglypha, (i + 1), zpoints[i], point) i += 1 project.masters = ",".join([str(master.id)] * len(masters)) web.ctx.orm.commit() return ujson.dumps({"versions": project.get_versions()})