Skip to content

Commit

Permalink
Add database migrations
Browse files Browse the repository at this point in the history
  • Loading branch information
Alir3z4 committed Jun 12, 2018
1 parent 0545cb5 commit aeec7bf
Show file tree
Hide file tree
Showing 2 changed files with 235 additions and 0 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@ django-plans changelog
0.8 (UNRELEASED)
-----------------
* Supporting Django 2.0.2.
* Supporting Django 2.0.6.
* Tests for latest versions of Python (3.6).
* New VAT standard rates 2017
* Remove dependency on `django.contrib.sites`.
* Feature #53: Cleaner and more explicit exception handling on `Plan.get_default_plan `.
* Feature #59: Adding code coverage to code base.
* Support customised user models by using `django.contrib.auth.get_user_model()`.
* Add Database migrations.


0.7
Expand Down
233 changes: 233 additions & 0 deletions plans/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,233 @@
# Generated by Django 2.0.6 on 2018-06-12 12:30

from decimal import Decimal
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import django_countries.fields


class Migration(migrations.Migration):

initial = True

dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]

operations = [
migrations.CreateModel(
name='BillingInfo',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('tax_number', models.CharField(blank=True, db_index=True, max_length=200, verbose_name='VAT ID')),
('name', models.CharField(db_index=True, max_length=200, verbose_name='name')),
('street', models.CharField(max_length=200, verbose_name='street')),
('zipcode', models.CharField(max_length=200, verbose_name='zip code')),
('city', models.CharField(max_length=200, verbose_name='city')),
('country', django_countries.fields.CountryField(max_length=2, verbose_name='country')),
('shipping_name', models.CharField(blank=True, help_text='optional', max_length=200, verbose_name='name (shipping)')),
('shipping_street', models.CharField(blank=True, help_text='optional', max_length=200, verbose_name='street (shipping)')),
('shipping_zipcode', models.CharField(blank=True, help_text='optional', max_length=200, verbose_name='zip code (shipping)')),
('shipping_city', models.CharField(blank=True, help_text='optional', max_length=200, verbose_name='city (shipping)')),
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='user')),
],
options={
'verbose_name': 'Billing info',
'verbose_name_plural': 'Billing infos',
},
),
migrations.CreateModel(
name='Invoice',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('number', models.IntegerField(db_index=True)),
('full_number', models.CharField(max_length=200)),
('type', models.IntegerField(choices=[(1, 'Invoice'), (2, 'Invoice Duplicate'), (3, 'Order confirmation')], db_index=True, default=1)),
('issued', models.DateField(db_index=True)),
('issued_duplicate', models.DateField(blank=True, db_index=True, null=True)),
('selling_date', models.DateField(blank=True, db_index=True, null=True)),
('payment_date', models.DateField(db_index=True)),
('unit_price_net', models.DecimalField(decimal_places=2, max_digits=7)),
('quantity', models.IntegerField(default=1)),
('total_net', models.DecimalField(decimal_places=2, max_digits=7)),
('total', models.DecimalField(decimal_places=2, max_digits=7)),
('tax_total', models.DecimalField(decimal_places=2, max_digits=7)),
('tax', models.DecimalField(blank=True, db_index=True, decimal_places=2, max_digits=4, null=True)),
('rebate', models.DecimalField(decimal_places=2, default=Decimal('0'), max_digits=4)),
('currency', models.CharField(default='EUR', max_length=3)),
('item_description', models.CharField(max_length=200)),
('buyer_name', models.CharField(max_length=200, verbose_name='Name')),
('buyer_street', models.CharField(max_length=200, verbose_name='Street')),
('buyer_zipcode', models.CharField(max_length=200, verbose_name='Zip code')),
('buyer_city', models.CharField(max_length=200, verbose_name='City')),
('buyer_country', django_countries.fields.CountryField(default='PL', max_length=2, verbose_name='Country')),
('buyer_tax_number', models.CharField(blank=True, max_length=200, verbose_name='TAX/VAT number')),
('shipping_name', models.CharField(max_length=200, verbose_name='Name')),
('shipping_street', models.CharField(max_length=200, verbose_name='Street')),
('shipping_zipcode', models.CharField(max_length=200, verbose_name='Zip code')),
('shipping_city', models.CharField(max_length=200, verbose_name='City')),
('shipping_country', django_countries.fields.CountryField(default='PL', max_length=2, verbose_name='Country')),
('require_shipment', models.BooleanField(db_index=True, default=False)),
('issuer_name', models.CharField(max_length=200, verbose_name='Name')),
('issuer_street', models.CharField(max_length=200, verbose_name='Street')),
('issuer_zipcode', models.CharField(max_length=200, verbose_name='Zip code')),
('issuer_city', models.CharField(max_length=200, verbose_name='City')),
('issuer_country', django_countries.fields.CountryField(default='PL', max_length=2, verbose_name='Country')),
('issuer_tax_number', models.CharField(blank=True, max_length=200, verbose_name='TAX/VAT number')),
],
options={
'verbose_name': 'Invoice',
'verbose_name_plural': 'Invoices',
},
),
migrations.CreateModel(
name='Order',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('flat_name', models.CharField(blank=True, max_length=200, null=True)),
('created', models.DateTimeField(db_index=True, verbose_name='created')),
('completed', models.DateTimeField(blank=True, db_index=True, null=True, verbose_name='completed')),
('amount', models.DecimalField(db_index=True, decimal_places=2, max_digits=7, verbose_name='amount')),
('tax', models.DecimalField(blank=True, db_index=True, decimal_places=2, max_digits=4, null=True, verbose_name='tax')),
('currency', models.CharField(default='EUR', max_length=3, verbose_name='currency')),
('status', models.IntegerField(choices=[(1, 'new'), (2, 'completed'), (3, 'not valid'), (4, 'canceled'), (5, 'returned')], default=1, verbose_name='status')),
],
options={
'verbose_name': 'Order',
'verbose_name_plural': 'Orders',
'ordering': ('-created',),
},
),
migrations.CreateModel(
name='Plan',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('order', models.PositiveIntegerField(db_index=True, editable=False)),
('name', models.CharField(max_length=100, verbose_name='name')),
('description', models.TextField(blank=True, verbose_name='description')),
('default', models.BooleanField(db_index=True, default=False)),
('available', models.BooleanField(db_index=True, default=False, help_text='Is still available for purchase', verbose_name='available')),
('visible', models.BooleanField(db_index=True, default=True, help_text='Is visible in current offer', verbose_name='visible')),
('created', models.DateTimeField(db_index=True, verbose_name='created')),
('url', models.URLField(blank=True, help_text='Optional link to page with more information (for clickable pricing table headers)')),
('customized', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='customized')),
],
options={
'verbose_name': 'Plan',
'verbose_name_plural': 'Plans',
'ordering': ('order',),
},
),
migrations.CreateModel(
name='PlanPricing',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('price', models.DecimalField(db_index=True, decimal_places=2, max_digits=7)),
('plan', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='plans.Plan')),
],
options={
'verbose_name': 'Plan pricing',
'verbose_name_plural': 'Plans pricings',
'ordering': ('pricing__period',),
},
),
migrations.CreateModel(
name='PlanQuota',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('value', models.IntegerField(blank=True, default=1, null=True)),
('plan', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='plans.Plan')),
],
options={
'verbose_name': 'Plan quota',
'verbose_name_plural': 'Plans quotas',
},
),
migrations.CreateModel(
name='Pricing',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100, verbose_name='name')),
('period', models.PositiveIntegerField(blank=True, db_index=True, default=30, null=True, verbose_name='period')),
('url', models.URLField(blank=True, help_text='Optional link to page with more information (for clickable pricing table headers)')),
],
options={
'verbose_name': 'Pricing',
'verbose_name_plural': 'Pricings',
'ordering': ('period',),
},
),
migrations.CreateModel(
name='Quota',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('order', models.PositiveIntegerField(db_index=True, editable=False)),
('codename', models.CharField(db_index=True, max_length=50, unique=True, verbose_name='codename')),
('name', models.CharField(max_length=100, verbose_name='name')),
('unit', models.CharField(blank=True, max_length=100, verbose_name='unit')),
('description', models.TextField(blank=True, verbose_name='description')),
('is_boolean', models.BooleanField(default=False, verbose_name='is boolean')),
('url', models.CharField(blank=True, help_text='Optional link to page with more information (for clickable pricing table headers)', max_length=200)),
],
options={
'verbose_name': 'Quota',
'verbose_name_plural': 'Quotas',
'ordering': ('order',),
},
),
migrations.CreateModel(
name='UserPlan',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('expire', models.DateField(blank=True, db_index=True, default=None, null=True, verbose_name='expire')),
('active', models.BooleanField(db_index=True, default=True, verbose_name='active')),
('plan', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='plans.Plan', verbose_name='plan')),
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='user')),
],
options={
'verbose_name': 'User plan',
'verbose_name_plural': 'Users plans',
},
),
migrations.AddField(
model_name='planquota',
name='quota',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='plans.Quota'),
),
migrations.AddField(
model_name='planpricing',
name='pricing',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='plans.Pricing'),
),
migrations.AddField(
model_name='plan',
name='quotas',
field=models.ManyToManyField(through='plans.PlanQuota', to='plans.Quota'),
),
migrations.AddField(
model_name='order',
name='plan',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='plan_order', to='plans.Plan', verbose_name='plan'),
),
migrations.AddField(
model_name='order',
name='pricing',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='plans.Pricing', verbose_name='pricing'),
),
migrations.AddField(
model_name='order',
name='user',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='user'),
),
migrations.AddField(
model_name='invoice',
name='order',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='plans.Order', verbose_name='order'),
),
migrations.AddField(
model_name='invoice',
name='user',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='user'),
),
]

0 comments on commit aeec7bf

Please sign in to comment.