def add_def(request, term_uid): try: Terms.objects.get(uid=term_uid) except ObjectDoesNotExist: return HttpResponse(u'词条不存在 !') sform = SearchForm2() t = Terms.objects.get(uid=term_uid) if request.method == 'POST': form = DefinitionForm(request.POST, request.FILES) if form.is_valid(): d = Definitions( Terms_id=t.id, definition=form.cleaned_data['definition'], homepage=form.cleaned_data['homepage'], author_email=form.cleaned_data['author_email'], author=form.cleaned_data['author'], uid=definition_uid(), docfile=form.cleaned_data['docfile'] ) d.save() if is_online: send_d.delay(t.term, d.definition, d.author, d.homepage, d.author_email) return HttpResponseRedirect('/thanks.html') else: form = DefinitionForm() return render_to_response('add_def.html', {'form': form, 'sform': sform, 'term': t, 'is_online': is_online}, context_instance=RequestContext(request))
def add_search_term(request, search_term): sform = SearchForm2() desc = None if request.method == 'POST': form = TermForm(request.POST, request.FILES) if form.is_valid(): raw_term = form.cleaned_data['term'] raw_term = ' '.join(raw_term.split()) raw_term_pinyin = term_pinyin(raw_term) clean_term_pinyin = ' '.join(raw_term_pinyin.split()) t = Terms(term=raw_term, term_pinyin=clean_term_pinyin, uid=term_uid()) try: t.save() except IntegrityError: return HttpResponse(u'词条已经存在!') request.session['new_add_term'] = t.term request.session['new_add_term_uid'] = t.uid import pdb pdb.set_trace() d = Definitions(Terms_id=t.id, definition=definition_compact, homepage=form.cleaned_data['homepage'], author_email=form.cleaned_data['author_email'], author=form.cleaned_data['author'], uid=definition_uid(), docfile=form.cleaned_data['docfile']) d.save() request.session['contributor'] = True request.session['has_thanked'] = False request.session['author'] = form.cleaned_data['author'] request.session['author_email'] = form.cleaned_data['author_email'] request.session['homepage'] = form.cleaned_data['homepage'] request.session.set_expiry(60 * 30) if is_online: send_t.delay( t.term, d.definition, d.author, d.homepage, d.author_email) return HttpResponseRedirect('/thanks.html') else: form = TermForm( initial={'term': search_term, 'author': request.session.get('author', None), 'author_email': request.session.get('author_email', None), 'homepage': request.session.get('homepage', None)}) desc = search_term c = {'form': form, 'sform': sform} c.update(csrf(request)) return render_to_response( 'add_term.html', {'form': form, 'sform': sform, 'desc': desc, 'is_online': is_online}, context_instance=RequestContext(request))
def symbols(self, pathname, version): total_commit = 0 _files = [(pathname, version)] while _files: pathname, version = _files.pop(0) if self.files.isdir(pathname, version): dirs, files = self.files.getdir(pathname, version) for i in dirs + files: _files.append((os.path.join(pathname, i), version)) else: o = self.pathname_to_obj[pathname] if o.filetype in self.parses and not o.has_indexed(): tags = ctags(self.files.toreal(pathname, version), o.filetype) for tag in tags: sym, line, lang_type, ext = tag lang_typeid = langcache.get_typeid(o.filetype, self.parses[o.filetype].typemap[lang_type]) symbol_obj = Symbol(self.treeid, sym, self.symid) defin = Definitions(self.symid, o.fileid, line, lang_typeid) db.session.add(symbol_obj) db.session.add(defin) self.symid += 1 o.set_indexed() db.session.add(o) total_commit += 1 if total_commit % 1000 == 0: print total_commit db.session.commit() db.session.commit() print print symbolcache.load(self.treeid)
def add_search_term(request, search_term): sform = SearchForm2() desc = None if request.method == 'POST': form = TermForm(request.POST, request.FILES) if form.is_valid(): raw_term = form.cleaned_data['term'] raw_term = ' '.join(raw_term.split()) raw_term_pinyin = term_pinyin(unicode(raw_term)) clean_term_pinyin = ' '.join(raw_term_pinyin.split()) t = Terms( term=raw_term, term_pinyin=clean_term_pinyin, uid=term_uid() ) try: t.save() except IntegrityError: return HttpResponse(u'词条已经存在!') d = Definitions( Terms_id=t.id, # definition=form.cleaned_data['definition'], definition=definition_compact, homepage=form.cleaned_data['homepage'], author_email=form.cleaned_data['author_email'], author=form.cleaned_data['author'], uid=definition_uid(), docfile=form.cleaned_data['docfile'] ) d.save() send_t.delay(t.term, d.definition, d.author, d.homepage, d.author_email) return HttpResponseRedirect('/thanks.html') else: form = TermForm(initial={'term': search_term}) desc = search_term c = {'form': form, 'sform': sform} c.update(csrf(request)) return render_to_response('add_term.html', {'form': form, 'sform': sform, 'desc': desc, 'is_online': is_online}, context_instance=RequestContext(request))
def symbols(self, pathname): total_commit = 0 _files = [pathname] exist_syms = {} while _files: pathname = _files.pop(0) if self.files.isdir(pathname): dirs, files = self.files.getdir(pathname) for i in dirs + files: _files.append(os.path.join(pathname, i)) else: o = self.pathname_to_obj[pathname] if o.filetype in self.parses and not o.has_indexed(): logger.info('find tags: %s' % pathname) tags = find_tags(self.files.toreal(pathname), o.filetype) for tag in tags: sym, line, lang_typeid = tag if sym in exist_syms: sym_id = exist_syms[sym] else: symbol_obj = Symbol(sym, self.symid) sym_id = self.symid exist_syms[sym] = sym_id self.symid += 1 self.session.add(symbol_obj) defin = Definitions(sym_id, o.fileid, line, lang_typeid) self.sym_filetype[sym_id] = o.filetype self.session.add(defin) total_commit += 1 if total_commit % 1000 == 0: self.session.commit() o.set_indexed() self.session.add(o) logger.info('find %s tags: %s' % (len(tags), pathname)) self.session.commit() self.track_info['total_symbol'] = total_commit logger.info('finish tags, total = %s' % total_commit)