diff options
author | Sam Wenham <sam@wenhams.co.uk> | 2020-02-22 15:45:20 +0000 |
---|---|---|
committer | Sam Wenham <sam@wenhams.co.uk> | 2020-02-22 15:45:20 +0000 |
commit | 656ddcfe93061f2f82160ff8cc45b98d27e28bd3 (patch) | |
tree | 5e22bb56363ad7e28e2902bc7637b018706e83e0 /core | |
parent | 505bc48331035b6fdc9d3ca5f9de77e5a98ba267 (diff) | |
parent | 92b273e45f96ac20fb182b9166b9f0a96f16eba3 (diff) | |
download | troggle-656ddcfe93061f2f82160ff8cc45b98d27e28bd3.tar.gz troggle-656ddcfe93061f2f82160ff8cc45b98d27e28bd3.tar.bz2 troggle-656ddcfe93061f2f82160ff8cc45b98d27e28bd3.zip |
Merge branch 'django-1.10' of ssh://expo.survex.com/~/troggle into django-1.10
Diffstat (limited to 'core')
-rw-r--r-- | core/migrations/0001_initial.py | 575 | ||||
-rw-r--r-- | core/migrations/__init__.py | 0 | ||||
-rw-r--r-- | core/views_caves.py | 38 |
3 files changed, 593 insertions, 20 deletions
diff --git a/core/migrations/0001_initial.py b/core/migrations/0001_initial.py new file mode 100644 index 0000000..b9e0a34 --- /dev/null +++ b/core/migrations/0001_initial.py @@ -0,0 +1,575 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.8 on 2020-02-18 16:01 +from __future__ import unicode_literals + +from django.conf import settings +import django.core.files.storage +from django.db import migrations, models +import django.db.models.deletion +import troggle.core.models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='Area', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('new_since_parsing', models.BooleanField(default=False, editable=False)), + ('non_public', models.BooleanField(default=False)), + ('short_name', models.CharField(max_length=100)), + ('name', models.CharField(blank=True, max_length=200, null=True)), + ('description', models.TextField(blank=True, null=True)), + ('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='core.Area')), + ], + options={ + 'abstract': False, + }, + ), + migrations.CreateModel( + name='Cave', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('new_since_parsing', models.BooleanField(default=False, editable=False)), + ('non_public', models.BooleanField(default=False)), + ('official_name', models.CharField(max_length=160)), + ('kataster_code', models.CharField(blank=True, max_length=20, null=True)), + ('kataster_number', models.CharField(blank=True, max_length=10, null=True)), + ('unofficial_number', models.CharField(blank=True, max_length=60, null=True)), + ('explorers', models.TextField(blank=True, null=True)), + ('underground_description', models.TextField(blank=True, null=True)), + ('equipment', models.TextField(blank=True, null=True)), + ('references', models.TextField(blank=True, null=True)), + ('survey', models.TextField(blank=True, null=True)), + ('kataster_status', models.TextField(blank=True, null=True)), + ('underground_centre_line', models.TextField(blank=True, null=True)), + ('notes', models.TextField(blank=True, null=True)), + ('length', models.CharField(blank=True, max_length=100, null=True)), + ('depth', models.CharField(blank=True, max_length=100, null=True)), + ('extent', models.CharField(blank=True, max_length=100, null=True)), + ('survex_file', models.CharField(blank=True, max_length=100, null=True)), + ('description_file', models.CharField(blank=True, max_length=200, null=True)), + ('url', models.CharField(blank=True, max_length=200, null=True)), + ('filename', models.CharField(max_length=200)), + ('area', models.ManyToManyField(blank=True, to='core.Area')), + ], + options={ + 'ordering': ('kataster_code', 'unofficial_number'), + }, + ), + migrations.CreateModel( + name='CaveAndEntrance', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('entrance_letter', models.CharField(blank=True, max_length=20, null=True)), + ('cave', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Cave')), + ], + ), + migrations.CreateModel( + name='CaveDescription', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('new_since_parsing', models.BooleanField(default=False, editable=False)), + ('non_public', models.BooleanField(default=False)), + ('short_name', models.CharField(max_length=50, unique=True)), + ('long_name', models.CharField(blank=True, max_length=200, null=True)), + ('description', models.TextField(blank=True, null=True)), + ], + options={ + 'abstract': False, + }, + ), + migrations.CreateModel( + name='CaveSlug', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('slug', models.SlugField(unique=True)), + ('primary', models.BooleanField(default=False)), + ('cave', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Cave')), + ], + ), + migrations.CreateModel( + name='DataIssue', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('new_since_parsing', models.BooleanField(default=False, editable=False)), + ('non_public', models.BooleanField(default=False)), + ('date', models.DateTimeField(auto_now_add=True)), + ('parser', models.CharField(blank=True, max_length=50, null=True)), + ('message', models.CharField(blank=True, max_length=400, null=True)), + ], + options={ + 'ordering': ['date'], + }, + ), + migrations.CreateModel( + name='DPhoto', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('new_since_parsing', models.BooleanField(default=False, editable=False)), + ('caption', models.CharField(blank=True, max_length=1000, null=True)), + ('file', models.ImageField(storage=django.core.files.storage.FileSystemStorage(base_url=b'http://127.0.0.1:8000/photos/', location=b'/expo/expoweb/photos'), upload_to=b'.')), + ('is_mugshot', models.BooleanField(default=False)), + ('lon_utm', models.FloatField(blank=True, null=True)), + ('lat_utm', models.FloatField(blank=True, null=True)), + ('contains_cave', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='core.Cave')), + ], + options={ + 'abstract': False, + }, + ), + migrations.CreateModel( + name='Entrance', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('new_since_parsing', models.BooleanField(default=False, editable=False)), + ('non_public', models.BooleanField(default=False)), + ('name', models.CharField(blank=True, max_length=100, null=True)), + ('entrance_description', models.TextField(blank=True, null=True)), + ('explorers', models.TextField(blank=True, null=True)), + ('map_description', models.TextField(blank=True, null=True)), + ('location_description', models.TextField(blank=True, null=True)), + ('approach', models.TextField(blank=True, null=True)), + ('underground_description', models.TextField(blank=True, null=True)), + ('photo', models.TextField(blank=True, null=True)), + ('marking', models.CharField(choices=[(b'P', b'Paint'), (b'P?', b'Paint (?)'), (b'T', b'Tag'), (b'T?', b'Tag (?)'), (b'R', b'Needs Retag'), (b'S', b'Spit'), (b'S?', b'Spit (?)'), (b'U', b'Unmarked'), (b'?', b'Unknown')], max_length=2)), + ('marking_comment', models.TextField(blank=True, null=True)), + ('findability', models.CharField(blank=True, choices=[(b'?', b'To be confirmed ...'), (b'S', b'Coordinates'), (b'L', b'Lost'), (b'R', b'Refindable')], max_length=1, null=True)), + ('findability_description', models.TextField(blank=True, null=True)), + ('alt', models.TextField(blank=True, null=True)), + ('northing', models.TextField(blank=True, null=True)), + ('easting', models.TextField(blank=True, null=True)), + ('tag_station', models.TextField(blank=True, null=True)), + ('exact_station', models.TextField(blank=True, null=True)), + ('other_station', models.TextField(blank=True, null=True)), + ('other_description', models.TextField(blank=True, null=True)), + ('bearings', models.TextField(blank=True, null=True)), + ('url', models.CharField(blank=True, max_length=200, null=True)), + ('filename', models.CharField(max_length=200)), + ('cached_primary_slug', models.CharField(blank=True, max_length=200, null=True)), + ], + options={ + 'abstract': False, + }, + ), + migrations.CreateModel( + name='EntranceSlug', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('slug', models.SlugField(unique=True)), + ('primary', models.BooleanField(default=False)), + ('entrance', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Entrance')), + ], + ), + migrations.CreateModel( + name='Expedition', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('new_since_parsing', models.BooleanField(default=False, editable=False)), + ('non_public', models.BooleanField(default=False)), + ('year', models.CharField(max_length=20, unique=True)), + ('name', models.CharField(max_length=100)), + ], + options={ + 'ordering': ('-year',), + 'get_latest_by': 'year', + }, + ), + migrations.CreateModel( + name='ExpeditionDay', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('new_since_parsing', models.BooleanField(default=False, editable=False)), + ('non_public', models.BooleanField(default=False)), + ('date', models.DateField()), + ('expedition', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Expedition')), + ], + options={ + 'ordering': ('date',), + }, + ), + migrations.CreateModel( + name='LogbookEntry', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('new_since_parsing', models.BooleanField(default=False, editable=False)), + ('non_public', models.BooleanField(default=False)), + ('date', models.DateTimeField()), + ('title', models.CharField(max_length=200)), + ('cave_slug', models.SlugField()), + ('place', models.CharField(blank=True, help_text=b"Only use this if you haven't chosen a cave", max_length=100, null=True)), + ('text', models.TextField()), + ('slug', models.SlugField()), + ('filename', models.CharField(max_length=200, null=True)), + ('entry_type', models.CharField(choices=[(b'wiki', b'Wiki style logbook'), (b'html', b'Html style logbook')], default=b'wiki', max_length=50, null=True)), + ('expedition', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='core.Expedition')), + ('expeditionday', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='core.ExpeditionDay')), + ], + options={ + 'ordering': ('-date',), + 'verbose_name_plural': 'Logbook Entries', + }, + ), + migrations.CreateModel( + name='NewSubCave', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('new_since_parsing', models.BooleanField(default=False, editable=False)), + ('non_public', models.BooleanField(default=False)), + ('name', models.CharField(max_length=200, unique=True)), + ], + options={ + 'abstract': False, + }, + ), + migrations.CreateModel( + name='OtherCaveName', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('new_since_parsing', models.BooleanField(default=False, editable=False)), + ('non_public', models.BooleanField(default=False)), + ('name', models.CharField(max_length=160)), + ('cave', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Cave')), + ], + options={ + 'abstract': False, + }, + ), + migrations.CreateModel( + name='Person', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('new_since_parsing', models.BooleanField(default=False, editable=False)), + ('non_public', models.BooleanField(default=False)), + ('first_name', models.CharField(max_length=100)), + ('last_name', models.CharField(max_length=100)), + ('fullname', models.CharField(max_length=200)), + ('is_vfho', models.BooleanField(default=False, help_text=b'VFHO is the Vereines für Höhlenkunde in Obersteier, a nearby Austrian caving club.')), + ('mug_shot', models.CharField(blank=True, max_length=100, null=True)), + ('blurb', models.TextField(blank=True, null=True)), + ('orderref', models.CharField(max_length=200)), + ('user', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + options={ + 'ordering': ('orderref',), + 'verbose_name_plural': 'People', + }, + ), + migrations.CreateModel( + name='PersonExpedition', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('new_since_parsing', models.BooleanField(default=False, editable=False)), + ('non_public', models.BooleanField(default=False)), + ('slugfield', models.SlugField(blank=True, null=True)), + ('is_guest', models.BooleanField(default=False)), + ('expo_committee_position', models.CharField(blank=True, choices=[(b'leader', b'Expo leader'), (b'medical', b'Expo medical officer'), (b'treasurer', b'Expo treasurer'), (b'sponsorship', b'Expo sponsorship coordinator'), (b'research', b'Expo research coordinator')], max_length=200, null=True)), + ('nickname', models.CharField(blank=True, max_length=100, null=True)), + ('expedition', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Expedition')), + ('person', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Person')), + ], + options={ + 'ordering': ('-expedition',), + }, + ), + migrations.CreateModel( + name='PersonTrip', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('new_since_parsing', models.BooleanField(default=False, editable=False)), + ('non_public', models.BooleanField(default=False)), + ('time_underground', models.FloatField(help_text=b'In decimal hours')), + ('is_logbook_entry_author', models.BooleanField(default=False)), + ('logbook_entry', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.LogbookEntry')), + ('personexpedition', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='core.PersonExpedition')), + ], + options={ + 'abstract': False, + }, + ), + migrations.CreateModel( + name='QM', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('new_since_parsing', models.BooleanField(default=False, editable=False)), + ('non_public', models.BooleanField(default=False)), + ('number', models.IntegerField(help_text=b'this is the sequential number in the year')), + ('grade', models.CharField(choices=[(b'A', b'A: Large obvious lead'), (b'B', b'B: Average lead'), (b'C', b'C: Tight unpromising lead'), (b'D', b'D: Dig'), (b'X', b'X: Unclimbable aven')], max_length=1)), + ('location_description', models.TextField(blank=True)), + ('nearest_station_description', models.CharField(blank=True, max_length=400, null=True)), + ('nearest_station_name', models.CharField(blank=True, max_length=200, null=True)), + ('area', models.CharField(blank=True, max_length=100, null=True)), + ('completion_description', models.TextField(blank=True, null=True)), + ('comment', models.TextField(blank=True, null=True)), + ('found_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='QMs_found', to='core.LogbookEntry')), + ], + options={ + 'abstract': False, + }, + ), + migrations.CreateModel( + name='ScannedImage', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('new_since_parsing', models.BooleanField(default=False, editable=False)), + ('file', models.ImageField(storage=django.core.files.storage.FileSystemStorage(base_url=b'/survey_scans/', location=b'/expo/expofiles/'), upload_to=troggle.core.models.get_scan_path)), + ('scanned_on', models.DateField(null=True)), + ('contents', models.CharField(choices=[(b'notes', b'notes'), (b'plan', b'plan_sketch'), (b'elevation', b'elevation_sketch')], max_length=20)), + ('number_in_wallet', models.IntegerField(null=True)), + ('lon_utm', models.FloatField(blank=True, null=True)), + ('lat_utm', models.FloatField(blank=True, null=True)), + ('scanned_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='core.Person')), + ], + options={ + 'abstract': False, + }, + ), + migrations.CreateModel( + name='SurvexBlock', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=100)), + ('text', models.TextField()), + ('date', models.DateTimeField(blank=True, null=True)), + ('begin_char', models.IntegerField()), + ('survexpath', models.CharField(max_length=200)), + ('totalleglength', models.FloatField()), + ('cave', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='core.Cave')), + ('expedition', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='core.Expedition')), + ('expeditionday', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='core.ExpeditionDay')), + ('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='core.SurvexBlock')), + ], + options={ + 'ordering': ('id',), + }, + ), + migrations.CreateModel( + name='SurvexDirectory', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('path', models.CharField(max_length=200)), + ('cave', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='core.Cave')), + ], + options={ + 'ordering': ('path',), + }, + ), + migrations.CreateModel( + name='SurvexEquate', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('cave', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='core.Cave')), + ], + ), + migrations.CreateModel( + name='SurvexFile', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('path', models.CharField(max_length=200)), + ('cave', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='core.Cave')), + ('survexdirectory', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='core.SurvexDirectory')), + ], + options={ + 'ordering': ('id',), + }, + ), + migrations.CreateModel( + name='SurvexLeg', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('tape', models.FloatField()), + ('compass', models.FloatField()), + ('clino', models.FloatField()), + ('block', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.SurvexBlock')), + ], + ), + migrations.CreateModel( + name='SurvexPersonRole', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('nrole', models.CharField(blank=True, choices=[(b'insts', b'Instruments'), (b'dog', b'Other'), (b'notes', b'Notes'), (b'pics', b'Pictures'), (b'tape', b'Tape measure'), (b'useless', b'Useless'), (b'helper', b'Helper'), (b'disto', b'Disto'), (b'consultant', b'Consultant')], max_length=200, null=True)), + ('personname', models.CharField(max_length=100)), + ('expeditionday', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='core.ExpeditionDay')), + ('person', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='core.Person')), + ('personexpedition', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='core.PersonExpedition')), + ('persontrip', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='core.PersonTrip')), + ('survexblock', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.SurvexBlock')), + ], + ), + migrations.CreateModel( + name='SurvexScansFolder', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('fpath', models.CharField(max_length=200)), + ('walletname', models.CharField(max_length=200)), + ], + options={ + 'ordering': ('walletname',), + }, + ), + migrations.CreateModel( + name='SurvexScanSingle', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('ffile', models.CharField(max_length=200)), + ('name', models.CharField(max_length=200)), + ('survexscansfolder', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='core.SurvexScansFolder')), + ], + options={ + 'ordering': ('name',), + }, + ), + migrations.CreateModel( + name='SurvexStation', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=100)), + ('x', models.FloatField(blank=True, null=True)), + ('y', models.FloatField(blank=True, null=True)), + ('z', models.FloatField(blank=True, null=True)), + ('block', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.SurvexBlock')), + ('equate', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='core.SurvexEquate')), + ], + ), + migrations.CreateModel( + name='SurvexTitle', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=200)), + ('cave', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='core.Cave')), + ('survexblock', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.SurvexBlock')), + ], + ), + migrations.CreateModel( + name='Survey', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('new_since_parsing', models.BooleanField(default=False, editable=False)), + ('non_public', models.BooleanField(default=False)), + ('wallet_number', models.IntegerField(blank=True, null=True)), + ('wallet_letter', models.CharField(blank=True, max_length=1, null=True)), + ('comments', models.TextField(blank=True, null=True)), + ('location', models.CharField(blank=True, max_length=400, null=True)), + ('centreline_printed_on', models.DateField(blank=True, null=True)), + ('tunnel_file', models.FileField(blank=True, null=True, upload_to=b'surveyXMLfiles')), + ('integrated_into_main_sketch_on', models.DateField(blank=True, null=True)), + ('rendered_image', models.ImageField(blank=True, null=True, upload_to=b'renderedSurveys')), + ('centreline_printed_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='centreline_printed_by', to='core.Person')), + ('expedition', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Expedition')), + ('integrated_into_main_sketch_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='integrated_into_main_sketch_by', to='core.Person')), + ('logbook_entry', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.LogbookEntry')), + ('subcave', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='core.NewSubCave')), + ('survex_block', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='core.SurvexBlock')), + ('tunnel_main_sketch', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='core.Survey')), + ], + options={ + 'abstract': False, + }, + ), + migrations.CreateModel( + name='TunnelFile', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('tunnelpath', models.CharField(max_length=200)), + ('tunnelname', models.CharField(max_length=200)), + ('bfontcolours', models.BooleanField(default=False)), + ('filesize', models.IntegerField(default=0)), + ('npaths', models.IntegerField(default=0)), + ('survexblocks', models.ManyToManyField(to='core.SurvexBlock')), + ('survexscans', models.ManyToManyField(to='core.SurvexScanSingle')), + ('survexscansfolders', models.ManyToManyField(to='core.SurvexScansFolder')), + ('survextitles', models.ManyToManyField(to='core.SurvexTitle')), + ('tunnelcontains', models.ManyToManyField(to='core.TunnelFile')), + ], + options={ + 'ordering': ('tunnelpath',), + }, + ), + migrations.AddField( + model_name='survexleg', + name='stationfrom', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='stationfrom', to='core.SurvexStation'), + ), + migrations.AddField( + model_name='survexleg', + name='stationto', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='stationto', to='core.SurvexStation'), + ), + migrations.AddField( + model_name='survexdirectory', + name='primarysurvexfile', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='primarysurvexfile', to='core.SurvexFile'), + ), + migrations.AddField( + model_name='survexblock', + name='survexfile', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='core.SurvexFile'), + ), + migrations.AddField( + model_name='survexblock', + name='survexscansfolder', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='core.SurvexScansFolder'), + ), + migrations.AddField( + model_name='scannedimage', + name='survey', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Survey'), + ), + migrations.AddField( + model_name='qm', + name='nearest_station', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='core.SurvexStation'), + ), + migrations.AddField( + model_name='qm', + name='ticked_off_by', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='QMs_ticked_off', to='core.LogbookEntry'), + ), + migrations.AddField( + model_name='dphoto', + name='contains_entrance', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='photo_file', to='core.Entrance'), + ), + migrations.AddField( + model_name='dphoto', + name='contains_logbookentry', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='core.LogbookEntry'), + ), + migrations.AddField( + model_name='dphoto', + name='contains_person', + field=models.ManyToManyField(blank=True, to='core.Person'), + ), + migrations.AddField( + model_name='dphoto', + name='nearest_QM', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='core.QM'), + ), + migrations.AddField( + model_name='cavedescription', + name='linked_entrances', + field=models.ManyToManyField(blank=True, to='core.Entrance'), + ), + migrations.AddField( + model_name='cavedescription', + name='linked_qms', + field=models.ManyToManyField(blank=True, to='core.QM'), + ), + migrations.AddField( + model_name='cavedescription', + name='linked_subcaves', + field=models.ManyToManyField(blank=True, to='core.NewSubCave'), + ), + migrations.AddField( + model_name='caveandentrance', + name='entrance', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Entrance'), + ), + ] diff --git a/core/migrations/__init__.py b/core/migrations/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/core/migrations/__init__.py diff --git a/core/views_caves.py b/core/views_caves.py index 6dab34a..5ee0d82 100644 --- a/core/views_caves.py +++ b/core/views_caves.py @@ -29,7 +29,7 @@ def getCave(cave_id): return cave def pad5(x): - return "0" * (5 -len(x.group(0))) + x.group(0) + return "0" * (5 -len(x.group(0))) + x.group(0) def padnumber(x): return re.sub("\d+", pad5, x) def numericalcmp(x, y): @@ -46,7 +46,7 @@ def caveCmp(x, y): else: if y.kataster_number: return 1 - else: + else: return numericalcmp(x.unofficial_number, y.unofficial_number) def caveindex(request): @@ -62,7 +62,6 @@ def caveindex(request): def millenialcaves(request): #RW messing around area return HttpResponse("Test text", content_type="text/plain") - def cave3d(request, cave_id=''): @@ -154,14 +153,14 @@ def edit_cave(request, slug=None): ceinst.cave = cave ceinst.save() cave.writeDataFile() - return HttpResponseRedirect("/" + cave.url) + return HttpResponseRedirect("/" + cave.url) else: form = CaveForm(instance=cave) ceFormSet = CaveAndEntranceFormSet(queryset=cave.caveandentrance_set.all()) versionControlForm = VersionControlCommentForm() - - return render(request, - 'editcave2.html', + + return render(request, + 'editcave2.html', {'form': form, 'caveAndEntranceFormSet': ceFormSet, 'versionControlForm': versionControlForm @@ -169,7 +168,7 @@ def edit_cave(request, slug=None): @login_required_if_public def editEntrance(request, caveslug, slug=None): - cave = Cave.objects.get(caveslug__slug = caveslug) + cave = Cave.objects.get(caveslug__slug = caveslug) if slug is not None: entrance = Entrance.objects.get(entranceslug__slug = slug) else: @@ -196,7 +195,7 @@ def editEntrance(request, caveslug, slug=None): el.entrance = entrance el.save() entrance.writeDataFile() - return HttpResponseRedirect("/" + cave.url) + return HttpResponseRedirect("/" + cave.url) else: form = EntranceForm(instance = entrance) versionControlForm = VersionControlCommentForm() @@ -204,8 +203,8 @@ def editEntrance(request, caveslug, slug=None): entletter = EntranceLetterForm(request.POST) else: entletter = None - return render(request, - 'editentrance.html', + return render(request, + 'editentrance.html', {'form': form, 'versionControlForm': versionControlForm, 'entletter': entletter @@ -221,9 +220,8 @@ def qm(request,qm_id): if grade: url += r'&grade=' + grade return HttpResponseRedirect(url) - - + def ent(request, cave_id, ent_letter): cave = Cave.objects.filter(kataster_number = cave_id)[0] cave_and_ent = CaveAndEntrance.objects.filter(cave = cave).filter(entrance_letter = ent_letter)[0] @@ -255,7 +253,7 @@ def survey(request,year,wallet_number): surveys=Survey.objects.all() expeditions=Expedition.objects.order_by("-year") current_expedition=Expedition.objects.filter(year=year)[0] - + if wallet_number!='': current_survey=Survey.objects.filter(expedition=current_expedition,wallet_number=wallet_number)[0] notes=current_survey.scannedimage_set.filter(contents='notes') @@ -313,7 +311,7 @@ def prospecting(request): caves.sort(caveCmp) areas.append((name, a, caves)) return render(request, 'prospecting.html', {"areas": areas}) - + # Parameters for big map and zoomed subarea maps: # big map first (zoom factor ignored) @@ -343,7 +341,7 @@ for n in maps.keys(): for j in range(2): maps["%s%i%i" % (n, i, j)] = [L + i * W, T - j * H, L + (i + 1) * W, T - (j + 1) * H, S, name] # Keys in the order in which we want the maps output -mapcodes = ["all", "grieß","40", "76", "204", "tc"] +mapcodes = ["all", "grieß","40", "76", "204", "tc"] # Field codes L = 0 T = 1 @@ -400,7 +398,7 @@ def mungecoord(x, y, mapcode, img): COL_TYPES = {True: "red", False: "#dddddd", "Reference": "#dddddd"} - + def plot(surveypoint, number, point_type, label, mapcode, draw, img): try: ss = SurvexStation.objects.lookup(surveypoint) @@ -509,8 +507,8 @@ def prospecting_image(request, name): del draw img.save(response, "PNG") return response - -STATIONS = {} + +STATIONS = {} poslineregex = re.compile("^\(\s*([+-]?\d*\.\d*),\s*([+-]?\d*\.\d*),\s*([+-]?\d*\.\d*)\s*\)\s*([^\s]+)$") def LoadPos(): call([settings.CAVERN, "--output=%s/all.3d" % settings.SURVEX_DATA, "%s/all.svx" % settings.SURVEX_DATA]) @@ -518,7 +516,7 @@ def LoadPos(): posfile = open("%sall.pos" % settings.SURVEX_DATA) posfile.readline()#Drop header for line in posfile.readlines(): - r = poslineregex.match(line) + r = poslineregex.match(line) if r: x, y, z, name = r.groups() STATIONS[name] = (x, y, z) |