def item(request, provider_id): from product.models import Product provider = get_object_or_404(Provider, id = provider_id) form = ProviderForm(user = request.user, instance = provider) if request.method == 'POST': form = ProviderForm(user = request.user, instance = provider, data = request.POST) if form.is_valid(): form.save() if provider.reseller: for product in provider.product_set.all(): if not product.origin: product.origin = provider.name product.provider = provider.reseller product.save() for product in Product.objects.filter(origin = provider.name): product.provider = provider.reseller product.save() else: for product in Product.objects.filter(origin = provider.name): product.provider = provider product.origin = None product.save() info_msg(request, u"Fournisseur modifié avec succès.") return redirect('provider:index') return render(request, 'provider/item.html', { 'provider': provider, 'form': form })
def test_json_validation_insert_keys_with_valid(self): form = ProviderForm({ 'name': "test", 'website': "http://e.com", 'regex_find_count': "\\d+", 'base_provider': self.base.id, 'options': '{"id":"1", "hacking":"the gate"}', }) self.assertTrue(form.is_valid(), form.errors)
def test_regex_not_valid(self): form = ProviderForm({ 'name': "test", 'website': "http://e.com", 'regex_find_count': "", 'base_provider': self.base.id, 'options': '{"id":"1"}', }) self.assertFalse(form.is_valid(), form.errors)
def test_base_not_valid(self): form = ProviderForm({ 'name': "test", 'website': "http://e.com", 'regex_find_count': "\\d+", 'base_provider': -1, 'options': '{"id":"1"}', }) with self.assertRaises(Exception): form.is_valid()
def test_empty_options(self): form = ProviderForm({ 'name': "test", 'website': "http://e.com", 'regex_find_count': "\\d+", 'base_provider': self.base.id, 'options': '', }) self.assertTrue(form.is_valid(), form.errors) self.assertEqual(form.clean_options(), {})
def test_options_not_valid_json(self): for bad_json in ['not json', '10 things']: with self.subTest(bad_json=bad_json): form = ProviderForm({ 'name': "test", 'website': "http://e.com", 'regex_find_count': "\d+", 'base_provider': self.base.id, 'options': bad_json, }) self.assertFalse(form.is_valid(), form.errors)
def test_website_not_valid(self): for site in ["", "not url"]: with self.subTest(site=site): form = ProviderForm({ 'name': "test", 'website': site, 'regex_find_count': "\\d+", 'base_provider': self.base.id, 'options': '{"id":"1"}', }) self.assertFalse(form.is_valid(), form.errors)
def test_options_invalid_type(self): form = ProviderForm({ 'name': "test", 'website': "http://e.com", 'regex_find_count': "r", 'base_provider': self.base.id, 'options': 1, }) self.assertFalse(form.is_valid(), form.errors) self.assertTrue('options' in form.errors, form.errors)
def add_provider(request): form = ProviderForm() if request.method == 'POST': form = ProviderForm(request.POST) if form.is_valid(): ptype = form.save(commit=False) ptype.owner = request.user ptype.save() return redirect(reverse('provider.views.index')) ctx = { 'form': form } return render_to_response('provider/add_provider.html', ctx, context_instance=RequestContext(request))
def index(request): if request.method == 'GET': return render( request, 'provider/index.html', {'provider_list': Provider.objects.filter(is_service=False)}) elif request.method == 'POST': form = ProviderForm(user=request.user, data=request.POST) if form.is_valid(): form.save() info_msg(request, u"Fournisseur ajouté avec succès.") return redirect('provider_index') else: error_msg(request, "Impossible de créer le fournisseur.") return render(request, 'provider/form.html', {'form': form})
def index(request): if request.method == 'GET': return render(request, 'provider/index.html',{ 'provider_list': Provider.objects.filter(is_service = False) }) elif request.method == 'POST': form = ProviderForm(user = request.user, data = request.POST) if form.is_valid(): form.save() info_msg(request, u"Fournisseur ajouté avec succès.") return redirect('provider:index') else: error_msg(request, "Impossible de créer le fournisseur.") return render(request, 'provider/form.html',{ 'form': form })
def test_json_validation_leave_keys(self): self.base.available_options = { "properties": {"id": {"type": "string"}, "n": {"type": "string"}}, "required": ["n"] } self.base.save() form = ProviderForm({ 'name': "test", 'website': "http://e.com", 'regex_find_count': "\\d+", 'base_provider': self.base.id, 'options': '{}', }) self.assertFalse(form.is_valid(), form.errors)
def item(request, provider_id): from product.models import Product provider = get_object_or_404(Provider, id=provider_id) if request.method == 'GET': form = ProviderForm(user=request.user, instance=provider) elif request.method == 'POST': form = ProviderForm(user=request.user, instance=provider, data=request.POST) if form.is_valid(): form.save() if provider.reseller: for product in provider.product_set.all(): if not product.origin: product.origin = provider.name product.provider = provider.reseller product.save() for product in Product.objects.filter(origin=provider.name): product.provider = provider.reseller product.save() else: for product in Product.objects.filter(origin=provider.name): product.provider = provider product.origin = None product.save() info_msg(request, u"Fournisseur modifié avec succès.") return redirect('provider_index') return render(request, 'provider/item.html', { 'provider': provider, 'form': form })
def new(request): form = ProviderForm() if request.method == 'POST': form = ProviderForm(request.POST) form.full_clean() if form.is_valid(): new_provider = form.save() messages.add_message(request, messages.SUCCESS, "<strong>Success</strong> Created {}" .format(new_provider.name)) return HttpResponseRedirect(reverse('provider:view', args=[new_provider.id])) return render(request, 'provider/new.html', {'form': form})
def edit(request, provider_id): provider = get_object_or_404(Provider, pk=provider_id) form = ProviderForm(instance=provider) if request.method == 'POST': form = ProviderForm(request.POST, instance=provider) if form.is_valid(): if form.has_changed(): form.save() messages.add_message(request, messages.SUCCESS, "<strong>Success</strong> Edited {}" .format(provider.name)) return HttpResponseRedirect(reverse('provider:view', args=[provider.id])) return render(request, 'provider/edit.html', {'form': form, 'provider': provider})
def new(request): return render(request, 'provider/form.html', {'form': ProviderForm(user=request.user)})