2
2
Generates the 7 booleans used to determine card visibility, based on dates in
3
3
either the current, next, or previous term.
4
4
5
- https://docs.google.com/a/uw.edu/ document/d/14q26auOLPU34KFtkUmC_bkoo5dAwegRzgpwmZEQMhaU/edit
5
+ https://docs.google.com/document/d/14q26auOLPU34KFtkUmC_bkoo5dAwegRzgpwmZEQMhaU
6
6
"""
7
7
8
8
from restclients .sws import term
9
9
from django .conf import settings
10
10
from datetime import datetime , timedelta
11
+ from myuw_mobile .dao .term import get_comparison_date , get_current_quarter
12
+ from myuw_mobile .dao .term import get_next_quarter
11
13
12
- def get_card_visibilty_date_values ():
13
- current_term = term .get_current_term ()
14
14
15
- # Doing this instead of get_next/get_previous,
16
- # because of this in get_current_term:
17
- # if datetime.now() > term.grade_submission_deadline:
18
- # return get_next_term()
19
- last_term = term .get_term_before (current_term )
20
- next_term = term .get_term_after (current_term )
15
+ def get_card_visibilty_date_values (request = None ):
16
+ now = get_comparison_date (request )
17
+ n2 = datetime (now .year , now .month , now .day , 0 , 0 , 0 )
18
+ values = get_values_by_date (n2 , request )
19
+ set_js_overrides (request , values )
20
+ return values
21
+
22
+
23
+ def get_values_by_date (now , request ):
24
+ current_term = get_current_quarter (request )
25
+ next_term = get_next_quarter (request )
21
26
22
27
is_after_grade_submission_deadline = False
23
28
is_after_last_day_of_classes = False
24
29
is_after_start_of_registration_display_period = False
25
- is_before_first_day_of_current_term = False
26
30
is_before_end_of_finals_week = False
27
31
is_before_last_day_of_classes = False
28
32
is_before_end_of_registration_display_period = False
29
33
30
- now = get_comparison_date ()
31
-
32
- if now > last_term .grade_submission_deadline :
33
- is_after_start_of_registration_display_period = True
34
+ if now > current_term .grade_submission_deadline :
35
+ is_after_grade_submission_deadline = True
34
36
35
37
raw_date = current_term .last_day_instruction
36
38
d = datetime (raw_date .year , raw_date .month , raw_date .day )
@@ -40,17 +42,12 @@ def get_card_visibilty_date_values():
40
42
# XXX - this will be a bug when summer quarter comes around
41
43
# because there will need to be a summer term + a next non-summer term
42
44
# version of this. We're holding off on the summer term card though...
43
- if now - timedelta (days = 7 ) > next_term . registration_services_start :
45
+ if now >= next_term . registration_services_start - timedelta (days = 7 ):
44
46
is_after_start_of_registration_display_period = True
45
47
46
48
if now < next_term .registration_period2_start + timedelta (days = 7 ):
47
49
is_before_end_of_registration_display_period = True
48
50
49
- raw_date = current_term .first_day_quarter
50
- d = datetime (raw_date .year , raw_date .month , raw_date .day )
51
- if now < d :
52
- is_before_first_day_of_current_term = True
53
-
54
51
raw_date = current_term .last_final_exam_date
55
52
d = datetime (raw_date .year , raw_date .month , raw_date .day )
56
53
if now < d :
@@ -61,27 +58,30 @@ def get_card_visibilty_date_values():
61
58
if now < d + timedelta (days = 1 ):
62
59
is_before_last_day_of_classes = True
63
60
61
+ after_submission = is_after_grade_submission_deadline
62
+ after_registration = is_after_start_of_registration_display_period
63
+ before_reg_end = is_before_end_of_registration_display_period
64
64
return {
65
- "is_after_grade_submission_deadline" : is_after_grade_submission_deadline ,
65
+ "is_after_grade_submission_deadline" : after_submission ,
66
66
"is_after_last_day_of_classes" : is_after_last_day_of_classes ,
67
- "is_after_start_of_registration_display_period" : is_after_start_of_registration_display_period ,
68
- "is_before_first_day_of_current_term" : is_before_first_day_of_current_term ,
67
+ "is_after_start_of_registration_display_period" : after_registration ,
69
68
"is_before_end_of_finals_week" : is_before_end_of_finals_week ,
70
69
"is_before_last_day_of_classes" : is_before_last_day_of_classes ,
71
- "is_before_end_of_registration_display_period" : is_before_end_of_registration_display_period ,
70
+ "is_before_end_of_registration_display_period" : before_reg_end ,
72
71
}
73
72
74
73
75
- def get_comparison_date ():
76
- """
77
- Allows us to pretend we're at various points in the term,
78
- so we can test against live data sources at various points in the year.
79
- """
80
-
81
- override_date = getattr (settings , "MYUW_CARD_DISPLAY_DATE_OVERRIDE" , None )
82
-
83
- if override_date :
84
- return datetime .strptime (override_date , "%Y-%m-%d" )
85
-
86
- return datetime .now ()
87
-
74
+ def set_js_overrides (request , values ):
75
+ after_reg = 'is_after_start_of_registration_display_period'
76
+ before_reg = 'is_before_end_of_registration_display_period'
77
+ MAP = {'myuw_after_submission' : 'is_after_grade_submission_deadline' ,
78
+ 'myuw_after_last_day' : 'is_after_last_day_of_classes' ,
79
+ 'myuw_after_reg' : after_reg ,
80
+ 'myuw_before_finals_end' : 'is_before_end_of_finals_week' ,
81
+ 'myuw_before_last_day' : 'is_before_last_day_of_classes' ,
82
+ 'myuw_before_end_of_reg_display' : before_reg ,
83
+ }
84
+
85
+ for key , value in MAP .iteritems ():
86
+ if key in request .session :
87
+ values [value ] = request .session [key ]
0 commit comments