diff --git a/conntrackt/forms.py b/conntrackt/forms.py
--- a/conntrackt/forms.py
+++ b/conntrackt/forms.py
@@ -94,6 +94,7 @@ class EntityForm(WidgetCSSClassFormMixin
class Meta:
model = Entity
+ fields = ['name', 'description', 'project', 'location']
widget_placeholders = {"name": "Entity name",
"description": "Entity description"}
@@ -107,6 +108,7 @@ class InterfaceForm(WidgetCSSClassFormMi
class Meta:
model = Interface
+ fields = ['name', 'description', 'entity', 'address', 'netmask']
widget_placeholders = {"name": "Interface name",
"description": "Interface description",
@@ -123,6 +125,7 @@ class CommunicationForm(WidgetCSSClassFo
class Meta:
model = Communication
+ fields = ['source', 'destination', 'protocol', 'port', 'description']
widget_placeholders = {"port": "Port used for communication",
"description": "Communication description"}
@@ -137,6 +140,7 @@ class ProjectForm(WidgetCSSClassFormMixi
class Meta:
model = Project
+ fields = ['name', 'description']
widget_placeholders = {"name": "Project name",
"description": "Project description"}
@@ -151,6 +155,7 @@ class LocationForm(WidgetCSSClassFormMix
class Meta:
model = Location
+ fields = ['name', 'description']
widget_placeholders = {"name": "Location name",
"description": "Location description"}
diff --git a/conntrackt/migrations/0001_initial.py b/conntrackt/migrations/0001_initial.py
--- a/conntrackt/migrations/0001_initial.py
+++ b/conntrackt/migrations/0001_initial.py
@@ -18,122 +18,113 @@
# Django Conntrackt. If not, see .
#
-
-# -*- coding: utf-8 -*-
-import datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- # Adding model 'Project'
- db.create_table('conntrackt_project', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('name', self.gf('django.db.models.fields.CharField')(max_length=100)),
- ('description', self.gf('django.db.models.fields.TextField')(blank=True)),
- ))
- db.send_create_signal('conntrackt', ['Project'])
-
- # Adding model 'Location'
- db.create_table('conntrackt_location', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('name', self.gf('django.db.models.fields.CharField')(max_length=100)),
- ('description', self.gf('django.db.models.fields.TextField')(blank=True)),
- ))
- db.send_create_signal('conntrackt', ['Location'])
+from __future__ import unicode_literals
- # Adding model 'Entity'
- db.create_table('conntrackt_entity', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('name', self.gf('django.db.models.fields.CharField')(max_length=100)),
- ('description', self.gf('django.db.models.fields.TextField')(blank=True)),
- ('project', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['conntrackt.Project'])),
- ('location', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['conntrackt.Location'])),
- ))
- db.send_create_signal('conntrackt', ['Entity'])
-
- # Adding model 'Interface'
- db.create_table('conntrackt_interface', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('name', self.gf('django.db.models.fields.CharField')(default='eth0', max_length=100)),
- ('description', self.gf('django.db.models.fields.TextField')(default='Main network interface.', blank=True)),
- ('entity', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['conntrackt.Entity'])),
- ('address', self.gf('django.db.models.fields.IPAddressField')(max_length=15)),
- ('netmask', self.gf('django.db.models.fields.IPAddressField')(default='255.255.255.255', max_length=15)),
- ))
- db.send_create_signal('conntrackt', ['Interface'])
-
- # Adding model 'Communication'
- db.create_table('conntrackt_communication', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('source', self.gf('django.db.models.fields.related.ForeignKey')(related_name='source_set', to=orm['conntrackt.Interface'])),
- ('destination', self.gf('django.db.models.fields.related.ForeignKey')(related_name='destination_set', to=orm['conntrackt.Interface'])),
- ('protocol', self.gf('django.db.models.fields.CharField')(max_length=10)),
- ('port', self.gf('django.db.models.fields.IntegerField')(default=0)),
- ('description', self.gf('django.db.models.fields.TextField')(blank=True)),
- ))
- db.send_create_signal('conntrackt', ['Communication'])
+from django.db import models, migrations
+import conntrackt.models
- def backwards(self, orm):
- # Deleting model 'Project'
- db.delete_table('conntrackt_project')
-
- # Deleting model 'Location'
- db.delete_table('conntrackt_location')
+class Migration(migrations.Migration):
- # Deleting model 'Entity'
- db.delete_table('conntrackt_entity')
-
- # Deleting model 'Interface'
- db.delete_table('conntrackt_interface')
-
- # Deleting model 'Communication'
- db.delete_table('conntrackt_communication')
-
+ dependencies = [
+ ]
- models = {
- 'conntrackt.communication': {
- 'Meta': {'object_name': 'Communication'},
- 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'destination': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'destination_set'", 'to': "orm['conntrackt.Interface']"}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'port': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
- 'source': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'source_set'", 'to': "orm['conntrackt.Interface']"})
- },
- 'conntrackt.entity': {
- 'Meta': {'object_name': 'Entity'},
- 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'location': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['conntrackt.Location']"}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
- 'project': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['conntrackt.Project']"})
- },
- 'conntrackt.interface': {
- 'Meta': {'object_name': 'Interface'},
- 'address': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
- 'description': ('django.db.models.fields.TextField', [], {'default': "'Main network interface.'", 'blank': 'True'}),
- 'entity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['conntrackt.Entity']"}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'default': "'eth0'", 'max_length': '100'}),
- 'netmask': ('django.db.models.fields.IPAddressField', [], {'default': "'255.255.255.255'", 'max_length': '15'})
- },
- 'conntrackt.location': {
- 'Meta': {'object_name': 'Location'},
- 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
- },
- 'conntrackt.project': {
- 'Meta': {'object_name': 'Project'},
- 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
- }
- }
-
- complete_apps = ['conntrackt']
\ No newline at end of file
+ operations = [
+ migrations.CreateModel(
+ name='Communication',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('protocol', models.CharField(max_length=10, choices=[(b'TCP', b'TCP'), (b'UDP', b'UDP'), (b'ICMP', b'ICMP')])),
+ ('port', models.IntegerField(default=0)),
+ ('description', models.TextField(blank=True)),
+ ],
+ options={
+ },
+ bases=(conntrackt.models.RelatedCollectorMixin, models.Model),
+ ),
+ migrations.CreateModel(
+ name='Entity',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('name', models.CharField(max_length=100)),
+ ('description', models.TextField(blank=True)),
+ ],
+ options={
+ 'verbose_name_plural': 'entities',
+ },
+ bases=(conntrackt.models.RelatedCollectorMixin, models.Model),
+ ),
+ migrations.CreateModel(
+ name='Interface',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('name', models.CharField(default=b'eth0', max_length=100)),
+ ('description', models.TextField(default=b'Main network interface.', blank=True)),
+ ('address', models.IPAddressField()),
+ ('netmask', models.IPAddressField(default=b'255.255.255.255')),
+ ('entity', models.ForeignKey(to='conntrackt.Entity')),
+ ],
+ options={
+ },
+ bases=(conntrackt.models.RelatedCollectorMixin, models.Model),
+ ),
+ migrations.CreateModel(
+ name='Location',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('name', models.CharField(unique=True, max_length=100)),
+ ('description', models.TextField(blank=True)),
+ ],
+ options={
+ },
+ bases=(conntrackt.models.RelatedCollectorMixin, models.Model),
+ ),
+ migrations.CreateModel(
+ name='Project',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('name', models.CharField(unique=True, max_length=100)),
+ ('description', models.TextField(blank=True)),
+ ],
+ options={
+ 'permissions': (('view', 'Can view information'),),
+ },
+ bases=(conntrackt.models.RelatedCollectorMixin, models.Model),
+ ),
+ migrations.AlterUniqueTogether(
+ name='interface',
+ unique_together=set([('name', 'entity'), ('entity', 'address', 'netmask')]),
+ ),
+ migrations.AddField(
+ model_name='entity',
+ name='location',
+ field=models.ForeignKey(to='conntrackt.Location'),
+ preserve_default=True,
+ ),
+ migrations.AddField(
+ model_name='entity',
+ name='project',
+ field=models.ForeignKey(to='conntrackt.Project'),
+ preserve_default=True,
+ ),
+ migrations.AlterUniqueTogether(
+ name='entity',
+ unique_together=set([('name', 'project')]),
+ ),
+ migrations.AddField(
+ model_name='communication',
+ name='destination',
+ field=models.ForeignKey(related_name='destination_set', to='conntrackt.Interface'),
+ preserve_default=True,
+ ),
+ migrations.AddField(
+ model_name='communication',
+ name='source',
+ field=models.ForeignKey(related_name='source_set', to='conntrackt.Interface'),
+ preserve_default=True,
+ ),
+ migrations.AlterUniqueTogether(
+ name='communication',
+ unique_together=set([('source', 'destination', 'protocol', 'port')]),
+ ),
+ ]
diff --git a/conntrackt/migrations/0002_auto__add_unique_communication_source_destination_protocol_port.py b/conntrackt/migrations/0002_auto__add_unique_communication_source_destination_protocol_port.py
deleted file mode 100644
--- a/conntrackt/migrations/0002_auto__add_unique_communication_source_destination_protocol_port.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (C) 2013 Branko Majic
-#
-# This file is part of Django Conntrackt.
-#
-# Django Conntrackt is free software: you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by the Free
-# Software Foundation, either version 3 of the License, or (at your option) any
-# later version.
-#
-# Django Conntrackt is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-# details.
-#
-# You should have received a copy of the GNU General Public License along with
-# Django Conntrackt. If not, see .
-#
-
-
-# -*- coding: utf-8 -*-
-import datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- # Adding unique constraint on 'Communication', fields ['source', 'destination', 'protocol', 'port']
- db.create_unique(u'conntrackt_communication', ['source_id', 'destination_id', 'protocol', 'port'])
-
-
- def backwards(self, orm):
- # Removing unique constraint on 'Communication', fields ['source', 'destination', 'protocol', 'port']
- db.delete_unique(u'conntrackt_communication', ['source_id', 'destination_id', 'protocol', 'port'])
-
-
- models = {
- u'conntrackt.communication': {
- 'Meta': {'unique_together': "(('source', 'destination', 'protocol', 'port'),)", 'object_name': 'Communication'},
- 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'destination': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'destination_set'", 'to': u"orm['conntrackt.Interface']"}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'port': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
- 'source': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'source_set'", 'to': u"orm['conntrackt.Interface']"})
- },
- u'conntrackt.entity': {
- 'Meta': {'object_name': 'Entity'},
- 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'location': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['conntrackt.Location']"}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
- 'project': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['conntrackt.Project']"})
- },
- u'conntrackt.interface': {
- 'Meta': {'object_name': 'Interface'},
- 'address': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
- 'description': ('django.db.models.fields.TextField', [], {'default': "'Main network interface.'", 'blank': 'True'}),
- 'entity': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['conntrackt.Entity']"}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'default': "'eth0'", 'max_length': '100'}),
- 'netmask': ('django.db.models.fields.IPAddressField', [], {'default': "'255.255.255.255'", 'max_length': '15'})
- },
- u'conntrackt.location': {
- 'Meta': {'object_name': 'Location'},
- 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
- },
- u'conntrackt.project': {
- 'Meta': {'object_name': 'Project'},
- 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
- }
- }
-
- complete_apps = ['conntrackt']
\ No newline at end of file
diff --git a/conntrackt/migrations/0003_auto__add_unique_entity_project_name__add_unique_location_name__add_un.py b/conntrackt/migrations/0003_auto__add_unique_entity_project_name__add_unique_location_name__add_un.py
deleted file mode 100644
--- a/conntrackt/migrations/0003_auto__add_unique_entity_project_name__add_unique_location_name__add_un.py
+++ /dev/null
@@ -1,100 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (C) 2013 Branko Majic
-#
-# This file is part of Django Conntrackt.
-#
-# Django Conntrackt is free software: you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by the Free
-# Software Foundation, either version 3 of the License, or (at your option) any
-# later version.
-#
-# Django Conntrackt is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-# details.
-#
-# You should have received a copy of the GNU General Public License along with
-# Django Conntrackt. If not, see .
-#
-
-
-# -*- coding: utf-8 -*-
-import datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- # Adding unique constraint on 'Entity', fields ['project', 'name']
- db.create_unique(u'conntrackt_entity', ['project_id', 'name'])
-
- # Adding unique constraint on 'Location', fields ['name']
- db.create_unique(u'conntrackt_location', ['name'])
-
- # Adding unique constraint on 'Interface', fields ['name', 'entity']
- db.create_unique(u'conntrackt_interface', ['name', 'entity_id'])
-
- # Adding unique constraint on 'Project', fields ['name']
- db.create_unique(u'conntrackt_project', ['name'])
-
-
- def backwards(self, orm):
- # Removing unique constraint on 'Project', fields ['name']
- db.delete_unique(u'conntrackt_project', ['name'])
-
- # Removing unique constraint on 'Interface', fields ['name', 'entity']
- db.delete_unique(u'conntrackt_interface', ['name', 'entity_id'])
-
- # Removing unique constraint on 'Location', fields ['name']
- db.delete_unique(u'conntrackt_location', ['name'])
-
- # Removing unique constraint on 'Entity', fields ['project', 'name']
- db.delete_unique(u'conntrackt_entity', ['project_id', 'name'])
-
-
- models = {
- u'conntrackt.communication': {
- 'Meta': {'unique_together': "(('source', 'destination', 'protocol', 'port'),)", 'object_name': 'Communication'},
- 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'destination': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'destination_set'", 'to': u"orm['conntrackt.Interface']"}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'port': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
- 'source': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'source_set'", 'to': u"orm['conntrackt.Interface']"})
- },
- u'conntrackt.entity': {
- 'Meta': {'unique_together': "(('name', 'project'),)", 'object_name': 'Entity'},
- 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'location': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['conntrackt.Location']"}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
- 'project': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['conntrackt.Project']"})
- },
- u'conntrackt.interface': {
- 'Meta': {'unique_together': "(('name', 'entity'),)", 'object_name': 'Interface'},
- 'address': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
- 'description': ('django.db.models.fields.TextField', [], {'default': "'Main network interface.'", 'blank': 'True'}),
- 'entity': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['conntrackt.Entity']"}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'default': "'eth0'", 'max_length': '100'}),
- 'netmask': ('django.db.models.fields.IPAddressField', [], {'default': "'255.255.255.255'", 'max_length': '15'})
- },
- u'conntrackt.location': {
- 'Meta': {'object_name': 'Location'},
- 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
- },
- u'conntrackt.project': {
- 'Meta': {'object_name': 'Project'},
- 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
- }
- }
-
- complete_apps = ['conntrackt']
\ No newline at end of file
diff --git a/conntrackt/migrations/0004_auto__add_unique_interface_netmask_address_entity.py b/conntrackt/migrations/0004_auto__add_unique_interface_netmask_address_entity.py
deleted file mode 100644
--- a/conntrackt/migrations/0004_auto__add_unique_interface_netmask_address_entity.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (C) 2013 Branko Majic
-#
-# This file is part of Django Conntrackt.
-#
-# Django Conntrackt is free software: you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by the Free
-# Software Foundation, either version 3 of the License, or (at your option) any
-# later version.
-#
-# Django Conntrackt is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-# details.
-#
-# You should have received a copy of the GNU General Public License along with
-# Django Conntrackt. If not, see .
-#
-
-
-# -*- coding: utf-8 -*-
-import datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- # Adding unique constraint on 'Interface', fields ['netmask', 'address', 'entity']
- db.create_unique(u'conntrackt_interface', ['netmask', 'address', 'entity_id'])
-
-
- def backwards(self, orm):
- # Removing unique constraint on 'Interface', fields ['netmask', 'address', 'entity']
- db.delete_unique(u'conntrackt_interface', ['netmask', 'address', 'entity_id'])
-
-
- models = {
- u'conntrackt.communication': {
- 'Meta': {'unique_together': "(('source', 'destination', 'protocol', 'port'),)", 'object_name': 'Communication'},
- 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'destination': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'destination_set'", 'to': u"orm['conntrackt.Interface']"}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'port': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
- 'protocol': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
- 'source': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'source_set'", 'to': u"orm['conntrackt.Interface']"})
- },
- u'conntrackt.entity': {
- 'Meta': {'unique_together': "(('name', 'project'),)", 'object_name': 'Entity'},
- 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'location': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['conntrackt.Location']"}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
- 'project': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['conntrackt.Project']"})
- },
- u'conntrackt.interface': {
- 'Meta': {'unique_together': "(('name', 'entity'), ('entity', 'address', 'netmask'))", 'object_name': 'Interface'},
- 'address': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
- 'description': ('django.db.models.fields.TextField', [], {'default': "'Main network interface.'", 'blank': 'True'}),
- 'entity': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['conntrackt.Entity']"}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'default': "'eth0'", 'max_length': '100'}),
- 'netmask': ('django.db.models.fields.IPAddressField', [], {'default': "'255.255.255.255'", 'max_length': '15'})
- },
- u'conntrackt.location': {
- 'Meta': {'object_name': 'Location'},
- 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
- },
- u'conntrackt.project': {
- 'Meta': {'object_name': 'Project'},
- 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
- }
- }
-
- complete_apps = ['conntrackt']
\ No newline at end of file
diff --git a/docs/releasenotes.rst b/docs/releasenotes.rst
--- a/docs/releasenotes.rst
+++ b/docs/releasenotes.rst
@@ -15,6 +15,13 @@ Release Notes
dev
---
+Breaking changes:
+
+* Django Conntrackt now depends on Django 1.7. In addition to official
+ Django documentation, there is a dedicated upgrade guide that deals
+ with the most basic installation.
+ [ `CONNT-25 `_ ]
+
New features/improvements:
* Updated jQuery used internally to version 3.2.1.
diff --git a/requirements/base.in b/requirements/base.in
--- a/requirements/base.in
+++ b/requirements/base.in
@@ -24,7 +24,7 @@ django-braces~=1.12.0
django-crispy-forms~=1.6.0
# Web framework used by application.
-django~=1.6.0
+django~=1.7.0
# Library for programatic calculation of colours (contrasts,
# inversions etc).
@@ -32,6 +32,3 @@ palette~=0.2.0
# Interaface towards Graphviz for chart generation.
pydot~=1.2.0
-
-# Library for data migration in case of model changes.
-south~=1.0.0
diff --git a/requirements/development.txt b/requirements/development.txt
--- a/requirements/development.txt
+++ b/requirements/development.txt
@@ -2,7 +2,7 @@
# This file is autogenerated by pip-compile
# To update, run:
#
-# pip-compile --output-file ./requirements/development.txt ./requirements/development.in
+# pip-compile --output-file requirements/development.txt requirements/development.in
#
alabaster==0.7.10 # via sphinx
babel==2.5.1 # via sphinx
@@ -11,7 +11,7 @@ chardet==3.0.4 # via requests
coverage==4.4.2
django-braces==1.12.0
django-crispy-forms==1.6.1
-django==1.6.11
+django==1.7.11
docutils==0.14 # via sphinx
factory-boy==2.1.2
funcsigs==1.0.2 # via mock
@@ -29,7 +29,6 @@ pytz==2017.3
requests==2.18.4 # via sphinx
six==1.11.0 # via mock, sphinx
snowballstemmer==1.2.1 # via sphinx
-south==1.0.2
sphinx==1.6.5
sphinxcontrib-websupport==1.0.1 # via sphinx
typing==3.6.2 # via sphinx
diff --git a/requirements/test.txt b/requirements/test.txt
--- a/requirements/test.txt
+++ b/requirements/test.txt
@@ -2,7 +2,7 @@
# This file is autogenerated by pip-compile
# To update, run:
#
-# pip-compile --output-file ./requirements/test.txt ./requirements/test.in
+# pip-compile --output-file requirements/test.txt requirements/test.in
#
alabaster==0.7.10 # via sphinx
babel==2.5.1 # via sphinx
@@ -11,7 +11,7 @@ chardet==3.0.4 # via requests
coverage==4.4.2
django-braces==1.12.0
django-crispy-forms==1.6.1
-django==1.6.11
+django==1.7.11
docutils==0.14 # via sphinx
factory-boy==2.1.2
funcsigs==1.0.2 # via mock
@@ -29,7 +29,6 @@ pytz==2017.3
requests==2.18.4 # via sphinx
six==1.11.0 # via mock, sphinx
snowballstemmer==1.2.1 # via sphinx
-south==1.0.2
sphinx==1.6.5
sphinxcontrib-websupport==1.0.1 # via sphinx
typing==3.6.2 # via sphinx
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -26,10 +26,9 @@ README = open(os.path.join(os.path.dirna
INSTALL_REQUIREMENTS = [
"django-braces~=1.12.0",
"django-crispy-forms~=1.6.0",
- "django~=1.6.0",
+ "django~=1.7.0",
"palette~=0.2.0",
"pydot~=1.2.0",
- "south~=1.0.0",
]
# allow setup.py to be run from any path
diff --git a/testproject/testproject/settings.py b/testproject/testproject/settings.py
--- a/testproject/testproject/settings.py
+++ b/testproject/testproject/settings.py
@@ -18,172 +18,102 @@
# Django Conntrackt. If not, see .
#
-
-# Django settings for testproject project.
-DEBUG = True
-TEMPLATE_DEBUG = DEBUG
-
-ADMINS = (
- ('Branko Majic', 'branko@majic.rs'),
-)
-
-MANAGERS = ADMINS
+"""
+Django settings for testproject project.
-DATABASES = {
- 'default': {
- 'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
- 'NAME': 'testproject.db', # Or path to database file if using sqlite3.
- 'USER': '', # Not used with sqlite3.
- 'PASSWORD': '', # Not used with sqlite3.
- 'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
- 'PORT': '', # Set to empty string for default. Not used with sqlite3.
- }
-}
+For more information on this file, see
+https://docs.djangoproject.com/en/1.7/topics/settings/
-# Local time zone for this installation. Choices can be found here:
-# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
-# although not all choices may be available on all operating systems.
-# In a Windows environment this must be set to your system time zone.
-TIME_ZONE = 'Europe/Stockholm'
-
-# Language code for this installation. All choices can be found here:
-# http://www.i18nguy.com/unicode/language-identifiers.html
-LANGUAGE_CODE = 'en-us'
-
-SITE_ID = 1
-
-# If you set this to False, Django will make some optimizations so as not
-# to load the internationalization machinery.
-USE_I18N = True
+For the full list of settings and their values, see
+https://docs.djangoproject.com/en/1.7/ref/settings/
+"""
-# If you set this to False, Django will not format dates, numbers and
-# calendars according to the current locale.
-USE_L10N = True
-
-# If you set this to False, Django will not use timezone-aware datetimes.
-USE_TZ = True
+# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
+import os
+BASE_DIR = os.path.dirname(os.path.dirname(__file__))
-# Absolute filesystem path to the directory that will hold user-uploaded files.
-# Example: "/home/media/media.lawrence.com/media/"
-MEDIA_ROOT = ''
-
-# URL that handles the media served from MEDIA_ROOT. Make sure to use a
-# trailing slash.
-# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
-MEDIA_URL = ''
-# Absolute path to the directory static files should be collected to.
-# Don't put anything in this directory yourself; store your static files
-# in apps' "static/" subdirectories and in STATICFILES_DIRS.
-# Example: "/home/media/media.lawrence.com/static/"
-STATIC_ROOT = ''
-
-# URL prefix for static files.
-# Example: "http://media.lawrence.com/static/"
-STATIC_URL = '/static/'
+# Quick-start development settings - unsuitable for production
+# See https://docs.djangoproject.com/en/1.7/howto/deployment/checklist/
-# Additional locations of static files
-STATICFILES_DIRS = (
- # Put strings here, like "/home/html/static" or "C:/www/django/static".
- # Always use forward slashes, even on Windows.
- # Don't forget to use absolute paths, not relative paths.
-)
-
-# List of finder classes that know how to find static files in
-# various locations.
-STATICFILES_FINDERS = (
- 'django.contrib.staticfiles.finders.FileSystemFinder',
- 'django.contrib.staticfiles.finders.AppDirectoriesFinder',
-# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
-)
-
-# Make this unique, and don't share it with anybody.
+# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '%s-x^wskhxu#5%o)0ck71g7o@7p18has!9_#(h(f@j@$97pcaw'
-# List of callables that know how to import templates from various sources.
-TEMPLATE_LOADERS = (
- 'django.template.loaders.filesystem.Loader',
- 'django.template.loaders.app_directories.Loader',
-# 'django.template.loaders.eggs.Loader',
+# SECURITY WARNING: don't run with debug turned on in production!
+DEBUG = True
+
+TEMPLATE_DEBUG = True
+
+ALLOWED_HOSTS = []
+
+
+# Application definition
+
+INSTALLED_APPS = (
+ 'django.contrib.admin',
+ 'django.contrib.auth',
+ 'django.contrib.contenttypes',
+ 'django.contrib.sessions',
+ 'django.contrib.messages',
+ 'django.contrib.staticfiles',
+ # Enable the conntrackt application
+ 'conntrackt',
+ # Generic mixins for Django.
+ 'braces',
+ # Better forms, including styling functions.
+ 'crispy_forms',
)
MIDDLEWARE_CLASSES = (
+ 'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
- 'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
+ 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
- # Uncomment the next line for simple clickjacking protection:
- # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
+ 'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
ROOT_URLCONF = 'testproject.urls'
-# Python dotted path to the WSGI application used by Django's runserver.
WSGI_APPLICATION = 'testproject.wsgi.application'
-TEMPLATE_DIRS = (
- # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
- # Always use forward slashes, even on Windows.
- # Don't forget to use absolute paths, not relative paths.
-)
+
+# Database
+# https://docs.djangoproject.com/en/1.7/ref/settings/#databases
+
+DATABASES = {
+ 'default': {
+ 'ENGINE': 'django.db.backends.sqlite3',
+ 'NAME': os.path.join(BASE_DIR, 'testproject.db'),
+ }
+}
+
+# Internationalization
+# https://docs.djangoproject.com/en/1.7/topics/i18n/
+
+LANGUAGE_CODE = 'en-us'
-# Extend the default TEMPLATE_CONTEXT_PROCESSORS
+TIME_ZONE = 'Europe/Stockholm'
+
+USE_I18N = True
+
+USE_L10N = True
+
+USE_TZ = True
+
+
+# Static files (CSS, JavaScript, Images)
+# https://docs.djangoproject.com/en/1.7/howto/static-files/
+
+STATIC_URL = '/static/'
+
+# Extend the default TEMPLATE_CONTEXT_PROCESSORS to include the
+# request as part of context (used throughout tests).
from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS
TEMPLATE_CONTEXT_PROCESSORS += (
"django.core.context_processors.request",
- )
-
-
-INSTALLED_APPS = (
- 'django.contrib.auth',
- 'django.contrib.contenttypes',
- 'django.contrib.sessions',
- 'django.contrib.sites',
- 'django.contrib.messages',
- 'django.contrib.staticfiles',
- # Uncomment the next line to enable the admin:
- 'django.contrib.admin',
- # Uncomment the next line to enable admin documentation:
- # 'django.contrib.admindocs',
- # Enable the conntrackt application
- 'conntrackt',
- # Database migrations
- 'south',
- # Generic mixins for Django.
- 'braces',
- # Better forms, including styling functions.
- 'crispy_forms',
)
-# A sample logging configuration. The only tangible logging
-# performed by this configuration is to send an email to
-# the site admins on every HTTP 500 error when DEBUG=False.
-# See http://docs.djangoproject.com/en/dev/topics/logging for
-# more details on how to customize your logging configuration.
-LOGGING = {
- 'version': 1,
- 'disable_existing_loggers': False,
- 'filters': {
- 'require_debug_false': {
- '()': 'django.utils.log.RequireDebugFalse'
- }
- },
- 'handlers': {
- 'mail_admins': {
- 'level': 'ERROR',
- 'filters': ['require_debug_false'],
- 'class': 'django.utils.log.AdminEmailHandler'
- }
- },
- 'loggers': {
- 'django.request': {
- 'handlers': ['mail_admins'],
- 'level': 'ERROR',
- 'propagate': True,
- },
- }
-}
-
# View that should be called for log-in action.
LOGIN_URL = "login"
diff --git a/testproject/testproject/urls.py b/testproject/testproject/urls.py
--- a/testproject/testproject/urls.py
+++ b/testproject/testproject/urls.py
@@ -24,23 +24,14 @@ from django.conf.urls import patterns, i
from django.contrib import admin
from django.http import HttpResponseRedirect
-
-# Auto-discover admin interface.
-admin.autodiscover()
-
-
urlpatterns = patterns(
'',
# Examples:
# url(r'^$', 'testproject.views.home', name='home'),
- # url(r'^testproject/', include('testproject.foo.urls')),
+ # url(r'^blog/', include('blog.urls')),
+
url(r'^$', lambda r: HttpResponseRedirect('conntrackt/')),
url(r'^conntrackt/', include('conntrackt.urls')),
-
- # Uncomment the admin/doc line below to enable admin documentation:
- # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
-
- # Uncomment the next line to enable the admin:
url(r'^admin/', include(admin.site.urls)),
)
diff --git a/testproject/testproject/wsgi.py b/testproject/testproject/wsgi.py
--- a/testproject/testproject/wsgi.py
+++ b/testproject/testproject/wsgi.py
@@ -18,32 +18,17 @@
# Django Conntrackt. If not, see .
#
-
"""
WSGI config for testproject project.
-This module contains the WSGI application used by Django's development server
-and any production WSGI deployments. It should expose a module-level variable
-named ``application``. Django's ``runserver`` and ``runfcgi`` commands discover
-this application via the ``WSGI_APPLICATION`` setting.
+It exposes the WSGI callable as a module-level variable named ``application``.
-Usually you will have the standard Django WSGI application here, but it also
-might make sense to replace the whole Django WSGI application with a custom one
-that later delegates to the Django one. For example, you could introduce WSGI
-middleware here, or combine a Django application with an application of another
-framework.
+For more information on this file, see
+https://docs.djangoproject.com/en/1.7/howto/deployment/wsgi/
+"""
-"""
import os
-
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "testproject.settings")
-# This application object is used by any WSGI server configured to use this
-# file. This includes Django's development server, if the WSGI_APPLICATION
-# setting points here.
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
-
-# Apply WSGI middleware here.
-# from helloworld.wsgi import HelloWorldApplication
-# application = HelloWorldApplication(application)