diff --git a/core/validators.py b/core/validators.py new file mode 100644 index 0000000..9fc52bd --- /dev/null +++ b/core/validators.py @@ -0,0 +1,14 @@ +from django.core.exceptions import ValidationError +from django.utils.translation import gettext_lazy as _ +from monero.address import address + + +def address_is_valid_monero(value): + try: + address(value) + return True + except ValueError: + raise ValidationError( + _('%(value)s is an invalid Monero address'), + params={'value': value}, + ) diff --git a/items/migrations/0001_initial.py b/items/migrations/0001_initial.py index 8106841..d575171 100644 --- a/items/migrations/0001_initial.py +++ b/items/migrations/0001_initial.py @@ -4,6 +4,7 @@ from django.conf import settings from django.db import migrations, models import django.db.models.deletion import items.models +import core.validators class Migration(migrations.Migration): @@ -24,7 +25,7 @@ class Migration(migrations.Migration): ('description', models.TextField(max_length=500)), ('ask_price_xmr', models.FloatField()), ('available', models.BooleanField(default=True)), - ('payout_address', models.CharField(max_length=100, validators=[items.models.address_is_valid_monero])), + ('payout_address', models.CharField(max_length=100, validators=[core.validators.address_is_valid_monero])), ('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='owner', to=settings.AUTH_USER_MODEL)), ], ), diff --git a/items/models.py b/items/models.py index 0236fd1..75b2e01 100644 --- a/items/models.py +++ b/items/models.py @@ -1,26 +1,15 @@ from os import path as os_path from secrets import token_urlsafe from django.db import models -from django.core.exceptions import ValidationError from django.core.files.uploadedfile import InMemoryUploadedFile -from django.utils.translation import gettext_lazy as _ from django.contrib.auth.models import User from monero.address import address from PIL import Image, ExifTags from io import BytesIO from core.monero import AuctionDaemon +from core.validators import address_is_valid_monero -def address_is_valid_monero(value): - try: - address(value) - return True - except ValueError: - raise ValidationError( - _('%(value)s is an invalid Monero address'), - params={'value': value}, - ) - class Item(models.Model): owner = models.ForeignKey(User, related_name='owner', on_delete=models.CASCADE) name = models.CharField(max_length=100)