def edit_line(request): if not request.user.is_superuser: raise Http404 class CheckForm(forms.Form): pagenum = forms.ModelChoiceField(queryset=BookPage.objects.all()) linenum = forms.IntegerField(min_value=0) pageline = forms.CharField(max_length=2000) if request.method != "POST": raise HttpResponse(status_code=405) form = CheckForm(request.POST) if form.is_valid(): import re new_lines = re.sub(r"\n+", '\n', form.cleaned_data["pageline"], flags=re.S).split('\n') page = form.cleaned_data["pagenum"] page_contents = BookPage.content_text(page.get_content()).split('\n') line_number = form.cleaned_data["linenum"] # # Diff信息 # import difflib # content_line = page_contents[line_number] # dif = difflib.Differ() # diffline = ("\n".join( # list(dif.compare(content_line.splitlines(1), form.cleaned_data["pageline"].splitlines(1))) # )).replace(" ", " ").replace("-", "-").replace("?", "?").replace("+", "+") # print diffline page_contents[line_number] = form.cleaned_data["pageline"] page_contents = page_contents[:line_number] + new_lines + page_contents[line_number + 1:] new_content = BookPage.content_html("\n".join(page_contents)) page.set_content(new_content) return ajax_success(new_content) else: return ajax_error(form.errors.as_json())
def edit_line(request): if not request.user.is_superuser: raise Http404 class CheckForm(forms.Form): pagenum = forms.ModelChoiceField(queryset=BookPage.objects.all()) linenum = forms.IntegerField(min_value=0) pageline = forms.CharField(max_length=2000) if request.method != "POST": raise HttpResponse(status_code=405) form = CheckForm(request.POST) if form.is_valid(): page = form.cleaned_data["pagenum"] page_contents = page.content.split("\n") line_number = form.cleaned_data["linenum"] for i, e in enumerate(page_contents): if i == line_number: dif = difflib.Differ() diffline = ("\n".join( list( dif.compare( e.splitlines(1), form.cleaned_data["pageline"].splitlines(1)))) ).replace(" ", " ").replace("-", "-").replace( "?", "?").replace("+", "+") repr(diffline) # print diffline page_contents[i] = form.cleaned_data["pageline"] page.content = "\n".join(page_contents) page.save() return ajax_success(form.cleaned_data["pageline"]) else: return ajax_error(form.errors.as_json())
def edit_line(request): if not request.user.is_superuser: raise Http404 class CheckForm(forms.Form): pagenum = forms.ModelChoiceField(queryset=BookPage.objects.all()) linenum = forms.IntegerField(min_value=0) pageline = forms.CharField(max_length=2000) if request.method != "POST": raise HttpResponse(status_code=405) form = CheckForm(request.POST) if form.is_valid(): page = form.cleaned_data["pagenum"] page_contents = page.content.split("\n") line_number = form.cleaned_data["linenum"] for i, e in enumerate(page_contents): if i == line_number: dif = difflib.Differ() diffline = ("\n".join( list(dif.compare(e.splitlines(1), form.cleaned_data["pageline"].splitlines(1))) ) ).replace(" ", " ").replace("-", "-").replace("?", "?").replace("+", "+") repr(diffline) # print diffline page_contents[i] = form.cleaned_data["pageline"] page.content = "\n".join(page_contents) page.save() return ajax_success(form.cleaned_data["pageline"]) else: return ajax_error(form.errors.as_json())
def page_task_check(request, page_id=0): if not request.user.is_superuser: raise Http404 get_object_or_404(BookPage, pk=page_id) status = cache.get("pagetask-%s" % page_id) if status: return ajax_success(data={'status': status}) else: return ajax_error('未知的任务')
def del_bookmark(request, bookmark_id): if request.method == 'POST': try: bookmark = BookMark.objects.get(pk=bookmark_id, user=request.user) book = bookmark.book bookmark.delete() book.get_bookrank().sub_fav() except: return ajax_error("无法删除此书签!") return ajax_success(data="删除成功!") else: raise Http404
def del_line(request, page_id=0): if request.method != "POST": raise HttpResponse(status_code=405) if not request.user.is_superuser: raise Http404 page = get_object_or_404(BookPage, pk=page_id) page_contents = BookPage.content_text(page.get_content()).split('\n') try: page_contents.pop(int(request.POST["ln"])) except: return ajax_error("非法数据!") new_content = BookPage.content_html("\n".join(page_contents)) page.set_content(new_content) return ajax_success(new_content)
def add_bookmark(request): if request.method == 'POST': try: page = BookPage.objects.get(pk=request.POST.get('pageid', '-1')) except: return ajax_error("章节错误!") obj, created = BookMark.objects.get_or_create(user=request.user, book=page.book, defaults={"page": page}) if not created: obj.delete() obj = BookMark.objects.create(user=request.user, book=page.book, page=page) else: page.book.get_bookrank().add_fav() return ajax_success(data="添加成功!") else: raise Http404
def add_bookmark(request): if request.method == 'POST': try: page = BookPage.objects.get(pk=request.POST.get('pageid', '-1')) except: return ajax_error("章节错误!") obj, created = BookMark.objects.get_or_create( user=request.user, book=page.book, defaults={"page": page} ) if not created: obj.delete() obj = BookMark.objects.create( user=request.user, book=page.book, page=page ) else: page.book.get_bookrank().add_fav() return ajax_success(data="添加成功!") else: raise Http404