def test_conflict_v8(self): """Check whether ``back`` conflicts with an existing lend. In this scenario: * old_lend.out != Null * old_lend.back != Null * new_lend.out < old_lend.out Then, ``new_lend['back']`` is set to before, during and after ``old_lend``. """ old_lend = factories.PastLendFactory.create() old_lend.back = old_lend.out old_lend.save() new_lend = self._copy_user_and_item(old_lend) new_lend['out'] = old_lend.out - timedelta(days = 1) # before old_lend new_lend['back'] = old_lend.out - timedelta(days = 1) self.assertTrue(forms.LendForm(new_lend).is_valid()) # during old_lend new_lend['back'] = old_lend.out self.assertFalse(forms.LendForm(new_lend).is_valid()) # after old_lend new_lend['back'] = old_lend.back + timedelta(days = 1) self.assertFalse(forms.LendForm(new_lend).is_valid())
def get_handler(): """Return a form for creating an lend.""" form_data = request.session.pop('form_data', None) if form_data is None: form = forms.LendForm() else: form = forms.LendForm(json.loads(form_data)) return render(request, 'elts/lend-create-form.html', {'form': form})
def test_out_before_back(self): """``out`` must occur before ``back``.""" data = { 'user_id': factories.UserFactory.create().id, 'item_id': factories.ItemFactory.create().id, 'out': factories.lend_out(), } data['back'] = data['out'] - timedelta(days = 1) self.assertFalse(forms.LendForm(data).is_valid()) data['back'] = data['out'] + timedelta(days = 1) self.assertTrue(forms.LendForm(data).is_valid())
def test_if_due_back_then_due_out(self): """If ``due_back`` is set, ``due_out`` must also be set.""" data = { 'user_id': factories.UserFactory.create().id, 'item_id': factories.ItemFactory.create().id, 'out': factories.lend_out(), # due_out or out is required 'due_back': factories.lend_due_back(), } self.assertFalse(forms.LendForm(data).is_valid()) data['due_out'] = data['due_back'] - timedelta(days = 1) self.assertTrue(forms.LendForm(data).is_valid())
def get_handler(): """Return a form for updating lend ``lend_id_``.""" form_data = request.session.pop('form_data', None) if form_data is None: form = forms.LendForm(instance = lend_) else: form = forms.LendForm(json.loads(form_data)) return render( request, 'elts/lend-id-update-form.html', {'lend': lend_, 'form': form} )
def test_missing_out_and_due_out(self): """Create a LendForm without setting ``out`` or ``due_out``.""" form = forms.LendForm({ 'user_id': factories.UserFactory.create().id, 'item_id': factories.ItemFactory.create().id, }) self.assertFalse(form.is_valid())
def test_missing_item_id(self): """Create a LendForm without setting ``item_id``.""" form = forms.LendForm({ 'user_id': factories.UserFactory.create().id, 'due_out': factories.lend_due_out(), 'out': factories.lend_out() }) self.assertFalse(form.is_valid())
def test_valid_v2(self): """Create a valid LendForm with ``out`` set.""" form = forms.LendForm({ 'user_id': factories.UserFactory.create().id, 'item_id': factories.ItemFactory.create().id, 'out': factories.lend_out() }) self.assertTrue(form.is_valid())
def test_conflict_v5(self): """Check whether ``out`` conflicts with an existing lend. In this scenario: * old_lend.out != Null * old_lend.back == Null Then, ``new_lend['out']`` is set to before and during ``old_lend``. """ old_lend = factories.PastLendFactory.create() new_lend = self._copy_user_and_item(old_lend) # before old_lend new_lend['out'] = old_lend.out - timedelta(days = 1) self.assertFalse(forms.LendForm(new_lend).is_valid()) # during old_lend new_lend['out'] = old_lend.out self.assertFalse(forms.LendForm(new_lend).is_valid()) new_lend['out'] = old_lend.out + timedelta(days = 1) self.assertFalse(forms.LendForm(new_lend).is_valid())
def put_handler(): """Update lend ``lend_id_``. If update succeeds, redirect user to ``lend_id`` view. Otherwise, redirect user to ``lend_id_update_form``. """ form = forms.LendForm(request.POST, instance = lend_) if form.is_valid(): form.save() return http.HttpResponseRedirect( reverse('elts.views.lend_id', args = [lend_id_]) ) else: request.session['form_data'] = json.dumps(form.data) return http.HttpResponseRedirect( reverse('elts.views.lend_id_update_form', args = [lend_id_]) )
def post_handler(): """Create a new item lend. If creation suceeds, redirect user to ``lend_id`` view. Otherwise, redirect user to ``lend_create_form``. """ form = forms.LendForm(request.POST) if form.is_valid(): new_lend = form.save() return http.HttpResponseRedirect( reverse('elts.views.lend_id', args = [new_lend.id]) ) else: request.session['form_data'] = json.dumps(form.data) return http.HttpResponseRedirect( reverse('elts.views.lend_create_form') )