Difference between revisions of "TruxtonLocation"

From truxwiki.com
Jump to navigation Jump to search
Line 1: Line 1:
This class lets you add to the [[Location Table | Location]] table in Truxton.
+
This class lets you add to the <code><nowiki>[</nowiki>[[Location Table|Location]]<nowiki>]</nowiki></code> table in Truxton.
 
=Attributes and Methods=
 
=Attributes and Methods=
  
Line 7: Line 7:
 
==<code>fileid</code>==
 
==<code>fileid</code>==
 
The [https://en.wikipedia.org/wiki/Universally_unique_identifier GUID] of the file this location came from.
 
The [https://en.wikipedia.org/wiki/Universally_unique_identifier GUID] of the file this location came from.
This corresponds to the <code>FileID</code> column of the [[Location Table | <code>Location</code>]] table.
+
This corresponds to the <code>[FileID]</code> column of the <code><nowiki>[</nowiki>[[Location Table|Location]]<nowiki>]</nowiki></code> table.
  
 
==<code>id</code>==
 
==<code>id</code>==
 
This is the [https://en.wikipedia.org/wiki/Universally_unique_identifier GUID] of the record.
 
This is the [https://en.wikipedia.org/wiki/Universally_unique_identifier GUID] of the record.
 
It becomes non-zero after <code>save()</code> has been called.
 
It becomes non-zero after <code>save()</code> has been called.
This corresponds to the <code>ID</code> column of the [[Location Table | <code>Location</code>]] table.
+
This corresponds to the <code>[ID]</code> column of the <code><nowiki>[</nowiki>[[Location Table|Location]]<nowiki>]</nowiki></code> table.
  
 
==<code>label</code>==
 
==<code>label</code>==
 
The short label for this location.
 
The short label for this location.
This corresponds to the <code>Label</code> column of the [[Location Table | <code>Location</code>]] table.
+
This corresponds to the <code>[Label]</code> column of the <code><nowiki>[</nowiki>[[Location Table|Location]]<nowiki>]</nowiki></code> table.
  
 
==<code>latitude</code>==
 
==<code>latitude</code>==
 
The [https://en.wikipedia.org/wiki/Latitude latitude] portion of the geographic coordinate using the [https://en.wikipedia.org/wiki/World_Geodetic_System#WGS84 WGS84] ellipsoid.
 
The [https://en.wikipedia.org/wiki/Latitude latitude] portion of the geographic coordinate using the [https://en.wikipedia.org/wiki/World_Geodetic_System#WGS84 WGS84] ellipsoid.
 +
This corresponds to the <code>[Latitude]</code> column of the <code><nowiki>[</nowiki>[[Location Table|Location]]<nowiki>]</nowiki></code> table.
  
 
==<code>longitude</code>==
 
==<code>longitude</code>==
 
The [https://en.wikipedia.org/wiki/Longitude longitude] portion of the geographic coordinate using the [https://en.wikipedia.org/wiki/World_Geodetic_System#WGS84 WGS84] ellipsoid.
 
The [https://en.wikipedia.org/wiki/Longitude longitude] portion of the geographic coordinate using the [https://en.wikipedia.org/wiki/World_Geodetic_System#WGS84 WGS84] ellipsoid.
 
Many thanks go to [https://en.wikipedia.org/wiki/John_Harrison John Harrison] for his work.
 
Many thanks go to [https://en.wikipedia.org/wiki/John_Harrison John Harrison] for his work.
 +
This corresponds to the <code>[Longitude]</code> column of the <code><nowiki>[</nowiki>[[Location Table|Location]]<nowiki>]</nowiki></code> table.
  
 
==<code>mediaid</code>==
 
==<code>mediaid</code>==
 
This is the [https://en.wikipedia.org/wiki/Universally_unique_identifier GUID] of the media this location came from.
 
This is the [https://en.wikipedia.org/wiki/Universally_unique_identifier GUID] of the media this location came from.
This corresponds to the <code>MediaID</code> column of the [[Location Table | <code>Location</code>]] table.
+
This corresponds to the <code>[MediaID]</code> column of the <code><nowiki>[</nowiki>[[Location Table|Location]]<nowiki>]</nowiki></code> table.
  
 
==<code>save()</code>==
 
==<code>save()</code>==
This will commit the information to the [[Location Table | <code>Location</code>]] table.
+
This will commit the information to the <code><nowiki>[</nowiki>[[Location Table|Location]]<nowiki>]</nowiki></code> table.
 
It will return [https://docs.python.org/3/library/constants.html#True True] if the record was saved to the database, [https://docs.python.org/3/library/constants.html#False False] if there was an error.
 
It will return [https://docs.python.org/3/library/constants.html#True True] if the record was saved to the database, [https://docs.python.org/3/library/constants.html#False False] if there was an error.
  
Line 43: Line 45:
 
==<code>type</code>==
 
==<code>type</code>==
 
The type of the location.
 
The type of the location.
This corresponds to the <code>LocationTypeID</code> column of the [[Location Table | <code>Location</code>]] table.
+
This corresponds to the <code>[LocationTypeID]</code> column of the <code><nowiki>[</nowiki>[[Location Table|Location]]<nowiki>]</nowiki></code> table.
It must be a value listed in the <code>ID</code> column of the <code>LocationType</code> table.
+
It must be a value listed in the <code>ID</code> column of the <code>[LocationType]</code> table.
 
You can also use a [[Location Types | predefined constant.]]
 
You can also use a [[Location Types | predefined constant.]]
  
Line 51: Line 53:
  
 
=Sample=
 
=Sample=
 
+
<source lang="Python" highlight="41-47">
<syntaxhighlight lang="Python" highlight="41-47">
 
 
import truxton
 
import truxton
 
import shutil
 
import shutil
Line 113: Line 114:
 
if __name__ == "__main__":
 
if __name__ == "__main__":
 
   main()
 
   main()
</syntaxhighlight>
+
</source>

Revision as of 17:22, 30 November 2020

This class lets you add to the [Location] table in Truxton.

Attributes and Methods

altitude

The altitude in meters.

fileid

The GUID of the file this location came from. This corresponds to the [FileID] column of the [Location] table.

id

This is the GUID of the record. It becomes non-zero after save() has been called. This corresponds to the [ID] column of the [Location] table.

label

The short label for this location. This corresponds to the [Label] column of the [Location] table.

latitude

The latitude portion of the geographic coordinate using the WGS84 ellipsoid. This corresponds to the [Latitude] column of the [Location] table.

longitude

The longitude portion of the geographic coordinate using the WGS84 ellipsoid. Many thanks go to John Harrison for his work. This corresponds to the [Longitude] column of the [Location] table.

mediaid

This is the GUID of the media this location came from. This corresponds to the [MediaID] column of the [Location] table.

save()

This will commit the information to the [Location] table. It will return True if the record was saved to the database, False if there was an error.

tag(tag, reason, origin)

This creates a tag associated with this location in Truxton. The tag parameter is a short, one or two word, bit of text that will be displayed in the UI. The reason a sentence explaining why this location was tagged. The origin is either TAG_ORIGIN_AUTOMATIC (1) or TAG_ORIGIN_HUMAN (2). It will return True if the tag was associated with the location, False on failure.

type

The type of the location. This corresponds to the [LocationTypeID] column of the [Location] table. It must be a value listed in the ID column of the [LocationType] table. You can also use a predefined constant.

when

The time associated with this location in FILETIME ticks.

Sample

import truxton
import shutil

from datetime import datetime
from calendar import timegm
from pathlib import Path

EPOCH_AS_FILETIME = 116444736000000000
HUNDREDS_OF_NANOSECONDS = 10000000

def date_to_filetime(dt):
  return EPOCH_AS_FILETIME + (timegm(dt.timetuple()) * HUNDREDS_OF_NANOSECONDS)

def add_file(parent_truxton_file, filename):
  source_file = open(filename, "rb")
  child = parent_truxton_file.newchild()
  child.name = Path(filename).name
  shutil.copyfileobj(source_file, child)
  source_file.close()
  child.save()
  return child

def add_media(t):
  media = t.newmedia()

  media.name = "Public Documents"
  media.description = "Publicly available documents"
  media.case = "DC-SNAFU-2016.2020"
  media.evidencebag = "EV-0937459386623-a"
  media.originator = "Jeffrey Jensen"
  media.latitude = 38.897661
  media.longitude = -77.036458
  media.type = truxton.MEDIA_TYPE_LOGICAL_FILES
  media.save()

  return media

def add_cs(parent_file ):
  child_file = add_file(parent_file, "cs.jpg")

  gps = child_file.newlocation()
  gps.type = truxton.LOCATION_TYPE_MEETING
  gps.latitude = 51.487329
  gps.longitude = -0.124057
  gps.label = "HQ"
  gps.when= date_to_filetime(datetime.fromisoformat("2016-04-01T12:00:00-05:00"))
  gps.save()

def main():
  t = truxton.create()

  media = add_media(t)

  root_file = media.addroot()
  root_file.save()

  add_cs(root_file)

if __name__ == "__main__":
  main()