Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add models #9

Merged
merged 11 commits into from
Sep 9, 2016
62 changes: 62 additions & 0 deletions server/adventures/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10 on 2016-09-09 17:05
from __future__ import unicode_literals

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

initial = True

dependencies = [
]

operations = [
migrations.CreateModel(
name='Adventure',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('created', models.DateTimeField(auto_now_add=True)),
('last_modified', models.DateTimeField(auto_now=True)),
('title', models.TextField()),
('published', models.DateField()),
('min_level', models.IntegerField(help_text='The minumum character level for the adventure')),
('max_level', models.IntegerField(help_text='The maximum character level for the adventure')),
('min_characters', models.IntegerField(help_text='The minumum number of charactersfor the adventure')),
('max_characters', models.IntegerField(help_text='The maximum number of charactersfor the adventure')),
],
),
migrations.CreateModel(
name='Author',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.TextField()),
],
),
migrations.CreateModel(
name='Edition',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.TextField()),
],
),
migrations.CreateModel(
name='Publisher',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.TextField()),
],
),
migrations.AddField(
model_name='adventure',
name='authors',
field=models.ManyToManyField(to='adventures.Author'),
),
migrations.AddField(
model_name='adventure',
name='edition',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='adventures.Publisher'),
),
]
40 changes: 40 additions & 0 deletions server/adventures/migrations/0002_auto_20160909_1901.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10 on 2016-09-09 19:01
from __future__ import unicode_literals

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
('adventures', '0001_initial'),
]

operations = [
migrations.CreateModel(
name='Setting',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.TextField()),
],
),
migrations.AddField(
model_name='adventure',
name='publisher',
field=models.ForeignKey(default='', on_delete=django.db.models.deletion.CASCADE, to='adventures.Publisher'),
preserve_default=False,
),
migrations.AlterField(
model_name='adventure',
name='edition',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='adventures.Edition'),
),
migrations.AddField(
model_name='adventure',
name='setting',
field=models.ForeignKey(default='', on_delete=django.db.models.deletion.CASCADE, to='adventures.Setting'),
preserve_default=False,
),
]
50 changes: 49 additions & 1 deletion server/adventures/models.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,51 @@
from django.db import models

# Create your models here.

class Author(models.Model):
name = models.TextField()

def __str__(self):
return self.name


class Publisher(models.Model):
name = models.TextField()

def __str__(self):
return self.name


class Edition(models.Model):
name = models.TextField()

def __str__(self):
return self.name


class Setting(models.Model):
name = models.TextField()

def __str__(self):
return self.name


class Adventure(models.Model):
created = models.DateTimeField(auto_now_add=True)
last_modified = models.DateTimeField(auto_now=True)

title = models.TextField()
edition = models.ForeignKey(Edition)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
published = models.DateField()
setting = models.ForeignKey(Setting)
min_level = models.IntegerField(help_text=('The minumum character level '
'for the adventure'))
max_level = models.IntegerField(help_text=('The maximum character level '
'for the adventure'))
min_characters = models.IntegerField(help_text=('The minumum number of '
'charactersfor the '
'adventure'))
max_characters = models.IntegerField(help_text=('The maximum number of '
'charactersfor the '
'adventure'))
51 changes: 50 additions & 1 deletion server/adventures/tests.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,52 @@
from datetime import date
from django.test import TestCase
from .models import Author, Publisher, Edition, Setting, Adventure

# Create your tests here.

class AuthorTests(TestCase):
def test_create_author(self):
gygax = Author.objects.create(name='Gary Gygax')
self.assertEqual(Author.objects.first(), gygax)
self.assertEqual(Author.objects.count(), 1)


class PublisherTests(TestCase):
def test_create_author(self):
wotc = Publisher.objects.create(name='Wizards of the Coast')
self.assertEqual(Publisher.objects.first(), wotc)
self.assertEqual(Publisher.objects.count(), 1)


class EditionTests(TestCase):
def test_create_author(self):
odandd = Edition.objects.create(name='OD&D')
self.assertEqual(Edition.objects.first(), odandd)
self.assertEqual(Edition.objects.count(), 1)


class SettingTests(TestCase):
def test_create_author(self):
fr = Setting.objects.create(name='Forgotten Realms')
self.assertEqual(Setting.objects.first(), fr)
self.assertEqual(Setting.objects.count(), 1)


class AdventureTests(TestCase):
def test_create_author(self):
fifth_ed = Edition.objects.create(name='D&D 5th Edition')
wotc = Publisher.objects.create(name='Wizards of the Coast')
fr = Setting.objects.create(name='Forgotten Realms')

lmop = Adventure.objects.create(
title='Lost Mines of Phandelver',
edition=fifth_ed,
publisher=wotc,
setting=fr,
published=date(2014, 1, 1),
min_level=1,
max_level=5,
min_characters=3,
max_characters=5)
lmop.authors.create(name='Gary Gygax')
self.assertEqual(Adventure.objects.first(), lmop)
self.assertEqual(Adventure.objects.count(), 1)