zwischencommit

This commit is contained in:
Sebastian Lohff 2017-02-15 02:35:46 +01:00
parent 35458ab391
commit cb878d3ed8
9 changed files with 108 additions and 13 deletions

View File

@ -7,6 +7,7 @@ urlpatterns = [
url(r'^$', dncore_views.dashboard, name='dashboard'), url(r'^$', dncore_views.dashboard, name='dashboard'),
url(r'^login/$', auth_views.login, name='login'), url(r'^login/$', auth_views.login, name='login'),
url(r'^login/$', auth_views.login, name='register'),
url(r'^logout/$', auth_views.logout, {'next_page': '/'}, name='logout'), url(r'^logout/$', auth_views.logout, {'next_page': '/'}, name='logout'),
url(r'^profile/$', dncore_views.profile, name='profile'), url(r'^profile/$', dncore_views.profile, name='profile'),
] ]

View File

@ -7,7 +7,7 @@ def profile(request):
@login_required @login_required
def dashboard(request): def dashboard(request):
pass return render(request, "dncore/dashboard.html", {})
def index(request): def index(request):
return render(request, "index.html", {}) return render(request, "index.html", {})

View File

@ -22,8 +22,8 @@ import whoisdb.urls
urlpatterns = [ urlpatterns = [
url(r'^$', dncore.views.index), url(r'^$', dncore.views.index, name='index'),
url(r'^dashboard/$', dncore.views.dashboard), url(r'^dashboard/$', dncore.views.dashboard, name='dashboard'),
url(r'^admin/', admin.site.urls), url(r'^admin/', admin.site.urls),
url(r'^user/', include(dncore.urls, namespace='user')), url(r'^user/', include(dncore.urls, namespace='user')),

View File

@ -35,29 +35,34 @@
<span class="icon-bar"></span> <span class="icon-bar"></span>
<span class="icon-bar"></span> <span class="icon-bar"></span>
</button> </button>
<a class="navbar-brand" href="{% url "index" %}">Darknet Mgmt</a> <a class="navbar-brand" href="{% url 'index' %}">Darknet Mgmt</a>
</div> </div>
<div id="navbar" class="navbar-collapse collapse"> <div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav"> <ul class="nav navbar-nav">
{% if user.is_authenticated %} {% if user.is_authenticated %}
<li{% if request.resolver_match.url_name == 'index' %} class="active"{%endif%}><a href="{% url "contest:index" %}">Contest Overview</a></li> <li{% if request.resolver_match.url_name == 'index' %} class="active"{%endif%}><a href="{% url "dashboard" %}">Dashboard</a></li>
{% else %} {% else %}
<li{% if request.resolver_match.url_name == 'index' %} class="active"{%endif%}><a href="{% url "index" %}">Home</a></li> <li{% if request.resolver_match.url_name == 'index' %} class="active"{%endif%}><a href="{% url "index" %}">Home</a></li>
{% endif %} {% endif %}
<li class="dropdown{% if request.resolver_match.url_name == 'whoisdb' %} active{%endif%}">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Whois DB <span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#">Noot</a></li>
</ul>
</li>
</ul> </ul>
<ul class="nav navbar-nav navbar-right"> <ul class="nav navbar-nav navbar-right">
{% if user.is_staff %} {% if user.is_staff %}
<li{% if "Ref" in request.resolver_match.url_name %} class="active"{%endif%}><a href="{% url "contest:registerRefs" %}">Register Users</a></li>
<li><a href="/admin/">Admin</a></li> <li><a href="/admin/">Admin</a></li>
{% endif %} {% endif %}
{% if user.is_authenticated %} {% if user.is_authenticated %}
<li><a href="/logout/">Logout</a></li> <li><a href="{% url 'user:logout' %}">Logout</a></li>
{% else %} {% else %}
<li{% if request.resolver_match.url_name == 'login' %} class="active"{%endif%}><a href="/login/">Login</a></li> <li{% if request.resolver_match.url_name == 'login' %} class="active"{%endif%}><a href="{% url "user:login" %}">Login</a></li>
{% endif %} {% endif %}
</ul> </ul>
{% if user.is_authenticated %} {% if user.is_authenticated %}
<p class="navbar-text navbar-right"><a href="{% url "profile" %}"><kbd>{{ user.username }}</kbd></a></p> <p class="navbar-text navbar-right"><a href="{% url "user:profile" %}"><kbd>{{ user.username }}</kbd></a></p>
{% endif %} {% endif %}
</div><!--/.nav-collapse --> </div><!--/.nav-collapse -->
</div> </div>

View File

@ -0,0 +1,15 @@
{% extends "base.html" %}
{% block content %}
<div class="row">
<div class="col-sm-12">
<div class="panel panel-default">
<div class="panel-heading">Welcome!</div>
<div class="panel-body">
Here you can manage your darknet resources!
</div>
</div>
</div>
</div>
{% endblock %}

View File

@ -10,9 +10,9 @@
<div class="panel-heading">Login</div> <div class="panel-heading">Login</div>
<div class="panel-body"> <div class="panel-body">
<p> <p>
Don't have an account? <a href="{% url 'register' %}">Register here!</a> Don't have an account? <a href="{% url 'user:register' %}">Register here!</a>
</p> </p>
<form action="{% url "login" %}" method="post"> <form action="{% url "user:login" %}" method="post">
{% csrf_token %} {% csrf_token %}
{{ form|crispy }} {{ form|crispy }}

View File

@ -12,7 +12,7 @@
Please register with your (uppercase) Callsign as Usernames. Please register with your (uppercase) Callsign as Usernames.
For DN-Calls, -[0-9] is allowed. For DN-Calls, -[0-9] is allowed.
</p> </p>
<form method="POST" action="{% url 'register' %}"> <form method="POST" action="{% url 'user:register' %}">
{% csrf_token %} {% csrf_token %}
{{ form|crispy }} {{ form|crispy }}
<input type="submit" value="Register"> <input type="submit" value="Register">

View File

@ -1,6 +1,67 @@
from django.db import models from django.db import models
from dncore.models import User from dncore.models import User
from .validators import HandleValidator
class Maintainer(models.Model): class ExtraFields(models.Model):
name = models.CharField(max_length=64)
value = models.CharField(max_length=128)
order = models.PositiveSmallIntegerField()
class WhoisObject(models.Model):
handle_suffix = None
whois_fields = None
whois_extra_field_names = None
handle = models.SlugField(max_length='32', unique=True, validators=[HandleValidator()])
created = models.DateTimeField(auto_add_now=True)
last_modified = models.DateTimeField(auto_add_now=True)
class Meta:
abstract = True
class Maintainer(WhoisObject):
auth = models.ManyToManyField(User) auth = models.ManyToManyField(User)
admin_c = models.ManyToManyField("Contact")
class MntdObject(WhoisObject):
mnt_by = models.ManyToManyField(Maintainer)
class Meta:
abstract = True
class Contact(MntdObject):
TYPE = (('person', 'person'), ('role', 'role'))
name = models.CharField(max_length=128)
class MntdCObject(MntdObject)
admin_c = models.ManyToManyField("Contact")
class Meta:
abstract = True
class MntdObject(WhoisObject):
admin_c = models.ManyToManyField(Contact)
mnt_by = models
class Meta:
abstract = True
class ASNumber(WhoisObject):
number = models.PositiveIntegerField(unique=True, db_index=True)
class InetNum(WhoisObject):
PROTO = (('ipv4', 'ipv4'), ('ipv6', 'ipv6'))
protocol = models.CharField(max_length=4, choices=PROTO)
netmask = models.PositiveIntegerField()
#class ASBlock(WhoisObject):
# pass

13
whoisdb/validators.py Normal file
View File

@ -0,0 +1,13 @@
from django.core import validators
from django.utils import six
from django.utils.deconstruct import deconstructible
from django.utils.translation import ugettext_lazy as _
@deconstructible
class HandleValidator(validators.RegexValidator):
regex = r'^[A-Z]+[0-9]+(-[A-Z]+)'
message = _(
'Enter a valid handle (all uppercase)'
)
flags = re.ASCII if six.PY3 else 0