def pybtex_to_pieberry(key, ent): '''Transform pybtex Entry class to a PieObject''' obj = PieObject() modfields = {} for bkey, val in ent.fields.items(): if bibtexmap.has_key(bkey): modfields[bibtexmap[bkey]] = ublc(val) obj.add_aspect_bibdata(**modfields) obj.BibData_Key = key if not ent.fields.has_key('title'): if ent.fields.has_key('booktitle'): obj.title = ublc(ent.items['booktitle']) else: raise ValueError, 'No title in this entry' for persons in ent.persons.itervalues(): for person in persons: person.text = unicode(person) formatter = Formatter() formatted_names = formatter.format_people(ent) # formatted_names = formatter.format_author_or_editor(ent) rendered_names = formatted_names.render(plaintext.Backend()).rstrip('.') corpnamehere = re_corpname.match(rendered_names) if not ent.fields.has_key('year'): raise Exception, "No valid date for this item" if not ent.fields.has_key('month'): ent.fields['month'] = 'January' datestr = '01 %s %s' % (ent.fields['month'], ent.fields['year']) obj.BibData_DatePublished = datetime.datetime.strptime(datestr, '%d %B %Y') if corpnamehere: rendered_names = '%s%s' % (corpnamehere.group(1), corpnamehere.group(2)) obj.corpauthor = rendered_names else: obj.author = rendered_names obj.BibData_Type = ent.type return obj
def spoof_pieobject(objtype="normal"): '''Generate a spoof PieObject''' if objtype == 'normal': t = random.choice(ipsum) a = random.choice(namelist) d = datetime.datetime.today() ro = PieObject(t, a, d) ro.FileData_FileName = random.choice(filenamelist) ro.FileData_Root = random.choice(rootlist) elif objtype == 'web': ro = PieObject() ro.WebData_Url = random.choice(urllist) ro.WebData_PageUrl = ro.WebData_Url ro.WebData_LinkText = random.choice(ipsum) ro.title = ro.WebData_LinkText ro.aspects['onweb'] = True elif objtype in ('webfull', 'desktop', 'pdffull'): t = random.choice(ipsum) a = random.choice(namelist) d = datetime.datetime.today() ro = PieObject(t, a, d) ro.WebData_Url = random.choice(urllist) ro.WebData_PageUrl = ro.WebData_Url ro.WebData_LinkText = t + ' [link]' ro.FileData_Root = 'cachedir' ro.aspects['onweb'] = True ro.MakeBibData() ro.add_tag('Test') ro.add_tags(('Foo', 'Bar')) return ro