def upload(request): '''function controls upload based on whether or not the request type is POST(see explanation for query above) Getting info from file: upon POST, the file to be uploaded is written to the server in chunks(in case it's a large files). The collection name is also storred, and used to make a new Collection object. Saving info: The function customize(from customize.py located in bibtex/bibstore) is called to do text replacements via regex. Finally, the parse_bib method from bibparse.py is called on the file to make iterable objects corresponding to indidual entries. For each object, a new Entry object is made and defined. It is also associated with the newly made Collection object''' if request.method == 'POST': form = UploadForm(request.POST, request.FILES) if form.is_valid(): f = request.FILES['filename'] collection_name = form.cleaned_data['collection_name'] destination = open('Temp/temp.txt', 'wb+') for chunk in f.chunks(): destination.write(chunk) destination.close() #the customize funciton in bibstore.customize #allows users to quickly customize the file reading options #so that fields can be read in the parser # in this case, the function change case of all Entry attributes to lower case customize() f_parsed = parse_bib('Temp/temp.txt') c = Collection() c.name = collection_name c.save() for entry in f_parsed: d = Entry() d.collection = c entry_column_names = ['ref_tag','author_list','author','journal', 'volume','pages', 'year', 'title'] for column in entry_column_names: if column in entry.data: d.__setattr__(column, entry.data[column]) d.save() return HttpResponseRedirect('/') else: form = UploadForm() return render_to_response('upload.html', {'form':form})
f.write('<p><em>%s</em></p>\n' % tidy(paper.data['Journal'])) if 'Abstract' in paper.data: f.write('<blockquote><p>%s</p></blockquote>\n' % tidy(paper.data['Abstract'])) f.write('<i class="icon-tags"></i> <a href="/laurent.bib" onClick="_gaq.push([\'_trackEvent\', \'Publications\', \'Bibtex\', \'%s\']);">.bib</a> [%s] | ' % (paper.key, paper.key)) fichier="download/pdfs/%s.pdf"% (paper.key) if os.path.isfile(fichier): f.write('<i class="icon-book"></i> <a href="/download/pdfs/%s.pdf" onClick="_gaq.push([\'_trackEvent\', \'Publications\', \'Download\', \'%s\']);">.pdf</a>' % (paper.key, paper.key)) else: print "Ne trouve pas %s !!" % fichier f.write(' </div>\n') f.write(' </div>\n') f.write('</div>\n') f.write('</div>\n') f.write('</div>\n') papers = bibparse.parse_bib('laurent.bib') inproceedings = [paper for paper in papers if paper.btype == 'inproceedings'] articles = [paper for paper in papers if paper.btype == 'article'] chapters = [paper for paper in papers if paper.btype == 'inbook'] f = open('research/publications.html', 'w') f.write('---\n') f.write('layout: page\n') f.write('title: "Publications"\n') f.write('description: ""\n') from datetime import date f.write('tagline: "last updated on %s"\n' % date.today().strftime("%B %d, %Y")) f.write('group: research\n') f.write('---\n')
f.write(' %s\n' % tidy(', '.join(paper.data['Author'].split(' and ')))) if 'Booktitle' in paper.data: f.write('<p><em>%s</em></p>\n' % tidy(paper.data['Booktitle'])) if 'Journal' in paper.data: f.write('<p><em>%s</em></p>\n' % tidy(paper.data['Journal'])) if 'Abstract' in paper.data: f.write('<blockquote><p>%s</p></blockquote>\n' % tidy(paper.data['Abstract'])) f.write('<i class="icon-tags"></i> <a href="https://raw.github.com/hbredin/cv/master/publi/bredin.bib" onClick="_gaq.push([\'_trackEvent\', \'Publications\', \'Bibtex\', \'%s\']);">.bib</a> [%s] | ' % (paper.key, paper.key)) f.write('<i class="icon-book"></i> <a href="/download/pdfs/%s.pdf" onClick="_gaq.push([\'_trackEvent\', \'Publications\', \'Download\', \'%s\']);">.pdf</a>' % (paper.key, paper.key)) f.write(' </div>\n') f.write(' </div>\n') f.write('</div>\n') f.write('</div>\n') f.write('</div>\n') papers = bibparse.parse_bib('../cv/publi/bredin.bib') inproceedings = [paper for paper in papers if paper.btype == 'inproceedings'] articles = [paper for paper in papers if paper.btype == 'article'] chapters = [paper for paper in papers if paper.btype == 'inbook'] f = open('research/publications.html', 'w') f.write('---\n') f.write('layout: page\n') f.write('title: "Publications"\n') f.write('description: ""\n') from datetime import date f.write('tagline: "last updated on %s"\n' % date.today().strftime("%B %d, %Y")) f.write('group: research\n') f.write('---\n')
help="Generate english version") argparser.add_argument('--francais', action='store_true', help="Produire la version francaise") argparser.add_argument('--software', action='store_true', help="Add software/logiciel section") args = argparser.parse_args() if args.english == args.francais: sys.stderr.write("You must choose between 'english' and 'francais'\n") sys.exit() # parse bib file papers = bibparse.parse_bib('bredin.bib') # get publication types btypes = set([paper.btype for paper in papers]) subpapers = {} for btype in btypes: subpapers[btype] = [paper.key for paper in papers if paper.btype == btype] order = ['article', 'inbook', 'inproceedings', 'phdthesis'] if args.english: titles = {'inproceedings': 'Conference and workshop proceedings', 'article': 'Journal articles', 'inbook': 'Book chapters', 'phdthesis': 'PhD thesis', 'wtf': 'Other publications'}
f.write(' %s\n' % tidy(', '.join(paper.data['Author'].split(' and ')))) if 'Booktitle' in paper.data: f.write('<p><em>%s</em></p>\n' % tidy(paper.data['Booktitle'])) if 'Journal' in paper.data: f.write('<p><em>%s</em></p>\n' % tidy(paper.data['Journal'])) if 'Abstract' in paper.data: f.write('<blockquote><p>%s</p></blockquote>\n' % tidy(paper.data['Abstract'])) f.write('<i class="icon-tags"></i> <a href="https://raw.github.com/hbredin/cv/master/publi/bredin.bib" onClick="_gaq.push([\'_trackEvent\', \'Publications\', \'Bibtex\', \'%s\']);">.bib</a> [%s] | ' % (paper.key, paper.key)) f.write('<i class="icon-book"></i> <a href="/download/pdfs/%s.pdf" onClick="_gaq.push([\'_trackEvent\', \'Publications\', \'Download\', \'%s\']);">.pdf</a>' % (paper.key, paper.key)) f.write(' </div>\n') f.write(' </div>\n') f.write('</div>\n') f.write('</div>\n') f.write('</div>\n') papers = bibparse.parse_bib('../CurriculumVitae/publi/bredin.bib') inproceedings = [paper for paper in papers if paper.btype == 'inproceedings'] articles = [paper for paper in papers if paper.btype == 'article'] chapters = [paper for paper in papers if paper.btype == 'inbook'] f = open('research/publications.html', 'w') f.write('---\n') f.write('layout: page\n') f.write('title: "Publications"\n') f.write('description: ""\n') from datetime import date f.write('tagline: "last updated on %s"\n' % date.today().strftime("%B %d, %Y")) f.write('group: research\n') f.write('---\n')
f.write('<p><em>%s</em></p>\n' % tidy(paper.data['Journal'])) if 'Abstract' in paper.data: f.write('<blockquote><p>%s</p></blockquote>\n' % tidy(paper.data['Abstract'])) f.write('<i class="icon-tags"></i> <a href="/guinaudeau.bib" onClick="_gaq.push([\'_trackEvent\', \'Publications\', \'Bibtex\', \'%s\']);">.bib</a> [%s] | ' % (paper.key, paper.key)) fichier="download/pdfs/%s.pdf"% (paper.key) if os.path.isfile(fichier): f.write('<i class="icon-book"></i> <a href="/download/pdfs/%s.pdf" onClick="_gaq.push([\'_trackEvent\', \'Publications\', \'Download\', \'%s\']);">.pdf</a>' % (paper.key, paper.key)) else: print "Ne trouve pas %s !!" % fichier f.write(' </div>\n') f.write(' </div>\n') f.write('</div>\n') f.write('</div>\n') f.write('</div>\n') papers = bibparse.parse_bib('guinaudeau.bib') inproceedings = [paper for paper in papers if paper.btype == 'inproceedings'] articles = [paper for paper in papers if paper.btype == 'article'] chapters = [paper for paper in papers if paper.btype == 'inbook'] f = open('research/publications.html', 'w') f.write('---\n') f.write('layout: page\n') f.write('title: "Publications"\n') f.write('description: ""\n') from datetime import date f.write('tagline: "last updated on %s"\n' % date.today().strftime("%B %d, %Y")) f.write('group: research\n') f.write('---\n')
def bibtexprocessingfunction(request): """takes in bibtex file, creates BibtexEntry instances with populated attributes""" try: collectionid = request.POST["collection"] if collectionid == "": raise () # if no query given, cause no response c = Collections() c.name = collectionid c.save() print c bib = request.FILES["bibtexfile"].read() name = "bibfile" f = open(name, "w") f.write(bib) f.close() print bib for entry in parse_bib(name): bibent = BibtexEntry() print entry.data, "\n" for attribute in [ "Author", "Journal", "Title", "Keywords", "Adsnote", "Adsurl", "Doi", "Pages", "Editor", "Booktitle", "Year", ]: try: setattr(bibent, attribute, entry.data[attribute]) except: setattr(bibent, attribute, "") finally: pass try: # have to put Date_mod and Date_added into a new section because the parsed fields include dashes (not supported by py) bibent.Date_Modified = bibent.data["Date-Modified"] except: pass finally: pass try: bibent.Date_Added = bibent.data["Date-Added"] except: pass finally: pass bibent.Collection = c bibent.save() except: pass finally: pass return HttpResponseRedirect("/upload")