diff --git a/bids/forms.py b/bids/forms.py index 574048b..9ff75a5 100644 --- a/bids/forms.py +++ b/bids/forms.py @@ -5,7 +5,8 @@ from bids.models import ItemBid class CreateItemBidForm(forms.ModelForm): class Meta: model = ItemBid - fields = ['bid_price_xmr'] + fields = ['bid_price_xmr', 'return_address'] labels = { - 'bid_price_xmr': 'Bid Price (XMR)' + 'bid_price_xmr': 'Bid Price (XMR)', + 'return_address': 'Return Wallet Address' } diff --git a/bids/migrations/0001_initial.py b/bids/migrations/0001_initial.py index ccb3523..3ecea96 100644 --- a/bids/migrations/0001_initial.py +++ b/bids/migrations/0001_initial.py @@ -1,5 +1,6 @@ # Generated by Django 2.2.7 on 2019-12-13 05:46 +import core.validators from django.conf import settings from django.db import migrations, models import django.db.models.deletion @@ -25,6 +26,7 @@ class Migration(migrations.Migration): ('accepted', models.BooleanField(default=False)), ('bidder', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='bidder', to=settings.AUTH_USER_MODEL)), ('item', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='bids', to='items.Item')), + ('return_address', models.CharField(max_length=100, validators=[core.validators.address_is_valid_monero])), ], ), ] diff --git a/bids/models.py b/bids/models.py index 7f6ce0c..49bda2d 100644 --- a/bids/models.py +++ b/bids/models.py @@ -1,6 +1,7 @@ from django.db import models from django.contrib.auth.models import User from items.models import Item +from core.validators import address_is_valid_monero class ItemBid(models.Model): @@ -10,6 +11,7 @@ class ItemBid(models.Model): last_updated = models.DateTimeField(auto_now=True) bid_price_xmr = models.FloatField() accepted = models.BooleanField(default=False) + return_address = models.CharField(max_length=100, validators=[address_is_valid_monero]) def __str__(self): return f"{self.id} - {self.item.name} - {self.bidder} > {self.item.owner}" diff --git a/bids/views.py b/bids/views.py index 605c35a..3b07f62 100644 --- a/bids/views.py +++ b/bids/views.py @@ -56,6 +56,12 @@ def create_bid(request, item_id): bid.item = item bid.save() return HttpResponseRedirect(reverse('get_item', args=[item_id])) + else: + form_errors = form.errors.get_json_data() + for err in form_errors: + err_data = form_errors[err][0] + messages.error(request, f'{err}: {err_data["message"]}') + return HttpResponseRedirect(reverse('create_bid', args=[item_id])) else: context = { 'form': CreateItemBidForm(), @@ -84,6 +90,12 @@ def edit_bid(request, bid_id): if form.is_valid(): form.save() return HttpResponseRedirect(reverse('get_item', args=[bid.item.id])) + else: + form_errors = form.errors.get_json_data() + for err in form_errors: + err_data = form_errors[err][0] + messages.error(request, f'{err}: {err_data["message"]}') + return HttpResponseRedirect(reverse('create_bid', args=[bid.item.id])) else: context = { 'form': CreateItemBidForm(instance=bid),