-
Notifications
You must be signed in to change notification settings - Fork 0
/
config.py
443 lines (431 loc) · 15.3 KB
/
config.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
__author__ = 'casahome2000'
import dateHandler
def calcReleaseDate(prevRelease, currentDuration):
date = dateHandler.date_by_adding_business_days(dateHandler.datetime.datetime(dateHandler.dateTODAY.year,
dateHandler.dateTODAY.month,
dateHandler.dateTODAY.day),
10,
dateHandler.Holidays)
releaseDate = "%s-%s-%s" % (date.year, date.month, date.day)
return releaseDate
class ProjectIssues(object):
EPICS = {
"phases": [
dict(name="Phase 1: Kick Off",
description='The kick-off meeting will allow the UX and PM get a foothold on what the client is trying to ' \
'accomplish. The PM, UX, and Sales will meet with the client, and review the LEAN CANVAS provided by ' \
'sales to the assigned pre-development team before the meeting. This should facilitate the completion ' \
'of the Kick-Off Meeting Form, which should be the output from the conclusion of the kick-off meeting. ' \
'At this point, enough information should be provided by the client for the team to proceed to Phase 2',
summary="Kick Off",
fixversion="Phase 1: Kick Off",
durration=2),
dict(name="Phase 2: Competitive Analysis",
description="The Competitive Analysis phase will allow the PM and UX define the strategy for the client's " \
"application. It will include comprehensive research on what apps are already filling the " \
"competitive space, identify what needs and gaps to fill, identify the user personas, and " \
"ultimately present to the client the direction the pre-development team feels will provide " \
"the best MVP. The PM will initially support the UX by providing research documentation, which " \
"will be compiled into a presentation for the client to easily absorb our strategy. It will " \
"also produce the groomed Feature List for sign-off with the client. These will ultimately dictate " \
"the needed materials to proceed to [Phase III - UX Flow]. Lastly, the client will need to fill " \
"out the [Creative Brief] at this point, and be given 2-3 days to complete.",
summary="Competitive Analysis",
fixversion="Phase 2: Competitive Analysis",
durration=5),
dict(name="Phase 3: UX Flow",
description="The UX should now have enough information to begin creating the UX Flow document. Within that " \
"period, the PM will proceed to groom the schedule and tickets to ensure the project is " \
"staying on track. At the final stage of this phase, the client will review the UX Flow and " \
"updated schedule. This phase will require [Milestone Sign-Off] for the UX Flow before proceeding " \
"to the next stage: [Phase IV - Wireframes]. Sign off can be approved by e-mail with the client," \
" or they can come in for a meeting if they choose to. Please account for meeting hours if the " \
"client comes in for review.",
summary="UX Flow",
fixversion="Phase 3: UX Flow",
durration=7),
dict(name="Phase 4: Wireframes",
description="The UX designer now has full project scope in hand, which has been reviewed and signed-off on " \
"by the client. This phase defines the project from low-mid fidelity, with the output being " \
"fully clickable, partially annotated wireframes to be passed on to the designers for " \
"[Phase V - Preliminary Designs]. Additionally, the PM will parallel path, and begin " \
"[Phase VI - Annotations and Developer Review]. This will provide comprehensive material and " \
"project scope to both verticals to begin the first real preparations for development. " \
"Client must approve of this milestone with the [Milestone Sign-Off].",
summary="Wireframes",
fixversion="Phase 4: Wireframes",
durration=15),
dict(name="Phase 5: Preliminary Designs",
description="The preliminary designs will allow the client to choose from 3 alternative designs, " \
"from 2 wireframe screens. The client will review, and provide feedback leading to " \
"final approval of the overall design direction, which will lead into " \
"[Phase VII - Full Design].",
summary="Preliminary Designs",
fixversion="Phase 5: Preliminary Designs",
durration=10),
dict(name="Phase 6: Annotations and Developer Review",
description="This phase will run parallel to [Phase VII - Full Design]. It will serve as the " \
"kick-off point to begin project awareness with the developer team. The annotated " \
"wireframes should be enough to provide an overview of the application and its " \
"functionality to the development teams, and get their assessment of what solutions we " \
"will need to consider to get this project into development. Final objective is to make " \
"the development team aware of the project, have a good reference document for them to " \
"assess project needs, and begin quote production at an early stage for full preparation " \
"at [Phase VIII - Project Wrap].",
summary="Annotations and Developer Review",
fixversion="Phase 6: Annotations and Developer Review",
durration=7),
dict(name="Phase 7: Full Design",
description="Full design. Designers flesh out the remaining application based on the approved " \
"direction set by [Phase V - Preliminary Designs]. The final output will be the full " \
"designed application based on the wireframes, with a full, clickable prototype. " \
"This is the final stage of pre-development, but leads to [Phase VIII - Project Wrap], " \
"which produces the development quote and pitch for the client to move on to development.",
summary="Full Design",
fixversion="Phase 7: Full Designs",
durration=20),
dict(name="Phase 8: Project Wrap",
description="This is the final stage. Asset delivery, and the final quote to the client for " \
"development. Any additional follow up and project grooming that needs to take.",
summary="Project Wrap",
fixversion="Phase 8: Project Wrap",
durration=2)
]
}
VERSIONS = {
"versions": [
dict(name="Phase 1: Kick Off",
description="Kick Off",
startdate=(
"%s-%s-%s" % (dateHandler.dateTODAY.year, dateHandler.dateTODAY.month, dateHandler.dateTODAY.day)),
releasedate=None,
duration=2),
dict(name="Phase 2: Competitive Analysis",
description="Competitive Analysis",
startdate=None,
releasedate=None,
duration=5),
dict(name="Phase 3: UX Flow",
description="UX Flow",
startdate=None,
releasedate=None,
duration=7),
dict(name="Phase 4: Wireframes",
description="Wireframes",
startdate=None,
releasedate=None,
duration=15),
dict(name="Phase 5: Preliminary Designs",
description="Preliminary Designs",
startdate=None,
releasedate=None,
duration=10),
dict(name="Phase 6: Annotations and Developer Review",
description="Annotations and Developer Review",
startdate=None,
releasedate=None,
duration=7),
dict(name="Phase 7: Full Designs",
description="Full Designs",
startdate=None,
releasedate=None,
duration=20),
dict(name="Phase 8: Project Wrap",
description="Project Wrap",
startdate=None,
releasedate=None,
duration=2)
]
}
ISSUES = {
"issues": [
dict(summary="Meet with Client",
description="Meet with Client",
duration=2,
unit="hours",
epic=1,
fixversion="Phase 1: Kick Off"),
dict(summary="Create Project in RedMine",
description="Create Project in RedMine",
duration=1,
unit="hours",
epic=1,
fixversion="Phase 1: Kick Off"),
dict(summary="Schedule First Draft",
description="Schedule First Draft",
duration=1,
unit="hours",
epic=1,
fixversion="Phase 1: Kick Off"),
dict(summary="Create Feature List",
description="Create Feature List",
duration=4,
unit="hours",
epic=2,
fixversion="Phase 2: Competitive Analysis"),
dict(summary="Create User Personas",
description="Create User Personas",
duration=4,
unit="hours",
epic=2,
fixversion="Phase 2: Competitive Analysis"),
dict(summary="Competitive Review",
description="Competitive Review",
duration=10,
unit="hours",
epic=2,
fixversion="Phase 2: Competitive Analysis"),
dict(summary="Competitive Review Presentation",
description="Competitive Review Presentation",
duration=8,
unit="hours",
epic=2,
fixversion="Phase 2: Competitive Analysis"),
dict(summary="Client Review",
description="Competitive Review Presentation",
duration=4,
unit="hours",
epic=2,
fixversion="Phase 2: Competitive Analysis"),
dict(summary="Creative Brief",
description="Competitive Review Presentation",
duration=1,
unit="hours",
epic=2,
fixversion="Phase 2: Competitive Analysis"),
dict(summary="UX Flow Creation",
description="UX Flow Creation",
duration=25,
unit="hours",
epic=3,
fixversion="Phase 3: UX Flow"),
dict(summary="PM Time Tracking",
description="PM Time Tracking",
duration=8,
unit="hours",
epic=3,
fixversion="Phase 3: UX Flow"),
dict(summary="Schedule Second Draft",
description="Schedule Second Draft",
duration=2,
unit="hours",
epic=3,
fixversion="Phase 3: UX Flow"),
dict(summary="Client Review Meeting",
description="Client Review Meeting",
duration=2,
unit="hours",
epic=3,
fixversion="Phase 3: UX Flow"),
dict(summary="Milestone Sign-Off",
description="Milestone Sign-Off",
duration=1,
unit="hours",
epic=3,
fixversion="Phase 3: UX Flow"),
dict(summary="PM Time Tracking",
description="PM Time Tracking",
duration=20,
unit="hours",
epic=4,
fixversion="Phase 4: Wireframes"),
dict(summary="Wireframes 1",
description="Wireframes 1",
duration=20,
unit="hours",
epic=4,
fixversion="Phase 4: Wireframes"),
dict(summary="Client Review 1",
description="Client Review 1",
duration=4,
unit="hours",
epic=4,
fixversion="Phase 4: Wireframes"),
dict(summary="Wireframes 2",
description="Client Review 1",
duration=20,
unit="hours",
epic=4,
fixversion="Phase 4: Wireframes"),
dict(summary="Client Review 2",
description="Client Review 1",
duration=4,
unit="hours",
epic=4,
fixversion="Phase 4: Wireframes"),
dict(summary="Final Wireframes",
description="Final Wireframes",
duration=20,
unit="hours",
epic=4,
fixversion="Phase 4: Wireframes"),
dict(summary="Final Client Review",
description="Final Client Review",
duration=4,
unit="hours",
epic=4,
fixversion="Phase 4: Wireframes"),
dict(summary="Milestone Sign-Off",
description="Milestone Sign-Off",
duration=1,
unit="hours",
epic=4,
fixversion="Phase 4: Wireframes"),
dict(summary="PM Time Tracking",
description="PM Time Tracking",
duration=5,
unit="hours",
epic=5,
fixversion="Phase 5: Preliminary Designs"),
dict(summary="Design Hand-Off",
description="Design Hand-Off",
duration=3,
unit="hours",
epic=5,
fixversion="Phase 5: Preliminary Designs"),
dict(summary="Preliminary Design 1",
description="Preliminary Design 1",
duration=30,
unit="hours",
epic=5,
fixversion="Phase 5: Preliminary Designs"),
dict(summary="Preliminary Icons 1",
description="Preliminary Icons 1",
duration=10,
unit="hours",
epic=5,
fixversion="Phase 5: Preliminary Designs"),
dict(summary="Client Review 1",
description="Client Review 1",
duration=2,
unit="hours",
epic=5,
fixversion="Phase 5: Preliminary Designs"),
dict(summary="Preliminary Design 2",
description="Preliminary Design 2",
duration=12,
unit="hours",
epic=5,
fixversion="Phase 5: Preliminary Designs"),
dict(summary="Finalize Icon",
description="Finalize Icon",
duration=4,
unit="hours",
epic=5,
fixversion="Phase 5: Preliminary Designs"),
dict(summary="Final Client Review",
description="Final Client Review",
duration=2,
unit="hours",
epic=5,
fixversion="Phase 5: Preliminary Designs"),
dict(summary="Milestone Sign-off",
description="Milestone Sign-off",
duration=1,
unit="hours",
epic=5,
fixversion="Phase 5: Preliminary Designs"),
dict(summary="UX Time Tracking",
description="UX Time Tracking",
duration=5,
unit="hours",
epic=6,
fixversion="Phase 6: Annotations and Developer Review"),
dict(summary="Review with UX",
description="Review with UX",
duration=1,
unit="hours",
epic=6,
fixversion="Phase 6: Annotations and Developer Review"),
dict(summary="Annotated Wireframes",
description="Annotated Wireframes",
duration=20,
unit="hours",
epic=6,
fixversion="Phase 6: Annotations and Developer Review"),
dict(summary="RU PM Project Review",
description="RU PM Project Review",
duration=8,
unit="hours",
epic=6,
fixversion="Phase 6: Annotations and Developer Review"),
dict(summary="PM Time Tracking",
description="PM Time Tracking",
duration=20,
unit="hours",
epic=7,
fixversion="Phase 7: Full Designs"),
dict(summary="UX Time Tracking",
description="UX Time Tracking",
duration=5,
unit="hours",
epic=7,
fixversion="Phase 7: Full Designs"),
dict(summary="Round 1 Design",
description="Round 1 Design",
duration=80,
unit="hours",
epic=7,
fixversion="Phase 7: Full Designs"),
dict(summary="Client Review 1",
description="Client Review 1",
duration=4,
unit="hours",
epic=7,
fixversion="Phase 7: Full Designs"),
dict(summary="Round 2 Design",
description="Round 2 Design",
duration=30,
unit="hours",
epic=7,
fixversion="Phase 7: Full Designs"),
dict(summary="Client Review 2",
description="Client Review 2",
duration=4,
unit="hours",
epic=7,
fixversion="Phase 7: Full Designs"),
dict(summary="Round 3 Design",
description="Round 3 Design",
duration=20,
unit="hours",
epic=7,
fixversion="Phase 7: Full Designs"),
dict(summary="Final Review",
description="Final Review",
duration=2,
unit="hours",
epic=7,
fixversion="Phase 7: Full Designs"),
dict(summary="Milestone Sign-Off",
description="Milestone Sign-Off",
duration=1,
unit="hours",
epic=7,
fixversion="Phase 7: Full Designs"),
dict(summary="Update Project Page",
description="Update Project Page",
duration=2,
unit="hours",
epic=8,
fixversion="Phase 8: Project Wrap"),
dict(summary="Development Quote",
description="Development Quote",
duration=7,
unit="hours",
epic=8,
fixversion="Phase 8: Project Wrap"),
dict(summary="UX Assets",
description="UX Assets",
duration=2,
unit="hours",
epic=8,
fixversion="Phase 8: Project Wrap"),
dict(summary="UI Assets",
description="UI Assets",
duration=2,
unit="hours",
epic=8,
fixversion="Phase 8: Project Wrap"),
]
}