/create_quest works, added quest models
This commit is contained in:
parent
aeaaa1df2b
commit
1f0e122646
24
create_quest/forms.py
Normal file
24
create_quest/forms.py
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
Form(s) for the create_quest page.
|
||||||
|
"""
|
||||||
|
from django import forms
|
||||||
|
|
||||||
|
from quest.models import Quest, Post, PageTitle
|
||||||
|
|
||||||
|
class QuestForm(forms.ModelForm):
|
||||||
|
"""
|
||||||
|
The main create_quest form.
|
||||||
|
"""
|
||||||
|
class Meta:
|
||||||
|
model = Quest
|
||||||
|
fields = ('title',)
|
||||||
|
|
||||||
|
|
||||||
|
class PostForm(forms.ModelForm):
|
||||||
|
"""
|
||||||
|
The form for beginning the first post of the quest.
|
||||||
|
"""
|
||||||
|
class Meta:
|
||||||
|
model = Post
|
||||||
|
fields = ('post_text',)
|
|
@ -2,9 +2,14 @@
|
||||||
{% block title %}Start a new quest{% endblock %}
|
{% block title %}Start a new quest{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<h1>New Quest</h1>
|
<h1>New Quest</h1>
|
||||||
<form method="post" action="{# url_for('.create_quest') #}">
|
<form method="post" action="{{ url('create_quest:index') }}">
|
||||||
|
{{ csrf_input }}
|
||||||
|
{#
|
||||||
<input type="text" placeholder="Quest Title" name="quest_title" maxlength="300" required/><br/>
|
<input type="text" placeholder="Quest Title" name="quest_title" maxlength="300" required/><br/>
|
||||||
<textarea id="create_textarea" name="quest_body"></textarea>
|
<textarea id="create_textarea" name="quest_body"></textarea>
|
||||||
|
#}
|
||||||
|
{{ quest_form.as_p() }}
|
||||||
|
{{ post_form.as_p() }}
|
||||||
<input type="submit" name="submit" value="Submit"/>
|
<input type="submit" name="submit" value="Submit"/>
|
||||||
</form>
|
</form>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -2,13 +2,28 @@
|
||||||
"""
|
"""
|
||||||
/create_quest app views.
|
/create_quest app views.
|
||||||
"""
|
"""
|
||||||
from django.shortcuts import render
|
from django.contrib import messages
|
||||||
from django.contrib.auth.decorators import login_required
|
from django.shortcuts import redirect, render
|
||||||
|
|
||||||
|
from .forms import QuestForm, PostForm
|
||||||
|
from quest.models import Quest, Post
|
||||||
|
|
||||||
@login_required(login_url='/login/')
|
|
||||||
def index(request):
|
def index(request):
|
||||||
"""
|
"""
|
||||||
The index page for creating new quests.
|
The index page for creating new quests.
|
||||||
"""
|
"""
|
||||||
context = {}
|
if request.method == 'POST':
|
||||||
|
quest = Quest(owner=request.user)
|
||||||
|
quest_form = QuestForm(request.POST, instance=quest)
|
||||||
|
post = Post(post_type='text', page_num=1)
|
||||||
|
post_form = PostForm(request.POST, instance=post)
|
||||||
|
if all((quest_form.is_valid(), post_form.is_valid())):
|
||||||
|
quest.save()
|
||||||
|
post.quest = quest
|
||||||
|
post.save()
|
||||||
|
return redirect('quest:quest', quest_id=quest.id)
|
||||||
|
else:
|
||||||
|
quest_form = QuestForm()
|
||||||
|
post_form = PostForm()
|
||||||
|
context = {'quest_form': quest_form, 'post_form': post_form}
|
||||||
return render(request, 'create_quest/index.html', context)
|
return render(request, 'create_quest/index.html', context)
|
||||||
|
|
54
quest/migrations/0001_initial.py
Normal file
54
quest/migrations/0001_initial.py
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
# Generated by Django 2.1 on 2018-08-12 20:09
|
||||||
|
|
||||||
|
from django.conf import settings
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
initial = True
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='PageTitle',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('page_num', models.IntegerField()),
|
||||||
|
('title', models.CharField(max_length=200)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Post',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('page_num', models.IntegerField(default=1)),
|
||||||
|
('post_type', models.CharField(choices=[('text', 'Text'), ('dice', 'Dice'), ('poll', 'Poll')], max_length=4)),
|
||||||
|
('post_text', models.TextField()),
|
||||||
|
('timestamp', models.DateTimeField(auto_now=True)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Quest',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('quest_name', models.CharField(max_length=200)),
|
||||||
|
('open_post_id', models.IntegerField(null=True)),
|
||||||
|
('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='post',
|
||||||
|
name='quest',
|
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='quest.Quest'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='pagetitle',
|
||||||
|
name='quest',
|
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='quest.Quest'),
|
||||||
|
),
|
||||||
|
]
|
18
quest/migrations/0002_auto_20180812_1612.py
Normal file
18
quest/migrations/0002_auto_20180812_1612.py
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# Generated by Django 2.1 on 2018-08-12 20:12
|
||||||
|
|
||||||
|
from django.db import migrations
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('quest', '0001_initial'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RenameField(
|
||||||
|
model_name='quest',
|
||||||
|
old_name='quest_name',
|
||||||
|
new_name='title',
|
||||||
|
),
|
||||||
|
]
|
|
@ -1,3 +1,42 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
The main quest models.
|
||||||
|
"""
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
from django.conf import settings
|
||||||
|
|
||||||
# Create your models here.
|
class Quest(models.Model):
|
||||||
|
"""
|
||||||
|
The meta quest object. Contains general information about the quest.
|
||||||
|
"""
|
||||||
|
title = models.CharField(max_length=200)
|
||||||
|
owner = models.ForeignKey(
|
||||||
|
settings.AUTH_USER_MODEL,
|
||||||
|
on_delete=models.CASCADE)
|
||||||
|
open_post_id = models.IntegerField(null=True)
|
||||||
|
|
||||||
|
|
||||||
|
class Post(models.Model):
|
||||||
|
"""
|
||||||
|
An object for arbituary posts. Contains all post data, type, etc.
|
||||||
|
"""
|
||||||
|
quest = models.ForeignKey(Quest, on_delete=models.CASCADE)
|
||||||
|
page_num = models.IntegerField(default=1)
|
||||||
|
POST_TYPES = (
|
||||||
|
('text', 'Text'),
|
||||||
|
('dice', 'Dice'),
|
||||||
|
('poll', 'Poll'))
|
||||||
|
post_type = models.CharField(max_length=4, choices=POST_TYPES)
|
||||||
|
post_text = models.TextField()
|
||||||
|
timestamp = models.DateTimeField(auto_now=True)
|
||||||
|
|
||||||
|
class PageTitle(models.Model):
|
||||||
|
"""
|
||||||
|
Represents the title of a quest page.
|
||||||
|
"""
|
||||||
|
quest = models.ForeignKey(Quest, on_delete=models.CASCADE)
|
||||||
|
page_num = models.IntegerField()
|
||||||
|
title = models.CharField(max_length=200)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.title
|
||||||
|
|
20
users/migrations/0002_auto_20180812_1609.py
Normal file
20
users/migrations/0002_auto_20180812_1609.py
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
# Generated by Django 2.1 on 2018-08-12 20:09
|
||||||
|
|
||||||
|
import django.core.validators
|
||||||
|
from django.db import migrations, models
|
||||||
|
import users.validators
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('users', '0001_initial'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='user',
|
||||||
|
name='username',
|
||||||
|
field=models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='Must be between 3 and 20 characters. Letters and digits only.', max_length=20, unique=True, validators=[users.validators.CharValidator('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', 'Username must only contain alphanumeric characters.'), django.core.validators.MinLengthValidator(3, 'Username must contain more than 3 characters.'), django.core.validators.MaxLengthValidator(20, 'Username must contain less than 20 characters.')], verbose_name='username'),
|
||||||
|
),
|
||||||
|
]
|
Loading…
Reference in New Issue
Block a user