コード例 #1
0
ファイル: views.py プロジェクト: kliyes/repo.bookstore
def reset_password(request, **kwargs):
    form_class = kwargs.pop("form_class", ResetPasswordForm)
    template_name = kwargs.pop("template_name", settings.TEMPLATE_RESET_PASSWORD)

    group, bridge = group_and_bridge(kwargs)
    ctx = group_context(group, bridge)

    if request.method == "POST":
        password_reset_form = form_class(request.POST)
        if password_reset_form.is_valid():
            email = password_reset_form.save()
            if group:
                redirect_to = bridge.reverse("acct_passwd_reset_done", group)
                return HttpResponseRedirect(redirect_to)
            else:
                redirect_to = reverse("acct_passwd_reset_done")
                return HttpResponseRedirect(redirect_to + "?email=" + email)

        else:
            soup = BeautifulSoup(str(password_reset_form.errors))
            utils.addMsg(request, messages.ERROR, soup.ul.li.ul.li.contents[0])
    #            utils.addMsg(request, messages.ERROR, password_reset_form.errors)

    else:
        password_reset_form = form_class()

    ctx.update({"resetForm": password_reset_form})

    return render_to_response(template_name, RequestContext(request, ctx))
コード例 #2
0
ファイル: views.py プロジェクト: kliyes/repo.bookstore
def signup(request, **kwargs):
    form_class = kwargs.pop("form_class", SignupForm)
    template_name = kwargs.pop("template_name", settings.TEMPLATE_SIGNUP)
    redirect_field_name = kwargs.pop("redirect_field_name", "next")
    success_url = kwargs.pop("success_url", None)

    group, bridge = group_and_bridge(kwargs)
    ctx = group_context(group, bridge)

    if success_url is None:
        if hasattr(settings, "SIGNUP_REDIRECT_URLNAME"):
            fallback_url = reverse(settings.SIGNUP_REDIRECT_URLNAME)
        else:
            if hasattr(settings, "LOGIN_REDIRECT_URLNAME"):
                fallback_url = reverse(settings.LOGIN_REDIRECT_URLNAME)
            else:
                fallback_url = settings.LOGIN_REDIRECT_URL
        success_url = get_default_redirect(request, fallback_url, redirect_field_name)

    if request.method == "POST":
        form = form_class(request.POST, group=group)
        if form.is_valid():
            user, emailAddress = form.save(request=request)

            if settings.ACCOUNT_EMAIL_VERIFICATION:
                user.is_active = False
                user.save()

                EmailConfirmation.objects.send_confirmation(emailAddress)

                ctx.update({"email": form.cleaned_data["email"], "success_url": success_url})
                ctx = RequestContext(request, ctx)
                return render_to_response(settings.TEMPLATE_VERIFICATION_SENT, ctx)

            else:
                form.login(request, user)
                return render_to_response(
                    "account/signup_success.html",
                    RequestContext(request, {"email": user.email, "nickname": user.get_profile().name}),
                )

        else:
            soup = BeautifulSoup(str(form.errors))
            utils.addMsg(request, messages.ERROR, soup.ul.li.ul.li.contents[0])
    #            utils.addMsg(request, messages.ERROR, form.errors)

    else:
        form = form_class(group=group)

    motto = Motto.objects.get(id=random.randint(1, Motto.objects.getCount()))
    ctx.update(
        {
            "form": form,
            "redirect_field_name": redirect_field_name,
            "redirect_field_value": request.REQUEST.get(redirect_field_name),
            "motto": motto,
        }
    )

    return render_to_response(template_name, RequestContext(request, ctx))
コード例 #3
0
ファイル: views.py プロジェクト: kliyes/repo.bookstore
def password_change(request, **kwargs):

    form_class = kwargs.pop("form_class", ChangePasswordForm)
    template_name = kwargs.pop("template_name", "account/change_password.html")

    group, bridge = group_and_bridge(kwargs)

    if not request.user.password:
        return HttpResponseRedirect(reverse("set_passwd"))

    if request.method == "POST":
        password_change_form = form_class(request.user, request.POST)
        if password_change_form.is_valid():
            password_change_form.save()
            utils.addMsg(request, messages.SUCCESS, ugettext(u"密码修改成功."))
            password_change_form = form_class(request.user)

            return HttpResponseRedirect(reverse("profiles_setting"))

        else:
            soup = BeautifulSoup(str(password_change_form.errors))
            utils.addMsg(request, messages.ERROR, soup.ul.li.ul.li.contents[0])
    #            utils.addMsg(request, messages.ERROR, password_change_form.errors)

    else:
        password_change_form = form_class(request.user)

    ctx = group_context(group, bridge)
    ctx.update({"pwdform": password_change_form})

    return render_to_response(template_name, RequestContext(request, ctx))
コード例 #4
0
ファイル: views.py プロジェクト: kliyes/repo.bookstore
def setProfile(request, **kwargs):
    """用户profile设置"""
    
    template = kwargs.pop("template", settings.TEMPLATE_SETTINGS)
    
    if request.method == "POST":
        form = ProfileForm(request.POST, user=request.user)
        if form.is_valid():
            profile = form.save(request)
            if profile:
                utils.addMsg(request, messages.SUCCESS, ugettext(u"更新设置成功."))
                return HttpResponseRedirect(reverse("profiles_setting"))
            
        else:
            soup = BeautifulSoup(str(form.errors))
            utils.addMsg(request, messages.ERROR, soup.ul.li.ul.li.contents[0])
#            utils.addMsg(request, messages.ERROR, form.errors)
        
    else :
        draftProfile = request.session.get("draftProfile", None)
        form = ProfileForm(user=request.user, draftProfile=draftProfile)
        
        if draftProfile:
            request.session["draftProfile"] = None
            
    return render_to_response(template, 
        RequestContext(request, {"form": form}))  
コード例 #5
0
ファイル: views.py プロジェクト: kliyes/repo.bookstore
def login(request, **kwargs):
    form_class = kwargs.pop("form_class", LoginForm)
    template_name = settings.TEMPLATE_LOGIN

    # 如果是ajax弹出框登录,重置模板
    if request.is_ajax():
        template_name = settings.TEMPLATE_AJAX_LOGIN

    success_url = kwargs.pop("success_url", None)
    url_required = kwargs.pop("url_required", False)
    extra_context = kwargs.pop("extra_context", {})
    redirect_field_name = kwargs.pop("redirect_field_name", "next")

    group, bridge = group_and_bridge(kwargs)

    if extra_context is None:
        extra_context = {}
    if success_url is None:
        if hasattr(settings, "LOGIN_REDIRECT_URLNAME"):
            fallback_url = reverse(settings.LOGIN_REDIRECT_URLNAME)
        else:
            fallback_url = settings.LOGIN_REDIRECT_URL
        success_url = get_default_redirect(request, fallback_url, redirect_field_name)

    if request.method == "POST" and not url_required:
        form = form_class(request.POST, group=group)
        if form.is_valid():
            form.login(request)
            request.session["failedLoginCount"] = 0
            return after_login(request, success_url)
        else:
            soup = BeautifulSoup(str(form.errors))
            utils.addMsg(request, messages.ERROR, soup.ul.li.ul.li.contents[0])
            #            utils.addMsg(request, messages.ERROR, form.errors)
            request.session["failedLoginCount"] = request.session.get("failedLoginCount", 0) + 1
    else:
        form = form_class(group=group)

    ctx = group_context(group, bridge)
    motto = Motto.objects.get(id=random.randint(1, Motto.objects.getCount()))

    ctx.update(
        {
            "form": form,
            "url_required": url_required,
            "redirect_field_name": redirect_field_name,
            "next": request.REQUEST.get("next", success_url),
            "redirect_field_value": request.REQUEST.get(redirect_field_name),
            "motto": motto,
        }
    )
    ctx.update(extra_context)

    return render_to_response(template_name, RequestContext(request, ctx))
コード例 #6
0
ファイル: views.py プロジェクト: kliyes/repo.bookstore
def send_confirm_email(request):
    email = request.GET.get("email")

    try:
        emailAddress = EmailAddress.objects.get(email=email)
    except EmailAddress.DoesNotExist:
        log.warning("Email address not exists: %s" % email)

    EmailConfirmation.objects.send_confirmation(emailAddress)

    utils.addMsg(request, messages.SUCCESS, u"激活邮件已重发成功,请注意查收邮件")
    return render_to_response(settings.TEMPLATE_VERIFICATION_SENT, RequestContext(request, {"email": email}))
コード例 #7
0
ファイル: views.py プロジェクト: kliyes/repo.bookstore
def addBook(request):
    '''新加书籍, post request only'''
    if request.method != "POST":
        raise Http404
    
    authorName = request.REQUEST.get('authorName', None)
    authorDesc = request.REQUEST.get('authorDesc', None)
    bookName = request.REQUEST.get('bookName', None)
    bookPrice = request.REQUEST.get('bookPrice', None)
    bookIsbn = request.REQUEST.get('bookIsbn', None)
    bookPress = request.REQUEST.get('bookPress', None)
    bookDesc = request.REQUEST.get('bookDesc', None)
    bookBinding = request.REQUEST.get('bookBinding', None)
    bookPages = request.REQUEST.get('bookPages', None)
    bookSpic = request.REQUEST.get('bookSpic', None)
    bookMpic = request.REQUEST.get('bookMpic', None)
    bookLpic = request.REQUEST.get('bookLpic', None)
    bookPublishDate = request.REQUEST.get('bookPublishDate', None)
    stock = request.REQUEST.get('stock', None)
    category = request.REQUEST.get('category', None)
    
    author = Author(name=authorName, desc=authorDesc)
    author.save()
    
    price = float(''.join([ item for item in bookPrice if item in '1234567890.' ]))
    try:
        cate = Category.objects.get(label=category)
    except Category.DoesNotExist:
        raise Http404
    try:
        book = Book.objects.get(isbn=bookIsbn)
    except Book.DoesNotExist:
        book = Book()
    book.name=bookName
    book.author=author 
    book.price=price
    book.isbn=bookIsbn
    book.press=bookPress
    book.desc=bookDesc
    book.binding=bookBinding
    book.pages=bookPages
    book.spic=bookSpic
    book.mpic=bookMpic
    book.lpic=bookLpic 
    book.publish_date=bookPublishDate
    book.stock=stock
    book.category=cate
    book.save()
    utils.addMsg(request, messages.SUCCESS, '添加成功!')
    return HttpResponseRedirect('/manage/reg_book/')
コード例 #8
0
ファイル: views.py プロジェクト: kliyes/repo.bookstore
def submitFeedback(request):
    if request.POST:
        form = FeedbackForm(request.POST)
        if form.is_valid():
            profile = None
            if request.user.is_authenticated():
                profile = request.user.get_profile()  
            feed = form.save(profile) 
            utils.addMsg(request, messages.SUCCESS, u"意见提交成功,我们会尽快做出处理,谢谢关注!")
            
            return HttpResponseRedirect(reverse("us_feedback"))  
    else:
        form = FeedbackForm()
        
    return render_to_response(settings.TEMPLATE_FEEDBACK, RequestContext(request,{'form':form,}))
コード例 #9
0
ファイル: views.py プロジェクト: kliyes/repo.bookstore
def adminLogin(request, **kwargs):
    form_class = kwargs.pop("form_class", LoginForm)
    success_url = request.REQUEST.get("success_url", "/protocol/create_client/")

    if request.method == "POST":
        form = form_class(request.POST)
        if form.is_valid():
            form.login(request)
            if request.user.is_superuser:
                return HttpResponseRedirect(reverse("management"))
            else:
                utils.addMsg(request, messages.ERROR, "非管理员账户不能登录")
        else:
            soup = BeautifulSoup(str(form.errors))
            utils.addMsg(request, messages.ERROR, soup.ul.li.ul.li.contents[0])
    #            utils.addMsg(request, messages.ERROR, form.errors)

    return render_to_response("account/admin_login.html", RequestContext(request, {"form": form_class()}))
コード例 #10
0
ファイル: views.py プロジェクト: kliyes/repo.bookstore
def setPic(request, template=settings.TEMPLATE_SETTINGS):
    """切剪并设置头像"""
    
    profile = request.user.get_profile()

    if not profile.tmp_pic:
        profile.tmp_pic = profile.big_pic
        profile.save()
    
    if request.method != 'POST':
        return render_to_response(settings.TEMPLATE_SETUP_PICTURE, RequestContext(request,))
    
    img = None
    try:
        img = img_utils.open(PIC_ROOT, profile.tmp_pic)
    except IOError, Exception:
        utils.addMsg(request, messages.ERROR, u"读取文件错误!")
        return HttpResponseRedirect(reverse("profiles_setpic"))
コード例 #11
0
ファイル: views.py プロジェクト: kliyes/repo.bookstore
def initPic(request, template=settings.TEMPLATE_SETUP_PICTURE, **kwargs):
    '''处理用户上传头像图片,或用户已有头像初始化显示'''

    if request.method != "POST":
        profile = request.user.get_profile()
        if not profile.tmp_pic:
            profile.tmp_pic = profile.big_pic
            profile.save() 
        return render_to_response(settings.TEMPLATE_SETUP_PICTURE, RequestContext(request,))
    
    # 处理POST请求,文件上传,存储
    file = request.FILES["picture"]
    
    if not file:
        return HttpResponseRedirect(reverse("profiles_setpic"))
    
    if (len(file) > settings.PIC_UPPER_BOUND * 1024 * 1024):
        utils.addMsg(request, messages.ERROR, u"请确保上传的图片大小不超过2M!")
        return HttpResponseRedirect(reverse("profiles_setpic"))
    
    fname, ext = os.path.splitext(str(file))
    if ext not in settings.ALLOWED_IMG_FORMAT:
        utils.addMsg(request, messages.ERROR, u"上传的图片格式不正确!")
        return HttpResponseRedirect(reverse("profiles_setpic"))
    
    filename = img_utils.upload(file, settings.PIC_SIZE_BIG, PROFILE_PIC_ROOT, 100)
    
    if not filename:
        utils.addMsg(request, messages.ERROR, u"图片上传失败!")
        return HttpResponseRedirect(reverse("profiles_setpic"))
    
    profile = request.user.get_profile()
    
    # tmp_pic临时存放上传的图片
    profile.tmp_pic = "profile/%s" % (filename)
    profile.save()
    
    return HttpResponseRedirect(reverse("profiles_setpic"))
コード例 #12
0
ファイル: views.py プロジェクト: kliyes/repo.bookstore
     utils.addMsg(request, messages.ERROR, u"读取文件错误!")
     return HttpResponseRedirect(reverse("profiles_setpic"))
     
 XY = ()
 try:            
     XY = (
         int(request.REQUEST.get("x1", '0')), 
         int(request.REQUEST.get("y1", '0')), 
         int(request.REQUEST.get("x2", '50')),
         int(request.REQUEST.get("y2", '50'))
     )
     if XY[0] == XY[2] and XY[1] == XY[3]:
         raise Exception
     img = img.crop(XY)
 except:
     utils.addMsg(request, messages.WARNING, u"""还没有对头像进行剪切。剪切请在
         大头像上按住、并拖动鼠标。若不需要剪切,可点击'撤销'""")
     return HttpResponseRedirect(reverse("profiles_setpic")) 
 
 
 big_pic = img_utils.scalePic(img, PIC_ROOT, "profile", utils.genUuid()+'_b', settings.PIC_SIZE_BIG, 100)
 normal_pic = img_utils.scalePic(img, PIC_ROOT, "profile", utils.genUuid()+'_n', settings.PIC_SIZE_NORMAL, 80)
 small_pic = img_utils.scalePic(img, PIC_ROOT, "profile", utils.genUuid()+'_s', settings.PIC_SIZE_SMALL, 50)
 
 if big_pic and normal_pic and small_pic:
     
     ## 删除临时图片及设置之前的图片
     if profile.tmp_pic != settings.DEFAULT_PIC:
         file_utils.remove(PIC_ROOT, profile.tmp_pic)
     
     if profile.big_pic != settings.DEFAULT_PIC:
         file_utils.remove(PIC_ROOT, profile.big_pic)