<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Handbook Troggle Data Model</title>
<link rel="stylesheet" type="text/css" href="../../css/main2.css" />
</head>
<body><style>body { background: #fff url(/images/style/bg-system.png) repeat-x 0 0 }</style>
<h2 id="tophead">CUCC Expedition Handbook - troggle</h2>
<h1>Troggle Data Model (python)</h1>

<h3>Troggle data architecture</h3>
Auto-generated on 3 April 2020. (Omitting all the 'Meta' sub-classes.)<code><pre><span style="color: green">
# This is an auto-generated Django model module.
# You'll have to do the following manually to clean this up:
#   * Rearrange models' order
#   * Make sure each model has one field with primary_key=True
#   * Remove `managed = False` lines if you wish to allow Django to create, modify, and delete the table
# Feel free to rename the models, but don't rename db_table values or field names.
#
# Also note: You'll have to insert the output of 'django-admin.py sqlcustom [app_label]'
# into your database.</span>

from __future__ import unicode_literals
from django.db import models


<span style="color: lime">class</span> <span style="color:blue"><b>CoreArea</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    new_since_parsing = models.BooleanField()
    non_public = models.BooleanField()
    short_name = models.CharField(max_length=100)
    name = models.CharField(max_length=200, blank=True)
    description = models.TextField(blank=True)
    <span style="color:blue">parent</span> = models.<span style="color:blue">ForeignKey</span> ('self', blank=True, null=True)


<span style="color: lime">class</span> <span style="color:blue"><b>CoreCave</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    new_since_parsing = models.BooleanField()
    non_public = models.BooleanField()
    official_name = models.CharField(max_length=160)
    kataster_code = models.CharField(max_length=20, blank=True)
    kataster_number = models.CharField(max_length=10, blank=True)
    unofficial_number = models.CharField(max_length=60, blank=True)
    explorers = models.TextField(blank=True)
    underground_description = models.TextField(blank=True)
    equipment = models.TextField(blank=True)
    references = models.TextField(blank=True)
    survey = models.TextField(blank=True)
    kataster_status = models.TextField(blank=True)
    underground_centre_line = models.TextField(blank=True)
    notes = models.TextField(blank=True)
    length = models.CharField(max_length=100, blank=True)
    depth = models.CharField(max_length=100, blank=True)
    extent = models.CharField(max_length=100, blank=True)
    survex_file = models.CharField(max_length=100, blank=True)
    description_file = models.CharField(max_length=200, blank=True)
    url = models.CharField(max_length=200, blank=True)
    filename = models.CharField(max_length=200)


<span style="color: lime">class</span> <span style="color:blue"><b>CoreCaveArea</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    cave_id = models.IntegerField()
    <span style="color:blue">area</span> = models.<span style="color:blue">ForeignKey</span> (CoreArea)


<span style="color: lime">class</span> <span style="color:blue"><b>CoreCaveandentrance</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    cave_id = models.IntegerField()
    entrance_id = models.IntegerField()
    entrance_letter = models.CharField(max_length=20, blank=True)


<span style="color: lime">class</span> <span style="color:blue"><b>CoreCavedescription</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    new_since_parsing = models.BooleanField()
    non_public = models.BooleanField()
    short_name = models.CharField(unique=True, max_length=50)
    long_name = models.CharField(max_length=200, blank=True)
    description = models.TextField(blank=True)


<span style="color: lime">class</span> <span style="color:blue"><b>CoreCavedescriptionLinkedEntrances</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    cavedescription_id = models.IntegerField()
    <span style="color:blue">entrance</span> = models.<span style="color:blue">ForeignKey</span> ('CoreEntrance')


<span style="color: lime">class</span> <span style="color:blue"><b>CoreCavedescriptionLinkedQms</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    cavedescription_id = models.IntegerField()
    qm_id = models.IntegerField()


<span style="color: lime">class</span> <span style="color:blue"><b>CoreCavedescriptionLinkedSubcaves</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    cavedescription_id = models.IntegerField()
    newsubcave_id = models.IntegerField()


<span style="color: lime">class</span> <span style="color:blue"><b>CoreCaveslug</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    cave_id = models.IntegerField()
    slug = models.CharField(unique=True, max_length=50)
    primary = models.BooleanField()


<span style="color: lime">class</span> <span style="color:blue"><b>CoreDataissue</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    new_since_parsing = models.BooleanField()
    non_public = models.BooleanField()
    date = models.DateTimeField()
    parser = models.CharField(max_length=50, blank=True)
    message = models.CharField(max_length=400, blank=True)


<span style="color: lime">class</span> <span style="color:blue"><b>CoreDphoto</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    new_since_parsing = models.BooleanField()
    caption = models.CharField(max_length=1000, blank=True)
    <span style="color:blue">contains_logbookentry</span> = models.<span style="color:blue">ForeignKey</span> ('CoreLogbookentry', blank=True, null=True)
    file = models.CharField(max_length=100)
    is_mugshot = models.BooleanField()
    <span style="color:blue">contains_cave</span> = models.<span style="color:blue">ForeignKey</span> (CoreCave, blank=True, null=True)
    <span style="color:blue">contains_entrance</span> = models.<span style="color:blue">ForeignKey</span> ('CoreEntrance', blank=True, null=True)
    <span style="color:blue">nearest_qm</span> = models.<span style="color:blue">ForeignKey</span> ('CoreQm', db_column='nearest_QM_id', blank=True, null=True)  <span style="color: green"># Field name made lowercase.</span> 
    lon_utm = models.FloatField(blank=True, null=True)
    lat_utm = models.FloatField(blank=True, null=True)


<span style="color: lime">class</span> <span style="color:blue"><b>CoreDphotoContainsPerson</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    dphoto_id = models.IntegerField()
    <span style="color:blue">person</span> = models.<span style="color:blue">ForeignKey</span> ('CorePerson')


<span style="color: lime">class</span> <span style="color:blue"><b>CoreEntrance</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    new_since_parsing = models.BooleanField()
    non_public = models.BooleanField()
    name = models.CharField(max_length=100, blank=True)
    entrance_description = models.TextField(blank=True)
    explorers = models.TextField(blank=True)
    map_description = models.TextField(blank=True)
    location_description = models.TextField(blank=True)
    approach = models.TextField(blank=True)
    underground_description = models.TextField(blank=True)
    photo = models.TextField(blank=True)
    marking = models.CharField(max_length=2)
    marking_comment = models.TextField(blank=True)
    findability = models.CharField(max_length=1, blank=True)
    findability_description = models.TextField(blank=True)
    alt = models.TextField(blank=True)
    northing = models.TextField(blank=True)
    easting = models.TextField(blank=True)
    tag_station = models.TextField(blank=True)
    exact_station = models.TextField(blank=True)
    other_station = models.TextField(blank=True)
    other_description = models.TextField(blank=True)
    bearings = models.TextField(blank=True)
    url = models.CharField(max_length=200, blank=True)
    filename = models.CharField(max_length=200)
    cached_primary_slug = models.CharField(max_length=200, blank=True)


<span style="color: lime">class</span> <span style="color:blue"><b>CoreEntranceslug</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    entrance_id = models.IntegerField()
    slug = models.CharField(unique=True, max_length=50)
    primary = models.BooleanField()


<span style="color: lime">class</span> <span style="color:blue"><b>CoreExpedition</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    new_since_parsing = models.BooleanField()
    non_public = models.BooleanField()
    year = models.CharField(unique=True, max_length=20)
    name = models.CharField(max_length=100)


<span style="color: lime">class</span> <span style="color:blue"><b>CoreExpeditionday</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    new_since_parsing = models.BooleanField()
    non_public = models.BooleanField()
    <span style="color:blue">expedition</span> = models.<span style="color:blue">ForeignKey</span> (CoreExpedition)
    date = models.DateField()


<span style="color: lime">class</span> <span style="color:blue"><b>CoreLogbookentry</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    new_since_parsing = models.BooleanField()
    non_public = models.BooleanField()
    date = models.DateField()
    <span style="color:blue">expeditionday</span> = models.<span style="color:blue">ForeignKey</span> (CoreExpeditionday, blank=True, null=True)
    <span style="color:blue">expedition</span> = models.<span style="color:blue">ForeignKey</span> (CoreExpedition, blank=True, null=True)
    title = models.CharField(max_length=200)
    cave_slug = models.CharField(max_length=50)
    place = models.CharField(max_length=100, blank=True)
    text = models.TextField()
    slug = models.CharField(max_length=50)
    filename = models.CharField(max_length=200, blank=True)
    entry_type = models.CharField(max_length=50, blank=True)


<span style="color: lime">class</span> <span style="color:blue"><b>CoreNewsubcave</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    new_since_parsing = models.BooleanField()
    non_public = models.BooleanField()
    name = models.CharField(unique=True, max_length=200)


<span style="color: lime">class</span> <span style="color:blue"><b>CoreOthercavename</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    new_since_parsing = models.BooleanField()
    non_public = models.BooleanField()
    name = models.CharField(max_length=160)
    <span style="color:blue">cave</span> = models.<span style="color:blue">ForeignKey</span> (CoreCave)


<span style="color: lime">class</span> <span style="color:blue"><b>CorePerson</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    new_since_parsing = models.BooleanField()
    non_public = models.BooleanField()
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    fullname = models.CharField(max_length=200)
    is_vfho = models.BooleanField()
    mug_shot = models.CharField(max_length=100, blank=True)
    blurb = models.TextField(blank=True)
    orderref = models.CharField(max_length=200)
    user_id = models.IntegerField(unique=True, blank=True, null=True)


<span style="color: lime">class</span> <span style="color:blue"><b>CorePersonexpedition</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    new_since_parsing = models.BooleanField()
    non_public = models.BooleanField()
    <span style="color:blue">expedition</span> = models.<span style="color:blue">ForeignKey</span> (CoreExpedition)
    <span style="color:blue">person</span> = models.<span style="color:blue">ForeignKey</span> (CorePerson)
    slugfield = models.CharField(max_length=50, blank=True)
    is_guest = models.BooleanField()
    expo_committee_position = models.CharField(max_length=200, blank=True)
    nickname = models.CharField(max_length=100, blank=True)


<span style="color: lime">class</span> <span style="color:blue"><b>CorePersontrip</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    new_since_parsing = models.BooleanField()
    non_public = models.BooleanField()
    <span style="color:blue">personexpedition</span> = models.<span style="color:blue">ForeignKey</span> (CorePersonexpedition, blank=True, null=True)
    time_underground = models.FloatField()
    <span style="color:blue">logbook_entry</span> = models.<span style="color:blue">ForeignKey</span> (CoreLogbookentry)
    is_logbook_entry_author = models.BooleanField()


<span style="color: lime">class</span> <span style="color:blue"><b>CoreQm</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    new_since_parsing = models.BooleanField()
    non_public = models.BooleanField()
    <span style="color:blue">found_by</span> = models.<span style="color:blue">ForeignKey</span> (CoreLogbookentry, blank=True, null=True)
    <span style="color:blue">ticked_off_by</span> = models.<span style="color:blue">ForeignKey</span> (CoreLogbookentry, blank=True, null=True)
    number = models.IntegerField()
    grade = models.CharField(max_length=1)
    location_description = models.TextField()
    nearest_station_description = models.CharField(max_length=400, blank=True)
    nearest_station_name = models.CharField(max_length=200, blank=True)
    <span style="color:blue">nearest_station</span> = models.<span style="color:blue">ForeignKey</span> ('CoreSurvexstation', blank=True, null=True)
    area = models.CharField(max_length=100, blank=True)
    completion_description = models.TextField(blank=True)
    comment = models.TextField(blank=True)


<span style="color: lime">class</span> <span style="color:blue"><b>CoreScannedimage</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    new_since_parsing = models.BooleanField()
    file = models.CharField(max_length=100)
    <span style="color:blue">scanned_by</span> = models.<span style="color:blue">ForeignKey</span> (CorePerson, blank=True, null=True)
    scanned_on = models.DateField(blank=True, null=True)
    survey_id = models.IntegerField()
    contents = models.CharField(max_length=20)
    number_in_wallet = models.IntegerField(blank=True, null=True)
    lon_utm = models.FloatField(blank=True, null=True)
    lat_utm = models.FloatField(blank=True, null=True)


<span style="color: lime">class</span> <span style="color:blue"><b>CoreSurvexblock</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    name = models.CharField(max_length=100)
    <span style="color:blue">parent</span> = models.<span style="color:blue">ForeignKey</span> ('self', blank=True, null=True)
    text = models.TextField()
    cave_id = models.IntegerField(blank=True, null=True)
    date = models.DateField(blank=True, null=True)
    expeditionday_id = models.IntegerField(blank=True, null=True)
    expedition_id = models.IntegerField(blank=True, null=True)
    <span style="color:blue">survexfile</span> = models.<span style="color:blue">ForeignKey</span> ('CoreSurvexfile', blank=True, null=True)
    begin_char = models.IntegerField()
    survexpath = models.CharField(max_length=200)
    survexscansfolder_id = models.IntegerField(blank=True, null=True)
    totalleglength = models.FloatField()


<span style="color: lime">class</span> <span style="color:blue"><b>CoreSurvexdirectory</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    path = models.CharField(max_length=200)
    cave_id = models.IntegerField(blank=True, null=True)
    primarysurvexfile_id = models.IntegerField(blank=True, null=True)


<span style="color: lime">class</span> <span style="color:blue"><b>CoreSurvexequate</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    cave_id = models.IntegerField(blank=True, null=True)


<span style="color: lime">class</span> <span style="color:blue"><b>CoreSurvexfile</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    path = models.CharField(max_length=200)
    <span style="color:blue">survexdirectory</span> = models.<span style="color:blue">ForeignKey</span> (CoreSurvexdirectory, blank=True, null=True)
    cave_id = models.IntegerField(blank=True, null=True)


<span style="color: lime">class</span> <span style="color:blue"><b>CoreSurvexleg</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    block_id = models.IntegerField()
    <span style="color:blue">stationfrom</span> = models.<span style="color:blue">ForeignKey</span> ('CoreSurvexstation')
    <span style="color:blue">stationto</span> = models.<span style="color:blue">ForeignKey</span> ('CoreSurvexstation')
    tape = models.FloatField()
    compass = models.FloatField()
    clino = models.FloatField()


<span style="color: lime">class</span> <span style="color:blue"><b>CoreSurvexpersonrole</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    <span style="color:blue">survexblock</span> = models.<span style="color:blue">ForeignKey</span> (CoreSurvexblock)
    nrole = models.CharField(max_length=200, blank=True)
    personname = models.CharField(max_length=100)
    person_id = models.IntegerField(blank=True, null=True)
    personexpedition_id = models.IntegerField(blank=True, null=True)
    persontrip_id = models.IntegerField(blank=True, null=True)
    expeditionday_id = models.IntegerField(blank=True, null=True)


<span style="color: lime">class</span> <span style="color:blue"><b>CoreSurvexscansfolder</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    fpath = models.CharField(max_length=200)
    walletname = models.CharField(max_length=200)


<span style="color: lime">class</span> <span style="color:blue"><b>CoreSurvexscansingle</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    ffile = models.CharField(max_length=200)
    name = models.CharField(max_length=200)
    <span style="color:blue">survexscansfolder</span> = models.<span style="color:blue">ForeignKey</span> (CoreSurvexscansfolder, blank=True, null=True)


<span style="color: lime">class</span> <span style="color:blue"><b>CoreSurvexstation</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    name = models.CharField(max_length=100)
    block_id = models.IntegerField()
    <span style="color:blue">equate</span> = models.<span style="color:blue">ForeignKey</span> (CoreSurvexequate, blank=True, null=True)
    x = models.FloatField(blank=True, null=True)
    y = models.FloatField(blank=True, null=True)
    z = models.FloatField(blank=True, null=True)


<span style="color: lime">class</span> <span style="color:blue"><b>CoreSurvextitle</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    <span style="color:blue">survexblock</span> = models.<span style="color:blue">ForeignKey</span> (CoreSurvexblock)
    title = models.CharField(max_length=200)
    cave_id = models.IntegerField(blank=True, null=True)


<span style="color: lime">class</span> <span style="color:blue"><b>CoreSurvey</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    new_since_parsing = models.BooleanField()
    non_public = models.BooleanField()
    <span style="color:blue">expedition</span> = models.<span style="color:blue">ForeignKey</span> (CoreExpedition)
    wallet_number = models.IntegerField(blank=True, null=True)
    wallet_letter = models.CharField(max_length=1, blank=True)
    comments = models.TextField(blank=True)
    location = models.CharField(max_length=400, blank=True)
    <span style="color:blue">subcave</span> = models.<span style="color:blue">ForeignKey</span> (CoreNewsubcave, blank=True, null=True)
    <span style="color:blue">survex_block</span> = models.<span style="color:blue">ForeignKey</span> (CoreSurvexblock, unique=True, blank=True, null=True)
    <span style="color:blue">logbook_entry</span> = models.<span style="color:blue">ForeignKey</span> (CoreLogbookentry)
    centreline_printed_on = models.DateField(blank=True, null=True)
    <span style="color:blue">centreline_printed_by</span> = models.<span style="color:blue">ForeignKey</span> (CorePerson, blank=True, null=True)
    tunnel_file = models.CharField(max_length=100, blank=True)
    <span style="color:blue">tunnel_main_sketch</span> = models.<span style="color:blue">ForeignKey</span> ('self', blank=True, null=True)
    integrated_into_main_sketch_on = models.DateField(blank=True, null=True)
    <span style="color:blue">integrated_into_main_sketch_by</span> = models.<span style="color:blue">ForeignKey</span> (CorePerson, blank=True, null=True)
    rendered_image = models.CharField(max_length=100, blank=True)


<span style="color: lime">class</span> <span style="color:blue"><b>CoreTunnelfile</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    tunnelpath = models.CharField(max_length=200)
    tunnelname = models.CharField(max_length=200)
    bfontcolours = models.BooleanField()
    filesize = models.IntegerField()
    npaths = models.IntegerField()


<span style="color: lime">class</span> <span style="color:blue"><b>CoreTunnelfileSurvexblocks</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    tunnelfile_id = models.IntegerField()
    <span style="color:blue">survexblock</span> = models.<span style="color:blue">ForeignKey</span> (CoreSurvexblock)


<span style="color: lime">class</span> <span style="color:blue"><b>CoreTunnelfileSurvexscans</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    tunnelfile_id = models.IntegerField()
    <span style="color:blue">survexscansingle</span> = models.<span style="color:blue">ForeignKey</span> (CoreSurvexscansingle)


<span style="color: lime">class</span> <span style="color:blue"><b>CoreTunnelfileSurvexscansfolders</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    tunnelfile_id = models.IntegerField()
    <span style="color:blue">survexscansfolder</span> = models.<span style="color:blue">ForeignKey</span> (CoreSurvexscansfolder)


<span style="color: lime">class</span> <span style="color:blue"><b>CoreTunnelfileSurvextitles</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    tunnelfile_id = models.IntegerField()
    <span style="color:blue">survextitle</span> = models.<span style="color:blue">ForeignKey</span> (CoreSurvextitle)


<span style="color: lime">class</span> <span style="color:blue"><b>CoreTunnelfileTunnelcontains</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    from_tunnelfile_id = models.IntegerField()
    to_tunnelfile_id = models.IntegerField()


<span style="color: lime">class</span> <span style="color:blue"><b>DjangoAdminLog</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    action_time = models.DateTimeField()
    object_id = models.TextField(blank=True)
    object_repr = models.CharField(max_length=200)
    action_flag = models.PositiveSmallIntegerField()
    change_message = models.TextField()
    <span style="color:blue">content_type</span> = models.<span style="color:blue">ForeignKey</span> ('DjangoContentType', blank=True, null=True)
    <span style="color:blue">user</span> = models.<span style="color:blue">ForeignKey</span> (AuthUser)


<span style="color: lime">class</span> <span style="color:blue"><b>DjangoContentType</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    name = models.CharField(max_length=100)
    app_label = models.CharField(max_length=100)
    model = models.CharField(max_length=100)


<span style="color: lime">class</span> <span style="color:blue"><b>DjangoMigrations</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    app = models.CharField(max_length=255)
    name = models.CharField(max_length=255)
    applied = models.DateTimeField()


<span style="color: lime">class</span> <span style="color:blue"><b>DjangoRedirect</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    <span style="color:blue">site</span> = models.<span style="color:blue">ForeignKey</span> ('DjangoSite')
    old_path = models.CharField(max_length=200)
    new_path = models.CharField(max_length=200)


<span style="color: lime">class</span> <span style="color:blue"><b>DjangoSession</b></span>(models.Model):
    session_key = models.CharField(<span style="color: magenta">primary_key</span> =True, max_length=40)
    session_data = models.TextField()
    expire_date = models.DateTimeField()


<span style="color: lime">class</span> <span style="color:blue"><b>DjangoSite</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    domain = models.CharField(max_length=100)
    name = models.CharField(max_length=50)


<span style="color: lime">class</span> <span style="color:blue"><b>FlatpagesEntranceredirect</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    originalurl = models.CharField(db_column='originalURL', max_length=200)  <span style="color: green"># Field name made lowercase.</span> 
    <span style="color:blue">entrance</span> = models.<span style="color:blue">ForeignKey</span> (CoreEntrance)


<span style="color: lime">class</span> <span style="color:blue"><b>FlatpagesRedirect</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    originalurl = models.CharField(db_column='originalURL', unique=True, max_length=200)  <span style="color: green"># Field name made lowercase.</span> 
    newurl = models.CharField(db_column='newURL', max_length=200)  <span style="color: green"># Field name made lowercase.</span> 


<span style="color: lime">class</span> <span style="color:blue"><b>RegistrationRegistrationprofile</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    activation_key = models.CharField(max_length=40)
    <span style="color:blue">user</span> = models.<span style="color:blue">ForeignKey</span> (AuthUser, unique=True)


<span style="color: lime">class</span> <span style="color:blue"><b>AuthGroup</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    name = models.CharField(unique=True, max_length=80)


<span style="color: lime">class</span> <span style="color:blue"><b>AuthGroupPermissions</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    <span style="color:blue">group</span> = models.<span style="color:blue">ForeignKey</span>(AuthGroup)
    <span style="color:blue"><span style="color:blue">permission</span></span> = models.<span style="color:blue">ForeignKey</span>('AuthPermission')


<span style="color: lime">class</span> <span style="color:blue"><b>AuthPermission</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    name = models.CharField(max_length=50)
    <span style="color:blue">content_type</span> = models.<span style="color:blue">ForeignKey</span>('DjangoContentType')
    codename = models.CharField(max_length=100)


<span style="color: lime">class</span> <span style="color:blue"><b>AuthUser</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    password = models.CharField(max_length=128)
    last_login = models.DateTimeField()
    is_superuser = models.BooleanField()
    username = models.CharField(unique=True, max_length=30)
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)
    email = models.CharField(max_length=75)
    is_staff = models.BooleanField()
    is_active = models.BooleanField()
    date_joined = models.DateTimeField()


<span style="color: lime">class</span> <span style="color:blue"><b>AuthUserGroups</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    <span style="color:blue">user</span> = models.<span style="color:blue">ForeignKey</span> (AuthUser)
    <span style="color:blue">group</span> = models.<span style="color:blue">ForeignKey</span> (AuthGroup)


<span style="color: lime">class</span> <span style="color:blue"><b>AuthUserUserPermissions</b></span>(models.Model):
    id = models.IntegerField(<span style="color: magenta">primary_key</span> =True)  <span style="color: green"># AutoField?</span> 
    <span style="color:blue">user</span> = models.<span style="color:blue">ForeignKey</span> (AuthUser)
    <span style="color:blue">permission</span> = models.<span style="color:blue">ForeignKey</span> (AuthPermission)


</pre></code>
<hr />
Return to: <a href="trogarch.html">Troggle architecture</a><br />
<hr />
</body>
</html>