174 lines
5.2 KiB
Python
174 lines
5.2 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8-unix -*-
|
|
|
|
import datetime
|
|
import gantt
|
|
|
|
# Change font default
|
|
gantt.define_font_attributes(fill='black',
|
|
stroke='black',
|
|
stroke_width=0,
|
|
font_family="Verdana")
|
|
|
|
# Add vacations for everyone
|
|
gantt.add_vacations(datetime.date(2014, 12, 25))
|
|
gantt.add_vacations(datetime.date(2015, 1, 1))
|
|
gantt.add_vacations(datetime.date(2015, 1, 13))
|
|
|
|
# Create two resources
|
|
rANO = gantt.Resource('ANO')
|
|
rJLS = gantt.Resource('JLS')
|
|
|
|
# Add vacations for one lucky resource
|
|
rANO.add_vacations(
|
|
dfrom=datetime.date(2014, 12, 29),
|
|
dto=datetime.date(2015, 1, 4)
|
|
)
|
|
rANO.add_vacations(
|
|
dfrom=datetime.date(2015, 1, 6),
|
|
dto=datetime.date(2015, 1, 8)
|
|
)
|
|
|
|
# Test if this resource is avalaible for some dates
|
|
print(rANO.is_available(datetime.date(2015, 1, 5)))
|
|
print(rANO.is_available(datetime.date(2015, 1, 8)))
|
|
print(rANO.is_available(datetime.date(2015, 1, 6)))
|
|
print(rANO.is_available(datetime.date(2015, 1, 2)))
|
|
print(rANO.is_available(datetime.date(2015, 1, 1)))
|
|
|
|
|
|
# Create some tasks
|
|
t1 = gantt.Task(name='tache1',
|
|
start=datetime.date(2014, 12, 25),
|
|
duration=4,
|
|
percent_done=44,
|
|
resources=[rANO],
|
|
color="#FF8080")
|
|
t2 = gantt.Task(name='tache2',
|
|
start=datetime.date(2014, 12, 28),
|
|
duration=6,
|
|
resources=[rJLS])
|
|
t7 = gantt.Task(name='tache7',
|
|
start=datetime.date(2014, 12, 28),
|
|
duration=5,
|
|
percent_done=50)
|
|
t3 = gantt.Task(name='tache3',
|
|
start=datetime.date(2014, 12, 25),
|
|
duration=4,
|
|
depends_of=[t1, t7, t2],
|
|
resources=[rJLS])
|
|
t4 = gantt.Task(name='tache4',
|
|
start=datetime.date(2015, 1, 1),
|
|
duration=4,
|
|
depends_of=t1,
|
|
resources=[rJLS])
|
|
t5 = gantt.Task(name='tache5',
|
|
start=datetime.date(2014, 12, 23),
|
|
duration=3)
|
|
t6 = gantt.Task(name='tache6',
|
|
start=datetime.date(2014, 12, 25),
|
|
duration=4,
|
|
depends_of=t7,
|
|
resources=[rANO])
|
|
t8 = gantt.Task(name='tache8',
|
|
start=datetime.date(2014, 12, 25),
|
|
duration=4,
|
|
depends_of=t7,
|
|
resources=[rANO, rJLS])
|
|
|
|
|
|
# Create a project
|
|
p1 = gantt.Project(name='Projet 1')
|
|
|
|
# Add tasks to this project
|
|
p1.add_task(t1)
|
|
p1.add_task(t7)
|
|
p1.add_task(t2)
|
|
p1.add_task(t3)
|
|
p1.add_task(t5)
|
|
p1.add_task(t8)
|
|
|
|
|
|
|
|
# Create another project
|
|
p2 = gantt.Project(name='Projet 2', color='#FFFF40')
|
|
|
|
# Add tasks to this project
|
|
p2.add_task(t2)
|
|
p2.add_task(t4)
|
|
|
|
|
|
# Create another project
|
|
p = gantt.Project(name='Gantt')
|
|
# wich contains the first two projects
|
|
# and a single task
|
|
p.add_task(p1)
|
|
p.add_task(p2)
|
|
p.add_task(t6)
|
|
|
|
|
|
|
|
# Test cases for milestones
|
|
# Create another project
|
|
ptcm = gantt.Project(name='Test case for milestones')
|
|
|
|
tcm11 = gantt.Task(name='tcm11',
|
|
start=datetime.date(2014, 12, 25),
|
|
duration=4)
|
|
tcm12 = gantt.Task(name='tcm12',
|
|
start=datetime.date(2014, 12, 26),
|
|
duration=5)
|
|
ms1 = gantt.Milestone(name=' ',
|
|
depends_of=[tcm11, tcm12])
|
|
tcm21 = gantt.Task(name='tcm21',
|
|
start=datetime.date(2014, 12, 30),
|
|
duration=4,
|
|
depends_of=[ms1])
|
|
tcm22 = gantt.Task(name='tcm22',
|
|
start=datetime.date(2014, 12, 30),
|
|
duration=6,
|
|
depends_of=[ms1])
|
|
ms2 = gantt.Milestone(name='MS2',
|
|
depends_of=[ms1, tcm21, tcm22])
|
|
tcm31 = gantt.Task(name='tcm31',
|
|
start=datetime.date(2014, 12, 30),
|
|
duration=6,
|
|
depends_of=[ms2])
|
|
ms3 = gantt.Milestone(name='MS3', depends_of=[ms1])
|
|
|
|
|
|
ptcm.add_task(tcm11)
|
|
ptcm.add_task(tcm12)
|
|
ptcm.add_task(ms1)
|
|
ptcm.add_task(tcm21)
|
|
ptcm.add_task(tcm22)
|
|
ptcm.add_task(ms2)
|
|
ptcm.add_task(tcm31)
|
|
ptcm.add_task(ms3)
|
|
|
|
|
|
p.add_task(ptcm)
|
|
|
|
##########################$ MAKE DRAW ###############
|
|
p.make_svg_for_tasks(filename='test_full.svg',
|
|
today=datetime.date(2014, 12, 31),
|
|
start=datetime.date(2014, 8, 22),
|
|
end=datetime.date(2015, 1, 14))
|
|
p.make_svg_for_tasks(filename='test_full2.svg',
|
|
today=datetime.date(2014, 12, 31))
|
|
p.make_svg_for_tasks(filename='test.svg',
|
|
today=datetime.date(2014, 12, 31),
|
|
start=datetime.date(2015, 1, 3),
|
|
end=datetime.date(2015, 1, 6))
|
|
p1.make_svg_for_tasks(filename='test_p1.svg',
|
|
today=datetime.date(2014, 12, 31))
|
|
p2.make_svg_for_tasks(filename='test_p2.svg',
|
|
today=datetime.date(2014, 12, 31))
|
|
p.make_svg_for_resources(filename='test_resources.svg',
|
|
today=datetime.date(2014, 12, 31),
|
|
resources=[rANO, rJLS])
|
|
p.make_svg_for_tasks(filename='test_weekly.svg',
|
|
today=datetime.date(2014, 12, 31),
|
|
scale=gantt.DRAW_WITH_WEEKLY_SCALE)
|
|
##########################$ /MAKE DRAW ###############
|