mirror of
https://github.com/evennia/evennia.git
synced 2026-03-24 00:36:30 +01:00
Fixed some issues with the admin interface. These changes may not be the best ones for these datatypes, but they should load now...
This commit is contained in:
parent
aa5aeaccc3
commit
90faaf9d01
2 changed files with 26 additions and 17 deletions
|
|
@ -7,8 +7,8 @@ from django import forms
|
|||
from django.conf import settings
|
||||
from django.contrib import admin
|
||||
from src.typeclasses.models import Attribute
|
||||
from src.objects.models import ObjectDB, ObjectNick, Alias
|
||||
from src.utils.utils import mod_import
|
||||
from src.objects.models import ObjectDB
|
||||
from src.typeclasses.models import Tag, LiteAttribute
|
||||
|
||||
|
||||
class AttributeInline(admin.TabularInline):
|
||||
|
|
@ -16,14 +16,14 @@ class AttributeInline(admin.TabularInline):
|
|||
fields = ('db_key', 'db_value')
|
||||
extra = 0
|
||||
|
||||
class NickInline(admin.TabularInline):
|
||||
model = ObjectNick
|
||||
fields = ('db_nick', 'db_real', 'db_type')
|
||||
class TagInline(admin.TabularInline):
|
||||
model = Tag
|
||||
fields = ('db_key', 'db_category', 'db_data')
|
||||
extra = 0
|
||||
|
||||
class AliasInline(admin.TabularInline):
|
||||
model = Alias
|
||||
fields = ("db_key",)
|
||||
class LiteAttributeInline(admin.TabularInline):
|
||||
model = LiteAttribute
|
||||
fields = ('db_key', 'db_category', 'db_data')
|
||||
extra = 0
|
||||
|
||||
class ObjectCreateForm(forms.ModelForm):
|
||||
|
|
|
|||
|
|
@ -15,17 +15,20 @@ from src.players.models import PlayerDB
|
|||
from src.typeclasses.models import Attribute
|
||||
from src.utils import logger, create
|
||||
|
||||
# remove User itself from admin site
|
||||
admin.site.unregister(User)
|
||||
|
||||
# handle the custom User editor
|
||||
class CustomUserChangeForm(UserChangeForm):
|
||||
class PlayerDBChangeForm(UserChangeForm):
|
||||
|
||||
class Meta:
|
||||
model = PlayerDB
|
||||
|
||||
username = forms.RegexField(label="Username",
|
||||
max_length=30,
|
||||
regex=r'^[\w. @+-]+$',
|
||||
widget=forms.TextInput(attrs={'size':'30'}),
|
||||
error_messages = {'invalid': "This value may contain only letters, spaces, numbers and @/./+/-/_ characters."},
|
||||
help_text = "30 characters or fewer. Letters, spaces, digits and @/./+/-/_ only.")
|
||||
|
||||
def clean_username(self):
|
||||
username = self.cleaned_data['username']
|
||||
if username.upper() == self.instance.username.upper():
|
||||
|
|
@ -34,7 +37,12 @@ class CustomUserChangeForm(UserChangeForm):
|
|||
raise forms.ValidationError('A player with that name already exists.')
|
||||
return self.cleaned_data['username']
|
||||
|
||||
class CustomUserCreationForm(UserCreationForm):
|
||||
|
||||
class PlayerDBCreationForm(UserCreationForm):
|
||||
|
||||
class Meta:
|
||||
model = PlayerDB
|
||||
|
||||
username = forms.RegexField(label="Username",
|
||||
max_length=30,
|
||||
regex=r'^[\w. @+-]+$',
|
||||
|
|
@ -72,6 +80,7 @@ class PlayerForm(forms.ModelForm):
|
|||
|
||||
class Meta:
|
||||
model = PlayerDB
|
||||
|
||||
db_key = forms.RegexField(label="Username",
|
||||
initial="PlayerDummy",
|
||||
max_length=30,
|
||||
|
|
@ -117,12 +126,12 @@ class PlayerInline(admin.StackedInline):
|
|||
extra = 1
|
||||
max_num = 1
|
||||
|
||||
class UserAdmin(BaseUserAdmin):
|
||||
class PlayerDBAdmin(BaseUserAdmin):
|
||||
"This is the main creation screen for Users/players"
|
||||
|
||||
list_display = ('username','email', 'is_staff', 'is_superuser')
|
||||
form = CustomUserChangeForm
|
||||
add_form = CustomUserCreationForm
|
||||
form = PlayerDBChangeForm
|
||||
add_form = PlayerDBCreationForm
|
||||
inlines = [PlayerInline]
|
||||
add_form_template = "admin/players/add_form.html"
|
||||
change_form_template = "admin/players/change_form.html"
|
||||
|
|
@ -145,7 +154,7 @@ class UserAdmin(BaseUserAdmin):
|
|||
# TODO! Remove User reference!
|
||||
def save_formset(self, request, form, formset, change):
|
||||
"Run all hooks on the player object"
|
||||
super(UserAdmin, self).save_formset(request, form, formset, change)
|
||||
super(PlayerDBAdmin, self).save_formset(request, form, formset, change)
|
||||
userobj = form.instance
|
||||
playerobj = userobj.get_profile()
|
||||
playerobj.name = userobj.username
|
||||
|
|
@ -158,4 +167,4 @@ class UserAdmin(BaseUserAdmin):
|
|||
typeclass=typeclass,
|
||||
player_dbobj=playerobj)
|
||||
|
||||
admin.site.register(User, UserAdmin)
|
||||
admin.site.register(PlayerDB, PlayerDBAdmin)
|
||||
Loading…
Add table
Add a link
Reference in a new issue