Browse Source

pyi2phosts/postkey/admin.py: add name/key validation

pull/1/head
Hidden Z 14 years ago
parent
commit
08fa9c1ae7
  1. 31
      pyi2phosts/postkey/admin.py

31
pyi2phosts/postkey/admin.py

@ -1,14 +1,37 @@
from django.contrib import admin
from django import forms
from pyi2phosts.lib.utils import get_b32 from pyi2phosts.lib.utils import get_b32
from pyi2phosts.postkey.models import i2phost from pyi2phosts.postkey.models import i2phost
from pyi2phosts.postkey.models import PendingHost from pyi2phosts.postkey.models import PendingHost
from django.contrib import admin from pyi2phosts.lib.validation import validate_hostname
from pyi2phosts.lib.validation import validate_b64hash
class i2phostAdminForm(forms.ModelForm):
""" Custom form for editing hosts via admin interface """
class Meta:
model = i2phost
def clean_name(self):
"""Validate hostname"""
data = self.cleaned_data['name']
data = validate_hostname(data)
return data
def clean_b64hash(self):
"""Validate base64 hash"""
data = self.cleaned_data['b64hash']
data = validate_b64hash(data)
return data
class i2phostAdmin(admin.ModelAdmin): class i2phostAdmin(admin.ModelAdmin):
def url(self, hostname): def url(self, hostname):
return '<a href=http://' + get_b32(hostname.b64hash) + '>b32</a>' return '<a href="http://' + get_b32(hostname.b64hash) + '">b32</a>'
form = i2phostAdminForm
url.allow_tags = True url.allow_tags = True
list_display = ('url', 'name', 'description', 'date_added', 'last_seen', 'expires', list_display = ('url', 'name', 'description', 'date_added', 'last_seen', 'expires',
'activated', 'external') 'activated', 'external')
list_display_links = ['name'] list_display_links = ['name']
@ -16,6 +39,7 @@ class i2phostAdmin(admin.ModelAdmin):
search_fields = ['name'] search_fields = ['name']
ordering = ['-date_added'] ordering = ['-date_added']
class PendingAdmin(i2phostAdmin): class PendingAdmin(i2phostAdmin):
def queryset(self, request): def queryset(self, request):
qs = super(PendingAdmin, self).queryset(request) qs = super(PendingAdmin, self).queryset(request)
@ -25,5 +49,6 @@ class PendingAdmin(i2phostAdmin):
list_display = ('url', 'name', 'description', 'date_added', 'last_seen', 'expires', 'approved') list_display = ('url', 'name', 'description', 'date_added', 'last_seen', 'expires', 'approved')
list_editable = ['approved'] list_editable = ['approved']
admin.site.register(i2phost, i2phostAdmin) admin.site.register(i2phost, i2phostAdmin)
admin.site.register(PendingHost, PendingAdmin) admin.site.register(PendingHost, PendingAdmin)

Loading…
Cancel
Save