def _load_docs(): seen = {} titlemap = {} for doc in Doc.search(): if not os.path.exists(os.path.join(DOCDIR, doc.pathname)): print 'Deleting old document: %r %r' % (DOCDIR, doc.pathname) doc.delete() else: titlemap[doc.title] = doc print 'Loading all from "%s"' % DOCDIR for (dirpath, dirnames, filenames) in os.walk(DOCDIR): assert(dirpath.startswith(DOCDIR)) for basename in filenames: fullpath = os.path.join(dirpath, basename) dirfile = fullpath[len(DOCDIR):] if (basename[-1] == '~' or basename[0] == '.' or fullpath.find('/.') >= 0 or basename=='Makefile'): continue echo(" %s" % fullpath) if basename in seen: raise KeyError('Duplicate basename "%s"' % basename) seen[basename] = 1 title = basename (title, tags, mtime, text) = parse_doc(dirfile) print " (tags=%s)" % repr(tags) while title in titlemap and titlemap[title].filename != basename: print ('WARNING: Duplicate title:\n "%s"\n "%s"' % (basename, titlemap[title].filename)) title += " [duplicate]" d = Doc.create(basename, dirfile, title) titlemap[title] = d d.use_latest() # FIXME: lame: this parses a second time d.title = title d.save()
def save(req, id, docname): if not req.POST: return HttpResponse('Error: you must use POST to save pages.', status=500) while docname.startswith('/'): docname = docname[1:] title = req.REQUEST.get('title-text', 'Untitled').replace('\n', ' ') tags = req.REQUEST.get('tags-text', '').replace('\n', ' ') text = req.REQUEST.get('markdown-text', '').strip() docid = atoi(id) if docid: doc = Doc.try_get(id=docid) else: doc = Doc.create(docname, docname, title) if not doc: raise Http404("Document #%d (%s) does not exist." % (docid, id)) redir_url = doc.get_url() # this function is uncallable after delete() if not text: _try_delete(doc) else: xtitle = title di = 0 while 1: if di > 1: xtitle = '%s [dup#%d]' % (title, di) elif di == 1: xtitle = '%s [dup]' % title try: _try_save(doc, xtitle, tags, text) except IntegrityError: if di < 16: di += 1 continue else: raise break return HttpResponseRedirect(redir_url)