Difference between revisions of "TruxtonInvestigation"

From truxwiki.com
Jump to navigation Jump to search
 
(6 intermediate revisions by the same user not shown)
Line 2: Line 2:
  
 
=Attributes and Methods=
 
=Attributes and Methods=
 
+
==<code>addmedia(id: object) -> None</code>==
==<code>addmedia(id: object)</code>==
 
 
Adds the given media to this investigation.
 
Adds the given media to this investigation.
 
The <code>id</code> parameter is the [https://en.wikipedia.org/wiki/Universally_unique_identifier GUID] of the [[TruxtonMedia|media]] to add.
 
The <code>id</code> parameter is the [https://en.wikipedia.org/wiki/Universally_unique_identifier GUID] of the [[TruxtonMedia|media]] to add.
 
This is valid only after a call to <code>save()</code>
 
This is valid only after a call to <code>save()</code>
 +
 +
==<code>addnote(text: str) -> boolean</code>==
 +
This adds an investigator's note.
 +
The <code>text</code> parameter is the contents of the note.
 +
It will return
 +
[https://docs.python.org/3.10/library/constants.html?highlight=false#True True] if the tag was associated with the investigation, [https://docs.python.org/3.10/library/constants.html?highlight=false#False False] on failure.
 +
The note is stored in the <code>[InvestigatorNote]</code> table in the database.
  
 
==<code>case: str</code>==
 
==<code>case: str</code>==
 
A case number for this investigation.
 
A case number for this investigation.
 
This corresponds to the <code>[CaseNumber]</code> column of the <code>[Investigation]</code> table.
 
This corresponds to the <code>[CaseNumber]</code> column of the <code>[Investigation]</code> table.
 +
 +
==<code>createevent() -> [[TruxtonInvestigationEvent]]</code>==
 +
This will create a new event associated with this investigation.
  
 
==<code>description: str</code>==
 
==<code>description: str</code>==
Line 28: Line 37:
 
This corresponds to the <code>[Name]</code> column of the <code>[Investigation]</code> table.
 
This corresponds to the <code>[Name]</code> column of the <code>[Investigation]</code> table.
  
==<code>removemedia(id: object)</code>==
+
==<code>removemedia(id: object) -> None</code>==
 
Removes the given media from this investigation.
 
Removes the given media from this investigation.
 
The <code>id</code> parameter is the [https://en.wikipedia.org/wiki/Universally_unique_identifier GUID] of the [[TruxtonMedia|media]] to remove.
 
The <code>id</code> parameter is the [https://en.wikipedia.org/wiki/Universally_unique_identifier GUID] of the [[TruxtonMedia|media]] to remove.
Line 35: Line 44:
 
==<code>save() -> boolean</code>==
 
==<code>save() -> boolean</code>==
 
This will commit the information to the <code>[Investigation]</code> table.
 
This will commit the information to the <code>[Investigation]</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.10/library/constants.html#True True] if the record was saved to the database, [https://docs.python.org/3.10/library/constants.html#False False] if there was an error.
  
 
==<code>status: int</code>==
 
==<code>status: int</code>==
Line 48: Line 57:
  
 
=Sample=
 
=Sample=
<source lang="Python" highlight="56-61,80">
+
<source lang="Python" highlight="50-55,74">
 
import sys
 
import sys
 
sys.path.append('C:/Program Files/Truxton/SDK')
 
sys.path.append('C:/Program Files/Truxton/SDK')
Line 57: Line 66:
 
from calendar import timegm
 
from calendar import timegm
 
from pathlib import Path
 
from pathlib import Path
 
EPOCH_AS_FILETIME = 116444736000000000
 
HUNDREDS_OF_NANOSECONDS = 10000000
 
  
 
EVENT_TYPE_FBI = 20001
 
EVENT_TYPE_FBI = 20001
 
def date_to_filetime(dt):
 
  return EPOCH_AS_FILETIME + (timegm(dt.timetuple()) * HUNDREDS_OF_NANOSECONDS)
 
  
 
def add_file(parent_truxton_file, filename):
 
def add_file(parent_truxton_file, filename):
Line 98: Line 101:
 
   gps.longitude = -0.124057
 
   gps.longitude = -0.124057
 
   gps.label = "HQ"
 
   gps.label = "HQ"
   gps.when= date_to_filetime(datetime.fromisoformat("2016-04-01T12:00:00-05:00"))
+
   gps.when= datetime.fromisoformat("2016-04-01T12:00:00-05:00")
 
   gps.save()
 
   gps.save()
  
Line 133: Line 136:
  
 
if __name__ == "__main__":
 
if __name__ == "__main__":
   main()
+
   sys.exit(main())
 
</source>
 
</source>

Latest revision as of 15:10, 27 January 2024

This class lets you add an investigation to Truxton.

Attributes and Methods

addmedia(id: object) -> None

Adds the given media to this investigation. The id parameter is the GUID of the media to add. This is valid only after a call to save()

addnote(text: str) -> boolean

This adds an investigator's note. The text parameter is the contents of the note. It will return True if the tag was associated with the investigation, False on failure. The note is stored in the [InvestigatorNote] table in the database.

case: str

A case number for this investigation. This corresponds to the [CaseNumber] column of the [Investigation] table.

createevent() -> TruxtonInvestigationEvent

This will create a new event associated with this investigation.

description: str

A description of the investigation. This corresponds to the [Description] column of the [Investigation] table.

id: str

A GUID for the investigation. This corresponds to the [ID] column of the [Investigation] table.

jurisdiction: str

The jurisdiction for whom this investigation is being conducted. This corresponds to the [Name] column of the [Jurisdiction] table.

name: str

The name of this investigation. This corresponds to the [Name] column of the [Investigation] table.

removemedia(id: object) -> None

Removes the given media from this investigation. The id parameter is the GUID of the media to remove. This is valid only after a call to save() and does not delete the media.

save() -> boolean

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

status: int

The name of this investigation. This corresponds to the [InvestigationStatusID] column of the [Investigation] table. It should contain a value from the [ID] column of the [InvestigationStatus] table.

type: int

The type of the investigation. This corresponds to the [InvestigationTypeID] column of the [Investigation] table or it can be a predefined constant. It should contain a value from the [ID] column of the [InvestigationType] table.

Sample

import sys
sys.path.append('C:/Program Files/Truxton/SDK')
import truxton
import shutil

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

EVENT_TYPE_FBI = 20001

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= datetime.fromisoformat("2016-04-01T12:00:00-05:00")
  gps.save()

def create_investigation(t):
  investigation = t.newinvestigation()

  investigation.name = "Collusion"
  investigation.description = "United States vs. John Smith"
  investigation.case = "DC-SNAFU-2016.2020"
  investigation.status = truxton.INVESTIGATION_STATUS_OPEN
  investigation.type = truxton.INVESTIGATION_TYPE_FRAUD
  investigation.save()

  return investigation

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

  new_type = t.neweventtype()
  new_type.id = EVENT_TYPE_FBI
  new_type.name = "FBI Actions"
  new_type.save()

  investigation = create_investigation(t)

  media = add_media(t)

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

  investigation.addmedia(media.id)

  add_cs(root_file)

if __name__ == "__main__":
  sys.exit(main())