content.py 5.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. # -*- coding: utf-8 -*-
  2. from depot.io.utils import FileIntent
  3. from tracim import models
  4. from tracim.fixtures import Fixture
  5. from tracim.fixtures.users_and_groups import Test
  6. from tracim.lib.core.content import ContentApi
  7. from tracim.lib.core.userworkspace import RoleApi
  8. from tracim.lib.core.workspace import WorkspaceApi
  9. from tracim.models.data import ContentType
  10. from tracim.models.data import UserRoleInWorkspace
  11. class Content(Fixture):
  12. require = [Test]
  13. def insert(self):
  14. admin = self._session.query(models.User) \
  15. .filter(models.User.email == 'admin@admin.admin') \
  16. .one()
  17. bob = self._session.query(models.User) \
  18. .filter(models.User.email == 'bob@fsf.local') \
  19. .one()
  20. admin_workspace_api = WorkspaceApi(
  21. current_user=admin,
  22. session=self._session,
  23. config=self._config,
  24. )
  25. bob_workspace_api = WorkspaceApi(
  26. current_user=bob,
  27. session=self._session,
  28. config=self._config
  29. )
  30. content_api = ContentApi(
  31. current_user=admin,
  32. session=self._session,
  33. config=self._config
  34. )
  35. role_api = RoleApi(
  36. current_user=admin,
  37. session=self._session,
  38. config=self._config,
  39. )
  40. # Workspaces
  41. business_workspace = admin_workspace_api.create_workspace(
  42. 'Business',
  43. description='All importants documents',
  44. save_now=True,
  45. )
  46. recipe_workspace = admin_workspace_api.create_workspace(
  47. 'Recipes',
  48. description='Our best recipes',
  49. save_now=True,
  50. )
  51. other_workspace = bob_workspace_api.create_workspace(
  52. 'Others',
  53. description='Other Workspace',
  54. save_now=True,
  55. )
  56. # Workspaces roles
  57. role_api.create_one(
  58. user=bob,
  59. workspace=recipe_workspace,
  60. role_level=UserRoleInWorkspace.CONTENT_MANAGER,
  61. with_notif=False,
  62. )
  63. # Folders
  64. tool_workspace = content_api.create(
  65. content_type=ContentType.Folder,
  66. workspace=business_workspace,
  67. label='Tools',
  68. do_save=True,
  69. )
  70. menu_workspace = content_api.create(
  71. content_type=ContentType.Folder,
  72. workspace=business_workspace,
  73. label='Menus',
  74. do_save=True,
  75. )
  76. dessert_folder = content_api.create(
  77. content_type=ContentType.Folder,
  78. workspace=recipe_workspace,
  79. label='Desserts',
  80. do_save=True,
  81. )
  82. salads_folder = content_api.create(
  83. content_type=ContentType.Folder,
  84. workspace=recipe_workspace,
  85. label='Salads',
  86. do_save=True,
  87. )
  88. other_folder = content_api.create(
  89. content_type=ContentType.Folder,
  90. workspace=other_workspace,
  91. label='Infos',
  92. do_save=True,
  93. )
  94. # Pages, threads, ..
  95. tiramisu_page = content_api.create(
  96. content_type=ContentType.Page,
  97. workspace=recipe_workspace,
  98. parent=dessert_folder,
  99. label='Tiramisu Recipe',
  100. do_save=True,
  101. )
  102. best_cake_thread = content_api.create(
  103. content_type=ContentType.Thread,
  104. workspace=recipe_workspace,
  105. parent=dessert_folder,
  106. label='Best Cakes ?',
  107. do_save=False,
  108. )
  109. best_cake_thread.description = 'What is the best cake ?'
  110. self._session.add(best_cake_thread)
  111. apple_pie_recipe = content_api.create(
  112. content_type=ContentType.File,
  113. workspace=recipe_workspace,
  114. parent=dessert_folder,
  115. label='Apple_Pie',
  116. do_save=False,
  117. )
  118. apple_pie_recipe.file_extension = '.txt'
  119. apple_pie_recipe.depot_file = FileIntent(
  120. b'Apple pie Recipe',
  121. 'apple_Pie.txt',
  122. 'text/plain',
  123. )
  124. self._session.add(apple_pie_recipe)
  125. Brownie_recipe = content_api.create(
  126. content_type=ContentType.File,
  127. workspace=recipe_workspace,
  128. parent=dessert_folder,
  129. label='Brownie Recipe',
  130. do_save=False,
  131. )
  132. Brownie_recipe.file_extension = '.html'
  133. Brownie_recipe.depot_file = FileIntent(
  134. b'<p>Brownie Recipe</p>',
  135. 'brownie_recipe.html',
  136. 'text/html',
  137. )
  138. self._session.add(Brownie_recipe)
  139. fruits_desserts_folder = content_api.create(
  140. content_type=ContentType.Folder,
  141. workspace=recipe_workspace,
  142. label='Fruits Desserts',
  143. parent=dessert_folder,
  144. do_save=True,
  145. )
  146. menu_page = content_api.create(
  147. content_type=ContentType.Page,
  148. workspace=business_workspace,
  149. parent=menu_workspace,
  150. label='Current Menu',
  151. do_save=True,
  152. )
  153. self._session.flush()