/lib/galaxy/model/mapping.py

https://bitbucket.org/h_morita_dbcls/galaxy-central · Python · 1515 lines · 1248 code · 206 blank · 61 comment · 5 complexity · 54ee52f8bc7d0b011a8a09f1ad39b4f0 MD5 · raw file

Large files are truncated click here to view the full file

  1. """
  2. Details of how the data model objects are mapped onto the relational database
  3. are encapsulated here.
  4. """
  5. import logging
  6. log = logging.getLogger( __name__ )
  7. import sys
  8. import datetime
  9. from galaxy.model import *
  10. from galaxy.model.orm import *
  11. from galaxy.model.orm.ext.assignmapper import *
  12. from galaxy.model.custom_types import *
  13. from galaxy.util.bunch import Bunch
  14. from galaxy.security import GalaxyRBACAgent
  15. from sqlalchemy.orm.collections import attribute_mapped_collection
  16. from sqlalchemy.ext.associationproxy import association_proxy
  17. metadata = MetaData()
  18. context = Session = scoped_session( sessionmaker( autoflush=False, autocommit=True ) )
  19. # For backward compatibility with "context.current"
  20. context.current = Session
  21. dialect_to_egg = {
  22. "sqlite" : "pysqlite>=2",
  23. "postgres" : "psycopg2",
  24. "mysql" : "MySQL_python"
  25. }
  26. # NOTE REGARDING TIMESTAMPS:
  27. # It is currently difficult to have the timestamps calculated by the
  28. # database in a portable way, so we're doing it in the client. This
  29. # also saves us from needing to postfetch on postgres. HOWEVER: it
  30. # relies on the client's clock being set correctly, so if clustering
  31. # web servers, use a time server to ensure synchronization
  32. # Return the current time in UTC without any timezone information
  33. now = datetime.datetime.utcnow
  34. User.table = Table( "galaxy_user", metadata,
  35. Column( "id", Integer, primary_key=True),
  36. Column( "create_time", DateTime, default=now ),
  37. Column( "update_time", DateTime, default=now, onupdate=now ),
  38. Column( "email", TrimmedString( 255 ), nullable=False ),
  39. Column( "username", TrimmedString( 255 ), index=True, unique=True ),
  40. Column( "password", TrimmedString( 40 ), nullable=False ),
  41. Column( "external", Boolean, default=False ),
  42. Column( "form_values_id", Integer, ForeignKey( "form_values.id" ), index=True ),
  43. Column( "deleted", Boolean, index=True, default=False ),
  44. Column( "purged", Boolean, index=True, default=False ) )
  45. UserAddress.table = Table( "user_address", metadata,
  46. Column( "id", Integer, primary_key=True),
  47. Column( "create_time", DateTime, default=now ),
  48. Column( "update_time", DateTime, default=now, onupdate=now ),
  49. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
  50. Column( "desc", TrimmedString( 255 )),
  51. Column( "name", TrimmedString( 255 ), nullable=False),
  52. Column( "institution", TrimmedString( 255 )),
  53. Column( "address", TrimmedString( 255 ), nullable=False),
  54. Column( "city", TrimmedString( 255 ), nullable=False),
  55. Column( "state", TrimmedString( 255 ), nullable=False),
  56. Column( "postal_code", TrimmedString( 255 ), nullable=False),
  57. Column( "country", TrimmedString( 255 ), nullable=False),
  58. Column( "phone", TrimmedString( 255 )),
  59. Column( "deleted", Boolean, index=True, default=False ),
  60. Column( "purged", Boolean, index=True, default=False ) )
  61. History.table = Table( "history", metadata,
  62. Column( "id", Integer, primary_key=True),
  63. Column( "create_time", DateTime, default=now ),
  64. Column( "update_time", DateTime, index=True, default=now, onupdate=now ),
  65. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
  66. Column( "name", TrimmedString( 255 ) ),
  67. Column( "hid_counter", Integer, default=1 ),
  68. Column( "deleted", Boolean, index=True, default=False ),
  69. Column( "purged", Boolean, index=True, default=False ),
  70. Column( "genome_build", TrimmedString( 40 ) ),
  71. Column( "importable", Boolean, default=False ),
  72. Column( "slug", TEXT, index=True ),
  73. Column( "published", Boolean, index=True, default=False ) )
  74. HistoryUserShareAssociation.table = Table( "history_user_share_association", metadata,
  75. Column( "id", Integer, primary_key=True ),
  76. Column( "history_id", Integer, ForeignKey( "history.id" ), index=True ),
  77. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True )
  78. )
  79. HistoryDatasetAssociation.table = Table( "history_dataset_association", metadata,
  80. Column( "id", Integer, primary_key=True ),
  81. Column( "history_id", Integer, ForeignKey( "history.id" ), index=True ),
  82. Column( "dataset_id", Integer, ForeignKey( "dataset.id" ), index=True ),
  83. Column( "create_time", DateTime, default=now ),
  84. Column( "update_time", DateTime, default=now, onupdate=now ),
  85. Column( "state", TrimmedString( 64 ), index=True, key="_state" ),
  86. Column( "copied_from_history_dataset_association_id", Integer, ForeignKey( "history_dataset_association.id" ), nullable=True ),
  87. Column( "copied_from_library_dataset_dataset_association_id", Integer, ForeignKey( "library_dataset_dataset_association.id" ), nullable=True ),
  88. Column( "hid", Integer ),
  89. Column( "name", TrimmedString( 255 ) ),
  90. Column( "info", TrimmedString( 255 ) ),
  91. Column( "blurb", TrimmedString( 255 ) ),
  92. Column( "peek" , TEXT ),
  93. Column( "extension", TrimmedString( 64 ) ),
  94. Column( "metadata", MetadataType(), key="_metadata" ),
  95. Column( "parent_id", Integer, ForeignKey( "history_dataset_association.id" ), nullable=True ),
  96. Column( "designation", TrimmedString( 255 ) ),
  97. Column( "deleted", Boolean, index=True, default=False ),
  98. Column( "visible", Boolean ) )
  99. Dataset.table = Table( "dataset", metadata,
  100. Column( "id", Integer, primary_key=True ),
  101. Column( "create_time", DateTime, default=now ),
  102. Column( "update_time", DateTime, index=True, default=now, onupdate=now ),
  103. Column( "state", TrimmedString( 64 ), index=True ),
  104. Column( "deleted", Boolean, index=True, default=False ),
  105. Column( "purged", Boolean, index=True, default=False ),
  106. Column( "purgable", Boolean, default=True ),
  107. Column( "external_filename" , TEXT ),
  108. Column( "_extra_files_path", TEXT ),
  109. Column( 'file_size', Numeric( 15, 0 ) ) )
  110. HistoryDatasetAssociationDisplayAtAuthorization.table = Table( "history_dataset_association_display_at_authorization", metadata,
  111. Column( "id", Integer, primary_key=True ),
  112. Column( "create_time", DateTime, default=now ),
  113. Column( "update_time", DateTime, index=True, default=now, onupdate=now ),
  114. Column( "history_dataset_association_id", Integer, ForeignKey( "history_dataset_association.id" ), index=True ),
  115. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
  116. Column( "site", TrimmedString( 255 ) ) )
  117. ImplicitlyConvertedDatasetAssociation.table = Table( "implicitly_converted_dataset_association", metadata,
  118. Column( "id", Integer, primary_key=True ),
  119. Column( "create_time", DateTime, default=now ),
  120. Column( "update_time", DateTime, default=now, onupdate=now ),
  121. Column( "hda_id", Integer, ForeignKey( "history_dataset_association.id" ), index=True, nullable=True ),
  122. Column( "hda_parent_id", Integer, ForeignKey( "history_dataset_association.id" ), index=True ),
  123. Column( "deleted", Boolean, index=True, default=False ),
  124. Column( "metadata_safe", Boolean, index=True, default=True ),
  125. Column( "type", TrimmedString( 255 ) ) )
  126. ValidationError.table = Table( "validation_error", metadata,
  127. Column( "id", Integer, primary_key=True ),
  128. Column( "dataset_id", Integer, ForeignKey( "history_dataset_association.id" ), index=True ),
  129. Column( "message", TrimmedString( 255 ) ),
  130. Column( "err_type", TrimmedString( 64 ) ),
  131. Column( "attributes", TEXT ) )
  132. Group.table = Table( "galaxy_group", metadata,
  133. Column( "id", Integer, primary_key=True ),
  134. Column( "create_time", DateTime, default=now ),
  135. Column( "update_time", DateTime, default=now, onupdate=now ),
  136. Column( "name", String( 255 ), index=True, unique=True ),
  137. Column( "deleted", Boolean, index=True, default=False ) )
  138. UserGroupAssociation.table = Table( "user_group_association", metadata,
  139. Column( "id", Integer, primary_key=True ),
  140. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
  141. Column( "group_id", Integer, ForeignKey( "galaxy_group.id" ), index=True ),
  142. Column( "create_time", DateTime, default=now ),
  143. Column( "update_time", DateTime, default=now, onupdate=now ) )
  144. UserRoleAssociation.table = Table( "user_role_association", metadata,
  145. Column( "id", Integer, primary_key=True ),
  146. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
  147. Column( "role_id", Integer, ForeignKey( "role.id" ), index=True ),
  148. Column( "create_time", DateTime, default=now ),
  149. Column( "update_time", DateTime, default=now, onupdate=now ) )
  150. GroupRoleAssociation.table = Table( "group_role_association", metadata,
  151. Column( "id", Integer, primary_key=True ),
  152. Column( "group_id", Integer, ForeignKey( "galaxy_group.id" ), index=True ),
  153. Column( "role_id", Integer, ForeignKey( "role.id" ), index=True ),
  154. Column( "create_time", DateTime, default=now ),
  155. Column( "update_time", DateTime, default=now, onupdate=now ) )
  156. Role.table = Table( "role", metadata,
  157. Column( "id", Integer, primary_key=True ),
  158. Column( "create_time", DateTime, default=now ),
  159. Column( "update_time", DateTime, default=now, onupdate=now ),
  160. Column( "name", String( 255 ), index=True, unique=True ),
  161. Column( "description", TEXT ),
  162. Column( "type", String( 40 ), index=True ),
  163. Column( "deleted", Boolean, index=True, default=False ) )
  164. DatasetPermissions.table = Table( "dataset_permissions", metadata,
  165. Column( "id", Integer, primary_key=True ),
  166. Column( "create_time", DateTime, default=now ),
  167. Column( "update_time", DateTime, default=now, onupdate=now ),
  168. Column( "action", TEXT ),
  169. Column( "dataset_id", Integer, ForeignKey( "dataset.id" ), index=True ),
  170. Column( "role_id", Integer, ForeignKey( "role.id" ), index=True ) )
  171. LibraryPermissions.table = Table( "library_permissions", metadata,
  172. Column( "id", Integer, primary_key=True ),
  173. Column( "create_time", DateTime, default=now ),
  174. Column( "update_time", DateTime, default=now, onupdate=now ),
  175. Column( "action", TEXT ),
  176. Column( "library_id", Integer, ForeignKey( "library.id" ), nullable=True, index=True ),
  177. Column( "role_id", Integer, ForeignKey( "role.id" ), index=True ) )
  178. LibraryFolderPermissions.table = Table( "library_folder_permissions", metadata,
  179. Column( "id", Integer, primary_key=True ),
  180. Column( "create_time", DateTime, default=now ),
  181. Column( "update_time", DateTime, default=now, onupdate=now ),
  182. Column( "action", TEXT ),
  183. Column( "library_folder_id", Integer, ForeignKey( "library_folder.id" ), nullable=True, index=True ),
  184. Column( "role_id", Integer, ForeignKey( "role.id" ), index=True ) )
  185. LibraryDatasetPermissions.table = Table( "library_dataset_permissions", metadata,
  186. Column( "id", Integer, primary_key=True ),
  187. Column( "create_time", DateTime, default=now ),
  188. Column( "update_time", DateTime, default=now, onupdate=now ),
  189. Column( "action", TEXT ),
  190. Column( "library_dataset_id", Integer, ForeignKey( "library_dataset.id" ), nullable=True, index=True ),
  191. Column( "role_id", Integer, ForeignKey( "role.id" ), index=True ) )
  192. LibraryDatasetDatasetAssociationPermissions.table = Table( "library_dataset_dataset_association_permissions", metadata,
  193. Column( "id", Integer, primary_key=True ),
  194. Column( "create_time", DateTime, default=now ),
  195. Column( "update_time", DateTime, default=now, onupdate=now ),
  196. Column( "action", TEXT ),
  197. Column( "library_dataset_dataset_association_id", Integer, ForeignKey( "library_dataset_dataset_association.id" ), nullable=True, index=True ),
  198. Column( "role_id", Integer, ForeignKey( "role.id" ), index=True ) )
  199. DefaultUserPermissions.table = Table( "default_user_permissions", metadata,
  200. Column( "id", Integer, primary_key=True ),
  201. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
  202. Column( "action", TEXT ),
  203. Column( "role_id", Integer, ForeignKey( "role.id" ), index=True ) )
  204. DefaultHistoryPermissions.table = Table( "default_history_permissions", metadata,
  205. Column( "id", Integer, primary_key=True ),
  206. Column( "history_id", Integer, ForeignKey( "history.id" ), index=True ),
  207. Column( "action", TEXT ),
  208. Column( "role_id", Integer, ForeignKey( "role.id" ), index=True ) )
  209. LibraryDataset.table = Table( "library_dataset", metadata,
  210. Column( "id", Integer, primary_key=True ),
  211. Column( "library_dataset_dataset_association_id", Integer, ForeignKey( "library_dataset_dataset_association.id", use_alter=True, name="library_dataset_dataset_association_id_fk" ), nullable=True, index=True ),#current version of dataset, if null, there is not a current version selected
  212. Column( "folder_id", Integer, ForeignKey( "library_folder.id" ), index=True ),
  213. Column( "order_id", Integer ), #not currently being used, but for possible future use
  214. Column( "create_time", DateTime, default=now ),
  215. Column( "update_time", DateTime, default=now, onupdate=now ),
  216. Column( "name", TrimmedString( 255 ), key="_name", index=True ), #when not None/null this will supercede display in library (but not when imported into user's history?)
  217. Column( "info", TrimmedString( 255 ), key="_info" ), #when not None/null this will supercede display in library (but not when imported into user's history?)
  218. Column( "deleted", Boolean, index=True, default=False ) )
  219. LibraryDatasetDatasetAssociation.table = Table( "library_dataset_dataset_association", metadata,
  220. Column( "id", Integer, primary_key=True ),
  221. Column( "library_dataset_id", Integer, ForeignKey( "library_dataset.id" ), index=True ),
  222. Column( "dataset_id", Integer, ForeignKey( "dataset.id" ), index=True ),
  223. Column( "create_time", DateTime, default=now ),
  224. Column( "update_time", DateTime, default=now, onupdate=now ),
  225. Column( "state", TrimmedString( 64 ), index=True, key="_state" ),
  226. Column( "copied_from_history_dataset_association_id", Integer, ForeignKey( "history_dataset_association.id", use_alter=True, name='history_dataset_association_dataset_id_fkey' ), nullable=True ),
  227. Column( "copied_from_library_dataset_dataset_association_id", Integer, ForeignKey( "library_dataset_dataset_association.id", use_alter=True, name='library_dataset_dataset_association_id_fkey' ), nullable=True ),
  228. Column( "name", TrimmedString( 255 ), index=True ),
  229. Column( "info", TrimmedString( 255 ) ),
  230. Column( "blurb", TrimmedString( 255 ) ),
  231. Column( "peek" , TEXT ),
  232. Column( "extension", TrimmedString( 64 ) ),
  233. Column( "metadata", MetadataType(), key="_metadata" ),
  234. Column( "parent_id", Integer, ForeignKey( "library_dataset_dataset_association.id" ), nullable=True ),
  235. Column( "designation", TrimmedString( 255 ) ),
  236. Column( "deleted", Boolean, index=True, default=False ),
  237. Column( "visible", Boolean ),
  238. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
  239. Column( "message", TrimmedString( 255 ) ) )
  240. Library.table = Table( "library", metadata,
  241. Column( "id", Integer, primary_key=True ),
  242. Column( "root_folder_id", Integer, ForeignKey( "library_folder.id" ), index=True ),
  243. Column( "create_time", DateTime, default=now ),
  244. Column( "update_time", DateTime, default=now, onupdate=now ),
  245. Column( "name", String( 255 ), index=True ),
  246. Column( "deleted", Boolean, index=True, default=False ),
  247. Column( "purged", Boolean, index=True, default=False ),
  248. Column( "description", TEXT ),
  249. Column( "synopsis", TEXT ) )
  250. LibraryFolder.table = Table( "library_folder", metadata,
  251. Column( "id", Integer, primary_key=True ),
  252. Column( "parent_id", Integer, ForeignKey( "library_folder.id" ), nullable = True, index=True ),
  253. Column( "create_time", DateTime, default=now ),
  254. Column( "update_time", DateTime, default=now, onupdate=now ),
  255. Column( "name", TEXT, index=True ),
  256. Column( "description", TEXT ),
  257. Column( "order_id", Integer ), #not currently being used, but for possible future use
  258. Column( "item_count", Integer ),
  259. Column( "deleted", Boolean, index=True, default=False ),
  260. Column( "purged", Boolean, index=True, default=False ),
  261. Column( "genome_build", TrimmedString( 40 ) ) )
  262. LibraryInfoAssociation.table = Table( 'library_info_association', metadata,
  263. Column( "id", Integer, primary_key=True ),
  264. Column( "library_id", Integer, ForeignKey( "library.id" ), index=True ),
  265. Column( "form_definition_id", Integer, ForeignKey( "form_definition.id" ), index=True ),
  266. Column( "form_values_id", Integer, ForeignKey( "form_values.id" ), index=True ),
  267. Column( "inheritable", Boolean, index=True, default=False ),
  268. Column( "deleted", Boolean, index=True, default=False ) )
  269. LibraryFolderInfoAssociation.table = Table( 'library_folder_info_association', metadata,
  270. Column( "id", Integer, primary_key=True ),
  271. Column( "library_folder_id", Integer, ForeignKey( "library_folder.id" ), nullable=True, index=True ),
  272. Column( "form_definition_id", Integer, ForeignKey( "form_definition.id" ), index=True ),
  273. Column( "form_values_id", Integer, ForeignKey( "form_values.id" ), index=True ),
  274. Column( "inheritable", Boolean, index=True, default=False ),
  275. Column( "deleted", Boolean, index=True, default=False ) )
  276. LibraryDatasetDatasetInfoAssociation.table = Table( 'library_dataset_dataset_info_association', metadata,
  277. Column( "id", Integer, primary_key=True ),
  278. Column( "library_dataset_dataset_association_id", Integer, ForeignKey( "library_dataset_dataset_association.id" ), nullable=True, index=True ),
  279. Column( "form_definition_id", Integer, ForeignKey( "form_definition.id" ), index=True ),
  280. Column( "form_values_id", Integer, ForeignKey( "form_values.id" ), index=True ),
  281. Column( "deleted", Boolean, index=True, default=False ) )
  282. Job.table = Table( "job", metadata,
  283. Column( "id", Integer, primary_key=True ),
  284. Column( "create_time", DateTime, default=now ),
  285. Column( "update_time", DateTime, default=now, onupdate=now ),
  286. Column( "history_id", Integer, ForeignKey( "history.id" ), index=True ),
  287. Column( "library_folder_id", Integer, ForeignKey( "library_folder.id" ), index=True ),
  288. Column( "tool_id", String( 255 ) ),
  289. Column( "tool_version", TEXT, default="1.0.0" ),
  290. Column( "state", String( 64 ), index=True ),
  291. Column( "info", TrimmedString( 255 ) ),
  292. Column( "command_line", TEXT ),
  293. Column( "param_filename", String( 1024 ) ),
  294. Column( "runner_name", String( 255 ) ),
  295. Column( "stdout", TEXT ),
  296. Column( "stderr", TEXT ),
  297. Column( "traceback", TEXT ),
  298. Column( "session_id", Integer, ForeignKey( "galaxy_session.id" ), index=True, nullable=True ),
  299. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True, nullable=True ),
  300. Column( "job_runner_name", String( 255 ) ),
  301. Column( "job_runner_external_id", String( 255 ) ),
  302. Column( "imported", Boolean, default=False, index=True ) )
  303. JobParameter.table = Table( "job_parameter", metadata,
  304. Column( "id", Integer, primary_key=True ),
  305. Column( "job_id", Integer, ForeignKey( "job.id" ), index=True ),
  306. Column( "name", String(255) ),
  307. Column( "value", TEXT ) )
  308. JobToInputDatasetAssociation.table = Table( "job_to_input_dataset", metadata,
  309. Column( "id", Integer, primary_key=True ),
  310. Column( "job_id", Integer, ForeignKey( "job.id" ), index=True ),
  311. Column( "dataset_id", Integer, ForeignKey( "history_dataset_association.id" ), index=True ),
  312. Column( "name", String(255) ) )
  313. JobToOutputDatasetAssociation.table = Table( "job_to_output_dataset", metadata,
  314. Column( "id", Integer, primary_key=True ),
  315. Column( "job_id", Integer, ForeignKey( "job.id" ), index=True ),
  316. Column( "dataset_id", Integer, ForeignKey( "history_dataset_association.id" ), index=True ),
  317. Column( "name", String(255) ) )
  318. JobToOutputLibraryDatasetAssociation.table = Table( "job_to_output_library_dataset", metadata,
  319. Column( "id", Integer, primary_key=True ),
  320. Column( "job_id", Integer, ForeignKey( "job.id" ), index=True ),
  321. Column( "ldda_id", Integer, ForeignKey( "library_dataset_dataset_association.id" ), index=True ),
  322. Column( "name", String(255) ) )
  323. JobExternalOutputMetadata.table = Table( "job_external_output_metadata", metadata,
  324. Column( "id", Integer, primary_key=True ),
  325. Column( "job_id", Integer, ForeignKey( "job.id" ), index=True ),
  326. Column( "history_dataset_association_id", Integer, ForeignKey( "history_dataset_association.id" ), index=True, nullable=True ),
  327. Column( "library_dataset_dataset_association_id", Integer, ForeignKey( "library_dataset_dataset_association.id" ), index=True, nullable=True ),
  328. Column( "filename_in", String( 255 ) ),
  329. Column( "filename_out", String( 255 ) ),
  330. Column( "filename_results_code", String( 255 ) ),
  331. Column( "filename_kwds", String( 255 ) ),
  332. Column( "filename_override_metadata", String( 255 ) ),
  333. Column( "job_runner_external_pid", String( 255 ) ) )
  334. PostJobAction.table = Table("post_job_action", metadata,
  335. Column("id", Integer, primary_key=True),
  336. Column("workflow_step_id", Integer, ForeignKey( "workflow_step.id" ), index=True, nullable=False),
  337. Column("action_type", String(255), nullable=False),
  338. Column("output_name", String(255), nullable=True),
  339. Column("action_arguments", JSONType, nullable=True))
  340. PostJobActionAssociation.table = Table("post_job_action_association", metadata,
  341. Column("id", Integer, primary_key=True),
  342. Column("job_id", Integer, ForeignKey( "job.id" ), index=True, nullable=False),
  343. Column("post_job_action_id", Integer, ForeignKey( "post_job_action.id" ), index=True, nullable=False))
  344. Event.table = Table( "event", metadata,
  345. Column( "id", Integer, primary_key=True ),
  346. Column( "create_time", DateTime, default=now ),
  347. Column( "update_time", DateTime, default=now, onupdate=now ),
  348. Column( "history_id", Integer, ForeignKey( "history.id" ), index=True, nullable=True ),
  349. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True, nullable=True ),
  350. Column( "message", TrimmedString( 1024 ) ),
  351. Column( "session_id", Integer, ForeignKey( "galaxy_session.id" ), index=True, nullable=True ),
  352. Column( "tool_id", String( 255 ) ) )
  353. GalaxySession.table = Table( "galaxy_session", metadata,
  354. Column( "id", Integer, primary_key=True ),
  355. Column( "create_time", DateTime, default=now ),
  356. Column( "update_time", DateTime, default=now, onupdate=now ),
  357. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True, nullable=True ),
  358. Column( "remote_host", String( 255 ) ),
  359. Column( "remote_addr", String( 255 ) ),
  360. Column( "referer", TEXT ),
  361. Column( "current_history_id", Integer, ForeignKey( "history.id" ), nullable=True ),
  362. Column( "session_key", TrimmedString( 255 ), index=True, unique=True ), # unique 128 bit random number coerced to a string
  363. Column( "is_valid", Boolean, default=False ),
  364. Column( "prev_session_id", Integer ) # saves a reference to the previous session so we have a way to chain them together
  365. )
  366. GalaxySessionToHistoryAssociation.table = Table( "galaxy_session_to_history", metadata,
  367. Column( "id", Integer, primary_key=True ),
  368. Column( "create_time", DateTime, default=now ),
  369. Column( "session_id", Integer, ForeignKey( "galaxy_session.id" ), index=True ),
  370. Column( "history_id", Integer, ForeignKey( "history.id" ), index=True ) )
  371. StoredWorkflow.table = Table( "stored_workflow", metadata,
  372. Column( "id", Integer, primary_key=True ),
  373. Column( "create_time", DateTime, default=now ),
  374. Column( "update_time", DateTime, default=now, onupdate=now ),
  375. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True, nullable=False ),
  376. Column( "latest_workflow_id", Integer,
  377. ForeignKey( "workflow.id", use_alter=True, name='stored_workflow_latest_workflow_id_fk' ), index=True ),
  378. Column( "name", TEXT ),
  379. Column( "deleted", Boolean, default=False ),
  380. Column( "importable", Boolean, default=False ),
  381. Column( "slug", TEXT, index=True ),
  382. Column( "published", Boolean, index=True, default=False )
  383. )
  384. Workflow.table = Table( "workflow", metadata,
  385. Column( "id", Integer, primary_key=True ),
  386. Column( "create_time", DateTime, default=now ),
  387. Column( "update_time", DateTime, default=now, onupdate=now ),
  388. Column( "stored_workflow_id", Integer, ForeignKey( "stored_workflow.id" ), index=True, nullable=False ),
  389. Column( "name", TEXT ),
  390. Column( "has_cycles", Boolean ),
  391. Column( "has_errors", Boolean )
  392. )
  393. WorkflowStep.table = Table( "workflow_step", metadata,
  394. Column( "id", Integer, primary_key=True ),
  395. Column( "create_time", DateTime, default=now ),
  396. Column( "update_time", DateTime, default=now, onupdate=now ),
  397. Column( "workflow_id", Integer, ForeignKey( "workflow.id" ), index=True, nullable=False ),
  398. Column( "type", String(64) ),
  399. Column( "tool_id", TEXT ),
  400. Column( "tool_version", TEXT ), # Reserved for future
  401. Column( "tool_inputs", JSONType ),
  402. Column( "tool_errors", JSONType ),
  403. Column( "position", JSONType ),
  404. Column( "config", JSONType ),
  405. Column( "order_index", Integer ),
  406. ## Column( "input_connections", JSONType )
  407. )
  408. WorkflowStepConnection.table = Table( "workflow_step_connection", metadata,
  409. Column( "id", Integer, primary_key=True ),
  410. Column( "output_step_id", Integer, ForeignKey( "workflow_step.id" ), index=True ),
  411. Column( "input_step_id", Integer, ForeignKey( "workflow_step.id" ), index=True ),
  412. Column( "output_name", TEXT ),
  413. Column( "input_name", TEXT)
  414. )
  415. WorkflowInvocation.table = Table( "workflow_invocation", metadata,
  416. Column( "id", Integer, primary_key=True ),
  417. Column( "create_time", DateTime, default=now ),
  418. Column( "update_time", DateTime, default=now, onupdate=now ),
  419. Column( "workflow_id", Integer, ForeignKey( "workflow.id" ), index=True, nullable=False )
  420. )
  421. WorkflowInvocationStep.table = Table( "workflow_invocation_step", metadata,
  422. Column( "id", Integer, primary_key=True ),
  423. Column( "create_time", DateTime, default=now ),
  424. Column( "update_time", DateTime, default=now, onupdate=now ),
  425. Column( "workflow_invocation_id", Integer, ForeignKey( "workflow_invocation.id" ), index=True, nullable=False ),
  426. Column( "workflow_step_id", Integer, ForeignKey( "workflow_step.id" ), index=True, nullable=False ),
  427. Column( "job_id", Integer, ForeignKey( "job.id" ), index=True, nullable=True )
  428. )
  429. StoredWorkflowUserShareAssociation.table = Table( "stored_workflow_user_share_connection", metadata,
  430. Column( "id", Integer, primary_key=True ),
  431. Column( "stored_workflow_id", Integer, ForeignKey( "stored_workflow.id" ), index=True ),
  432. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True )
  433. )
  434. StoredWorkflowMenuEntry.table = Table( "stored_workflow_menu_entry", metadata,
  435. Column( "id", Integer, primary_key=True ),
  436. Column( "stored_workflow_id", Integer, ForeignKey( "stored_workflow.id" ), index=True ),
  437. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
  438. Column( "order_index", Integer ) )
  439. MetadataFile.table = Table( "metadata_file", metadata,
  440. Column( "id", Integer, primary_key=True ),
  441. Column( "name", TEXT ),
  442. Column( "hda_id", Integer, ForeignKey( "history_dataset_association.id" ), index=True, nullable=True ),
  443. Column( "lda_id", Integer, ForeignKey( "library_dataset_dataset_association.id" ), index=True, nullable=True ),
  444. Column( "create_time", DateTime, default=now ),
  445. Column( "update_time", DateTime, index=True, default=now, onupdate=now ),
  446. Column( "deleted", Boolean, index=True, default=False ),
  447. Column( "purged", Boolean, index=True, default=False ) )
  448. FormDefinitionCurrent.table = Table('form_definition_current', metadata,
  449. Column( "id", Integer, primary_key=True),
  450. Column( "create_time", DateTime, default=now ),
  451. Column( "update_time", DateTime, default=now, onupdate=now ),
  452. Column( "latest_form_id", Integer, ForeignKey( "form_definition.id" ), index=True ),
  453. Column( "deleted", Boolean, index=True, default=False ))
  454. FormDefinition.table = Table('form_definition', metadata,
  455. Column( "id", Integer, primary_key=True),
  456. Column( "create_time", DateTime, default=now ),
  457. Column( "update_time", DateTime, default=now, onupdate=now ),
  458. Column( "name", TrimmedString( 255 ), nullable=False ),
  459. Column( "desc", TEXT ),
  460. Column( "form_definition_current_id",
  461. Integer,
  462. ForeignKey( "form_definition_current.id", name='for_def_form_def_current_id_fk', use_alter=True ),
  463. index=True ),
  464. Column( "fields", JSONType() ),
  465. Column( "type", TrimmedString( 255 ), index=True ),
  466. Column( "layout", JSONType() ), )
  467. RequestType.table = Table('request_type', metadata,
  468. Column( "id", Integer, primary_key=True),
  469. Column( "create_time", DateTime, default=now ),
  470. Column( "update_time", DateTime, default=now, onupdate=now ),
  471. Column( "name", TrimmedString( 255 ), nullable=False ),
  472. Column( "desc", TEXT ),
  473. Column( "request_form_id", Integer, ForeignKey( "form_definition.id" ), index=True ),
  474. Column( "sample_form_id", Integer, ForeignKey( "form_definition.id" ), index=True ),
  475. Column( "datatx_info", JSONType() ),
  476. Column( "deleted", Boolean, index=True, default=False ) )
  477. RequestTypePermissions.table = Table( "request_type_permissions", metadata,
  478. Column( "id", Integer, primary_key=True ),
  479. Column( "create_time", DateTime, default=now ),
  480. Column( "update_time", DateTime, default=now, onupdate=now ),
  481. Column( "action", TEXT ),
  482. Column( "request_type_id", Integer, ForeignKey( "request_type.id" ), nullable=True, index=True ),
  483. Column( "role_id", Integer, ForeignKey( "role.id" ), index=True ) )
  484. FormValues.table = Table('form_values', metadata,
  485. Column( "id", Integer, primary_key=True),
  486. Column( "create_time", DateTime, default=now ),
  487. Column( "update_time", DateTime, default=now, onupdate=now ),
  488. Column( "form_definition_id", Integer, ForeignKey( "form_definition.id" ), index=True ),
  489. Column( "content", JSONType()) )
  490. Request.table = Table('request', metadata,
  491. Column( "id", Integer, primary_key=True),
  492. Column( "create_time", DateTime, default=now ),
  493. Column( "update_time", DateTime, default=now, onupdate=now ),
  494. Column( "name", TrimmedString( 255 ), nullable=False ),
  495. Column( "desc", TEXT ),
  496. Column( "notify", Boolean, default=False ),
  497. Column( "form_values_id", Integer, ForeignKey( "form_values.id" ), index=True ),
  498. Column( "request_type_id", Integer, ForeignKey( "request_type.id" ), index=True ),
  499. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
  500. Column( "deleted", Boolean, index=True, default=False ) )
  501. RequestEvent.table = Table('request_event', metadata,
  502. Column( "id", Integer, primary_key=True),
  503. Column( "create_time", DateTime, default=now ),
  504. Column( "update_time", DateTime, default=now, onupdate=now ),
  505. Column( "request_id", Integer, ForeignKey( "request.id" ), index=True ),
  506. Column( "state", TrimmedString( 255 ), index=True ),
  507. Column( "comment", TEXT ) )
  508. Sample.table = Table('sample', metadata,
  509. Column( "id", Integer, primary_key=True ),
  510. Column( "create_time", DateTime, default=now ),
  511. Column( "update_time", DateTime, default=now, onupdate=now ),
  512. Column( "name", TrimmedString( 255 ), nullable=False ),
  513. Column( "desc", TEXT ),
  514. Column( "form_values_id", Integer, ForeignKey( "form_values.id" ), index=True ),
  515. Column( "request_id", Integer, ForeignKey( "request.id" ), index=True ),
  516. Column( "bar_code", TrimmedString( 255 ), index=True ),
  517. Column( "library_id", Integer, ForeignKey( "library.id" ), index=True ),
  518. Column( "folder_id", Integer, ForeignKey( "library_folder.id" ), index=True ),
  519. Column( "deleted", Boolean, index=True, default=False ) )
  520. SampleState.table = Table('sample_state', metadata,
  521. Column( "id", Integer, primary_key=True ),
  522. Column( "create_time", DateTime, default=now ),
  523. Column( "update_time", DateTime, default=now, onupdate=now ),
  524. Column( "name", TrimmedString( 255 ), nullable=False ),
  525. Column( "desc", TEXT ),
  526. Column( "request_type_id", Integer, ForeignKey( "request_type.id" ), index=True ) )
  527. SampleEvent.table = Table('sample_event', metadata,
  528. Column( "id", Integer, primary_key=True ),
  529. Column( "create_time", DateTime, default=now ),
  530. Column( "update_time", DateTime, default=now, onupdate=now ),
  531. Column( "sample_id", Integer, ForeignKey( "sample.id" ), index=True ),
  532. Column( "sample_state_id", Integer, ForeignKey( "sample_state.id" ), index=True ),
  533. Column( "comment", TEXT ) )
  534. SampleDataset.table = Table('sample_dataset', metadata,
  535. Column( "id", Integer, primary_key=True ),
  536. Column( "create_time", DateTime, default=now ),
  537. Column( "update_time", DateTime, default=now, onupdate=now ),
  538. Column( "sample_id", Integer, ForeignKey( "sample.id" ), index=True ),
  539. Column( "name", TrimmedString( 255 ), nullable=False ),
  540. Column( "file_path", TrimmedString( 255 ), nullable=False ),
  541. Column( "status", TrimmedString( 255 ), nullable=False ),
  542. Column( "error_msg", TEXT ),
  543. Column( "size", TrimmedString( 255 ) ) )
  544. Page.table = Table( "page", metadata,
  545. Column( "id", Integer, primary_key=True ),
  546. Column( "create_time", DateTime, default=now ),
  547. Column( "update_time", DateTime, default=now, onupdate=now ),
  548. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True, nullable=False ),
  549. Column( "latest_revision_id", Integer,
  550. ForeignKey( "page_revision.id", use_alter=True, name='page_latest_revision_id_fk' ), index=True ),
  551. Column( "title", TEXT ),
  552. Column( "slug", TEXT, unique=True, index=True ),
  553. Column( "importable", Boolean, index=True, default=False ),
  554. Column( "published", Boolean, index=True, default=False ),
  555. Column( "deleted", Boolean, index=True, default=False ),
  556. )
  557. PageRevision.table = Table( "page_revision", metadata,
  558. Column( "id", Integer, primary_key=True ),
  559. Column( "create_time", DateTime, default=now ),
  560. Column( "update_time", DateTime, default=now, onupdate=now ),
  561. Column( "page_id", Integer, ForeignKey( "page.id" ), index=True, nullable=False ),
  562. Column( "title", TEXT ),
  563. Column( "content", TEXT )
  564. )
  565. PageUserShareAssociation.table = Table( "page_user_share_association", metadata,
  566. Column( "id", Integer, primary_key=True ),
  567. Column( "page_id", Integer, ForeignKey( "page.id" ), index=True ),
  568. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True )
  569. )
  570. Visualization.table = Table( "visualization", metadata,
  571. Column( "id", Integer, primary_key=True ),
  572. Column( "create_time", DateTime, default=now ),
  573. Column( "update_time", DateTime, default=now, onupdate=now ),
  574. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True, nullable=False ),
  575. Column( "latest_revision_id", Integer,
  576. ForeignKey( "visualization_revision.id", use_alter=True, name='visualization_latest_revision_id_fk' ), index=True ),
  577. Column( "title", TEXT ),
  578. Column( "type", TEXT ),
  579. Column( "dbkey", TEXT, index=True ),
  580. Column( "deleted", Boolean, default=False, index=True ),
  581. Column( "importable", Boolean, default=False, index=True ),
  582. Column( "slug", TEXT, index=True ),
  583. Column( "published", Boolean, default=False, index=True )
  584. )
  585. VisualizationRevision.table = Table( "visualization_revision", metadata,
  586. Column( "id", Integer, primary_key=True ),
  587. Column( "create_time", DateTime, default=now ),
  588. Column( "update_time", DateTime, default=now, onupdate=now ),
  589. Column( "visualization_id", Integer, ForeignKey( "visualization.id" ), index=True, nullable=False ),
  590. Column( "title", TEXT ),
  591. Column( "dbkey", TEXT, index=True ),
  592. Column( "config", JSONType )
  593. )
  594. VisualizationUserShareAssociation.table = Table( "visualization_user_share_association", metadata,
  595. Column( "id", Integer, primary_key=True ),
  596. Column( "visualization_id", Integer, ForeignKey( "visualization.id" ), index=True ),
  597. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True )
  598. )
  599. # Tagging tables.
  600. Tag.table = Table( "tag", metadata,
  601. Column( "id", Integer, primary_key=True ),
  602. Column( "type", Integer ),
  603. Column( "parent_id", Integer, ForeignKey( "tag.id" ) ),
  604. Column( "name", TrimmedString(255) ),
  605. UniqueConstraint( "name" ) )
  606. HistoryTagAssociation.table = Table( "history_tag_association", metadata,
  607. Column( "id", Integer, primary_key=True ),
  608. Column( "history_id", Integer, ForeignKey( "history.id" ), index=True ),
  609. Column( "tag_id", Integer, ForeignKey( "tag.id" ), index=True ),
  610. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
  611. Column( "user_tname", TrimmedString(255), index=True),
  612. Column( "value", TrimmedString(255), index=True),
  613. Column( "user_value", TrimmedString(255), index=True) )
  614. DatasetTagAssociation.table = Table( "dataset_tag_association", metadata,
  615. Column( "id", Integer, primary_key=True ),
  616. Column( "dataset_id", Integer, ForeignKey( "dataset.id" ), index=True ),
  617. Column( "tag_id", Integer, ForeignKey( "tag.id" ), index=True ),
  618. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
  619. Column( "user_tname", TrimmedString(255), index=True),
  620. Column( "value", TrimmedString(255), index=True),
  621. Column( "user_value", TrimmedString(255), index=True) )
  622. HistoryDatasetAssociationTagAssociation.table = Table( "history_dataset_association_tag_association", metadata,
  623. Column( "id", Integer, primary_key=True ),
  624. Column( "history_dataset_association_id", Integer, ForeignKey( "history_dataset_association.id" ), index=True ),
  625. Column( "tag_id", Integer, ForeignKey( "tag.id" ), index=True ),
  626. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
  627. Column( "user_tname", TrimmedString(255), index=True),
  628. Column( "value", TrimmedString(255), index=True),
  629. Column( "user_value", TrimmedString(255), index=True) )
  630. StoredWorkflowTagAssociation.table = Table( "stored_workflow_tag_association", metadata,
  631. Column( "id", Integer, primary_key=True ),
  632. Column( "stored_workflow_id", Integer, ForeignKey( "stored_workflow.id" ), index=True ),
  633. Column( "tag_id", Integer, ForeignKey( "tag.id" ), index=True ),
  634. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
  635. Column( "user_tname", Unicode(255), index=True),
  636. Column( "value", Unicode(255), index=True),
  637. Column( "user_value", Unicode(255), index=True) )
  638. PageTagAssociation.table = Table( "page_tag_association", metadata,
  639. Column( "id", Integer, primary_key=True ),
  640. Column( "page_id", Integer, ForeignKey( "page.id" ), index=True ),
  641. Column( "tag_id", Integer, ForeignKey( "tag.id" ), index=True ),
  642. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
  643. Column( "user_tname", TrimmedString(255), index=True),
  644. Column( "value", TrimmedString(255), index=True),
  645. Column( "user_value", TrimmedString(255), index=True) )
  646. WorkflowStepTagAssociation.table = Table( "workflow_step_tag_association", metadata,
  647. Column( "id", Integer, primary_key=True ),
  648. Column( "workflow_step_id", Integer, ForeignKey( "workflow_step.id" ), index=True ),
  649. Column( "tag_id", Integer, ForeignKey( "tag.id" ), index=True ),
  650. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
  651. Column( "user_tname", Unicode(255), index=True),
  652. Column( "value", Unicode(255), index=True),
  653. Column( "user_value", Unicode(255), index=True) )
  654. VisualizationTagAssociation.table = Table( "visualization_tag_association", metadata,
  655. Column( "id", Integer, primary_key=True ),
  656. Column( "visualization_id", Integer, ForeignKey( "visualization.id" ), index=True ),
  657. Column( "tag_id", Integer, ForeignKey( "tag.id" ), index=True ),
  658. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
  659. Column( "user_tname", TrimmedString(255), index=True),
  660. Column( "value", TrimmedString(255), index=True),
  661. Column( "user_value", TrimmedString(255), index=True) )
  662. # Annotation tables.
  663. HistoryAnnotationAssociation.table = Table( "history_annotation_association", metadata,
  664. Column( "id", Integer, primary_key=True ),
  665. Column( "history_id", Integer, ForeignKey( "history.id" ), index=True ),
  666. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
  667. Column( "annotation", TEXT, index=True) )
  668. HistoryDatasetAssociationAnnotationAssociation.table = Table( "history_dataset_association_annotation_association", metadata,
  669. Column( "id", Integer, primary_key=True ),
  670. Column( "history_dataset_association_id", Integer, ForeignKey( "history_dataset_association.id" ), index=True ),
  671. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
  672. Column( "annotation", TEXT, index=True) )
  673. StoredWorkflowAnnotationAssociation.table = Table( "stored_workflow_annotation_association", metadata,
  674. Column( "id", Integer, primary_key=True ),
  675. Column( "stored_workflow_id", Integer, ForeignKey( "stored_workflow.id" ), index=True ),
  676. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
  677. Column( "annotation", TEXT, index=True) )
  678. WorkflowStepAnnotationAssociation.table = Table( "workflow_step_annotation_association", metadata,
  679. Column( "id", Integer, primary_key=True ),
  680. Column( "workflow_step_id", Integer, ForeignKey( "workflow_step.id" ), index=True ),
  681. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
  682. Column( "annotation", TEXT, index=True) )
  683. PageAnnotationAssociation.table = Table( "page_annotation_association", metadata,
  684. Column( "id", Integer, primary_key=True ),
  685. Column( "page_id", Integer, ForeignKey( "page.id" ), index=True ),
  686. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
  687. Column( "annotation", TEXT, index=True) )
  688. VisualizationAnnotationAssociation.table = Table( "visualization_annotation_association", metadata,
  689. Column( "id", Integer, primary_key=True ),
  690. Column( "visualization_id", Integer, ForeignKey( "visualization.id" ), index=True ),
  691. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
  692. Column( "annotation", TEXT, index=True) )
  693. # Ratings tables.
  694. HistoryRatingAssociation.table = Table( "history_rating_association", metadata,
  695. Column( "id", Integer, primary_key=True ),
  696. Column( "history_id", Integer, ForeignKey( "history.id" ), index=True ),
  697. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
  698. Column( "rating", Integer, index=True) )
  699. HistoryDatasetAssociationRatingAssociation.table = Table( "history_dataset_association_rating_association", metadata,
  700. Column( "id", Integer, primary_key=True ),
  701. Column( "history_dataset_association_id", Integer, ForeignKey( "history_dataset_association.id" ), index=True ),
  702. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
  703. Column( "rating", Integer, index=True) )
  704. StoredWorkflowRatingAssociation.table = Table( "stored_workflow_rating_association", metadata,
  705. Column( "id", Integer, primary_key=True ),
  706. Column( "stored_workflow_id", Integer, ForeignKey( "stored_workflow.id" ), index=True ),
  707. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
  708. Column( "rating", Integer, index=True) )
  709. PageRatingAssociation.table = Table( "page_rating_association", metadata,
  710. Column( "id", Integer, primary_key=True ),
  711. Column( "page_id", Integer, ForeignKey( "page.id" ), index=True ),
  712. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
  713. Column( "rating", Integer, index=True) )
  714. VisualizationRatingAssociation.table = Table( "visualization_rating_association", metadata,
  715. Column( "id", Integer, primary_key=True ),
  716. Column( "visualization_id", Integer, ForeignKey( "visualization.id" ), index=True ),
  717. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
  718. Column( "rating", Integer, index=True) )
  719. # User tables.
  720. UserPreference.table = Table( "user_preference", metadata,
  721. Column( "id", Integer, primary_key=True ),
  722. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
  723. Column( "name", Unicode( 255 ), index=True),
  724. Column( "value", Unicode( 1024 ) ) )
  725. UserAction.table = Table( "user_action", metadata,
  726. Column( "id", Integer, primary_key=True ),
  727. Column( "create_time", DateTime, default=now ),
  728. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
  729. Column( "session_id", Integer, ForeignKey( "galaxy_session.id" ), index=True ),
  730. Column( "action", Unicode( 255 ) ),
  731. Column( "context", Unicode( 512 ) ),
  732. Column( "params", Unicode( 1024 ) ) )
  733. APIKeys.table = Table( "api_keys", metadata,
  734. Column( "id", Integer, primary_key=True ),
  735. Column( "create_time", DateTime, default=now ),
  736. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
  737. Column( "key", TrimmedString( 32 ), index=True, unique=True ) )
  738. # With the tables defined we can define the mappers and setup the
  739. # relationships between the model objects.
  740. assign_mapper( context, Sample, Sample.table,
  741. properties=dict(
  742. events=relation( SampleEvent, backref="sample",
  743. order_by=desc(SampleEvent.table.c.update_time) ),
  744. datasets=relation( SampleDataset, backref="sample",
  745. order_by=desc(SampleDataset.table.c.update_time) ),
  746. values=relation( FormValues,
  747. primaryjoin=( Sample.table.c.form_values_id == FormValues.table.c.id ) ),
  748. request=relation( Request,
  749. primaryjoin=( Sample.table.c.request_id == Request.table.c.id ) ),
  750. folder=relation( LibraryFolder,
  751. primaryjoin=( Sample.table.c.folder_id == LibraryFolder.table.c.id ) ),
  752. library=relation( Library,
  753. primaryjoin=( Sample.table.c.library_id == Library.table.c.id ) ),
  754. ) )
  755. assign_mapper( context, FormValues, FormValues.table,
  756. properties=dict( form_definition=relation( FormDefinition,
  757. primaryjoin=( FormValues.table.c.form_definition_id == FormDefinition.table.c.id ) )
  758. )
  759. )
  760. assign_mapper( context, Request, Request.table,
  761. properties=dict( values=relation( FormValues,
  762. primaryjoin=( Request.table.c.form_values_id == FormValues.table.c.id ) ),
  763. type=relation( RequestType,
  764. primaryjoin=( Request.table.c.request_type_id == RequestType.table.c.id ) ),
  765. user=relation( User,
  766. primaryjoin=( Request.table.c.user_id == User.table.c.id ),
  767. backref="requests" ),
  768. samples=relation( Sample,
  769. primaryjoin=( Request.table.c.id == Sample.table.c.request_id ),
  770. order_by=asc(Sample.table.c.id) ),
  771. events=relation( RequestEvent, backref="request",
  772. order_by=desc(RequestEvent.table.c.update_time) )
  773. ) )
  774. assign_mapper( context, RequestEvent, RequestEvent.table,
  775. properties=None )
  776. assign_mapper( context, RequestType, RequestType.table,
  777. properties=dict( states=relation( SampleState,
  778. backref="request_type",
  779. primaryjoin=( RequestType.table.c.id == SampleState.table.c.request_type_id ),
  780. order_by=asc(SampleState.table.c.update_time) ),
  781. request_form=relation( FormDefinition,
  782. primaryjoin=( RequestType.table.c.request_form_id == FormDefinition.table.c.id ) ),
  783. sample_form=relation( FormDefinition,
  784. primaryjoin=( RequestType.table.c.sample_form_id == FormDefinition.table.c.id ) ),
  785. ) )
  786. assign_mapper( context, RequestTypePermissions, RequestTypePermissions.table,
  787. properties=dict(
  788. request_type=relation( RequestType, backref="actions" ),
  789. role=relation( Role, backref="request_type_actions" )
  790. )
  791. )
  792. assign_mapper( context, FormDefinition, FormDefinition.table,
  793. properties=dict( current=relation( FormDefinitionCurrent,
  794. primaryjoin=( FormDefinition.table.c.form_definition_current_id == FormDefinitionCurrent.table.c.id ) )
  795. ) )
  796. assign_mapper( context, FormDefinitionCurrent, FormDefinitionCurrent.table,
  797. properties=dict( forms=relation( FormDefinition, backref='form_definition_current',
  798. cascade="all, delete-orphan",
  799. primaryjoin=( FormDefinitionCurrent.table.c.id == FormDefinition.table.c.form_definition_current_id ) ),
  800. latest_form=relation( FormDefinition, post_update=True,
  801. primaryjoin=( FormDefinitionCurrent.table.c.latest_form_id == FormDefinition.table.c.id ) )
  802. ) )
  803. as