예제 #1
0
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())
예제 #2
0
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())
예제 #3
0
파일: views.py 프로젝트: zeus911/bookspider
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())
예제 #4
0
파일: views.py 프로젝트: jsfu/bookspider
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())
예제 #5
0
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('未知的任务')
예제 #6
0
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('未知的任务')
예제 #7
0
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
예제 #8
0
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
예제 #9
0
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)
예제 #10
0
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)
예제 #11
0
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
예제 #12
0
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