refining adventure
This commit is contained in:
parent
fc748f8596
commit
765cb98e13
|
@ -83,9 +83,9 @@ class PlaySession(models.Model):
|
|||
|
||||
def get_absolute_url(self):
|
||||
return reverse(
|
||||
"guild:playsession_detail",
|
||||
kwargs={"pk": self.adventure.pk, "playsession_pk": self.pk}
|
||||
)
|
||||
"guild:adventure_detail",
|
||||
kwargs={"pk": self.adventure.pk}
|
||||
) + "#playsession" + str(self.pk)
|
||||
|
||||
|
||||
class ResourceEarned(models.Model):
|
||||
|
|
|
@ -3,25 +3,63 @@
|
|||
{% load guild_extras %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="row">
|
||||
<div class="column column-75">
|
||||
<h1>Adventure: {{ adventure.name }}</h1>
|
||||
</div>
|
||||
<div class="column">
|
||||
<a class="button button-outline" href="{% url 'guild:adventure_update' adventure.id %}">Edit</a>
|
||||
</div>
|
||||
<div class="column">
|
||||
<a class="button button-clear" href="{% url 'guild:adventure_delete' adventure.id %}">Delete</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<p>{{adventure.description|md|safe}}</p>
|
||||
|
||||
<a href="{% url 'guild:create_playsession' adventure.id %}">Add new Session</a>
|
||||
|
||||
<div class="row">
|
||||
<div class="column column-75">
|
||||
<h2>Sessions</h2>
|
||||
</div>
|
||||
<div class="column">
|
||||
<a class="button" href="{% url 'guild:create_playsession' adventure.id %}">Add new Session</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{% if not adventure.playsession_set.count %}
|
||||
<p>No sessions found.</p>
|
||||
<p>No sessions yet.</p>
|
||||
{% else %}
|
||||
<ul>
|
||||
{% for playsession in adventure.playsession_set.all %}
|
||||
<li>
|
||||
<a href="{% url 'guild:playsession_detail' adventure.id playsession.id %}">
|
||||
{{ playsession.date }}
|
||||
</a>
|
||||
</li>
|
||||
<div class="row">
|
||||
<div class="column column-75">
|
||||
<h3>{{ playsession.date }}</h3>
|
||||
</div>
|
||||
<div class="column">
|
||||
<a class="button button-outline" href="{% url 'guild:playsession_update' adventure.id playsession.id %}">Edit</a>
|
||||
</div>
|
||||
<div class="column">
|
||||
<a class="button button-clear" href="{% url 'guild:playsession_delete' adventure.id playsession.id %}">Delete</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h4>Characters</h4>
|
||||
|
||||
<ul>
|
||||
{% for character in playsession.characters.all %}
|
||||
<li>{{character.name}}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
<h4>Summary</h4>
|
||||
|
||||
<p>{{playsession.summary|md|safe}}</p>
|
||||
|
||||
<hr>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
|
||||
|
|
|
@ -4,6 +4,10 @@
|
|||
<form action="" method="post">
|
||||
{% csrf_token %}
|
||||
{{ form.as_p }}
|
||||
{% if object %}
|
||||
<input type="submit" value="Update Adventure">
|
||||
{% else %}
|
||||
<input type="submit" value="Create Adventure">
|
||||
{% endif %}
|
||||
</form>
|
||||
{% endblock content %}
|
|
@ -15,5 +15,15 @@
|
|||
</li>
|
||||
</ul>
|
||||
|
||||
<h2>Adventures</h2>
|
||||
|
||||
<ul>
|
||||
{% for adventure in adventures %}
|
||||
<li>
|
||||
<a href="{% url 'guild:adventure_detail' adventure.id %}">{{ adventure.name }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
|
||||
{% endblock content %}
|
|
@ -0,0 +1,14 @@
|
|||
{% extends 'base.html' %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<h1>Session Delete</h1>
|
||||
|
||||
<p>Are you sure you want to delete <strong>"{{ playsession.date }}"</strong> of the adventure <strong>{{ playsession.adventure.name}}</strong>?</p>
|
||||
|
||||
<form action="" method="post">
|
||||
{% csrf_token %}
|
||||
{{ form.as_p }}
|
||||
<input type="submit" value="Delete Session">
|
||||
</form>
|
||||
{% endblock content %}
|
|
@ -1,17 +0,0 @@
|
|||
{% extends 'base.html' %}
|
||||
|
||||
{% load guild_extras %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Session: {{ playsession.name }}</h1>
|
||||
<h2>
|
||||
Adventure:
|
||||
<a href="{% url 'guild:adventure_detail' playsession.adventure.id %}">
|
||||
{{ playsession.adventure.name }}
|
||||
</a>
|
||||
</h2>
|
||||
|
||||
<p>{{playsession.summary|md|safe}}</p>
|
||||
|
||||
|
||||
{% endblock content %}
|
|
@ -4,6 +4,6 @@
|
|||
<form action="" method="post">
|
||||
{% csrf_token %}
|
||||
{{ form.as_p }}
|
||||
<input type="submit" value="Create Adventure">
|
||||
<input type="submit" value="Create Session">
|
||||
</form>
|
||||
{% endblock content %}
|
|
@ -13,6 +13,9 @@ urlpatterns = [
|
|||
path("characters/<int:pk>/", character_views.CharacterDetailView.as_view(), name="character_detail"),
|
||||
path("adventures/create/", adventure_views.CreateAdventureView.as_view(), name="create_adventure"),
|
||||
path("adventures/<int:pk>/", adventure_views.AdventureDetailView.as_view(), name="adventure_detail"),
|
||||
path("adventures/<int:pk>/playsession/create/", adventure_views.CreatePlaySessionView.as_view(), name="create_playsession"),
|
||||
path("adventures/<int:pk>/playsession/<int:playsession_pk>/", adventure_views.PlaySessionDetailView.as_view(), name="playsession_detail"),
|
||||
path("adventures/<int:pk>/update/", adventure_views.AdventureUpdateView.as_view(), name="adventure_update"),
|
||||
path("adventures/<int:pk>/delete/", adventure_views.AdventureDeleteView.as_view(), name="adventure_delete"),
|
||||
path("adventures/<int:pk>/playsession/create/", adventure_views.PlaySessionCreateView.as_view(), name="create_playsession"),
|
||||
path("adventures/<int:pk>/playsession/<int:playsession_pk>/update/", adventure_views.PlaySessionUpdateView.as_view(), name="playsession_update"),
|
||||
path("adventures/<int:pk>/playsession/<int:playsession_pk>/delete/", adventure_views.PlaySessionDeleteView.as_view(), name="playsession_delete"),
|
||||
]
|
||||
|
|
|
@ -2,9 +2,15 @@ from django.views.generic import TemplateView, ListView, DetailView
|
|||
from django.views.generic.edit import CreateView
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
|
||||
from guild.models import Player
|
||||
from guild.models import Adventure, Player
|
||||
|
||||
# Create your views here.
|
||||
class HomeView(LoginRequiredMixin, TemplateView):
|
||||
template_name = "guild/home.html"
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
context["adventures"] = Adventure.objects.all()
|
||||
return context
|
||||
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ from django.forms.models import BaseModelForm
|
|||
from django.http import HttpResponse
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django.views.generic import TemplateView, ListView, DetailView
|
||||
from django.views.generic.edit import CreateView
|
||||
from django.views.generic.edit import CreateView, UpdateView, DeleteView
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
from guild.forms import PlaySessionForm
|
||||
|
||||
|
@ -18,7 +18,15 @@ class CreateAdventureView(LoginRequiredMixin, CreateView):
|
|||
class AdventureDetailView(LoginRequiredMixin, DetailView):
|
||||
model = Adventure
|
||||
|
||||
class CreatePlaySessionView(LoginRequiredMixin, CreateView):
|
||||
class AdventureUpdateView(LoginRequiredMixin, UpdateView):
|
||||
model = Adventure
|
||||
fields = ["name", "description", "master"]
|
||||
|
||||
class AdventureDeleteView(LoginRequiredMixin, DeleteView):
|
||||
model = Adventure
|
||||
success_url = "/"
|
||||
|
||||
class PlaySessionCreateView(LoginRequiredMixin, CreateView):
|
||||
model = PlaySession
|
||||
form_class = PlaySessionForm
|
||||
|
||||
|
@ -30,10 +38,21 @@ class CreatePlaySessionView(LoginRequiredMixin, CreateView):
|
|||
form.instance.adventure = self.adventure
|
||||
return super().form_valid(form)
|
||||
|
||||
class PlaySessionUpdateView(LoginRequiredMixin, UpdateView):
|
||||
model = PlaySession
|
||||
form_class = PlaySessionForm
|
||||
|
||||
class PlaySessionDetailView(LoginRequiredMixin, DetailView):
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
self.adventure = get_object_or_404(Adventure, pk=kwargs["pk"])
|
||||
return super().dispatch(request, *args, **kwargs)
|
||||
|
||||
class PlaySessionDeleteView(LoginRequiredMixin, DeleteView):
|
||||
model = PlaySession
|
||||
pk_url_kwarg = "playsession_pk"
|
||||
|
||||
def get_queryset(self):
|
||||
return super().get_queryset().filter(adventure_id=self.kwargs["pk"])
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
self.adventure = get_object_or_404(Adventure, pk=kwargs["pk"])
|
||||
return super().dispatch(request, *args, **kwargs)
|
||||
|
||||
def get_success_url(self) -> str:
|
||||
return self.adventure.get_absolute_url()
|
File diff suppressed because one or more lines are too long
|
@ -5,7 +5,7 @@
|
|||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="{% static 'pico.min.css' %}">
|
||||
<link rel="stylesheet" href="{% static 'milligram.min.css' %}">
|
||||
<title>Guild Journal</title>
|
||||
</head>
|
||||
<body>
|
||||
|
|
Loading…
Reference in New Issue