Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def _write_serial(self, node, reference, literal=False):
is_ref = hasattr(reference, 'pos1')
data_type = reference.data_type
number_format = getattr(reference, 'number_format')
mapping = {'n':{'ref':'numRef', 'cache':'numCache'},
's':{'ref':'strRef', 'cache':'strCache'}}
if is_ref:
ref = SubElement(node, '{%s}%s' %(CHART_NS, mapping[data_type]['ref']))
SubElement(ref, '{%s}f' % CHART_NS).text = str(reference)
data = SubElement(ref, '{%s}%s' %(CHART_NS, mapping[data_type]['cache']))
values = reference.values
else:
data = SubElement(node, '{%s}numLit' % CHART_NS)
values = (1,)
if data_type == 'n':
SubElement(data, '{%s}formatCode' % CHART_NS).text = number_format or 'General'
SubElement(data, '{%s}ptCount' % CHART_NS, {'val':str(len(values))})
for j, val in enumerate(values):
point = SubElement(data, '{%s}pt' % CHART_NS, {'idx':str(j)})
val = safe_string(val)
SubElement(point, '{%s}v' % CHART_NS).text = val
def _write_style(self, node):
""" write style theme """
style = SubElement(node, '{%s}style' % CHART_DRAWING_NS)
ln_ref = SubElement(style, '{%s}lnRef' % DRAWING_NS, {'idx':'2'})
scheme_clr = SubElement(ln_ref, '{%s}schemeClr' % DRAWING_NS, {'val':'accent1'})
SubElement(scheme_clr, '{%s}shade' % DRAWING_NS, {'val':'50000'})
fill_ref = SubElement(style, '{%s}fillRef' % DRAWING_NS, {'idx':'1'})
SubElement(fill_ref, '{%s}schemeClr' % DRAWING_NS, {'val':'accent1'})
effect_ref = SubElement(style, '{%s}effectRef' % DRAWING_NS, {'idx':'0'})
SubElement(effect_ref, '{%s}schemeClr' % DRAWING_NS, {'val':'accent1'})
font_ref = SubElement(style, '{%s}fontRef' % DRAWING_NS, {'idx':'minor'})
SubElement(font_ref, '{%s}schemeClr' % DRAWING_NS, {'val':'lt1'})
def write_rels(self, drawing_id):
root = Element("{%s}Relationships" % PKG_REL_NS)
attrs = {'Id' : 'rId1',
'Type' : '%s/chartUserShapes' % REL_NS,
'Target' : '../drawings/drawing%s.xml' % drawing_id }
SubElement(root, '{%s}Relationship' % PKG_REL_NS, attrs)
return get_document_content(root)
def write(self, shape_id):
root = Element('{%s}userShapes' % CHART_NS)
for shape in self._shapes:
anchor = SubElement(root, '{%s}relSizeAnchor' % CHART_DRAWING_NS)
xstart, ystart, xend, yend = shape.coordinates
_from = SubElement(anchor, '{%s}from' % CHART_DRAWING_NS)
SubElement(_from, '{%s}x' % CHART_DRAWING_NS).text = str(xstart)
SubElement(_from, '{%s}y' % CHART_DRAWING_NS).text = str(ystart)
_to = SubElement(anchor, '{%s}to' % CHART_DRAWING_NS)
SubElement(_to, '{%s}x' % CHART_DRAWING_NS).text = str(xend)
SubElement(_to, '{%s}y' % CHART_DRAWING_NS).text = str(yend)
sp = SubElement(anchor, '{%s}sp' % CHART_DRAWING_NS, {'macro':'', 'textlink':''})
nvspr = SubElement(sp, '{%s}nvSpPr' % CHART_DRAWING_NS)
SubElement(nvspr, '{%s}cNvPr' % CHART_DRAWING_NS, {'id':str(shape_id), 'name':'shape %s' % shape_id})
SubElement(nvspr, '{%s}cNvSpPr' % CHART_DRAWING_NS)
sppr = SubElement(sp, '{%s}spPr' % CHART_DRAWING_NS)
frm = SubElement(sppr, '{%s}xfrm' % DRAWING_NS,)
# no transformation
SubElement(frm, '{%s}off' % DRAWING_NS, {'x':'0', 'y':'0'})
SubElement(frm, '{%s}ext' % DRAWING_NS, {'cx':'0', 'cy':'0'})
prstgeom = SubElement(sppr, '{%s}prstGeom' % DRAWING_NS, {'prst':str(shape.style)})
SubElement(prstgeom, '{%s}avLst' % DRAWING_NS)
fill = SubElement(sppr, '{%s}solidFill' % DRAWING_NS, )
attrs = {
"id": "_x0000_s%s" % (idx+1026),
"type": "#_x0000_t202",
"style": "position:absolute; margin-left:59.25pt;margin-top:1.5pt;width:108pt;height:59.25pt;z-index:1;visibility:hidden",
"fillcolor": "#ffffe1",
"{%s}insetmode" % officens: "auto"
}
shape = SubElement(root, "{%s}shape" % vmlns, attrs)
SubElement(shape, "{%s}fill" % vmlns, {"color2":"#ffffe1"})
SubElement(shape, "{%s}shadow" % vmlns, {"color":"black", "obscured":"t"})
SubElement(shape, "{%s}path" % vmlns, {"{%s}connecttype"%officens:"none"})
textbox = SubElement(shape, "{%s}textbox" % vmlns, {"style":"mso-direction-alt:auto"})
SubElement(textbox, "div", {"style": "text-align:left"})
client_data = SubElement(shape, "{%s}ClientData" % excelns, {"ObjectType": "Note"})
SubElement(client_data, "{%s}MoveWithCells" % excelns)
SubElement(client_data, "{%s}SizeWithCells" % excelns)
SubElement(client_data, "{%s}AutoFill" % excelns).text = "False"
SubElement(client_data, "{%s}Row" % excelns).text = str(row)
SubElement(client_data, "{%s}Column" % excelns).text = str(column)
blipfill = SubElement(pic, '{%s}blipFill' % SHEET_DRAWING_NS)
SubElement(blipfill, '{%s}blip' % DRAWING_NS, {
'{%s}embed' % REL_NS: 'rId%s' % idx,
'cstate':'print'
})
SubElement(blipfill, '{%s}srcRect' % DRAWING_NS)
stretch = SubElement(blipfill, '{%s}stretch' % DRAWING_NS)
SubElement(stretch, '{%s}fillRect' % DRAWING_NS)
sppr = SubElement(pic, '{%s}spPr' % SHEET_DRAWING_NS, {'bwMode':'auto'})
frm = SubElement(sppr, '{%s}xfrm' % DRAWING_NS)
# no transformation
SubElement(frm, '{%s}off' % DRAWING_NS, {'x':'0', 'y':'0'})
SubElement(frm, '{%s}ext' % DRAWING_NS, {'cx':'0', 'cy':'0'})
prstGeom = SubElement(sppr, '{%s}prstGeom' % DRAWING_NS, {'prst':'rect'})
SubElement(prstGeom, '{%s}avLst' % DRAWING_NS)
SubElement(sppr, '{%s}noFill' % DRAWING_NS)
ln = SubElement(sppr, '{%s}ln' % DRAWING_NS, {'w':'1'})
SubElement(ln, '{%s}noFill' % DRAWING_NS)
SubElement(ln, '{%s}miter' % DRAWING_NS, {'lim':'800000'})
SubElement(ln, '{%s}headEnd' % DRAWING_NS)
SubElement(ln, '{%s}tailEnd' % DRAWING_NS, {'type':'none', 'w':'med', 'len':'med'})
SubElement(sppr, '{%s}effectLst' % DRAWING_NS)
SubElement(anchor, '{%s}clientData' % SHEET_DRAWING_NS)
def _write_series_labels(self, node, serie):
cat = SubElement(node, '{%s}cat' % CHART_NS)
self._write_serial(cat, serie.labels)
def _write_axis_title(self, axis, ax):
if axis.title != '':
title = SubElement(ax, '{%s}title' % CHART_NS)
tx = SubElement(title, '{%s}tx' % CHART_NS)
rich = SubElement(tx, '{%s}rich' % CHART_NS)
SubElement(rich, '{%s}bodyPr' % DRAWING_NS)
SubElement(rich, '{%s}lstStyle' % DRAWING_NS)
p = SubElement(rich, '{%s}p' % DRAWING_NS)
pPr = SubElement(p, '{%s}pPr' % DRAWING_NS)
SubElement(pPr, '{%s}defRPr' % DRAWING_NS)
r = SubElement(p, '{%s}r' % DRAWING_NS)
SubElement(r, '{%s}rPr' % DRAWING_NS, {'lang':self.chart.lang})
t = SubElement(r, '{%s}t' % DRAWING_NS).text = axis.title
SubElement(title, '{%s}layout' % CHART_NS)
cNvPicPr = SubElement(name, '{%s}cNvPicPr' % SHEET_DRAWING_NS)
paras = {"noChangeAspect": "0"}
if img.nochangeaspect:
paras["noChangeAspect"] = "1"
if img.nochangearrowheads:
paras["noChangeArrowheads"] = "1"
SubElement(cNvPicPr, '{%s}picLocks' % DRAWING_NS, paras)
blipfill = SubElement(pic, '{%s}blipFill' % SHEET_DRAWING_NS)
SubElement(blipfill, '{%s}blip' % DRAWING_NS, {
'{%s}embed' % REL_NS: 'rId%s' % idx,
'cstate':'print'
})
SubElement(blipfill, '{%s}srcRect' % DRAWING_NS)
stretch = SubElement(blipfill, '{%s}stretch' % DRAWING_NS)
SubElement(stretch, '{%s}fillRect' % DRAWING_NS)
sppr = SubElement(pic, '{%s}spPr' % SHEET_DRAWING_NS, {'bwMode':'auto'})
frm = SubElement(sppr, '{%s}xfrm' % DRAWING_NS)
# no transformation
SubElement(frm, '{%s}off' % DRAWING_NS, {'x':'0', 'y':'0'})
SubElement(frm, '{%s}ext' % DRAWING_NS, {'cx':'0', 'cy':'0'})
prstGeom = SubElement(sppr, '{%s}prstGeom' % DRAWING_NS, {'prst':'rect'})
SubElement(prstGeom, '{%s}avLst' % DRAWING_NS)
SubElement(sppr, '{%s}noFill' % DRAWING_NS)
ln = SubElement(sppr, '{%s}ln' % DRAWING_NS, {'w':'1'})
SubElement(ln, '{%s}noFill' % DRAWING_NS)
SubElement(ln, '{%s}miter' % DRAWING_NS, {'lim':'800000'})
SubElement(ln, '{%s}headEnd' % DRAWING_NS)
def _write_axis_title(self, axis, ax):
if axis.title != '':
title = SubElement(ax, '{%s}title' % CHART_NS)
tx = SubElement(title, '{%s}tx' % CHART_NS)
rich = SubElement(tx, '{%s}rich' % CHART_NS)
SubElement(rich, '{%s}bodyPr' % DRAWING_NS)
SubElement(rich, '{%s}lstStyle' % DRAWING_NS)
p = SubElement(rich, '{%s}p' % DRAWING_NS)
pPr = SubElement(p, '{%s}pPr' % DRAWING_NS)
SubElement(pPr, '{%s}defRPr' % DRAWING_NS)
r = SubElement(p, '{%s}r' % DRAWING_NS)
SubElement(r, '{%s}rPr' % DRAWING_NS, {'lang':self.chart.lang})
t = SubElement(r, '{%s}t' % DRAWING_NS).text = axis.title
SubElement(title, '{%s}layout' % CHART_NS)