mirror of
https://github.com/evennia/evennia.git
synced 2026-03-28 02:36:32 +01:00
Merges accidental branch.
This commit is contained in:
commit
e7b9ee3536
3 changed files with 41 additions and 15 deletions
|
|
@ -4,7 +4,7 @@ from django.contrib.auth.forms import UserCreationForm, UsernameField
|
|||
from evennia.utils import class_from_module
|
||||
from random import choice, randint
|
||||
|
||||
class AccountCreationForm(UserCreationForm):
|
||||
class AccountForm(UserCreationForm):
|
||||
|
||||
class Meta:
|
||||
model = class_from_module(settings.BASE_ACCOUNT_TYPECLASS)
|
||||
|
|
@ -13,7 +13,7 @@ class AccountCreationForm(UserCreationForm):
|
|||
|
||||
email = forms.EmailField(help_text="A valid email address. Optional; used for password resets.", required=False)
|
||||
|
||||
class CharacterCreationForm(forms.Form):
|
||||
class CharacterForm(forms.Form):
|
||||
name = forms.CharField(help_text="The name of your intended character.")
|
||||
age = forms.IntegerField(min_value=3, max_value=99, help_text="How old your character should be once spawned.")
|
||||
description = forms.CharField(widget=forms.Textarea(attrs={'rows': 3}), max_length=2048, min_length=160, required=False)
|
||||
|
|
@ -82,8 +82,12 @@ class CharacterCreationForm(forms.Form):
|
|||
indices = [i for (i, value) in enumerate(buckets) if (value < min_points) or (value < max_points)]
|
||||
|
||||
return buckets
|
||||
|
||||
class CharacterUpdateForm(CharacterForm):
|
||||
class Meta:
|
||||
fields = ('description',)
|
||||
|
||||
class ExtendedCharacterCreationForm(forms.Form):
|
||||
class ExtendedCharacterForm(CharacterForm):
|
||||
|
||||
GENDERS = (
|
||||
('male', 'Male'),
|
||||
|
|
|
|||
|
|
@ -17,8 +17,10 @@ urlpatterns = [
|
|||
url(r'^auth/register', website_views.AccountCreationView.as_view(), name="register"),
|
||||
|
||||
# Character management
|
||||
url(r'^characters/create/', website_views.CharacterCreationView.as_view(), name="chargen"),
|
||||
|
||||
url(r'^characters/create/$', website_views.CharacterCreateView.as_view(), name="chargen"),
|
||||
url(r'^characters/manage/$', website_views.CharacterManageView.as_view(), name="manage-characters"),
|
||||
url(r'^characters/update/(?P<slug>[\w\d\-]+)/(?P<pk>[0-9]+)/$', website_views.CharacterUpdateView.as_view(), name="update-character"),
|
||||
|
||||
# Django original admin page. Make this URL is always available, whether
|
||||
# we've chosen to use Evennia's custom admin or not.
|
||||
url(r'django_admin/', website_views.admin_wrapper, name="django_admin"),
|
||||
|
|
|
|||
|
|
@ -7,22 +7,17 @@ templates on the fly.
|
|||
"""
|
||||
from django.contrib.admin.sites import site
|
||||
from django.conf import settings
|
||||
from django.contrib import messages
|
||||
from django.contrib.auth import authenticate
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
from django.contrib.admin.views.decorators import staff_member_required
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.shortcuts import render
|
||||
from django.urls import reverse, reverse_lazy
|
||||
from django.views.generic import View, DetailView, ListView, FormView
|
||||
|
||||
from evennia import SESSION_HANDLER
|
||||
from evennia.objects.models import ObjectDB
|
||||
from evennia.accounts.models import AccountDB
|
||||
from evennia.utils import logger
|
||||
from evennia.web.website.forms import AccountCreationForm, CharacterCreationForm
|
||||
|
||||
from django.contrib.auth import login
|
||||
from django.utils.text import slugify
|
||||
|
||||
_BASE_CHAR_TYPECLASS = settings.BASE_CHARACTER_TYPECLASS
|
||||
|
||||
|
|
@ -140,9 +135,19 @@ def admin_wrapper(request):
|
|||
Wrapper that allows us to properly use the base Django admin site, if needed.
|
||||
"""
|
||||
return staff_member_required(site.index)(request)
|
||||
|
||||
class ObjectDetailView(DetailView):
|
||||
model = ObjectDB
|
||||
|
||||
def get_object(self, queryset=None):
|
||||
obj = super(ObjectDetailView, self).get_object(queryset)
|
||||
if not slugify(obj.name) == self.kwargs.get('slug'):
|
||||
raise Http404(u"No %(verbose_name)s found matching the query" %
|
||||
{'verbose_name': queryset.model._meta.verbose_name})
|
||||
return obj
|
||||
|
||||
class AccountCreationView(FormView):
|
||||
form_class = AccountCreationForm
|
||||
form_class = AccountForm
|
||||
template_name = 'website/registration/register.html'
|
||||
success_url = reverse_lazy('login')
|
||||
|
||||
|
|
@ -178,8 +183,23 @@ class AccountCreationView(FormView):
|
|||
messages.success(self.request, "Your account '%s' was successfully created! You may log in using it now." % account.name)
|
||||
return HttpResponseRedirect(self.success_url)
|
||||
|
||||
class CharacterCreationView(LoginRequiredMixin, FormView):
|
||||
form_class = CharacterCreationForm
|
||||
class CharacterManageView(LoginRequiredMixin, ListView):
|
||||
model = ObjectDB
|
||||
|
||||
def get_queryset(self):
|
||||
# Get IDs of characters owned by account
|
||||
ids = [getattr(x, 'id') for x in self.request.user.db._playable_characters]
|
||||
|
||||
# Return a queryset consisting of those characters
|
||||
return self.model.filter(id__in=ids)
|
||||
|
||||
class CharacterUpdateView(LoginRequiredMixin, FormView):
|
||||
form_class = CharacterUpdateForm
|
||||
template_name = 'website/generic_form.html'
|
||||
success_url = '/'#reverse_lazy('character-manage')
|
||||
|
||||
class CharacterCreateView(LoginRequiredMixin, FormView):
|
||||
form_class = CharacterForm
|
||||
template_name = 'website/chargen_form.html'
|
||||
success_url = '/'#reverse_lazy('character-manage')
|
||||
|
||||
|
|
@ -232,4 +252,4 @@ class CharacterCreationView(LoginRequiredMixin, FormView):
|
|||
return HttpResponseRedirect(self.success_url)
|
||||
else:
|
||||
messages.error(self.request, "Your character could not be created. Please contact an admin.")
|
||||
return self.form_invalid(form)
|
||||
return self.form_invalid(form)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue