Skip to content

Instantly share code, notes, and snippets.

@sharad-s
Created November 7, 2016 22:48
Show Gist options
  • Save sharad-s/e2edcdbcaaee0c59d0d44c2c4555fee7 to your computer and use it in GitHub Desktop.
Save sharad-s/e2edcdbcaaee0c59d0d44c2c4555fee7 to your computer and use it in GitHub Desktop.
{% extends "app.html" %}
{% load staticfiles %}
{% load render_table from django_tables2 %}
{% block body %}
<h1> {{table_name}} </h1>
{% render_table table %}
{% endblock %}
#urls.py
from django.conf.urls import url
from rest_framework.urlpatterns import format_suffix_patterns
from . import views
from .views import TicketAdd
app_name = 'app'
#
urlpatterns = [
url(r'^$', views.AppHome.as_view(), name='apphome'),
url(r'^data/$', views.NodeList.as_view(), name='appdata'),
#Sites
url(r'^site/$', views.AppSiteHome.as_view(), name='appsite'),
#Tables
url(r'^tables/$', views.AppTableHome.as_view(), name='apptable'),
url(r'^tables/(?P<table_name>\S+)$', views.AppTableID.as_view(), name='apptableid'),
url(r'^add/site/$', views.TicketAdd.as_view(), name='additem'),
url(r'^tickets/$', views.TicketHome.as_view(), name='tickets'),
url(r'^tickets/new$', views.TicketNew.as_view(), name='new'),
#url(r'^tickets/new/(?P<form_name>\S+)$', views.TicketAdd.as_view(), name='add'),
#Forms
url(r'^tickets/new/node$', views.TicketAddNode.as_view(), name='add_node'),
url(r'^tickets/new/site$', views.TicketAddSite.as_view(), name='add_site'),
url(r'^tickets/new/slot$', views.TicketAddSlot.as_view(), name='add_slot'),
url(r'^tickets/modify$', views.TicketModify.as_view(), name='modify'),
url(r'^tickets/remove$', views.TicketRemove.as_view(), name='remove'),
]
urlpatterns = format_suffix_patterns(urlpatterns)
{% extends "app.html" %}
{% load render_table from django_tables2 %}
{% load staticfiles %}
<html>
<head>
<title>django_tables2 with semantic template example</title>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.2.4/semantic.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.2.4/semantic.min.css">
</head>
{% block body %}
<h1> {{table_name}} </h1>
{% block container %}
<div class = "row">
<ul class="list-group">
{% for table_name in tables %}
<li class="list-group-item text-right"><span class="pull-left"><a href ="{% url 'appDatabase:apptable' %}{{table_name}} "> </span>{{table_name}}</a></li>
{% endfor %}
</ul>
</div>
{% endblock %}
{% endblock %}
</html>
from __future__ import unicode_literals
from django.views import generic
from django.shortcuts import render, render_to_response, get_object_or_404, redirect
from django.contrib import messages
from django.contrib.auth.mixins import LoginRequiredMixin
from django.http import HttpRequest, HttpResponse
from django.template import RequestContext
import simplejson as json
#Rest API Framework
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from django_tables2 import MultiTableMixin, RequestConfig, SingleTableView
#App Files
from .models import *;
from .tables import *;
from .serializers import *;
from .forms import *;
from functools import reduce
import sys
def str_to_class(str):
return reduce(getattr, str.split("."), sys.modules[__name__])
############
# Create your views here.
class AppHome(generic.TemplateView):
template_name = "appDatabase/home.html"
class AppData(generic.TemplateView):
template_name = "appDatabase/node_form.html"
#TODO: Move Table List to tables.py and make that the singular import
class AppSiteHome(generic.TemplateView):
template_name = "appDatabase/tables/view.html"
def get(self, request):
return render(request, "appDatabase/home.html")
#Displays a list of Tables to view
class AppTableHome(generic.TemplateView):
template_name = "appDatabase/tables/view.html"
def get(self, request):
no_data = [ {} ]
table_list = [ Environment_Table(no_data), Chassis_Template_Table(no_data), Card_Template_Table(no_data), Port_Template_Table(no_data), Firewall_Table(no_data),
Node_Table(no_data), Site_Table(no_data), Slot_Table(no_data), Card_Table(no_data), Port_Table(no_data), Firewall_Entries_Table(no_data), ACL_Table(no_data),
ACL_Entry_Table(no_data), Service_Table(no_data), Service_Node_Table(no_data), Service_Flows_Table(no_data), Logical_Port_Table(no_data),
Application_Table(no_data), MDR_ACL_Table(no_data), Protocol_Table(no_data), MDR_Prefix_List_Table(no_data), Subnet_Table(no_data),
]
table_names = [table._meta.model._meta.model_name for table in table_list]
#table = Node_Table(Node.objects.all())
return render(request, "appDatabase/tables/view.html", context={'tables': table_names})
class AppTableID(generic.TemplateView):
template_name = "appdatabase/tables/tables2.html"
def get(self, request,*args, **kwargs):
#gets TABLE CLASS defined by var ['table_name']
table_class = {
'environment': Environment_Table,
'chassis_template': Chassis_Template_Table,
'card_template': Card_Template_Table,
'port_template': Port_Template_Table,
'firewall': Firewall_Table,
'node': Node_Table,
'site': Site_Table,
'slot': Slot_Table,
'card': Card_Table,
'port': Port_Table,
'firewall_entries': Firewall_Entries_Table,
'acl': ACL_Table,
'acl_entry': ACL_Entry_Table,
'service': Service_Table,
'service_node': Service_Node_Table,
'service_flows': Service_Flows_Table,
'logical_port': Logical_Port_Table,
'application': Application_Table,
'mdr_acl': MDR_ACL_Table,
'protocol': Protocol_Table,
'mdr_prefix_list': MDR_Prefix_List_Table,
'subnet': Subnet_Table,
}.get(kwargs['table_name'])
#gets MODEL CLASS defined by var ['table_name']
table_name = (str(table_class._meta.model._meta.model_name))
table_name = table_name.capitalize()
model = str_to_class(table_name)
#creates table object
queryset = model.objects.all()
table = table_class(queryset)
#table = Node_Table(Node.objects.all())
print(queryset)
print(table_class)
return render(request, self.template_name, context={'table': table, 'table_name':table_name});
class NodeList(APIView):
def get(self, request):
nodes = Node.objects.all()
serializer = NodeSerializer(nodes, many = True)
return Response(serializer.data)
def post(self, request):
Node = Node.objects.all()
pass
class TicketHome(generic.TemplateView):
template_name = "appdatabase/tickets/home.html"
class TicketNew(generic.TemplateView):
template_name = "appdatabase/tickets/new.html"
def get(self, request):
form_list = [ SiteForm(), NodeForm(), SlotForm(), CardForm()]
form_names = [form._meta.model._meta.model_name for form in form_list]
return render(request, self.template_name, context={'forms': form_names})
class TicketAdd(generic.TemplateView):
template_name = "appDatabase/createform.html"
def get(self, request):
form = NodeForm()
return render(request, "appDatabase/createform.html", { 'form': form });
def post(self, request):
form = NodeForm()
if form.is_valid():
form.save()
messages.success(request, "Site details saved!")
return redirect("appDatabase:apphome")
return render(request, "appDatabase/createform.html", { 'form': form });
class TicketAddNode(generic.TemplateView):
template_name = "appDatabase/createform.html"
def get(self, request):
form = NodeForm()
return render(request, "appDatabase/createform.html", { 'form': form });
def post(self, request):
form = NodeForm(request.POST)
if form.is_valid():
form.save()
messages.success(request, "Node details saved!")
return redirect("appDatabase:apphome")
return render(request, "appDatabase/createform.html", { 'form': form });
class TicketAddSite(generic.TemplateView):
template_name = "appDatabase/createform.html"
def get(self, request):
form = SiteForm()
return render(request, "appDatabase/createform.html", { 'form': form });
def post(self, request):
form = SiteForm(request.POST)
if form.is_valid():
form.save()
messages.success(request, "Site details saved!")
return redirect("appDatabase:apphome")
return render(request, "appDatabase/createform.html", { 'form': form });
class TicketAddSlot(generic.TemplateView):
template_name = "appDatabase/createform.html"
def get(self, request):
form = SlotForm()
return render(request, "appDatabase/createform.html", { 'form': form });
def post(self, request):
form = SlotForm(request.POST)
if form.is_valid():
if not form.is_full():
form.increment_slot()
form.save()
messages.success(request, "Site details saved!")
return redirect("appDatabase:apphome")
return render(request, "appDatabase/createform.html", { 'form': form });
class TicketModify(generic.TemplateView):
template_name = "appdatabase/tickets/edit.html"
class TicketRemove(generic.TemplateView):
template_name = "appdatabase/tickets/edit.html"
#If Add
# <ul> {% for model in models %}
#<li><a href="#"> {% model.name %} </a></li> {% endfor %}</ul>
#If Modify
#If Remove
#Create Site Entry
def SiteCreate(request):
if request.method == "GET":
form = SiteForm()
return render(request, 'appDatabase/createform.html', { 'form': form });
elif request.method == "POST":
form = SiteForm(request.POST)
if form.is_valid():
form.save()
messages.success(request, "Site details saved!")
return redirect("appDatabase:apphome")
return render(request, 'appDatabase/createform.html', { 'form': form });
#Create Node Entry
def NodeCreate(request):
if request.method == "GET":
form = NodeForm()
return render(request, 'appDatabase/createform.html', { 'form': form });
elif request.method == "POST":
form = NodeForm(request.POST)
if form.is_valid():
form.save()
messages.success(request, "Node details saved!")
return redirect("appDatabase:apphome")
return render(request, 'appDatabase/createform.html', { 'form': form });
#Display Tables
def NodeDetail(request, id):
table = NodeTable(Node.objects.filter(pk=id))
RequestConfig(request).configure(table)
return render(request, 'appDatabase/tables/view.html', {'table': table})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment