|
|
@ -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) |
|
|
|