def user_chapter(request, object_id, book_id, chapter_id=None): if request.GET: o = Chapter.objects.get(pk=int(chapter_id)) result = { 'id': o.id, 'content': o.content, 'abstract': o.abstract, 'title': o.title, 'date': o.modifydate.strftime("%b %d,%Y %I:%m %p") } return ajax.ajax_ok(result) else: v = ChapterValidator(request, book_id, chapter_id) if request.POST: flag, obj = v.validate_and_save(request) if flag: return ajax.ajax_ok(message=_("Success!")) return ajax.ajax_fail(obj, message=_("There are some errors!")) else: user = User.objects.get(pk=int(object_id)) book = Book.objects.get(pk=int(book_id)) chapter = Chapter.objects.get(pk=int(chapter_id)) return render_template(request, 'users/user_chapter.html', { 'person': user, 'book': book, 'chapter': chapter })
def monitor(request): s = [] objs = Book.objects.filter(status__in=(0, 1)) for o in objs: s.append({'id':o.id, 'title':o.name, 'url':o.url, 'finished':o.finished*100/o.count, 'status':o.status}) return ajax_ok(s)
def user_login(request): v = LoginValidator() f, result = v.validate(request) if not f: return ajax.ajax_fail(result) username = result['username'] password = result['password'] user = authenticate(username=username, password=password) if user is None: message = {'_':_('Authentication is failed!')} if '@' in username: # Mistakenly entered e-mail address instead of username? Look it up. try: user = User.objects.get(email=username) except User.DoesNotExist: message['username'] = _("Usernames cannot contain the '@' character.") else: message['username'] = _("Your e-mail address is not your username. Try '%s' instead.") % user.username return ajax.ajax_fail(message) # The user data is correct; log in the user in and continue. else: if user.is_staff: login(request, user) user.last_login = datetime.datetime.now() user.save() return ajax.ajax_ok(True, next=request.POST.get('next', setting('URLROOT') + '/'))
def user_book_edit(request, object_id, book_id=None): user = request.user v = BookValidator(request, book_id) flag, obj = v.validate_and_save(request) if flag: return ajax.ajax_ok(message=_('Success!')) return ajax.ajax_fail(obj, message=_('Fail!'))
def user_books_delete(request, object_id): user = request.user ids = request.POST.getlist('book_id') if ids: for book in Book.objects.filter(id__in=ids): book.delete() return ajax.ajax_ok(_('Success!'))
def user_book_edit(request, object_id, book_id=None): user = request.user v = BookValidator(request, book_id) flag , obj = v.validate_and_save(request) if flag: return ajax.ajax_ok(message=_('Success!')) return ajax.ajax_fail(obj,message=_('Fail!'))
def user_chapters_delete(request, object_id, book_id): ids = request.POST.getlist('chapter_id') if ids: for chapter in Chapter.objects.filter(id__in=ids): chapter.delete() return ajax.ajax_ok(next=setting('URLROOT') + '/user/%s/book/%s/' % (object_id, book_id))
def user_chapter_comments(request, object_id, book_id, chapter_id): chapter = Chapter.objects.get(pk=int(chapter_id)) objs = chapter.comment_set.all().order_by('comment_num', 'createtime') result = [] for obj in objs: _get_comment_data(result, obj) return ajax.ajax_ok(result)
def chapter_num_comments(request, book_id, chapter_num, comment_num): book = Book.objects.get(pk=int(book_id)) chapter = Chapter.objects.get(num=chapter_num, book=book) objs = chapter.comment_set.filter(comment_num=comment_num) result = [] for obj in objs: _get_comment_data(result, obj) return ajax.ajax_ok(result)
def booklist(request): s = [] pagenum = 60 objs = Book.objects.all() page = Page(objs, request, paginate_by=pagenum) for o in page.object_list: s.append({'id':o.id, 'title':o.name, 'url':o.url, 'finished':o.finished*100/o.count}) pages = (objs.count() + pagenum - 1) / pagenum cur = int(request.GET.get('page', 1)) return ajax_ok((cur, pages, s))
def search(request): word = request.POST.get('search', '') s = [] if word: objs = Book.objects.filter(name__icontains=word) else: objs = Book.objects.all() for o in objs: s.append({'id':o.id, 'title':o.name, 'url':o.url, 'finished':o.finished*100/o.count}) return ajax_ok(s)
def user_chapter(request, object_id, book_id, chapter_id=None): if request.GET: o = Chapter.objects.get(pk=int(chapter_id)) result = {'id':o.id, 'content':o.content, 'abstract':o.abstract, 'title':o.title, 'date':o.modifydate.strftime("%b %d,%Y %I:%m %p")} return ajax.ajax_ok(result) else: v = ChapterValidator(request, book_id, chapter_id) if request.POST: flag, obj = v.validate_and_save(request) if flag: return ajax.ajax_ok(message=_("Success!")) return ajax.ajax_fail(obj, message=_("There are some errors!")) else: user = User.objects.get(pk=int(object_id)) book = Book.objects.get(pk=int(book_id)) chapter = Chapter.objects.get(pk=int(chapter_id)) return render_template(request, 'users/user_chapter.html', {'person':user, 'book':book, 'chapter':chapter})
def add_comment(request, book_id, chapter_num): m = AddCommentValidator(request, book_id, chapter_num) f, obj = m.validate_and_save(request) if f: response = ajax.ajax_ok(message='ok') set_cookie(response, 'username', request.REQUEST.get('username', '')) set_cookie(response, 'email', request.REQUEST.get('email', '')) set_cookie(response, 'website', request.REQUEST.get('website', '')) return response return ajax.ajax_fail(obj, message='error')
def user_edit(request, object_id): if request.POST: v = ChangeValidator(request, object_id) f, obj = v.validate_and_save(request) if f: return ajax.ajax_ok(message=_('User infomation updated successful!')) return ajax.ajax_fail(obj) else: user = User.objects.get(pk=int(object_id)) d = {'person':user} return render_template(request, 'users/user_edit.html', d)
def refresh(request, book_id): try: book = Book.objects.get(pk=int(book_id)) except Book.DoesNotExist: return ajax_fail(message="此书在数据库中不存在!") args = list(settings.PARAMS) + ['reget', book.url] try: os.spawnl(*args) except: traceback.print_exc() return ajax_ok(message="任务已经提交!请稍候下载。")
def user_book_chapters(request, object_id, book_id): user = User.objects.get(pk=int(object_id)) book = Book.objects.get(pk=int(book_id)) objs = book.chapter_set.all() result = [] def _get_data(request, obj): checkbox = '<input type="checkbox" name="chapter_id" value="%d"/>' % obj.id return ({'id':obj.id, 'chapter_num':obj.num, 'title':obj.title, 'abstract':obj.abstract, 'checkbox':checkbox, 'date':obj.modifydate.strftime("%b %d,%Y %I:%m %p")}) for o in objs: result.append(_get_data(request, o)) return ajax.ajax_ok(result)
def user_edit(request, object_id): if request.POST: v = ChangeValidator(request, object_id) f, obj = v.validate_and_save(request) if f: return ajax.ajax_ok( message=_('User infomation updated successful!')) return ajax.ajax_fail(obj) else: user = User.objects.get(pk=int(object_id)) d = {'person': user} return render_template(request, 'users/user_edit.html', d)
def chapter_comments_info(request, book_id, chapter_num): book = Book.objects.get(pk=int(book_id)) chapter = Chapter.objects.get(num=chapter_num, book=book) objs = chapter.commentinfo_set.all() result = {} def _get_data(result, obj): result[obj.comment_num] = obj.count for obj in objs: _get_data(result, obj) return ajax.ajax_ok(result)
def user_register(request): v = RegisterValidator(request) if request.POST: f, obj = v.validate_and_save(request) if f: user = authenticate(username=obj.username, password=obj.password) if user and user.is_staff: login(request, user) user.last_login = datetime.datetime.now() user.save() return ajax.ajax_ok(True, next=setting('URLROOT') + '/') return ajax.ajax_fail(obj) else: return render_template(request, 'users/register.html')
def add(request, book_id=None): if book_id: try: book = Book.objects.get(pk=int(book_id)) except Book.DoesNotExist: return ajax_fail(message="此书在数据库中不存在!") url = book.url else: url = request.POST.get('url', '') if url: args = list(settings.PARAMS) + ['get', url] try: os.spawnl(*args) except: traceback.print_exc() return ajax_ok(message="任务已经提交!请稍候下载。") return ajax_fail(message="请输入想下载书的目录URL")
def user_books_list(request, object_id): #because filtermiddleware guarantee the url match with request.user #so here don't need to get the user object, but just using request.user # user = User.objects.get(pk=int(object_id)) user = request.user pagenum = 10 result = [] #if the user is superuser, then all book will be shown if user.is_superuser: objs = Book.objects.all() else: objs = user.book_set.all() page = Page(objs, request, paginate_by=pagenum) for o in page.object_list: result.append(_get_data(request, o)) pages = (objs.count() + pagenum - 1) / pagenum cur = int(request.GET.get('page', 1)) return ajax.ajax_ok((cur, pages, result))
def user_book_chapters(request, object_id, book_id): user = User.objects.get(pk=int(object_id)) book = Book.objects.get(pk=int(book_id)) objs = book.chapter_set.all() result = [] def _get_data(request, obj): checkbox = '<input type="checkbox" name="chapter_id" value="%d"/>' % obj.id return ({ 'id': obj.id, 'chapter_num': obj.num, 'title': obj.title, 'abstract': obj.abstract, 'checkbox': checkbox, 'date': obj.modifydate.strftime("%b %d,%Y %I:%m %p") }) for o in objs: result.append(_get_data(request, o)) return ajax.ajax_ok(result)
def user_login(request): if request.method == "POST": login_form = loginform(request.POST) if login_form.is_valid(): print(111) email = username = request.POST.get("email", "") password = request.POST.get("password", "") user = authenticate(username=username, password=password) if user: if user.is_staff: # request.session["token"] = user.token # response = render(request) # response.set_cookie() # login(request,user) return ajax_ok(request) else: return ajax_fail_data(message="用户未激活") else: return ajax_fail_data(message="用户名或者密碼錯誤") else: return ajax_fail_data(message="输入错误")
def user_book_authors(request, object_id, book_id): book = Book.objects.get(pk=int(book_id)) result = [] for obj in book.authors.all(): result.append({'username': obj.username}) return ajax.ajax_ok(result)
def user_book_addauthor(request, object_id, book_id): v = AddUserValidator(book_id) flag, obj = v.validate_and_save(request) if flag: return ajax.ajax_ok() return ajax.ajax_fail(obj)
def user_chapter_delcomment(request, object_id, book_id, chapter_id): obj = Comment.objects.get(pk=int(request.POST['comment_id'])) obj.delete() return ajax.ajax_ok(message='ok')
def user_book_authors(request, object_id, book_id): book = Book.objects.get(pk=int(book_id)) result = [] for obj in book.authors.all(): result.append({'username':obj.username}) return ajax.ajax_ok(result)