785 lines
39 KiB
Python
785 lines
39 KiB
Python
# Generated by Django 5.1.4 on 2025-02-18 13:32
|
|
|
|
import django.db.models.deletion
|
|
import django.utils.timezone
|
|
import shop.models
|
|
import uuid
|
|
from decimal import Decimal
|
|
from django.conf import settings
|
|
from django.db import migrations, models
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
initial = True
|
|
|
|
dependencies = [migrations.swappable_dependency(settings.AUTH_USER_MODEL)]
|
|
|
|
operations = [
|
|
migrations.CreateModel(
|
|
name='Brand',
|
|
fields=[
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('creation_date', models.DateTimeField(auto_now_add=True, verbose_name='fecha de creación')),
|
|
(
|
|
'last_modification_date',
|
|
models.DateTimeField(auto_now=True, verbose_name='fecha de última modificación'),
|
|
),
|
|
('name', models.CharField(max_length=100, unique=True, verbose_name='nombre')),
|
|
],
|
|
options={'verbose_name': 'marca', 'verbose_name_plural': 'marcas'},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Provider',
|
|
fields=[
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('creation_date', models.DateTimeField(auto_now_add=True, verbose_name='fecha de creación')),
|
|
(
|
|
'last_modification_date',
|
|
models.DateTimeField(auto_now=True, verbose_name='fecha de última modificación'),
|
|
),
|
|
('vat_id', models.CharField(max_length=32, unique=True, verbose_name='documento de identidad')),
|
|
('name', models.CharField(max_length=64, verbose_name='nombre')),
|
|
('email', models.EmailField(max_length=254, verbose_name='e-mail de contacto')),
|
|
(
|
|
'phone',
|
|
models.CharField(
|
|
blank=True, default='', max_length=16, null=True, verbose_name='Teléfono de contacto'
|
|
),
|
|
),
|
|
('address', models.CharField(max_length=255, verbose_name='dirección')),
|
|
('city', models.CharField(max_length=64, verbose_name='ciudad')),
|
|
('state', models.CharField(max_length=64, verbose_name='región')),
|
|
('country', models.CharField(max_length=64, verbose_name='país')),
|
|
('zip', models.CharField(max_length=32, verbose_name='código postal')),
|
|
],
|
|
options={'verbose_name': 'proveedor', 'verbose_name_plural': 'proveedores'},
|
|
),
|
|
migrations.CreateModel(
|
|
name='ShopSettings',
|
|
fields=[
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('merchant_code', models.CharField(max_length=9, verbose_name='Identificación de comercio')),
|
|
(
|
|
'currency_code',
|
|
models.CharField(
|
|
choices=[
|
|
('8', 'LEK ALL'),
|
|
('12', 'ALGERIAN DINAR DZD'),
|
|
('24', 'ANGOLA KWANZA AOK'),
|
|
('30', 'PROBANDO DESA MON'),
|
|
('31', 'AZERBAIJANIAN MANAT AZM'),
|
|
('32', 'ARGENTINE AUSTRAL ARP'),
|
|
('36', 'AUSTRALIAN DOLLAR AUD'),
|
|
('44', 'BAHAMIAN DOLLAR BSD'),
|
|
('48', 'BAHRAINI DINAR BHD'),
|
|
('50', 'TAKA BDT'),
|
|
('51', 'ARMENIAN DRAM AMD'),
|
|
('52', 'BARBADOS DOLLAR BBD'),
|
|
('60', 'BERMUDAN DOLLAR BMD'),
|
|
('64', 'NGULTRUM BTN'),
|
|
('68', 'BOLIVIAN PESO BOP'),
|
|
('70', 'DINAR BAD'),
|
|
('72', 'PULA BWP'),
|
|
('76', 'CRUZEIRO BRC'),
|
|
('84', 'BELIZE DOLLAR 084'),
|
|
('90', 'SOLOMON ISLANDS DOLL SBD'),
|
|
('96', 'BRUNEI DOLLAR BND'),
|
|
('100', 'LEV BGL'),
|
|
('104', 'KYAT BUK'),
|
|
('108', 'BURUNDI FRANC BIF'),
|
|
('112', 'BELARUSSIAN RUBLE BYB'),
|
|
('116', 'RIEL KHR'),
|
|
('124', 'CANADIAN DOLLAR CAD'),
|
|
('132', 'CAPE VERDE ESCUDO CVE'),
|
|
('136', 'CAYMAN ISLANDS DOLLA KYD'),
|
|
('144', 'SRI LANKA RUPEE LKR'),
|
|
('152', 'CHILEAN PESO CLP'),
|
|
('156', 'YUAN RENMINBI CNY'),
|
|
('157', 'CHINESE RENMIMBI CNH'),
|
|
('158', 'CHINESE RENMINBI CNX'),
|
|
('170', 'COLOMBIAN PESO COP'),
|
|
('174', 'COMOROS FRANC KMF'),
|
|
('180', 'ZAIRE ZRZ'),
|
|
('188', 'COSTA RICA COLON CRC'),
|
|
('191', 'CROATIAN KUNA HRK'),
|
|
('192', 'CUBAN PESO CUP'),
|
|
('196', 'CYPRUS POUND CYP'),
|
|
('200', 'KORUNA CSK'),
|
|
('203', 'CZECH KORUNA CZK'),
|
|
('208', 'DANISH KRONE DKK'),
|
|
('214', 'DOMINICAN PESO DOP'),
|
|
('218', 'SUCRE ECS'),
|
|
('222', 'EL SALVADOR COLON SVC'),
|
|
('226', 'EKWELE GQE'),
|
|
('230', 'ETHIOPIAN BIRR ETB'),
|
|
('232', 'ERITREAN NAKTAN ERN'),
|
|
('233', 'ESTONIAN KROON EEK'),
|
|
('238', 'FALKLAND ISLANDS FKP'),
|
|
('242', 'FIJI DOLLAR FJD'),
|
|
('262', 'DJIBOUTI FRANC DJF'),
|
|
('268', 'GEORGIAN LARI GEL'),
|
|
('270', 'DALASI GMD'),
|
|
('278', 'MARK DER DDR DDM'),
|
|
('288', 'GHANA CEDI GHC'),
|
|
('292', 'GIBRALTAR POUND GIP'),
|
|
('320', 'QUETZAL GTQ'),
|
|
('324', 'SYLI GNS'),
|
|
('328', 'GUYANA DOLLAR GYD'),
|
|
('332', 'GOURDE HTG'),
|
|
('340', 'LEMPIRA HNL'),
|
|
('344', 'HONG KONG DOLLAR HKD'),
|
|
('348', 'FORINT HUF'),
|
|
('352', 'ICELAND KRONA ISK'),
|
|
('356', 'INDIAN RUPEE INR'),
|
|
('360', 'RUPIAH IDR'),
|
|
('364', 'IRANIAL RIAL IRR'),
|
|
('365', 'IRANIAN AIRLINE RATE IRA'),
|
|
('368', 'IRAQI DINAR IQD'),
|
|
('376', 'ISRAEL SHEKEL ILS'),
|
|
('388', 'JAMAICAN DOLLAR JMD'),
|
|
('392', 'YEN JPY'),
|
|
('398', 'TENGE KZT'),
|
|
('400', 'JORDANIAN DINAR JOD'),
|
|
('404', 'KENYAN SHILLING KES'),
|
|
('408', 'NORTH KOREAN WON KPW'),
|
|
('410', 'KOREAN WON KRW'),
|
|
('414', 'KUWAITI DINAR KWD'),
|
|
('417', 'KYRGYZSTAN SON KGS'),
|
|
('418', 'KIP LAK'),
|
|
('422', 'LEBANESE POUND LBP'),
|
|
('426', 'LESOTHO LOTI LSM'),
|
|
('428', 'LATVIAN LAT LVL'),
|
|
('430', 'LIBERIAN DOLLAR LRD'),
|
|
('434', 'LIBYAN DINAR LYD'),
|
|
('440', 'LITHUANIAN LITAS LTL'),
|
|
('446', 'PATACA MOP'),
|
|
('450', 'MALAGASY FRANC MGF'),
|
|
('454', 'MALAWI KWACHA MWK'),
|
|
('458', 'MALASYAN RINGGIT MYR'),
|
|
('462', 'MALDIVE RUPEE MVR'),
|
|
('466', 'MALI MLF'),
|
|
('470', 'MALTESE LIRA MTL'),
|
|
('478', 'OUGUIYA MRO'),
|
|
('480', 'MAURITIUS RUPEE MUR'),
|
|
('484', 'MEXICAN PESO MXP'),
|
|
('496', 'TUGRIK MNT'),
|
|
('498', 'MOLDOVIAN LEU MDL'),
|
|
('504', 'MORROCAN DIRHAM MAD'),
|
|
('508', 'METICAL MZM'),
|
|
('512', 'RIAL OMANI OMR'),
|
|
('516', 'NAMIBIAN DOLLAR NAD'),
|
|
('524', 'NEPALESE RUPEE NPR'),
|
|
('532', 'NETHERLANDS ANTILLIA ANG'),
|
|
('533', 'ARUBA AWG'),
|
|
('536', 'YUGOSLAVIAN NEW DIAN NTZ'),
|
|
('548', 'VANUATU VATU VUV'),
|
|
('554', 'NEW ZEALAND DOLLAR NZD'),
|
|
('556', 'NAIRA 566'),
|
|
('558', 'CORDOBA NIC'),
|
|
('566', 'NAIRA NGN'),
|
|
('578', 'NORWEGIAN KRONE NOK'),
|
|
('582', 'PACIFIC ISLAND PCI'),
|
|
('586', 'PAKISTAN RUPEE PKR'),
|
|
('590', 'BALBOA PAB'),
|
|
('598', 'KINA PGK'),
|
|
('600', 'GUARANI PYG'),
|
|
('604', 'PERU INTI PEI'),
|
|
('608', 'PHILIPPINE PESO PHP'),
|
|
('616', 'ZLOTY PLZ'),
|
|
('624', 'GUINEA'),
|
|
('626', 'TIMOR ESCUDO TPE'),
|
|
('634', 'QATARI RIAL QAR'),
|
|
('642', 'LEU ROL'),
|
|
('643', 'RUSSIAN ROUBLE RUB'),
|
|
('646', 'RWANDA FRANC RWF'),
|
|
('654', 'ST.HELENA POUND SHP'),
|
|
('678', 'DOBRA STD'),
|
|
('682', 'SAUDI RIYAL SAR'),
|
|
('690', 'SEYCHELLES RUPEE SCR'),
|
|
('694', 'LEONE SLL'),
|
|
('702', 'SINGAPORE DOLLAR SGD'),
|
|
('703', 'SLOVAK KORUNA SKK'),
|
|
('704', 'DONG VND'),
|
|
('705', 'SLOVENIAN TOLAR SIT'),
|
|
('706', 'SOMALI SHILLING SOS'),
|
|
('710', 'RAND ZAR'),
|
|
('716', 'ZIMBABWE DOLLAR ZWD'),
|
|
('720', 'YEMENI DINAR YDD'),
|
|
('728', 'SOUTH SUDANESE POUND SSP'),
|
|
('736', 'SUDANESE POUND SDP'),
|
|
('737', 'SUDAN AIRLINES SDA'),
|
|
('740', 'SURINAM GUILDER SRG'),
|
|
('748', 'LILANGENI SZL'),
|
|
('752', 'SWEDISH KRONA SEK'),
|
|
('756', 'SWISS FRANC CHF'),
|
|
('760', 'SYRIAN POUND SYP'),
|
|
('762', 'TAJIK RUBLE TJR'),
|
|
('764', 'BAHT THB'),
|
|
('776', "PA'ANGA TOP"),
|
|
('780', 'TRINIDAD Y TOBAGO DO TTD'),
|
|
('784', 'UAE DIRHAM AED'),
|
|
('788', 'TUNISIAN DINAR TND'),
|
|
('792', 'TURKISH LIRA TRL'),
|
|
('793', 'PSEUDO TURKISH LIRA PTL'),
|
|
('795', 'MANAT TMM'),
|
|
('800', 'UGANDA SHILLING UGS'),
|
|
('804', 'KARBOVANET UAK'),
|
|
('807', 'MACEDONIAN DENAR MKD'),
|
|
('810', 'RUSSIAN ROUBLE RUR'),
|
|
('818', 'EGYPTIAN POUND EGP'),
|
|
('826', 'POUND STERLING GBP'),
|
|
('834', 'TANZANIAN SHILLING TZS'),
|
|
('840', 'DOLAR U.S.A. USD'),
|
|
('858', 'URUGUAYAN PESO UYP'),
|
|
('860', 'UZBEKISTAN SUM UZS'),
|
|
('862', 'BOLIVAR VEB'),
|
|
('882', 'TALA WST'),
|
|
('886', 'YEMINI RIAL YER'),
|
|
('890', 'NEW YUGOSLAVIAN DOLL YUD'),
|
|
('891', 'NEW DINAR YUG'),
|
|
('894', 'KWACHA ZMK'),
|
|
('901', 'NEW TAIWAN DOLLAR TWD'),
|
|
('934', 'NEW MANAT TMT'),
|
|
('936', 'GHANA CEDI GHS'),
|
|
('941', 'DINAR SERBIO RSD'),
|
|
('943', 'MOZAMBIQUE METICAL MZN'),
|
|
('944', 'AZERBAIJANIAN MANAT AZN'),
|
|
('946', 'NEW LEU RON'),
|
|
('949', 'TURKISH LIRA TRY'),
|
|
('950', 'CFA FRANC BEAC XAF'),
|
|
('951', 'EAST CARIBBEAN DOLLA XCD'),
|
|
('952', 'CFA FRANC BCEAO XOF'),
|
|
('953', 'CFP FRANC XPF'),
|
|
('954', 'E.C.U. EUROPEAN CUR XEU'),
|
|
('967', 'KWACHA ZMW'),
|
|
('968', 'SURINAME DOLLAR SRD'),
|
|
('969', 'ARIARY MGA'),
|
|
('971', 'AFGHANISTAN AFGHANI AFN'),
|
|
('972', 'TAJIKISTAN SOMONI TJS'),
|
|
('973', 'KWANZA ANGOLA AOA'),
|
|
('974', 'BELARUSSIAN RUBLE BYR'),
|
|
('975', 'NEW LEV BGN'),
|
|
('976', 'FRANCO DEL CONGO CDF'),
|
|
('977', 'BOSNIAN MARKA BAM'),
|
|
('978', 'EURO EUR'),
|
|
('980', 'HRYVNIA UAH'),
|
|
('981', 'GEORGIAN LARI GEL'),
|
|
('985', 'NEW POLISH ZLOTY PLN'),
|
|
('986', 'BRAZILIAN REAL BRL'),
|
|
('991', 'RAND FINANCIER ZAL'),
|
|
],
|
|
default='978',
|
|
max_length=4,
|
|
verbose_name='Código de moneda',
|
|
),
|
|
),
|
|
('terminal', models.CharField(max_length=8, verbose_name='Terminal')),
|
|
('shared_secret', models.CharField(max_length=100, verbose_name='Clave de Redsys')),
|
|
('tpv_domain', models.URLField(blank=True, max_length=128, null=True, verbose_name='dominio del tpv')),
|
|
],
|
|
options={'verbose_name': 'ajustes de la tienda', 'verbose_name_plural': 'ajustes de la tienda'},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Tag',
|
|
fields=[
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('name', models.CharField(max_length=16)),
|
|
],
|
|
options={'verbose_name': 'etiqueta', 'verbose_name_plural': 'etiquetas', 'ordering': ('name',)},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Tax',
|
|
fields=[
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('creation_date', models.DateTimeField(auto_now_add=True, verbose_name='fecha de creación')),
|
|
(
|
|
'last_modification_date',
|
|
models.DateTimeField(auto_now=True, verbose_name='fecha de última modificación'),
|
|
),
|
|
('code', models.CharField(max_length=8, unique=True, verbose_name='código de impuesto')),
|
|
('value', models.PositiveIntegerField(verbose_name='valor entero (porcentaje)')),
|
|
],
|
|
options={'verbose_name': 'impuesto', 'verbose_name_plural': 'impuestos', 'ordering': ('id',)},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Cart',
|
|
fields=[
|
|
('uuid', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False, verbose_name='uuid')),
|
|
('creation_date', models.DateTimeField(auto_now_add=True, verbose_name='fecha de creación')),
|
|
(
|
|
'user',
|
|
models.ForeignKey(
|
|
blank=True,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
to=settings.AUTH_USER_MODEL,
|
|
verbose_name='usuario',
|
|
),
|
|
),
|
|
],
|
|
options={'verbose_name': 'carrito', 'verbose_name_plural': 'carritos'},
|
|
),
|
|
migrations.CreateModel(
|
|
name='CustomerAddress',
|
|
fields=[
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
(
|
|
'vat_id',
|
|
models.CharField(
|
|
blank=True,
|
|
default='',
|
|
max_length=16,
|
|
null=True,
|
|
verbose_name='número de identificación fiscal',
|
|
),
|
|
),
|
|
('full_name', models.CharField(max_length=128, verbose_name='dirección')),
|
|
('address', models.CharField(max_length=128, verbose_name='dirección')),
|
|
('address_town', models.CharField(max_length=64, verbose_name='localidad')),
|
|
('address_zip', models.CharField(max_length=16, verbose_name='código postal')),
|
|
('address_state', models.CharField(max_length=64, verbose_name='provincia')),
|
|
('address_country', models.CharField(default='ESPAÑA', max_length=64, verbose_name='país')),
|
|
(
|
|
'address_phone',
|
|
models.CharField(blank=True, default='', max_length=16, null=True, verbose_name='teléfono'),
|
|
),
|
|
(
|
|
'address_type',
|
|
models.CharField(
|
|
choices=[('BILL', 'facturación'), ('SHIP', 'envío')],
|
|
default='SHIP',
|
|
max_length=4,
|
|
verbose_name='tipo de dirección',
|
|
),
|
|
),
|
|
('email', models.EmailField(max_length=254, verbose_name='e-mail')),
|
|
('default', models.BooleanField(default=True, verbose_name='por defecto')),
|
|
('hidden', models.BooleanField(db_index=True, default=False, verbose_name='oculto')),
|
|
(
|
|
'user',
|
|
models.ForeignKey(
|
|
null=True,
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
to=settings.AUTH_USER_MODEL,
|
|
verbose_name='usuario',
|
|
),
|
|
),
|
|
],
|
|
options={'verbose_name': 'dirección de cliente', 'verbose_name_plural': 'direcciones de cliente'},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Order',
|
|
fields=[
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('creation_date', models.DateTimeField(auto_now_add=True, verbose_name='fecha de creación')),
|
|
(
|
|
'last_modification_date',
|
|
models.DateTimeField(auto_now=True, verbose_name='fecha de última modificación'),
|
|
),
|
|
('uuid', models.UUIDField(db_index=True, default=uuid.uuid4, verbose_name='UUID')),
|
|
('code', models.CharField(default=shop.models.create_order_code, max_length=20, unique=True)),
|
|
('status', models.CharField(default='PEN', max_length=3, verbose_name='estado')),
|
|
('shipping_status', models.CharField(default='NOT', max_length=3, verbose_name='estado de envío')),
|
|
(
|
|
'base_total',
|
|
models.DecimalField(
|
|
decimal_places=2, default=Decimal('0'), max_digits=13, verbose_name='base imponible'
|
|
),
|
|
),
|
|
(
|
|
'total',
|
|
models.DecimalField(decimal_places=2, default=Decimal('0'), max_digits=13, verbose_name='total'),
|
|
),
|
|
('email', models.EmailField(blank=True, max_length=254, verbose_name='e-mail')),
|
|
('billing_address', models.CharField(max_length=255, verbose_name='dirección de facturación')),
|
|
('billing_city', models.CharField(max_length=64, verbose_name='ciudad de facturación')),
|
|
('billing_state', models.CharField(max_length=64, verbose_name='región de facturación')),
|
|
('billing_country', models.CharField(max_length=64, verbose_name='país de facturación')),
|
|
('billing_zip', models.CharField(max_length=32, verbose_name='código postal de facturación')),
|
|
('shipping_address', models.CharField(max_length=255, verbose_name='dirección')),
|
|
('shipping_city', models.CharField(max_length=64, verbose_name='ciudad')),
|
|
('shipping_state', models.CharField(max_length=64, verbose_name='región')),
|
|
('shipping_country', models.CharField(max_length=64, verbose_name='país')),
|
|
('shipping_zip', models.CharField(max_length=32, verbose_name='código postal')),
|
|
('contact_phone', models.CharField(blank=True, max_length=32, verbose_name='teléfono de contacto')),
|
|
(
|
|
'amount_paid',
|
|
models.DecimalField(
|
|
decimal_places=2, default=Decimal('0.00'), max_digits=11, verbose_name='cantidad pagada'
|
|
),
|
|
),
|
|
(
|
|
'from_cart',
|
|
models.ForeignKey(
|
|
blank=True,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.SET_NULL,
|
|
to='shop.cart',
|
|
verbose_name='carrito de origen de pedido',
|
|
),
|
|
),
|
|
(
|
|
'user',
|
|
models.ForeignKey(
|
|
blank=True,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.PROTECT,
|
|
to=settings.AUTH_USER_MODEL,
|
|
verbose_name='cliente',
|
|
),
|
|
),
|
|
],
|
|
options={'verbose_name': 'pedido', 'verbose_name_plural': 'pedidos', 'ordering': ('creation_date',)},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Payment',
|
|
fields=[
|
|
('hash', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False, verbose_name='Hash')),
|
|
(
|
|
'amount',
|
|
models.DecimalField(decimal_places=2, default=Decimal('0'), max_digits=8, verbose_name='Cantidad'),
|
|
),
|
|
('creation_date', models.DateTimeField(auto_now_add=True, verbose_name='Fecha de creación')),
|
|
('metadata', models.JSONField(default=dict, verbose_name='Metadata')),
|
|
(
|
|
'method',
|
|
models.CharField(
|
|
choices=[('REDSYS', 'Redsys')], default='REDSYS', max_length=6, verbose_name='método de pago'
|
|
),
|
|
),
|
|
(
|
|
'order',
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.PROTECT,
|
|
related_name='payments',
|
|
to='shop.order',
|
|
verbose_name='pedido',
|
|
),
|
|
),
|
|
(
|
|
'user',
|
|
models.ForeignKey(
|
|
blank=True,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.PROTECT,
|
|
to=settings.AUTH_USER_MODEL,
|
|
verbose_name='cliente',
|
|
),
|
|
),
|
|
],
|
|
options={'verbose_name': 'Pago', 'verbose_name_plural': 'Pagos'},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Product',
|
|
fields=[
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('creation_date', models.DateTimeField(auto_now_add=True, verbose_name='fecha de creación')),
|
|
(
|
|
'last_modification_date',
|
|
models.DateTimeField(auto_now=True, verbose_name='fecha de última modificación'),
|
|
),
|
|
('sku', models.CharField(max_length=64, unique=True, verbose_name='código de referencia')),
|
|
('name', models.CharField(max_length=96, verbose_name='nombre')),
|
|
('description', models.TextField(blank=True, default='', verbose_name='descripción')),
|
|
(
|
|
'stock',
|
|
models.DecimalField(decimal_places=4, default=Decimal('0'), max_digits=13, verbose_name='stock'),
|
|
),
|
|
('is_digital_asset', models.BooleanField(default=False, verbose_name='es un activo digital')),
|
|
('url', models.URLField(blank=True, verbose_name='URL de descarga')),
|
|
('slug', models.SlugField(blank=True, default='', max_length=128, null=True, verbose_name='Slug')),
|
|
('hidden', models.BooleanField(db_index=True, default=False, verbose_name='oculto')),
|
|
('is_shipping_method', models.BooleanField(default=False, verbose_name='es forma de envío')),
|
|
(
|
|
'brand',
|
|
models.ForeignKey(
|
|
blank=True,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.SET_NULL,
|
|
to='shop.brand',
|
|
verbose_name='marca',
|
|
),
|
|
),
|
|
],
|
|
options={'verbose_name': 'producto', 'verbose_name_plural': 'productos', 'ordering': ('id',)},
|
|
),
|
|
migrations.CreateModel(
|
|
name='OrderLine',
|
|
fields=[
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('creation_date', models.DateTimeField(auto_now_add=True, verbose_name='fecha de creación')),
|
|
(
|
|
'last_modification_date',
|
|
models.DateTimeField(auto_now=True, verbose_name='fecha de última modificación'),
|
|
),
|
|
(
|
|
'quantity',
|
|
models.DecimalField(
|
|
decimal_places=4, default=Decimal('1'), max_digits=13, verbose_name='cantidad'
|
|
),
|
|
),
|
|
('price', models.DecimalField(decimal_places=4, max_digits=13, verbose_name='precio')),
|
|
(
|
|
'base_total',
|
|
models.DecimalField(
|
|
decimal_places=4, default=Decimal('0'), max_digits=13, verbose_name='total sin impuestos'
|
|
),
|
|
),
|
|
('tax_value', models.PositiveIntegerField(verbose_name='valor de impuestos')),
|
|
('taxes', models.DecimalField(decimal_places=4, max_digits=13, verbose_name='impuestos')),
|
|
('total', models.DecimalField(decimal_places=4, max_digits=13, verbose_name='total')),
|
|
(
|
|
'order',
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name='lines',
|
|
to='shop.order',
|
|
verbose_name='pedido',
|
|
),
|
|
),
|
|
(
|
|
'product',
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE, to='shop.product', verbose_name='producto'
|
|
),
|
|
),
|
|
],
|
|
options={'verbose_name': 'línea de pedido', 'verbose_name_plural': 'líneas de pedido'},
|
|
),
|
|
migrations.CreateModel(
|
|
name='CartItem',
|
|
fields=[
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('quantity', models.PositiveIntegerField(default=1, verbose_name='cantidad')),
|
|
(
|
|
'cart',
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name='items',
|
|
to='shop.cart',
|
|
verbose_name='carrito',
|
|
),
|
|
),
|
|
(
|
|
'product',
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE, to='shop.product', verbose_name='producto'
|
|
),
|
|
),
|
|
],
|
|
options={'verbose_name': 'línea de carrito', 'verbose_name_plural': 'líneas de carrito'},
|
|
),
|
|
migrations.CreateModel(
|
|
name='ProductCategory',
|
|
fields=[
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('name', models.CharField(max_length=32)),
|
|
('promoted', models.BooleanField(default=False, verbose_name='promocionada')),
|
|
('hidden', models.BooleanField(default=False, verbose_name='oculta')),
|
|
('show_in_navbar', models.BooleanField(default=False, verbose_name='mostrar en cabecera')),
|
|
('slug', models.SlugField(blank=True, default='', max_length=48, unique=True, verbose_name='slug')),
|
|
(
|
|
'parent',
|
|
models.ForeignKey(
|
|
blank=True,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.SET_NULL,
|
|
to='shop.productcategory',
|
|
verbose_name='categoría padre',
|
|
),
|
|
),
|
|
],
|
|
options={'verbose_name': 'categoría', 'verbose_name_plural': 'categorías', 'ordering': ('name',)},
|
|
),
|
|
migrations.AddField(
|
|
model_name='product',
|
|
name='categories',
|
|
field=models.ManyToManyField(blank=True, to='shop.productcategory', verbose_name='categorías'),
|
|
),
|
|
migrations.CreateModel(
|
|
name='ProductImage',
|
|
fields=[
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('original', models.ImageField(upload_to='uploads', verbose_name='Imagen original')),
|
|
('xl', models.ImageField(blank=True, null=True, upload_to='uploads', verbose_name='XL')),
|
|
(
|
|
'xl_dark',
|
|
models.ImageField(blank=True, null=True, upload_to='uploads', verbose_name='XL (fondo oscuro)'),
|
|
),
|
|
('l', models.ImageField(blank=True, null=True, upload_to='uploads', verbose_name='L')),
|
|
(
|
|
'l_dark',
|
|
models.ImageField(blank=True, null=True, upload_to='uploads', verbose_name='L (fondo oscuro)'),
|
|
),
|
|
('m', models.ImageField(blank=True, null=True, upload_to='uploads', verbose_name='M')),
|
|
(
|
|
'm_dark',
|
|
models.ImageField(blank=True, null=True, upload_to='uploads', verbose_name='M (fondo oscuro)'),
|
|
),
|
|
('s', models.ImageField(blank=True, null=True, upload_to='uploads', verbose_name='S')),
|
|
(
|
|
's_dark',
|
|
models.ImageField(blank=True, null=True, upload_to='uploads', verbose_name='S (fondo oscuro)'),
|
|
),
|
|
('xs', models.ImageField(blank=True, null=True, upload_to='uploads', verbose_name='XS')),
|
|
(
|
|
'xs_dark',
|
|
models.ImageField(blank=True, null=True, upload_to='uploads', verbose_name='XS (fondo oscuro)'),
|
|
),
|
|
(
|
|
'product',
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name='images',
|
|
to='shop.product',
|
|
verbose_name='Producto',
|
|
),
|
|
),
|
|
],
|
|
),
|
|
migrations.CreateModel(
|
|
name='ProductBatch',
|
|
fields=[
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('creation_date', models.DateTimeField(auto_now_add=True, verbose_name='fecha de creación')),
|
|
(
|
|
'last_modification_date',
|
|
models.DateTimeField(auto_now=True, verbose_name='fecha de última modificación'),
|
|
),
|
|
('code', models.CharField(db_index=True, max_length=32, unique=True, verbose_name='código')),
|
|
(
|
|
'quantity',
|
|
models.DecimalField(
|
|
decimal_places=4, default=Decimal('1'), max_digits=13, verbose_name='cantidad'
|
|
),
|
|
),
|
|
(
|
|
'expiration_date',
|
|
models.DateField(blank=True, null=True, verbose_name='fecha de caducidad / consumo preferente'),
|
|
),
|
|
(
|
|
'product',
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.PROTECT, to='shop.product', verbose_name='producto'
|
|
),
|
|
),
|
|
(
|
|
'provider',
|
|
models.ForeignKey(
|
|
blank=True,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.SET_NULL,
|
|
to='shop.provider',
|
|
verbose_name='proveedor',
|
|
),
|
|
),
|
|
],
|
|
options={'verbose_name': 'remesa de producto', 'verbose_name_plural': 'remesas de productos'},
|
|
),
|
|
migrations.CreateModel(
|
|
name='ShippingMethod',
|
|
fields=[
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('name', models.CharField(max_length=64, verbose_name='nombre')),
|
|
('description', models.CharField(blank=True, default='', max_length=256, verbose_name='description')),
|
|
('url', models.URLField(blank=True, default='', verbose_name='url')),
|
|
('enabled', models.BooleanField(default=True, verbose_name='habilitado')),
|
|
(
|
|
'shipping_product',
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
to='shop.product',
|
|
verbose_name='producto de envío',
|
|
),
|
|
),
|
|
],
|
|
options={'verbose_name': 'método de envío', 'verbose_name_plural': 'métodos de envío'},
|
|
),
|
|
migrations.AddField(
|
|
model_name='order',
|
|
name='shipping_method',
|
|
field=models.ForeignKey(
|
|
blank=True,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.SET_NULL,
|
|
to='shop.shippingmethod',
|
|
verbose_name='método de envío',
|
|
),
|
|
),
|
|
migrations.AddField(
|
|
model_name='product',
|
|
name='tags',
|
|
field=models.ManyToManyField(blank=True, to='shop.tag', verbose_name='etiquetas'),
|
|
),
|
|
migrations.CreateModel(
|
|
name='ProductPrice',
|
|
fields=[
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('creation_date', models.DateTimeField(auto_now_add=True, verbose_name='fecha de creación')),
|
|
(
|
|
'last_modification_date',
|
|
models.DateTimeField(auto_now=True, verbose_name='fecha de última modificación'),
|
|
),
|
|
('price', models.DecimalField(decimal_places=2, max_digits=11, verbose_name='precio')),
|
|
('date', models.DateTimeField(default=django.utils.timezone.now, verbose_name='fecha')),
|
|
(
|
|
'price_with_tax',
|
|
models.DecimalField(
|
|
blank=True, decimal_places=2, max_digits=11, null=True, verbose_name='precio con impuestos'
|
|
),
|
|
),
|
|
('current', models.BooleanField(default=False, verbose_name='es el precio actual')),
|
|
(
|
|
'product',
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name='prices',
|
|
to='shop.product',
|
|
verbose_name='producto',
|
|
),
|
|
),
|
|
(
|
|
'tax',
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.PROTECT, to='shop.tax', verbose_name='impuesto aplicable'
|
|
),
|
|
),
|
|
],
|
|
options={
|
|
'verbose_name': 'precio de producto',
|
|
'verbose_name_plural': 'precio de producto',
|
|
'ordering': ('-date',),
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='WishlistedProduct',
|
|
fields=[
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('creation_date', models.DateTimeField(auto_now_add=True, verbose_name='fecha de creación')),
|
|
(
|
|
'last_modification_date',
|
|
models.DateTimeField(auto_now=True, verbose_name='fecha de última modificación'),
|
|
),
|
|
(
|
|
'product',
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE, to='shop.product', verbose_name='producto'
|
|
),
|
|
),
|
|
(
|
|
'user',
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
to=settings.AUTH_USER_MODEL,
|
|
verbose_name='usuario',
|
|
),
|
|
),
|
|
],
|
|
options={
|
|
'verbose_name': 'productos deseados',
|
|
'verbose_name_plural': 'productos deseados',
|
|
'unique_together': {('user', 'product')},
|
|
},
|
|
),
|
|
]
|