From 39db0939aadbafb34aaa259d670a4fc8429bbff2 Mon Sep 17 00:00:00 2001 From: Adam Dobrawy Date: Sat, 9 Apr 2016 01:49:58 +0200 Subject: [PATCH] Added database model --- config/settings/common.py | 5 ++ requirements/base.txt | 3 + .../migrations/0003_auto_20160408_2342.py | 21 +++++++ taravel/guests/__init__.py | 0 taravel/guests/admin.py | 3 + taravel/guests/apps.py | 7 +++ taravel/guests/migrations/0001_initial.py | 38 ++++++++++++ taravel/guests/migrations/__init__.py | 0 taravel/guests/models.py | 35 +++++++++++ taravel/guests/tests.py | 3 + taravel/guests/views.py | 3 + taravel/locations/__init__.py | 0 taravel/locations/admin.py | 3 + taravel/locations/apps.py | 7 +++ taravel/locations/migrations/0001_initial.py | 44 +++++++++++++ taravel/locations/migrations/__init__.py | 0 taravel/locations/models.py | 51 ++++++++++++++++ taravel/locations/tests.py | 3 + taravel/locations/views.py | 3 + taravel/orders/__init__.py | 0 taravel/orders/admin.py | 3 + taravel/orders/apps.py | 7 +++ taravel/orders/migrations/0001_initial.py | 34 +++++++++++ taravel/orders/migrations/__init__.py | 0 taravel/orders/models.py | 30 +++++++++ taravel/orders/tests.py | 3 + taravel/orders/views.py | 3 + taravel/trips/__init__.py | 0 taravel/trips/admin.py | 3 + taravel/trips/apps.py | 7 +++ taravel/trips/migrations/0001_initial.py | 61 +++++++++++++++++++ taravel/trips/migrations/__init__.py | 0 taravel/trips/models.py | 52 ++++++++++++++++ taravel/trips/tests.py | 3 + taravel/trips/views.py | 3 + .../migrations/0002_auto_20160408_2342.py | 42 +++++++++++++ taravel/users/models.py | 24 +++++++- 37 files changed, 503 insertions(+), 1 deletion(-) create mode 100644 taravel/contrib/sites/migrations/0003_auto_20160408_2342.py create mode 100644 taravel/guests/__init__.py create mode 100644 taravel/guests/admin.py create mode 100644 taravel/guests/apps.py create mode 100644 taravel/guests/migrations/0001_initial.py create mode 100644 taravel/guests/migrations/__init__.py create mode 100644 taravel/guests/models.py create mode 100644 taravel/guests/tests.py create mode 100644 taravel/guests/views.py create mode 100644 taravel/locations/__init__.py create mode 100644 taravel/locations/admin.py create mode 100644 taravel/locations/apps.py create mode 100644 taravel/locations/migrations/0001_initial.py create mode 100644 taravel/locations/migrations/__init__.py create mode 100644 taravel/locations/models.py create mode 100644 taravel/locations/tests.py create mode 100644 taravel/locations/views.py create mode 100644 taravel/orders/__init__.py create mode 100644 taravel/orders/admin.py create mode 100644 taravel/orders/apps.py create mode 100644 taravel/orders/migrations/0001_initial.py create mode 100644 taravel/orders/migrations/__init__.py create mode 100644 taravel/orders/models.py create mode 100644 taravel/orders/tests.py create mode 100644 taravel/orders/views.py create mode 100644 taravel/trips/__init__.py create mode 100644 taravel/trips/admin.py create mode 100644 taravel/trips/apps.py create mode 100644 taravel/trips/migrations/0001_initial.py create mode 100644 taravel/trips/migrations/__init__.py create mode 100644 taravel/trips/models.py create mode 100644 taravel/trips/tests.py create mode 100644 taravel/trips/views.py create mode 100644 taravel/users/migrations/0002_auto_20160408_2342.py diff --git a/config/settings/common.py b/config/settings/common.py index e174b44..66d27b3 100644 --- a/config/settings/common.py +++ b/config/settings/common.py @@ -45,6 +45,10 @@ # Apps specific for this project go here. LOCAL_APPS = ( 'taravel.users', # custom users app + 'taravel.trips', + 'taravel.guests', + 'taravel.orders', + 'taravel.locations', # Your stuff: custom apps go here ) @@ -231,3 +235,4 @@ ADMIN_URL = r'^admin/' # Your common stuff: Below this line define 3rd party library settings +CHILD_DISCOUNT = 5 diff --git a/requirements/base.txt b/requirements/base.txt index 9794296..f53eb2e 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -47,3 +47,6 @@ redis>=2.10.0 # Your custom requirements go here +django-bleach==0.3.0 +django-versatileimagefield==1.3 + diff --git a/taravel/contrib/sites/migrations/0003_auto_20160408_2342.py b/taravel/contrib/sites/migrations/0003_auto_20160408_2342.py new file mode 100644 index 0000000..a492fd5 --- /dev/null +++ b/taravel/contrib/sites/migrations/0003_auto_20160408_2342.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-08 23:42 +from __future__ import unicode_literals + +import django.contrib.sites.models +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sites', '0002_set_site_domain_and_name'), + ] + + operations = [ + migrations.AlterField( + model_name='site', + name='domain', + field=models.CharField(max_length=100, unique=True, validators=[django.contrib.sites.models._simple_domain_name_validator], verbose_name='domain name'), + ), + ] diff --git a/taravel/guests/__init__.py b/taravel/guests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/taravel/guests/admin.py b/taravel/guests/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/taravel/guests/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/taravel/guests/apps.py b/taravel/guests/apps.py new file mode 100644 index 0000000..0e5f42e --- /dev/null +++ b/taravel/guests/apps.py @@ -0,0 +1,7 @@ +from __future__ import unicode_literals + +from django.apps import AppConfig + + +class GuestsConfig(AppConfig): + name = 'guests' diff --git a/taravel/guests/migrations/0001_initial.py b/taravel/guests/migrations/0001_initial.py new file mode 100644 index 0000000..e677953 --- /dev/null +++ b/taravel/guests/migrations/0001_initial.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-08 23:49 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion +import django.utils.timezone +import model_utils.fields + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('orders', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='Quest', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('created', model_utils.fields.AutoCreatedField(default=django.utils.timezone.now, editable=False, verbose_name='created')), + ('modified', model_utils.fields.AutoLastModifiedField(default=django.utils.timezone.now, editable=False, verbose_name='modified')), + ('first_name', models.CharField(max_length=50, verbose_name='First name')), + ('second_name', models.CharField(max_length=50, verbose_name='Second name')), + ('government_id', models.IntegerField(verbose_name='Government ID')), + ('child', models.BooleanField(help_text='Is a child?', verbose_name='Child')), + ('value', models.IntegerField(verbose_name='Value')), + ('order', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='orders.Order', verbose_name='Order')), + ], + options={ + 'verbose_name': 'Quest', + 'verbose_name_plural': 'Quests', + }, + ), + ] diff --git a/taravel/guests/migrations/__init__.py b/taravel/guests/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/taravel/guests/models.py b/taravel/guests/models.py new file mode 100644 index 0000000..b525449 --- /dev/null +++ b/taravel/guests/models.py @@ -0,0 +1,35 @@ +from __future__ import unicode_literals + +from django.core.urlresolvers import reverse +from django.db import models +from django.utils.encoding import python_2_unicode_compatible +from django.utils.translation import ugettext_lazy as _ +from model_utils.models import TimeStampedModel + +from taravel.orders.models import Order + + +class QuestQuerySet(models.QuerySet): + pass + + +@python_2_unicode_compatible +class Quest(TimeStampedModel): + order = models.ForeignKey(to=Order, verbose_name=_("Order")) + first_name = models.CharField(verbose_name=_("First name"), max_length=50) + second_name = models.CharField(verbose_name=_("Second name"), max_length=50) + government_id = models.IntegerField(verbose_name=_("Government ID")) + child = models.BooleanField(verbose_name=_("Child"), help_text=_("Is a child?")) + value = models.IntegerField(verbose_name=_("Value")) # TODO: Custom model field + objects = QuestQuerySet.as_manager() + + class Meta: + verbose_name = _("Quest") + verbose_name_plural = _("Quests") + + def __str__(self): + return "{first_name} {second_name}".format(first_name=self.first_name, + second_name=self.second_name) + + def get_absolute_url(self): + return reverse('guests:details', kwargs={'pk': self.pk}) diff --git a/taravel/guests/tests.py b/taravel/guests/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/taravel/guests/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/taravel/guests/views.py b/taravel/guests/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/taravel/guests/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/taravel/locations/__init__.py b/taravel/locations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/taravel/locations/admin.py b/taravel/locations/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/taravel/locations/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/taravel/locations/apps.py b/taravel/locations/apps.py new file mode 100644 index 0000000..211e732 --- /dev/null +++ b/taravel/locations/apps.py @@ -0,0 +1,7 @@ +from __future__ import unicode_literals + +from django.apps import AppConfig + + +class LocationsConfig(AppConfig): + name = 'locations' diff --git a/taravel/locations/migrations/0001_initial.py b/taravel/locations/migrations/0001_initial.py new file mode 100644 index 0000000..5c5eefc --- /dev/null +++ b/taravel/locations/migrations/0001_initial.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-08 23:49 +from __future__ import unicode_literals + +import autoslug.fields +import django.contrib.gis.db.models.fields +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Country', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('continent', models.IntegerField(choices=[(0, 'Asia'), (1, 'Africa'), (2, 'North America'), (3, 'South America'), (4, 'Antarctica'), (5, 'Europe'), (6, 'Australia')], default=5)), + ('name', models.CharField(blank=True, max_length=255, verbose_name='Name of User')), + ('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True, verbose_name='Slug')), + ], + options={ + 'verbose_name': 'Country', + 'verbose_name_plural': 'Countries', + }, + ), + migrations.CreateModel( + name='Location', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=50, verbose_name='Name')), + ('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True, verbose_name='Slug')), + ('position', django.contrib.gis.db.models.fields.PointField(srid=4326, verbose_name='Position')), + ], + options={ + 'verbose_name': 'Location', + 'verbose_name_plural': 'Locations', + }, + ), + ] diff --git a/taravel/locations/migrations/__init__.py b/taravel/locations/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/taravel/locations/models.py b/taravel/locations/models.py new file mode 100644 index 0000000..9cf3331 --- /dev/null +++ b/taravel/locations/models.py @@ -0,0 +1,51 @@ +from __future__ import unicode_literals + +from autoslug.fields import AutoSlugField +from django.core.urlresolvers import reverse +from django.contrib.gis.db import models +from django.utils.encoding import python_2_unicode_compatible +from django.utils.translation import ugettext_lazy as _ +from model_utils import Choices + + +@python_2_unicode_compatible +class Country(models.Model): + CONTINENT = Choices((0, 'asia', 'Asia'), + (1, 'africa', 'Africa'), + (2, 'north_america', 'North America'), + (3, 'south_america', 'South America'), + (4, 'antarctica', 'Antarctica'), + (5, 'europe', 'Europe'), + (6, 'australia', 'Australia')) + continent = models.IntegerField(choices=CONTINENT, default=CONTINENT.europe) + name = models.CharField(_("Name of User"), blank=True, max_length=255) + slug = AutoSlugField(populate_from='name', verbose_name=_("Slug"), unique=True) + + class Meta: + verbose_name = _("Country") + verbose_name_plural = _("Countries") + + def __str__(self): + return self.name + + +class LocationQuerySet(models.query.GeoQuerySet): + pass + + +@python_2_unicode_compatible +class Location(models.Model): + name = models.CharField(verbose_name=_("Name"), max_length=50) + slug = AutoSlugField(populate_from='name', verbose_name=_("Slug"), unique=True) + position = models.PointField(verbose_name=_("Position")) + objects = LocationQuerySet.as_manager() + + class Meta: + verbose_name = _("Location") + verbose_name_plural = _("Locations") + + def __str__(self): + return self.name + + def get_absolute_url(self): + return reverse('locations:details', kwargs={'slug': self.slug}) diff --git a/taravel/locations/tests.py b/taravel/locations/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/taravel/locations/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/taravel/locations/views.py b/taravel/locations/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/taravel/locations/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/taravel/orders/__init__.py b/taravel/orders/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/taravel/orders/admin.py b/taravel/orders/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/taravel/orders/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/taravel/orders/apps.py b/taravel/orders/apps.py new file mode 100644 index 0000000..f9fdc0c --- /dev/null +++ b/taravel/orders/apps.py @@ -0,0 +1,7 @@ +from __future__ import unicode_literals + +from django.apps import AppConfig + + +class OrdersConfig(AppConfig): + name = 'orders' diff --git a/taravel/orders/migrations/0001_initial.py b/taravel/orders/migrations/0001_initial.py new file mode 100644 index 0000000..59cb917 --- /dev/null +++ b/taravel/orders/migrations/0001_initial.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-08 23:49 +from __future__ import unicode_literals + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('trips', '0001_initial'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='Order', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('created', models.DateTimeField(auto_now_add=True, verbose_name='Creation date')), + ('paid', models.DateField(blank=True, null=True, verbose_name='Date of payment')), + ('trip', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='trips.Trip', verbose_name='Trip')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='User')), + ], + options={ + 'verbose_name': 'Order', + 'verbose_name_plural': 'Orders', + }, + ), + ] diff --git a/taravel/orders/migrations/__init__.py b/taravel/orders/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/taravel/orders/models.py b/taravel/orders/models.py new file mode 100644 index 0000000..cebab84 --- /dev/null +++ b/taravel/orders/models.py @@ -0,0 +1,30 @@ +from django.db import models +from django.utils.translation import ugettext_lazy as _ +from django.core.urlresolvers import reverse +from django.conf import settings +from django.utils.encoding import python_2_unicode_compatible + +from taravel.trips.models import Trip + + +class OrderQuerySet(models.QuerySet): + pass + + +@python_2_unicode_compatible +class Order(models.Model): + user = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name=_("User")) + trip = models.ForeignKey(to=Trip, verbose_name=_("Trip")) + created = models.DateTimeField(verbose_name=_("Creation date"), auto_now_add=True) + paid = models.DateField(verbose_name=_("Date of payment"), blank=True, null=True) + objects = OrderQuerySet.as_manager() + + class Meta: + verbose_name = _("Order") + verbose_name_plural = _("Orders") + + def __str__(self): + return self.pk + + def get_absolute_url(self): + return reverse('orders:details', kwargs={'slug': self.slug}) diff --git a/taravel/orders/tests.py b/taravel/orders/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/taravel/orders/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/taravel/orders/views.py b/taravel/orders/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/taravel/orders/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/taravel/trips/__init__.py b/taravel/trips/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/taravel/trips/admin.py b/taravel/trips/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/taravel/trips/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/taravel/trips/apps.py b/taravel/trips/apps.py new file mode 100644 index 0000000..ac02770 --- /dev/null +++ b/taravel/trips/apps.py @@ -0,0 +1,7 @@ +from __future__ import unicode_literals + +from django.apps import AppConfig + + +class TripsConfig(AppConfig): + name = 'trips' diff --git a/taravel/trips/migrations/0001_initial.py b/taravel/trips/migrations/0001_initial.py new file mode 100644 index 0000000..817a1d9 --- /dev/null +++ b/taravel/trips/migrations/0001_initial.py @@ -0,0 +1,61 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-08 23:49 +from __future__ import unicode_literals + +import autoslug.fields +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import django.utils.timezone +import django_bleach.models +import model_utils.fields +import versatileimagefield.fields + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('locations', '0001_initial'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='Image', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('file', versatileimagefield.fields.VersatileImageField(upload_to=b'images/', verbose_name='Image')), + ], + options={ + 'verbose_name': 'Image', + 'verbose_name_plural': 'Images', + }, + ), + migrations.CreateModel( + name='Trip', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('created', model_utils.fields.AutoCreatedField(default=django.utils.timezone.now, editable=False, verbose_name='created')), + ('modified', model_utils.fields.AutoLastModifiedField(default=django.utils.timezone.now, editable=False, verbose_name='modified')), + ('name', models.CharField(max_length=100, verbose_name='Name')), + ('slug', autoslug.fields.AutoSlugField(editable=False, populate_from=b'name', unique=True, verbose_name='Slug')), + ('description', django_bleach.models.BleachField(verbose_name='Description of trip')), + ('base_price', models.IntegerField(verbose_name='Price')), + ('space', models.IntegerField(default='The maximum number of guests', verbose_name='Space')), + ('main_image', versatileimagefield.fields.VersatileImageField(upload_to=b'images/', verbose_name='Image')), + ('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ('locations', models.ManyToManyField(to='locations.Location', verbose_name='Locations')), + ], + options={ + 'verbose_name': 'Trip', + 'verbose_name_plural': 'Trips', + }, + ), + migrations.AddField( + model_name='image', + name='trip', + field=models.ForeignKey(help_text='Trip', on_delete=django.db.models.deletion.CASCADE, to='trips.Trip'), + ), + ] diff --git a/taravel/trips/migrations/__init__.py b/taravel/trips/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/taravel/trips/models.py b/taravel/trips/models.py new file mode 100644 index 0000000..fbb2b84 --- /dev/null +++ b/taravel/trips/models.py @@ -0,0 +1,52 @@ +from django.db import models +from django.utils.translation import ugettext_lazy as _ +from django.core.urlresolvers import reverse +from django.conf import settings +from django.utils.encoding import python_2_unicode_compatible +from model_utils.models import TimeStampedModel +from autoslug.fields import AutoSlugField +from django_bleach.models import BleachField +from versatileimagefield.fields import VersatileImageField +from taravel.locations.models import Location + + +class TripQuerySet(models.QuerySet): + pass + + +@python_2_unicode_compatible +class Trip(TimeStampedModel): + name = models.CharField(verbose_name=_("Name"), max_length=100) + slug = AutoSlugField(populate_from='name', verbose_name=_("Slug"), unique=True) + created_by = models.ForeignKey(to=settings.AUTH_USER_MODEL) + description = BleachField(verbose_name=_("Description of trip")) + base_price = models.IntegerField(verbose_name=_("Price")) # Custom model field + space = models.IntegerField(verbose_name=_("Space"), default=_("The maximum number of guests")) + locations = models.ManyToManyField(to=Location, verbose_name=_("Locations")) + main_image = VersatileImageField(_('Image'), upload_to='images/') + objects = TripQuerySet.as_manager() + + class Meta: + verbose_name = _("Trip") + verbose_name_plural = _("Trips") + + def __str__(self): + return self.name + + def get_absolute_url(self): + return reverse('trips:details', kwargs={'slug': self.slug}) + + def get_price_display(self): + return "%.2f PLN" % (self.price/100) + + +class Image(models.Model): + trip = models.ForeignKey(to=Trip, help_text=_("Trip")) + file = VersatileImageField(_('Image'), upload_to='images/') + + def get_absolute_url(self): + return self.file.url + + class Meta: + verbose_name = _("Image") + verbose_name_plural = _("Images") diff --git a/taravel/trips/tests.py b/taravel/trips/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/taravel/trips/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/taravel/trips/views.py b/taravel/trips/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/taravel/trips/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/taravel/users/migrations/0002_auto_20160408_2342.py b/taravel/users/migrations/0002_auto_20160408_2342.py new file mode 100644 index 0000000..a8c91d0 --- /dev/null +++ b/taravel/users/migrations/0002_auto_20160408_2342.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-08 23:42 +from __future__ import unicode_literals + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('users', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='Address', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=100, verbose_name='Name')), + ('street', models.CharField(max_length=50, verbose_name='Street')), + ('street_number', models.CharField(max_length=10, verbose_name='Street number')), + ('postcode', models.CharField(max_length=6, verbose_name='Postcode')), + ('city', models.CharField(max_length=50, verbose_name='City')), + ('taxpayer_id', models.IntegerField(help_text='Awarded by the government', verbose_name='Taxpayer ID')), + ], + options={ + 'verbose_name': 'Address', + 'verbose_name_plural': 'Addresses', + }, + ), + migrations.AddField( + model_name='user', + name='discount', + field=models.IntegerField(default=0, verbose_name='Discount'), + ), + migrations.AlterField( + model_name='user', + name='username', + field=models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=30, unique=True, validators=[django.core.validators.RegexValidator('^[\\w.@+-]+$', 'Enter a valid username. This value may contain only letters, numbers and @/./+/-/_ characters.')], verbose_name='username'), + ), + ] diff --git a/taravel/users/models.py b/taravel/users/models.py index 447bc07..1269c81 100644 --- a/taravel/users/models.py +++ b/taravel/users/models.py @@ -13,10 +13,32 @@ class User(AbstractUser): # First Name and Last Name do not cover name patterns # around the globe. - name = models.CharField(_("Name of User"), blank=True, max_length=255) + name = models.CharField(verbose_name=_("Name of User"), + blank=True, + max_length=255) + discount = models.IntegerField(verbose_name=_("Discount"), default=0) def __str__(self): return self.username def get_absolute_url(self): return reverse('users:detail', kwargs={'username': self.username}) + + +@python_2_unicode_compatible +class Address(models.Model): + name = models.CharField(verbose_name=_("Name"), max_length=100) + street = models.CharField(verbose_name=_("Street"), max_length=50) + street_number = models.CharField(verbose_name=_("Street number"), max_length=10) + postcode = models.CharField(verbose_name=_("Postcode"), max_length=6) + city = models.CharField(verbose_name=_("City"), max_length=50) + taxpayer_id = models.IntegerField(verbose_name=_("Taxpayer ID"), + help_text=_("Awarded by the government")) + + class Meta: + verbose_name = _("Address") + verbose_name_plural = _("Addresses") + + def __str__(self): + return _("{name} (Street {street} {stret_number}," + + " {postcode} {city})").format(**self.__dict__())