Exemplo n.º 1
0
def change_password(request):
    """ change user password
    """
    if not request.user.is_authenticated():
        return redirect("/login/")
    if request.method == "POST":
        form = ChangePasswordForm(request.POST)
        if form.is_valid():
            old_password = form.cleaned_data["old_password"]
            new_password = form.cleaned_data["new_password"]
            new_password1 = form.cleaned_data["new_password1"]
            if request.user.check_password(old_password) == False:
                form.set_custom_error(u"密码不对")
                logging.debug("old password error")
                return render_template("change_password.html", {"form": form}, request)
            if new_password != new_password1:
                form.set_custom_error(u"两次输入密码不一致")
                logging.debug("password is not same")
                return render_template("change_password.html", {"form": form}, request)
            request.user.set_password(new_password)
            form.set_success_tips(u"修改成功")
            request.user.save()
    else:
        form = ChangePasswordForm()
    return render_template("change_password.html", {"form": form}, request)
Exemplo n.º 2
0
def register(request):
    """ user register view
    """
    if request.user.is_authenticated():
        return redirect("/")
    if request.method == "POST":
        form = RegisterForm(request.POST)
        if form.is_valid():
            username = form.cleaned_data["username"]
            password = form.cleaned_data["password"]
            email = form.cleaned_data["email"]
            real_name = form.cleaned_data["real_name"]
            department = form.cleaned_data["department"]
            if DjangoUser.objects.filter(username=username).count() > 0:
                form.set_custom_error(u"用户名或已被他人注册")
                return render_template("register.html", {"form": form}, request)
            try:
                user = DjangoUser.objects.create_user(username, email, password)
                profile = user.get_profile()
                profile.real_name = real_name
                profile.department = department
                profile.save()
            except Exception, e:
                logging.warn("failed to register: %s" % e)
                form.set_custom_error(u"系统发生故障: %s" % e)
                return render_template("register.html", {"form": form}, request)
            user = authenticate(username=username, password=password)
            djangologin(request, user)
            return redirect("/")
Exemplo n.º 3
0
def login(request):
    """ login view.
    """
    logger.info("request method is %s" % request.method)
    if request.user.is_authenticated():
        logger.info("you have logined")
        return redirect("/")
    if request.method == "POST":
        form = LoginForm(request.POST)
        if form.is_valid():
            username = form.cleaned_data["username"]
            password = form.cleaned_data["password"]
            is_remember = form.cleaned_data["is_remember"]
            user = authenticate(username=username, password=password)
            if user is None:
                form.set_custom_error(u"用户不存在或是密码错误")
                logger.info("user's password is error: %s" % form.non_field_errors())
                return render_template("login.html", {"form": form}, request)
            djangologin(request, user)
            return redirect("/")
        else:
            logger.info("form is not valid")
    else:
        form = LoginForm()

    return render_template("login.html", {"form": form}, request)
Exemplo n.º 4
0
def info(request, order_id = 0):
    """ order information
    """
    order = Order.objects.get(pk = order_id)
    if not order:
        raise Http404
    return render_template("order_info.html", {"order": order}, request)
Exemplo n.º 5
0
def home(request):
    """ user home page. permission is private. 
    """
    if request.user.is_authenticated() is False:
        return redirect("/login/")
    logging.debug("request.user type: %s" % type(request.user))
    profile = request.user.get_profile()
    logging.debug("profile: %s" % profile)
    return render_template("user_home.html", {"profile": profile}, request)
Exemplo n.º 6
0
def all(request, page = 1):
    """ show all restaurant
    """
    all_restaurants = Restaurant.objects.all()
    paginator = Paginator(all_restaurants, 8)
    try:
        restaurants_page = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        restaurants_page = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        restaurants_page = paginator.page(paginator.num_pages)
    logging.debug("restaurant page: %d ~ %d index" % (restaurants_page.start_index(), restaurants_page.end_index()))
    return render_template("restaurant.html", {"restaurants_page": restaurants_page}, request)
Exemplo n.º 7
0
def change_info(request):
    """ change personal information
    """
    if request.user.is_authenticated() is False:
        return redirect("/login/")
    if request.method == "POST":
        form = ChangeInfoForm(request.POST)
        if form.is_valid():
            profile = request.user.get_profile()
            profile.real_name = form.cleaned_data["real_name"]
            profile.department = form.cleaned_data["department"]
            profile.save()
            return redirect("/user/")
    else:
        profile = request.user.get_profile()
        data = {"real_name": profile.real_name, "department": profile.department}
        form = ChangeInfoForm(data)
    return render_template("change_info.html", {"form": form}, request)
Exemplo n.º 8
0
def all_menu(request, restaurant_id = 0, restaurant_name = "", page = 1):
    """ get all menus of restaurant by name or id
    """
    if type(restaurant_id) != types.IntType:
        restaurant_id = int(restaurant_id)
    if restaurant_id <= 0:
        raise Http404
    menus = Menu.objects.filter(restaurant_id = restaurant_id)
    if menus == []:
        raise Http404
    paginator = Paginator(menus, 20)
    try:
        menus_page = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        menus_page = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        menus_page = paginator.page(paginator.num_pages)
    logging.debug("restaurant id type: %s, value %s" % (type(restaurant_id), restaurant_id))
    prefix = "/restaurant/menu/%d/%s" % (restaurant_id, urllib.quote(smart_str(restaurant_name)))
    return render_template("restaurant_all_menu.html", 
                           {"menus_page": menus_page, "prefix": prefix, "restaurant_name": restaurant_name}, 
                           request)
Exemplo n.º 9
0
def ready(request, page = 1):
    """ ready to complete order
    """
    if request.user.is_authenticated() is False:
        return redirect("/login/")
    menus = Menu.objects.filter(id__in = request.session.get("menus", []))
    paginator = Paginator(menus, 20)
    try:
        menus_page = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        menus_page = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        menus_page = paginator.page(paginator.num_pages)
    restaurant = None
    # sum total price
    total_price = 0
    if menus:
        restaurant = menus[0].restaurant
        for menu in menus:
            total_price += menu.price
    # init and check form
    if request.method == "POST":
        form = CommitOrderForm(request.POST)
        if form.is_valid():
            receivers = []
            receiver_names = form.cleaned_data["receivers"].split(" ")
            config = Config.get_default()
            # check fee is validate
            if _is_fee_sufficient(request, config, len(receiver_names), total_price) is False:
                return render_template("order_ready.html", 
                           {"menus_page": menus_page, "restaurant": restaurant, 
                            "total_price": total_price, "form": form}, 
                           request = request)
            if  _is_order_shutdown(request, config) is True:
                return render_template("order_ready.html", 
                           {"menus_page": menus_page, "restaurant": restaurant, 
                            "total_price": total_price, "form": form}, 
                           request = request)
            if _is_restaurant_full(request, restaurant, len(receiver_names)) is True:
                form.set_custom_error(u"餐厅已满")
                return render_template("order_ready.html", 
                           {"menus_page": menus_page, "restaurant": restaurant, 
                            "total_price": total_price, "form": form}, 
                           request = request)
            # begin to order now    
            order = Order(sponsor = request.user, restaurant = restaurant, price = total_price)
            order.save()
            for name in receiver_names:
                user = DjangoUser.objects.filter(username = name)[0]
                user.get_profile().order_meal(order)
                user.get_profile().save()
                receivers.append(user)
            order.owners = receivers
            order.menus = menus
            order.save()
            # update restaurant infomation
            restaurant.add_order_number(len(receiver_names))
            restaurant.save()
            # update menu information
            for menu in menus:
                menu.order_number += len(receiver_names)
                menu.last_order_datetime = datetime.datetime(1, 1, 1).today()
                menu.save()
            # clear session
            request.session["menus"] = set()
            return redirect("/order/%d/" % order.id)       
    else:
        form = CommitOrderForm({"receivers": request.user.username})
    return render_template("order_ready.html", 
                           {"menus_page": menus_page, "restaurant": restaurant, 
                            "total_price": total_price, "form": form}, 
                           request = request)
Exemplo n.º 10
0
    total_price = 0
    for order in orders:
        total_price += order.price
    paginator = Paginator(orders, 50)
    try:
        orders_page = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        orders_page = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        orders_page = paginator.page(paginator.num_pages)
        
    return render_template("order_today.html", 
                           {"orders_page": orders_page, "today": today, 
                            "total_price": total_price, "restaurant": restaurant, 
                            "restaurants": restaurants, "prefix": prefix}, 
                           request)

    
def delete(request, order_id = 0):
    """ to delete order by self, who is sponsor
    """
    order = Order.objects.get(pk = order_id)
    if not order:
        raise Http404
    if order.sponsor != request.user:
        messages.warning(request, u"订单不是你发起的,无权删除")
        return redirect("/user/")
    config = Config.get_default()
    if _is_order_shutdown(request, config) is True:
Exemplo n.º 11
0
def newly_menu(request):
    """ to render newly menu rank
    """    
    ranks = NewlyMenuRank.objects.all()[:settings.RANK_TOP]
    return render_template("rank_newly_menu.html", {"ranks": ranks}, request)
Exemplo n.º 12
0
def pop_menu(request):
    """ to render pop menu rank
    """
    ranks = PopMenuRank.objects.all()[:settings.RANK_TOP]
    return render_template("rank_pop_menu.html", {"ranks": ranks}, request)
Exemplo n.º 13
0
def index(request):
    """ site index
    """
    return render_template("index.html", request = request)
Exemplo n.º 14
0
                user = DjangoUser.objects.create_user(username, email, password)
                profile = user.get_profile()
                profile.real_name = real_name
                profile.department = department
                profile.save()
            except Exception, e:
                logging.warn("failed to register: %s" % e)
                form.set_custom_error(u"系统发生故障: %s" % e)
                return render_template("register.html", {"form": form}, request)
            user = authenticate(username=username, password=password)
            djangologin(request, user)
            return redirect("/")
    else:
        form = RegisterForm()

    return render_template("register.html", {"form": form}, request)


def change_password(request):
    """ change user password
    """
    if not request.user.is_authenticated():
        return redirect("/login/")
    if request.method == "POST":
        form = ChangePasswordForm(request.POST)
        if form.is_valid():
            old_password = form.cleaned_data["old_password"]
            new_password = form.cleaned_data["new_password"]
            new_password1 = form.cleaned_data["new_password1"]
            if request.user.check_password(old_password) == False:
                form.set_custom_error(u"密码不对")