8
8
from django .core .mail import EmailMultiAlternatives
9
9
from django .contrib import messages
10
10
from .forms import EmailForm
11
- from django .http import HttpResponseRedirect
11
+ from django .http import HttpResponseRedirect , Http404 , HttpResponse
12
12
from django .urls import reverse
13
13
# Create your views here.
14
14
sendMailID = settings .EMAIL_HOST_USER
@@ -22,30 +22,18 @@ def update_event_state(request, type, eventid, redirect_url_name):
22
22
return HttpResponseRedirect (reverse (redirect_url_name ))
23
23
24
24
25
- @user_passes_test (lambda u : u .is_staff , login_url = '/admin/login/?next=/dashboard/users/' )
26
- def users_info (request ):
27
- users = ExtendedUser .objects .all ()
28
- wbname = 'Campus Ambassador List.xlsx'
25
+ def get_ca_export (filename ):
26
+ wbname = filename
29
27
wbpath = os .path .join (settings .MEDIA_ROOT , os .path .join ('workbooks' , wbname ))
30
28
workbook = xlsxwriter .Workbook (wbpath )
31
- wbname2 = 'User List.xlsx'
32
- wbpath2 = os .path .join (settings .MEDIA_ROOT , os .path .join ('workbooks' , wbname2 ))
33
- workbook2 = xlsxwriter .Workbook (wbpath2 )
34
29
ca_list = ExtendedUser .objects .filter (ambassador = True )
35
30
worksheet = workbook .add_worksheet ('CA List' )
36
- worksheet2 = workbook2 .add_worksheet ('Users List' )
37
31
col_center = workbook .add_format ({
38
32
'align' : 'center' ,
39
33
'valign' : 'vcenter' ,
40
34
})
41
- col_center2 = workbook2 .add_format ({
42
- 'align' : 'center' ,
43
- 'valign' : 'vcenter' ,
44
- })
45
35
worksheet .set_column (0 , 100 , 30 , col_center )
46
36
worksheet .set_row (0 , 30 )
47
- worksheet2 .set_column (0 , 100 , 30 , col_center2 )
48
- worksheet2 .set_row (0 , 30 )
49
37
merge_format = workbook .add_format ({
50
38
'bold' : 1 ,
51
39
'border' : 1 ,
@@ -54,20 +42,50 @@ def users_info(request):
54
42
'bg_color' : 'gray' ,
55
43
'font_size' : 20
56
44
})
57
- merge_format2 = workbook2 .add_format ({
45
+ header_format = workbook .add_format ({
58
46
'bold' : 1 ,
59
- 'border' : 1 ,
60
47
'align' : 'center' ,
61
48
'valign' : 'vcenter' ,
62
- 'bg_color ' : 'gray ' ,
63
- 'font_size ' : 20
49
+ 'font_color ' : 'white ' ,
50
+ 'bg_color ' : 'black'
64
51
})
65
- header_format = workbook .add_format ({
52
+ row = 2
53
+ worksheet .merge_range ('A1:E1' , 'Campus Ambassadors' , merge_format )
54
+ worksheet .write (1 , 0 , "Email" , header_format )
55
+ worksheet .write (1 , 1 , "Name" , header_format )
56
+ worksheet .write (1 , 2 , "Referral Id" , header_format )
57
+ worksheet .write (1 , 3 , "Contact" , header_format )
58
+ worksheet .write (1 , 4 , "College" , header_format )
59
+ for ca in ca_list :
60
+ if 'iitj' not in ca .college .lower () and 'iit jodhpur' not in ca .college .lower () and 'indian institute of technology jodhpur' not in ca .college .lower () and 'indian institute of technology, jodhpur' not in ca .college .lower ():
61
+ worksheet .write (row , 0 , ca .user .email )
62
+ worksheet .write (row , 1 , ca .first_name + ' ' + ca .last_name )
63
+ worksheet .write (row , 2 , ca .invite_referral )
64
+ worksheet .write (row , 3 , ca .contact )
65
+ worksheet .write (row , 4 , ca .college )
66
+ row += 1
67
+ workbook .close ()
68
+
69
+
70
+ def get_all_user_export (filename ):
71
+ users = ExtendedUser .objects .all ()
72
+ wbname2 = filename
73
+ wbpath2 = os .path .join (settings .MEDIA_ROOT , os .path .join ('workbooks' , wbname2 ))
74
+ workbook2 = xlsxwriter .Workbook (wbpath2 )
75
+ worksheet2 = workbook2 .add_worksheet ('Users List' )
76
+ col_center2 = workbook2 .add_format ({
77
+ 'align' : 'center' ,
78
+ 'valign' : 'vcenter' ,
79
+ })
80
+ worksheet2 .set_column (0 , 100 , 30 , col_center2 )
81
+ worksheet2 .set_row (0 , 30 )
82
+ merge_format2 = workbook2 .add_format ({
66
83
'bold' : 1 ,
84
+ 'border' : 1 ,
67
85
'align' : 'center' ,
68
86
'valign' : 'vcenter' ,
69
- 'font_color ' : 'white ' ,
70
- 'bg_color ' : 'black'
87
+ 'bg_color ' : 'gray ' ,
88
+ 'font_size ' : 20
71
89
})
72
90
header_format2 = workbook2 .add_format ({
73
91
'bold' : 1 ,
@@ -86,13 +104,6 @@ def users_info(request):
86
104
# 'align': 'center',
87
105
# 'valign': 'vcenter',
88
106
# })
89
-
90
- worksheet .merge_range ('A1:E1' , 'Campus Ambassadors' , merge_format )
91
- worksheet .write (1 , 0 , "Email" , header_format )
92
- worksheet .write (1 , 1 , "Name" , header_format )
93
- worksheet .write (1 , 2 , "Referral Id" , header_format )
94
- worksheet .write (1 , 3 , "Contact" , header_format )
95
- worksheet .write (1 , 4 , "College" , header_format )
96
107
worksheet2 .merge_range ('A1:G1' , 'User List' , merge_format2 )
97
108
worksheet2 .write (1 , 0 , "Email" , header_format2 )
98
109
worksheet2 .write (1 , 1 , "Name" , header_format2 )
@@ -102,7 +113,7 @@ def users_info(request):
102
113
worksheet2 .write (1 , 5 , "College" , header_format2 )
103
114
worksheet2 .write (1 , 6 , "Current Year" , header_format2 )
104
115
row2 = 2
105
- row = 2
116
+
106
117
for user in users :
107
118
worksheet2 .write (row2 , 0 , user .user .email )
108
119
worksheet2 .write (row2 , 1 , user .first_name + ' ' + user .last_name )
@@ -113,14 +124,29 @@ def users_info(request):
113
124
worksheet2 .write (row2 , 6 , user .current_year )
114
125
row2 += 1
115
126
workbook2 .close ()
116
- for ca in ca_list :
117
- worksheet .write (row , 0 , ca .user .email )
118
- worksheet .write (row , 1 , ca .first_name + ' ' + ca .last_name )
119
- worksheet .write (row , 2 , ca .invite_referral )
120
- worksheet .write (row , 3 , ca .contact )
121
- worksheet .write (row , 4 , ca .college )
122
- row += 1
123
- workbook .close ()
127
+
128
+
129
+ @user_passes_test (lambda u : u .is_staff , login_url = '/admin/login/?next=/dashboard/users/' )
130
+ def downloadfile (request , filename ):
131
+ file_path = os .path .join (settings .MEDIA_ROOT , os .path .join ('workbooks' , filename ))
132
+ if filename == "User_List" :
133
+ get_all_user_export (filename + '.xlsx' )
134
+ elif filename == "Campus_Ambassador_List" :
135
+ get_ca_export (filename + '.xlsx' )
136
+ file_path += '.xlsx'
137
+ if os .path .exists (file_path ):
138
+ with open (file_path , 'rb' ) as fh :
139
+ response = HttpResponse (fh .read (), content_type = "application/vnd.ms-excel" )
140
+ response ['Content-Disposition' ] = 'inline; filename=' + os .path .basename (file_path )
141
+ return response
142
+ raise Http404
143
+
144
+
145
+ @user_passes_test (lambda u : u .is_staff , login_url = '/admin/login/?next=/dashboard/users/' )
146
+ def users_info (request ):
147
+ users = ExtendedUser .objects .all ()
148
+ wbname = 'User_List'
149
+ wbname2 = 'Campus_Ambassador_List'
124
150
return render (request , 'dashboard/users_info.html' , {'users' : users , 'wbname' : wbname , 'wbname2' : wbname2 })
125
151
126
152
0 commit comments