1+ import os
2+ import calendar
13import datetime
4+ import email .utils
25import itertools
36import json
4- import calendar
5- import os
7+
68from collections import defaultdict
79
810from django .shortcuts import render
@@ -780,6 +782,9 @@ def get_country_mapping(registrations):
780782 if alias .alias .isupper ()
781783 }
782784
785+ def reg_name (r ):
786+ return email .utils .formataddr (((r .first_name + u" " + r .last_name ).strip (), r .email ))
787+
783788 if meeting and any (stats_type == t [0 ] for t in possible_stats_types ):
784789 registrations = MeetingRegistration .objects .filter (meeting = meeting )
785790
@@ -794,7 +799,7 @@ def get_country_mapping(registrations):
794799 eu_countries = set (CountryName .objects .filter (in_eu = True ))
795800
796801 for r in registrations :
797- name = ( r . first_name + " " + r . last_name ). strip ( )
802+ name = reg_name ( r )
798803 c = country_mapping .get (r .country_code )
799804 bins [c .name if c else "" ].add (name )
800805
@@ -831,7 +836,7 @@ def get_country_mapping(registrations):
831836 country_mapping = get_country_mapping (registrations )
832837
833838 for r in registrations :
834- name = ( r . first_name + " " + r . last_name ). strip ( )
839+ name = reg_name ( r )
835840 c = country_mapping .get (r .country_code )
836841 bins [c .continent .name if c else "" ].add (name )
837842
@@ -853,16 +858,16 @@ def get_country_mapping(registrations):
853858 elif not meeting and any (stats_type == t [0 ] for t in possible_stats_types ):
854859 template_name = "overview"
855860
856- registrations = MeetingRegistration .objects .filter (meeting__type = "ietf" )
861+ registrations = MeetingRegistration .objects .filter (meeting__type = "ietf" ). select_related ( 'meeting' )
857862
858863 if stats_type == "overview" :
859864 stats_title = "Number of registrations per meeting"
860865
861866 bins = defaultdict (set )
862867
863- for first_name , last_name , meeting_number in registrations . values_list ( "first_name" , "last_name" , "meeting__number" ) :
864- meeting_number = int (meeting_number )
865- name = ( first_name + " " + last_name ). strip ( )
868+ for r in registrations :
869+ meeting_number = int (r . meeting . number )
870+ name = reg_name ( r )
866871
867872 bins [meeting_number ].add (name )
868873
@@ -891,10 +896,10 @@ def get_country_mapping(registrations):
891896
892897 bins = defaultdict (set )
893898
894- for first_name , last_name , country_code , meeting_number in registrations . values_list ( "first_name" , "last_name" , "country_code" , "meeting__number" ) :
895- meeting_number = int (meeting_number )
896- name = ( first_name + " " + last_name ). strip ( )
897- c = country_mapping .get (country_code )
899+ for r in registrations :
900+ meeting_number = int (r . meeting . number )
901+ name = reg_name ( r )
902+ c = country_mapping .get (r . country_code )
898903
899904 if c :
900905 bins [(meeting_number , c .name )].add (name )
@@ -911,10 +916,10 @@ def get_country_mapping(registrations):
911916
912917 bins = defaultdict (set )
913918
914- for first_name , last_name , country_code , meeting_number in registrations . values_list ( "first_name" , "last_name" , "country_code" , "meeting__number" ) :
915- meeting_number = int (meeting_number )
916- name = ( first_name + " " + last_name ). strip ( )
917- c = country_mapping .get (country_code )
919+ for r in registrations :
920+ meeting_number = int (r . meeting . number )
921+ name = reg_name ( r )
922+ c = country_mapping .get (r . country_code )
918923
919924 if c :
920925 bins [(meeting_number , c .continent .name )].add (name )
0 commit comments