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)
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("/")
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)
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)
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)
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)
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)
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)
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)
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:
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)
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)
def index(request): """ site index """ return render_template("index.html", request = request)
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"密码不对")