Difference between revisions of "TruxtonInvestigation"

From truxwiki.com
Jump to navigation Jump to search
Line 3: Line 3:
 
=Attributes and Methods=
 
=Attributes and Methods=
  
==<code>addmedia(id)</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>case</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>description</code>==
+
==<code>description: str</code>==
 
A description of the investigation.
 
A description of the investigation.
 
This corresponds to the <code>[Description]</code> column of the <code>[Investigation]</code> table.
 
This corresponds to the <code>[Description]</code> column of the <code>[Investigation]</code> table.
  
==<code>id</code>==
+
==<code>id: str</code>==
 
A [https://en.wikipedia.org/wiki/Universally_unique_identifier GUID] for the investigation.
 
A [https://en.wikipedia.org/wiki/Universally_unique_identifier GUID] for the investigation.
 
This corresponds to the <code>[ID]</code> column of the <code>[Investigation]</code> table.
 
This corresponds to the <code>[ID]</code> column of the <code>[Investigation]</code> table.
  
==<code>jurisdiction</code>==
+
==<code>jurisdiction: str</code>==
 
The jurisdiction for whom this investigation is being conducted.
 
The jurisdiction for whom this investigation is being conducted.
 
This corresponds to the <code>[Name]</code> column of the <code>[Jurisdiction]</code> table.
 
This corresponds to the <code>[Name]</code> column of the <code>[Jurisdiction]</code> table.
  
==<code>name</code>==
+
==<code>name: str</code>==
 
The name of this investigation.
 
The name of this investigation.
 
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)</code>==
+
==<code>removemedia(id: object)</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.
 
This is valid only after a call to <code>save()</code> and does not delete the media.
 
This is valid only after a call to <code>save()</code> and does not delete the media.
  
==<code>save()</code>==
+
==<code>save() -> bool</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/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.
  
==<code>status</code>==
+
==<code>status: int</code>==
 
The name of this investigation.
 
The name of this investigation.
 
This corresponds to the <code>[InvestigationStatusID]</code> column of the <code>[Investigation]</code> table.
 
This corresponds to the <code>[InvestigationStatusID]</code> column of the <code>[Investigation]</code> table.
 
It should contain a value from the <code>[ID]</code> column of the <code>[InvestigationStatus]</code> table.
 
It should contain a value from the <code>[ID]</code> column of the <code>[InvestigationStatus]</code> table.
  
==<code>type</code>==
+
==<code>type: int</code>==
 
The type of the investigation.
 
The type of the investigation.
 
This corresponds to the <code>[InvestigationTypeID]</code> column of the <code>[Investigation]</code> table or it can be a [[Investigation Types | predefined constant.]]
 
This corresponds to the <code>[InvestigationTypeID]</code> column of the <code>[Investigation]</code> table or it can be a [[Investigation Types | predefined constant.]]

Revision as of 11:11, 30 July 2022

This class lets you add an investigation to Truxton.

Attributes and Methods

addmedia(id: object)

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()

case: str

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

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)

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() -> bool

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

EPOCH_AS_FILETIME = 116444736000000000
HUNDREDS_OF_NANOSECONDS = 10000000

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):
  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 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__":
  main()