@@ -22,6 +22,65 @@ def render(self, context, instance, placeholder):
2222 else :
2323 submissions = Submission .objects .filter (hidden = False )
2424
25+ unique_players = []
26+ run_times = {}
27+ total_time = 0
28+ for s in submissions :
29+ for p in s .players .all ():
30+ if p not in unique_players :
31+ unique_players .append (p )
32+ time = s .estimate .split (":" )
33+ if len (time ) == 2 :
34+ run_id = s .game_title .lower () + s .category .lower ()
35+ run_time = int (time [0 ]) * 60 + int (time [1 ])
36+ if run_id in run_times :
37+ if run_times [run_id ] < run_time :
38+ total_time -= run_times [run_id ]
39+ run_times [run_id ] = run_time
40+ total_time += run_time
41+ else :
42+ run_times [run_id ] = run_time
43+ total_time += run_time
44+ total_days = int (total_time / 60 / 24 )
45+ total_hours = int (total_time / 60 ) % 24
46+ total_minutes = total_time % 60
47+ time_string = str (total_hours ) + " t " + str (total_minutes ) + " m"
48+ if total_days > 0 :
49+ time_string = str (total_days ) + " p " + str (total_hours ) + "." + str (int (total_minutes / 6 )) + " t"
50+
51+ context ['submissions' ] = submissions
52+ context ['game_count' ] = str (len (run_times ))
53+ context ['unique_players' ] = str (len (unique_players ))
54+ context ['total_run_time' ] = time_string
55+ return context
56+
57+
58+ @plugin_pool .register_plugin
59+ class MySubmissionsPlugin (CMSPluginBase ):
60+ name = 'My Submissions'
61+ model = MarathonPlugin
62+ render_template = 'marathon/plugins/my_submissions.html'
63+ cache = False
64+
65+ def render (self , context , instance , placeholder ):
66+ context = super ().render (context , instance , placeholder )
67+ if context ['request' ].user .is_authenticated :
68+ player = get_player_info_for_user (context ['request' ].user )
69+ else :
70+ player = {'id' : - 1 }
71+
72+ if instance .event :
73+ submissions = Submission .objects .filter (event = instance .event , hidden = False , players__in = [player ['id' ]])
74+ else :
75+ submissions = Submission .objects .filter (hidden = False , players__in = [player ['id' ]])
76+
77+ event_duration = (instance .event .end - instance .event .start ).days
78+ event_days = []
79+ for d in range (event_duration + 1 ):
80+ event_days .append (instance .event .start + datetime .timedelta (days = d ))
81+ context ['require_authentication' ] = True
82+ context ['event' ] = instance .event
83+ context ['event_days' ] = event_days
2584 context ['submissions' ] = submissions
2685 return context
2786
@@ -37,18 +96,27 @@ def render(self, context, instance, placeholder):
3796 context = super ().render (context , instance , placeholder )
3897
3998 previous_data = context ['request' ].session .get ('previous_form' )
99+ if context ['request' ].user .is_authenticated and not previous_data :
100+ player_info = get_player_info_for_user (context ['request' ].user )
101+ last_submit = Submission .objects .filter (event = instance .event , hidden = False , players__in = [player_info ['id' ]]).last ()
102+ if last_submit :
103+ form = SubmissionForm (initial = {'time_constraints' : last_submit .time_constraints })
104+ else :
105+ form = SubmissionForm ()
106+ else :
107+ form = SubmissionForm (previous_data )
40108
41- form = SubmissionForm (previous_data )
42109 if previous_data :
43110 player_form = PlayerForm (previous_data , prefix = 'player' )
44111 elif context ['request' ].user .is_authenticated :
45- print ('got user' )
46112 player_info = get_player_info_for_user (context ['request' ].user )
47113 player_form = PlayerForm (initial = player_info , prefix = 'player' )
48114 if player_info .get ('discord' ):
49115 player_form .fields ['discord' ].widget .attrs ['readonly' ] = True
50116 else :
51117 player_form = PlayerForm (prefix = 'player' )
118+
119+
52120 event_duration = (instance .event .end - instance .event .start ).days
53121 event_days = []
54122 for d in range (event_duration + 1 ):
0 commit comments