No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 
 
 
 

174 líneas
5.2 KiB

  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8-unix -*-
  3. import datetime
  4. import gantt
  5. # Change font default
  6. gantt.define_font_attributes(fill='black',
  7. stroke='black',
  8. stroke_width=0,
  9. font_family="Verdana")
  10. # Add vacations for everyone
  11. gantt.add_vacations(datetime.date(2014, 12, 25))
  12. gantt.add_vacations(datetime.date(2015, 1, 1))
  13. gantt.add_vacations(datetime.date(2015, 1, 13))
  14. # Create two resources
  15. rANO = gantt.Resource('ANO')
  16. rJLS = gantt.Resource('JLS')
  17. # Add vacations for one lucky resource
  18. rANO.add_vacations(
  19. dfrom=datetime.date(2014, 12, 29),
  20. dto=datetime.date(2015, 1, 4)
  21. )
  22. rANO.add_vacations(
  23. dfrom=datetime.date(2015, 1, 6),
  24. dto=datetime.date(2015, 1, 8)
  25. )
  26. # Test if this resource is avalaible for some dates
  27. print(rANO.is_available(datetime.date(2015, 1, 5)))
  28. print(rANO.is_available(datetime.date(2015, 1, 8)))
  29. print(rANO.is_available(datetime.date(2015, 1, 6)))
  30. print(rANO.is_available(datetime.date(2015, 1, 2)))
  31. print(rANO.is_available(datetime.date(2015, 1, 1)))
  32. # Create some tasks
  33. t1 = gantt.Task(name='tache1',
  34. start=datetime.date(2014, 12, 25),
  35. duration=4,
  36. percent_done=44,
  37. resources=[rANO],
  38. color="#FF8080")
  39. t2 = gantt.Task(name='tache2',
  40. start=datetime.date(2014, 12, 28),
  41. duration=6,
  42. resources=[rJLS])
  43. t7 = gantt.Task(name='tache7',
  44. start=datetime.date(2014, 12, 28),
  45. duration=5,
  46. percent_done=50)
  47. t3 = gantt.Task(name='tache3',
  48. start=datetime.date(2014, 12, 25),
  49. duration=4,
  50. depends_of=[t1, t7, t2],
  51. resources=[rJLS])
  52. t4 = gantt.Task(name='tache4',
  53. start=datetime.date(2015, 1, 1),
  54. duration=4,
  55. depends_of=t1,
  56. resources=[rJLS])
  57. t5 = gantt.Task(name='tache5',
  58. start=datetime.date(2014, 12, 23),
  59. duration=3)
  60. t6 = gantt.Task(name='tache6',
  61. start=datetime.date(2014, 12, 25),
  62. duration=4,
  63. depends_of=t7,
  64. resources=[rANO])
  65. t8 = gantt.Task(name='tache8',
  66. start=datetime.date(2014, 12, 25),
  67. duration=4,
  68. depends_of=t7,
  69. resources=[rANO, rJLS])
  70. # Create a project
  71. p1 = gantt.Project(name='Projet 1')
  72. # Add tasks to this project
  73. p1.add_task(t1)
  74. p1.add_task(t7)
  75. p1.add_task(t2)
  76. p1.add_task(t3)
  77. p1.add_task(t5)
  78. p1.add_task(t8)
  79. # Create another project
  80. p2 = gantt.Project(name='Projet 2', color='#FFFF40')
  81. # Add tasks to this project
  82. p2.add_task(t2)
  83. p2.add_task(t4)
  84. # Create another project
  85. p = gantt.Project(name='Gantt')
  86. # wich contains the first two projects
  87. # and a single task
  88. p.add_task(p1)
  89. p.add_task(p2)
  90. p.add_task(t6)
  91. # Test cases for milestones
  92. # Create another project
  93. ptcm = gantt.Project(name='Test case for milestones')
  94. tcm11 = gantt.Task(name='tcm11',
  95. start=datetime.date(2014, 12, 25),
  96. duration=4)
  97. tcm12 = gantt.Task(name='tcm12',
  98. start=datetime.date(2014, 12, 26),
  99. duration=5)
  100. ms1 = gantt.Milestone(name=' ',
  101. depends_of=[tcm11, tcm12])
  102. tcm21 = gantt.Task(name='tcm21',
  103. start=datetime.date(2014, 12, 30),
  104. duration=4,
  105. depends_of=[ms1])
  106. tcm22 = gantt.Task(name='tcm22',
  107. start=datetime.date(2014, 12, 30),
  108. duration=6,
  109. depends_of=[ms1])
  110. ms2 = gantt.Milestone(name='MS2',
  111. depends_of=[ms1, tcm21, tcm22])
  112. tcm31 = gantt.Task(name='tcm31',
  113. start=datetime.date(2014, 12, 30),
  114. duration=6,
  115. depends_of=[ms2])
  116. ms3 = gantt.Milestone(name='MS3', depends_of=[ms1])
  117. ptcm.add_task(tcm11)
  118. ptcm.add_task(tcm12)
  119. ptcm.add_task(ms1)
  120. ptcm.add_task(tcm21)
  121. ptcm.add_task(tcm22)
  122. ptcm.add_task(ms2)
  123. ptcm.add_task(tcm31)
  124. ptcm.add_task(ms3)
  125. p.add_task(ptcm)
  126. ##########################$ MAKE DRAW ###############
  127. p.make_svg_for_tasks(filename='test_full.svg',
  128. today=datetime.date(2014, 12, 31),
  129. start=datetime.date(2014, 8, 22),
  130. end=datetime.date(2015, 1, 14))
  131. p.make_svg_for_tasks(filename='test_full2.svg',
  132. today=datetime.date(2014, 12, 31))
  133. p.make_svg_for_tasks(filename='test.svg',
  134. today=datetime.date(2014, 12, 31),
  135. start=datetime.date(2015, 1, 3),
  136. end=datetime.date(2015, 1, 6))
  137. p1.make_svg_for_tasks(filename='test_p1.svg',
  138. today=datetime.date(2014, 12, 31))
  139. p2.make_svg_for_tasks(filename='test_p2.svg',
  140. today=datetime.date(2014, 12, 31))
  141. p.make_svg_for_resources(filename='test_resources.svg',
  142. today=datetime.date(2014, 12, 31),
  143. resources=[rANO, rJLS])
  144. p.make_svg_for_tasks(filename='test_weekly.svg',
  145. today=datetime.date(2014, 12, 31),
  146. scale=gantt.DRAW_WITH_WEEKLY_SCALE)
  147. ##########################$ /MAKE DRAW ###############