Merge pull request #443 from elnappo/updates

[WIP] 36c3
This commit is contained in:
TW 2019-12-27 20:28:35 +01:00 committed by GitHub
commit ed673c68d0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 34 additions and 19 deletions

View File

@ -15,18 +15,18 @@ env:
matrix: matrix:
include: include:
- python: "2.7"
dist: trusty
env: DJANGO=1.11 COVERAGE="coverage run -m" TEST_K="not ddns_client" TEST_OPTS="--pep8"
- python: "3.5" - python: "3.5"
dist: trusty dist: xenial
env: DJANGO=1.11 env: DJANGO=2.2
- python: "3.6" - python: "3.6"
dist: trusty dist: xenial
env: DJANGO=1.11 env: DJANGO=2.2
- python: "3.7" - python: "3.7"
dist: xenial dist: xenial
env: DJANGO=2.2 env: DJANGO=2.2
- python: "3.8"
dist: xenial
env: DJANGO=2.2 COVERAGE="coverage run -m" TEST_K="not ddns_client" TEST_OPTS="--pep8"
install: install:
- ./scripts/travis/install.sh - ./scripts/travis/install.sh

View File

@ -1,7 +1,7 @@
This project is licensed under the the 3-clause BSD license (also known as This project is licensed under the the 3-clause BSD license (also known as
"Revised BSD License", "New BSD License", or "Modified BSD License"): "Revised BSD License", "New BSD License", or "Modified BSD License"):
Copyright (c) 2013-2018, The nsupdate.info Development Team (see AUTHORS file) Copyright (c) 2013-2020, The nsupdate.info Development Team (see AUTHORS file)
All rights reserved. All rights reserved.
Redistribution and use in source and binary forms, with or without Redistribution and use in source and binary forms, with or without

View File

@ -227,6 +227,11 @@ To make nsupdate.info (Django) use PostgreSQL, put this into YOUR settings::
Now proceed with manage migrate as shown above. Now proceed with manage migrate as shown above.
Disable User Registration
-------------------------
If you want to disable user registration, put this into YOUR settings::
REGISTRATION_OPEN = False
Customization of the Web UI Customization of the Web UI
=========================== ===========================

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

View File

@ -1,7 +1,7 @@
# packages always needed # packages always needed
dnspython dnspython
netaddr netaddr
django~=1.11.0 django~=2.2.0
django-bootstrap-form django-bootstrap-form
django-referrer-policy django-referrer-policy
django-registration-redux django-registration-redux

View File

@ -29,9 +29,9 @@ setup(
platforms='any', platforms='any',
setup_requires=['setuptools_scm'], setup_requires=['setuptools_scm'],
install_requires=[ install_requires=[
'dnspython<1.17.0', # 1.16 is last with py27 support 'dnspython',
'netaddr', 'netaddr',
'django>=1.11.0', 'django>=2.2.0',
'django-bootstrap-form', 'django-bootstrap-form',
'django-referrer-policy', 'django-referrer-policy',
'django-registration-redux', 'django-registration-redux',
@ -47,12 +47,11 @@ setup(
'License :: OSI Approved :: BSD License', 'License :: OSI Approved :: BSD License',
'Operating System :: OS Independent', 'Operating System :: OS Independent',
'Programming Language :: Python', 'Programming Language :: Python',
'Programming Language :: Python :: 2',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
'Topic :: Internet :: Name Service (DNS)', 'Topic :: Internet :: Name Service (DNS)',
], ],
) )

View File

@ -3,6 +3,8 @@ register our models for Django's admin
""" """
from django.contrib import admin from django.contrib import admin
from django.urls import reverse
from django.utils.safestring import mark_safe
from .models import Host, RelatedHost, Domain, BlacklistedHost, ServiceUpdater, ServiceUpdaterHostConfig from .models import Host, RelatedHost, Domain, BlacklistedHost, ServiceUpdater, ServiceUpdaterHostConfig
@ -16,10 +18,19 @@ class DomainAdmin(admin.ModelAdmin):
@admin.register(Host) @admin.register(Host)
class HostAdmin(admin.ModelAdmin): class HostAdmin(admin.ModelAdmin):
list_display = ("name", "domain", "created_by", "client_faults", "api_auth_faults", "abuse", "abuse_blocked") list_display = ("name", "domain", "created_by_link", "client_faults", "api_auth_faults", "abuse", "abuse_blocked")
list_filter = ("created", "abuse", "abuse_blocked", "domain") list_filter = ("created", "abuse", "abuse_blocked", "domain")
read_only_fields = ('created_by_link',)
search_fields = ("name", "created_by__username", "created_by__email") search_fields = ("name", "created_by__username", "created_by__email")
def created_by_link(self, obj):
return mark_safe('<a href="{}">{}</a>'.format(
reverse("admin:auth_user_change", args=(obj.created_by.pk,)),
obj.created_by.username
))
created_by_link.short_description = 'created by'
@admin.register(RelatedHost) @admin.register(RelatedHost)
class RelatedHostAdmin(admin.ModelAdmin): class RelatedHostAdmin(admin.ModelAdmin):

View File

@ -149,7 +149,7 @@ TEMPLATES = [
# 'django.template.context_processors.media', # 'django.template.context_processors.media',
# 'django.template.context_processors.static', # 'django.template.context_processors.static',
# 'django.template.context_processors.tz', # 'django.template.context_processors.tz',
# 'django.contrib.messages.context_processors.messages', 'django.contrib.messages.context_processors.messages',
'social_django.context_processors.backends', 'social_django.context_processors.backends',
'social_django.context_processors.login_redirect', 'social_django.context_processors.login_redirect',

View File

@ -9,8 +9,8 @@
<title>{% block title %}{{ WWW_HOST }}{% endblock %}</title> <title>{% block title %}{{ WWW_HOST }}{% endblock %}</title>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> <link href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous">
<link href="https://use.fontawesome.com/releases/v5.5.0/css/all.css" rel="stylesheet" integrity="sha384-B4dIYHKNBt8Bc12p+WXckhzcICo0wtJAoU8YZTY5qE0Id1GSseTk6S+L3BlXeVIU" crossorigin="anonymous"> <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/all.min.css" rel="stylesheet" integrity="sha256-+N4/V/SbAFiW1MPBCXnfnP9QSN3+Keu+NlB+0ev/YKQ=" crossorigin="anonymous" />
<link href="{% static 'css/nsupdate.css' %}" rel="stylesheet"> <link href="{% static 'css/nsupdate.css' %}" rel="stylesheet">
<link rel="icon" type="image/svg+xml" sizes="any" href="{% static "img/favicon.svg" %}"> <link rel="icon" type="image/svg+xml" sizes="any" href="{% static "img/favicon.svg" %}">
<link rel="icon" type="image/png" href="{% static "img/favicon_32.png" %}" sizes="32x32"> <link rel="icon" type="image/png" href="{% static "img/favicon_32.png" %}" sizes="32x32">
@ -18,8 +18,8 @@
<!-- note: keep jQuery and bootstrap js here, <!-- note: keep jQuery and bootstrap js here,
stuff in the include / block right below might depend on it! stuff in the include / block right below might depend on it!
--> -->
<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> <script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha384-aJ21OjlMXNL5UyIl/XNwTMqvzeRMZH2w8c5cRVpzpU8Y5bApTppSuUkhZXN0VxHd" crossorigin="anonymous"></script>
{% include "includes/base_head.html" %} {% include "includes/base_head.html" %}
{% block html_head %}{% endblock %} {% block html_head %}{% endblock %}
</head> </head>