def if_cond( me, cond): attrs = me.attrs orcond = cond.split( '||' ) lorcond = len( orcond)>1 if lorcond: yield '( //||' for l,orc in enumerate( orcond): if l: yield ') || (' for n,c in enumerate( orc.split( '&&')): if n: yield ' &&' mc = re_cond.match( c.strip() ) assert mc d = DictAttr( mc.groupdict()) for a in '',1,2,3: a = 'attr'+str(a) attr = d.get( a) if attr: dattr = d[a] = dd( attr) attrs[ attr] = dattr #'Object %(dattr)s = doc.get( "%(attr)s");' % locals() if d.attr: yield me.exist_attr( d.attr, d['not']) elif d.attr1: yield me.eq_attr2str( d.attr1, d.str, d.op1 == '!=') elif d.attr2: yield me.eq_attr2attr( d.attr2, d.attr3, d.op2 == '!=') if lorcond: yield ') //||'
def popylni_opis( opis0, ot_ime): log( bez_localz= 1) srezove = None opis = opis0 if isinstance( opis, dict) and len(opis)>1: opis = DictAttr( opis) srezove = dai_srezove( opis) if not srezove: srezove = opis0 opis = DictAttr() for k,kk in dict( ime= 'ime име', avtori= 'avtor автор').items(): if not ot_ime.get(k): continue kk = kk or k for ko in kk.split(): if opis.get(ko): break else: opis[ ko] = ot_ime[ k] etiketi = [] for k,v in dict( zagolemi= 'възрастни', dok= 'док').items(): if ot_ime.get( k): etiketi.append( v) if etiketi: opis[ 'етикети'] = ' '.join( etiketi ) opis[ 'издание' ] = 'радио' otkyde = ' '.join( x for x in [ ot_ime.get( 'rubrika') or optz.rubrika or '', ot_ime.data ] if x) if otkyde.isdigit(): otkyde = int( otkyde) if ot_ime.get( 'nomer'): tova = { 'част': ot_ime.nomer, cyr.otkyde: otkyde } if srezove: tova[ cyr.srezove] = srezove opis[ cyr.parcheta ] = { fime: tova } elif srezove: opis[ cyr.srezove ] = srezove opis[ cyr.otkyde ] = otkyde return opis, srezove