def test_new_user_can_see_active_ju_but_can_not_new_orders(self): # edith has heard about a 凑单吧 site online. she goes # to check out its home page self.load_fixture_ju() self.browser.get(self.live_server_url) # She notices the page title and header mention 凑单吧 self.assertIn('凑单吧', self.browser.title) self.browser.find_element_by_link_text('看看别人在凑什么').click() time.sleep(2) header_text = self.browser.find_element_by_tag_name('h3').text self.assertIn('活动说明', header_text) self.assertIn('截止时间', header_text) active_ju = Ju.active_ju() self.assertIn(active_ju.address, header_text) # There are some ju items list under the header items = active_ju.items for k, v in items.items(): self.wait_for_row_in_ju_table(v['desc']) self.get_item_input_box().send_keys('A 1') self.get_item_input_box().send_keys(Keys.ENTER) # The home page refreshes, and there is an error message saying # that you have to login first self.wait_for(lambda: self.assertEqual(self.get_error_element().text, "别着急,先登录再凑单!"))
def order(request, ju_id): try: current_ju = Ju.objects.get(id=ju_id) except: if request.user.is_authenticated: current_ju = request.user.active_ju() else: current_ju = Ju.active_ju() return render_home_page(request, current_ju) if request.user.is_authenticated: # 通过new_order可以把owner的代理人改成自己,当然可以用来取消别人对自己的代理。 if request.method == 'POST': form_list = ListForm(depart_name=request.user.depart_name, data=request.POST) if form_list.is_valid(): owner = form_list.cleaned_data['owner'] or request.user list_ = List.objects.filter(ju=current_ju, owner=owner).first() if list_: if list_.agent != request.user: list_.agent = request.user list_.save() return view_order(request, list_.id) return new_order(request, current_ju.id) list_ = List.objects.filter(ju=current_ju, owner=request.user).first() if not list_: list_ = List.objects.filter(ju=current_ju, agent=request.user).first() if list_: return view_order(request, list_.id) return new_order(request, current_ju.id)
def home_page(request): if request.user.is_authenticated: current_ju = request.user.active_ju() else: current_ju = Ju.active_ju() if request.user.is_authenticated and current_ju: return order(request, current_ju.id) return render_home_page(request, current_ju)
def load_fixture_ju(self): # create first ju content before test ju = Ju() ju.__dict__.update(FIXTURE_JU) ju.save() ju.db_triggers() return ju
def next_ju(request, ju_id): current_ju = Ju.objects.filter(id=ju_id).first() if current_ju: if request.user.is_authenticated: next_ = request.user.next_ju(current_ju) else: next_ = current_ju.next() if next_: return order(request, next_.id) if request.user.is_authenticated: current_ju = request.user.active_ju() else: current_ju = Ju.active_ju() return render_home_page(request, current_ju)
def new_order(request, ju_id): try: current_ju = Ju.objects.get(id=ju_id) except: if request.user.is_authenticated: current_ju = request.user.active_ju() else: current_ju = Ju.active_ju() return render_home_page(request, current_ju) depart_name = None form = NewOrderForm() if not current_ju.can_order(request.user): form.fields['text'].widget.attrs['readonly'] = True if request.user.is_authenticated: depart_name = request.user.depart_name form_list = ListForm(depart_name=depart_name) # form_list.fields['owner'].initial = request.user if request.method == 'POST': form = NewOrderForm(data=request.POST) form_list = ListForm(depart_name=depart_name, data=request.POST) if form.is_valid() and form_list.is_valid(): owner = form_list.cleaned_data['owner'] or request.user list_ = form.save(owner=owner, agent=request.user, ju=current_ju) if list_: return redirect(list_) return render(request, 'new_order.html', { 'form': form, 'form_list': form_list, 'current_ju': current_ju }) email_input_form = EmailInputForm() if request.method == 'POST': form = NewOrderForm(data=request.POST) form.add_error('text', NEED_TO_LOGIN_ERROR) return render( request, 'new_order.html', { 'form': form, 'current_ju': current_ju, 'email_input_form': email_input_form })
def category(request): current_ju = Ju.active_ju(ju_type='category') return render(request, 'view_category.html', {'current_ju': current_ju})
def save(self, owner=None, ju=None, parent=None): if not ju: ju = Ju(owner=owner) ju.address = self.cleaned_data['address'] ju.items = self.cleaned_data['items'] ju.stop_date_time = self.cleaned_data['stop_date_time'] ju.status = self.cleaned_data['status'] ju.ju_type = self.cleaned_data['ju_type'] ju.location = self.cleaned_data['location'] if parent: ju.parent = parent if ju.parent: err_item_keys = [ key for key in ju.items.keys() if key not in ju.parent.items.keys() ] if err_item_keys: self.add_error( 'items', '代号{}在主活动中没有,请修改项目定义'.format('、'.join(err_item_keys))) return if owner: ju.owner = owner try: ju.save() ju.db_triggers() except Exception as e: print('-----------Exception for updating JuItem:{}'.format(e)) self.add_error('items', 'Update Item Error:{}'.format(e)) return return ju
def active_ju(self, ju_type=None): if ju_type: return Ju.active_ju(ju_type=ju_type, locations=self.prefered_locations()) return Ju.active_ju(locations=self.prefered_locations())