Ejemplo n.º 1
0
    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,
                                               "别着急,先登录再凑单!"))
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
    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
Ejemplo n.º 5
0
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)
Ejemplo n.º 6
0
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
        })
Ejemplo n.º 7
0
def category(request):
    current_ju = Ju.active_ju(ju_type='category')
    return render(request, 'view_category.html', {'current_ju': current_ju})
Ejemplo n.º 8
0
 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
Ejemplo n.º 9
0
 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())