<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: generators code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Tue, 19 Aug 2008 20:52:24 GMT</pubDate>
    <description>DZone Snippets: generators code</description>
    <item>
      <title>XTG generator</title>
      <link>http://snippets.dzone.com/posts/show/3570</link>
      <description>// description of your code here&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;    def getAcceptedClassifieds(self, session):&lt;br /&gt;    &lt;br /&gt;        context = utils.context(self)&lt;br /&gt;        &lt;br /&gt;        ret = []&lt;br /&gt;        for elem in session:&lt;br /&gt;            if elem['status'] == 'True':&lt;br /&gt;                el = getattr(context, elem['id'].split('/')[-1], None)&lt;br /&gt;                if el is not None:&lt;br /&gt;&lt;br /&gt;                    yield el&lt;br /&gt;                    &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    def __call__(self, *args, **kwargs):&lt;br /&gt;        """ call method """&lt;br /&gt;        from StringIO import StringIO&lt;br /&gt;        from logging import getLogger&lt;br /&gt;        log = getLogger('xtg')&lt;br /&gt;&lt;br /&gt;        &lt;br /&gt;        context = utils.context(self)&lt;br /&gt;        request = self.request&lt;br /&gt;        session = request.SESSION&lt;br /&gt;        response = request.response&lt;br /&gt;&lt;br /&gt;        xtg = StringIO()&lt;br /&gt;        xtg.write('&lt;v2.00&gt;&lt;e1&gt;\r')&lt;br /&gt;&lt;br /&gt;        &lt;br /&gt;        classifieds = self.getAcceptedClassifieds(request.form['ids'])&lt;br /&gt;        class2 = self.getAcceptedClassifieds(request.form['ids'])&lt;br /&gt;    &lt;br /&gt;&lt;br /&gt;        import time&lt;br /&gt;&lt;br /&gt;        # NEW CODE&lt;br /&gt;        from sailkatuak import prepareBrainsForDict&lt;br /&gt;        start = time.time()&lt;br /&gt;        classified_list = prepareBrainsForDict(classifieds, obj=1)&lt;br /&gt;        xtg_new = self.convertToXtg(classified_list)&lt;br /&gt;        end = time.time()&lt;br /&gt;        log.info('Berria: %s' % str(end - start))&lt;br /&gt;        &lt;br /&gt;&lt;br /&gt;        # OLD CODE&lt;br /&gt;        def ordena (x,y):&lt;br /&gt;            if x.getSaila()==y.getSaila():&lt;br /&gt;                return cmp(self.xtg_testua(x).lower(), self.xtg_testua(y).lower())&lt;br /&gt;            else:&lt;br /&gt;                return cmp(x.getSaila(), y.getSaila())&lt;br /&gt;&lt;br /&gt;        # We need the element in a list. Sort doesn't&lt;br /&gt;        # generators cannot be sorted&lt;br /&gt;        classs = list(class2)&lt;br /&gt;        start = time.time()&lt;br /&gt;        classs.sort(ordena)&lt;br /&gt;        for classified in classs:&lt;br /&gt;            classified_xtg = self.getClassifiedXtg(classified)&lt;br /&gt;            xtg.write(classified_xtg)&lt;br /&gt;        end = time.time()&lt;br /&gt;        log.info('Zaharra: %s' % str(end - start))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    def convertToXtg(self, classifieds):&lt;br /&gt;        def sailarenIzena(datua):&lt;br /&gt;            return datua.split('-')&lt;br /&gt;&lt;br /&gt;        from StringIO import StringIO&lt;br /&gt;        xtg = StringIO()&lt;br /&gt;        xtg.write('&lt;v2.00&gt;&lt;e1&gt;\r')&lt;br /&gt;        for section, secinfo in classifieds:&lt;br /&gt;            section_s = section.split('-', 1)&lt;br /&gt;            xtg.write(GOI_IZENBURU_ESTILOA)&lt;br /&gt;            xtg.write(section_s[0])&lt;br /&gt;            xtg.write(GOI_IZENBURU_TARTEKO_MARRA)&lt;br /&gt;            xtg.write(section_s[1])&lt;br /&gt;            xtg.write(LERRO_SALTOA)&lt;br /&gt;            for subsection, announces in secinfo:&lt;br /&gt;                subsection_s = subsection.split('-', 1)&lt;br /&gt;                xtg.write(BEHE_IZENBURU_AURRETIK)&lt;br /&gt;                xtg.write(LERRO_SALTOA)&lt;br /&gt;                xtg.write(BEHE_IZENBURU_ESTILOA)&lt;br /&gt;                xtg.write(subsection_s[0])&lt;br /&gt;                xtg.write('. ')&lt;br /&gt;                xtg.write(subsection_s[1])&lt;br /&gt;                xtg.write(BEHE_IZENBURU_BUKAERA)&lt;br /&gt;                xtg.write(LERRO_SALTOA)&lt;br /&gt;                for announce in announces:&lt;br /&gt;                    if announces.index(announce) == 0:&lt;br /&gt;                        xtg.write(TESTU_LEHEN_LERROA_ESTILOA)&lt;br /&gt;                    elif announces.index(announce) == 1:&lt;br /&gt;                        xtg.write(TESTU_LERROA_ESTILOA)&lt;br /&gt;&lt;br /&gt;                    if announces.index(announce) == 1:&lt;br /&gt;                        xtg.write(self.xtg_berria_testua(announce))&lt;br /&gt;                    else:&lt;br /&gt;                        xtg.write(self.xtg_testua(announce))&lt;br /&gt;                        &lt;br /&gt;                    xtg.write(LERRO_SALTOA)&lt;br /&gt;                              &lt;br /&gt;&lt;br /&gt;        return xtg&lt;br /&gt;&lt;br /&gt;    def getClassifiedXtg(self, classified):&lt;br /&gt;        def sailarenIzena(datua):&lt;br /&gt;            return datua.split('-')&lt;br /&gt;&lt;br /&gt;        """&lt;br /&gt;        self.lehen_lerroa='Bai'&lt;br /&gt;        self.ataleko_lehen_subsaila='Bai'&lt;br /&gt;        self.goi_izenburu_zaharra='Bai'&lt;br /&gt;        self.izenburu_zaharra='Bai'&lt;br /&gt;        self.lehena=0&lt;br /&gt;        """&lt;br /&gt;        &lt;br /&gt;        p = ''&lt;br /&gt;        sail_izena = sailarenIzena(classified.getSaila())&lt;br /&gt;        if self.goi_izenburu_zaharra!=sail_izena[1]:&lt;br /&gt;            if self.lehena==1:&lt;br /&gt;                p=p+GOI_IZENBURU_AURRETIK+LERRO_SALTOA&lt;br /&gt;&lt;br /&gt;            p=p+GOI_IZENBURU_ESTILOA+sail_izena[0][0]+GOI_IZENBURU_TARTEKO_MARRA+sail_izena[1]+LERRO_SALTOA&lt;br /&gt;            self.izenburu_zaharra='Goiena'&lt;br /&gt;            self.goi_izenburu_zaharra=sail_izena[1]&lt;br /&gt;            self.lehena=1&lt;br /&gt;        # Bigarren mailako Sailaren izenburua&lt;br /&gt;        if self.izenburu_zaharra!=sail_izena[0]:&lt;br /&gt;            p=p+BEHE_IZENBURU_AURRETIK+LERRO_SALTOA&lt;br /&gt;            p=p+BEHE_IZENBURU_ESTILOA+sail_izena[0]+'. '+sail_izena[2]+BEHE_IZENBURU_BUKAERA+LERRO_SALTOA&lt;br /&gt;            self.izenburu_zaharra=sail_izena[0]&lt;br /&gt;            self.lehen_lerroa='1'&lt;br /&gt;        # Sailkatuen lehenengo lerroa bada...&lt;br /&gt;        if self.lehen_lerroa=='1':&lt;br /&gt;            p=p+TESTU_LEHEN_LERROA_ESTILOA+self.xtg_testua(classified)+LERRO_SALTOA&lt;br /&gt;            self.lehen_lerroa='2'&lt;br /&gt;        # Bigarren lerroa bada&lt;br /&gt;        elif self.lehen_lerroa == '2' :&lt;br /&gt;            p=p+TESTU_LERROA_ESTILOA+self.xtg_berria_testua(classified)+LERRO_SALTOA&lt;br /&gt;            self.lehen_lerroa='3'&lt;br /&gt;        #bestela....&lt;br /&gt;        else:&lt;br /&gt;            p=p+self.xtg_testua(classified)+LERRO_SALTOA&lt;br /&gt;        return p&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    def xtg_testua(self, classified):&lt;br /&gt;&lt;br /&gt;        titulua = classified.Title()&lt;br /&gt;        deskribapena = classified.Description().strip()&lt;br /&gt;        kontaktua = classified.getTelephone1()&lt;br /&gt;        &lt;br /&gt;        testua=''&lt;br /&gt;        &lt;br /&gt;        if len(deskribapena)&gt;0:&lt;br /&gt;            if deskribapena[-1]!='.':&lt;br /&gt;                deskribapena=deskribapena+'.'&lt;br /&gt;                &lt;br /&gt;        if len(kontaktua)&gt;0:&lt;br /&gt;            if kontaktua[-1]!='.':&lt;br /&gt;                kontaktua=kontaktua+'.'&lt;br /&gt;                        &lt;br /&gt;        testua='&lt;B&gt;'+titulua+'&lt;$&gt;'+' '+deskribapena+' '+kontaktua&lt;br /&gt;                        &lt;br /&gt;        return testua&lt;br /&gt;&lt;br /&gt;    def xtg_berria_testua(self, classified):&lt;br /&gt;&lt;br /&gt;        TESTU_LEHEN_HITZA_ESTILOA='@TXT-Sailaktuak/Lehena/Hitza'&lt;br /&gt;&lt;br /&gt;        xtg_t = self.xtg_testua(classified)&lt;br /&gt;        xtg_t = xtg_t[3:]&lt;br /&gt;        &lt;br /&gt;        return TESTU_LEHEN_HITZA_ESTILOA + xtg_t&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def prepareBrainsForDict(brains, sectionname=0, obj=0):&lt;br /&gt;    """ Prepare a dict to get the list we need to return """&lt;br /&gt;&lt;br /&gt;    dic = {}&lt;br /&gt;    for brain in brains:&lt;br /&gt;        if obj:&lt;br /&gt;            if sectionname:&lt;br /&gt;                section = brain.Title()&lt;br /&gt;            else:&lt;br /&gt;                section = brain.getSaila()&lt;br /&gt;&lt;br /&gt;        else:&lt;br /&gt;            if sectionname:&lt;br /&gt;                section = brain.Title&lt;br /&gt;            else:&lt;br /&gt;                section = brain.getSaila&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        type, subtype, name = section.split('-')&lt;br /&gt;&lt;br /&gt;        tip = type[0] + '-' + subtype&lt;br /&gt;        subtip = type + '-' + name&lt;br /&gt;&lt;br /&gt;        dict_type = dic.get(tip, None)&lt;br /&gt;        if dict_type is not None:&lt;br /&gt;            dict_type_subtype = dict_type.get(subtip, None)&lt;br /&gt;            if dict_type_subtype is not None:&lt;br /&gt;                dic[tip][subtip].append(brain)&lt;br /&gt;            else:&lt;br /&gt;                dic[tip][subtip] = [brain]&lt;br /&gt;        else:&lt;br /&gt;            dic[tip] = {subtip: [brain]}&lt;br /&gt;&lt;br /&gt;    ret = []&lt;br /&gt;    for k,v in dic.items():&lt;br /&gt;        l = []&lt;br /&gt;        for i,j in v.items():&lt;br /&gt;            l.append((i,j))&lt;br /&gt;        ret.append((k,l))&lt;br /&gt;&lt;br /&gt;    def sortBySection(c1, c2):&lt;br /&gt;        return cmp(c1[0], c2[0])&lt;br /&gt;&lt;br /&gt;    ret2 = []&lt;br /&gt;    for k,v in ret:&lt;br /&gt;        v.sort(sortBySection)&lt;br /&gt;        ret2.append((k,v))&lt;br /&gt;&lt;br /&gt;    ret2.sort(sortBySection)&lt;br /&gt;&lt;br /&gt;    return ret2&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Fri, 23 Feb 2007 12:27:33 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3570</guid>
      <author>erral (Mikel)</author>
    </item>
  </channel>
</rss>
