1
- from flask import render_template , redirect , url_for , current_app , flash , Markup
1
+ from flask import render_template , redirect ,request , url_for , \
2
+ current_app , flash , Markup
2
3
from flask_babelex import lazy_gettext as _
3
4
from flask_login import current_user
4
5
from datetime import datetime , timedelta , date
@@ -114,47 +115,56 @@ def read(page_count=1):
114
115
115
116
116
117
@report .route ('/read/department/' , methods = ['GET' , 'POST' ])
117
- @report .route ('/read/department/<int:page_count>' , methods = ['GET' , 'POST' ])
118
118
@permission_required (Permission .READ_DEPARTMENT_REPORT )
119
- def read_department (page_count = 1 ):
119
+ def read_department ():
120
120
form = ReadDepartmentForm ()
121
121
122
- user_choices = [('* ' , '*' )]
122
+ user_choices = [('0 ' , '*' )]
123
123
user_choices .extend ([(
124
124
str (user .id ), user .username ) for user in User .query .all ()])
125
125
form .user .choices = user_choices
126
126
127
- qst = Report .query .filter_by ()
127
+ page = request .args .get ('page' , 1 , type = int )
128
+ user_id = request .args .get ('user' , 0 , type = int )
129
+ start_at = request .args .get ('start_at' , '' , type = str )
130
+ end_at = request .args .get ('end_at' , '' , type = str )
131
+
132
+ start_at = get_last_week_start_at () if not start_at \
133
+ else datetime .strptime (start_at [:10 ], '%Y-%m-%d' )
134
+ end_at = date .today ()+ timedelta (hours = 24 ) if not end_at \
135
+ else datetime .strptime (end_at [:10 ], '%Y-%m-%d' )
136
+
137
+ form .start_at .data = start_at
138
+ form .end_at .data = end_at
139
+ form .user .data = str (user_id )
128
140
129
141
ids = [user .id for user in User .query .filter_by (
130
142
department_id = current_user .department_id )]
131
- qst = qst .filter (Report .author_id .in_ (ids ))
132
143
133
- form .start_at .data = get_last_week_start_at ()
134
- form .end_at .data = date .today ()+ timedelta (hours = 24 )
144
+ qst = Report .query .filter_by ().filter (
145
+ Report .created_at .between (start_at , end_at )).filter (
146
+ Report .author_id .in_ (ids ))
147
+
148
+ if user_id :
149
+ qst = qst .filter_by (author_id = user_id )
135
150
136
151
if form .validate_on_submit ():
137
- qst = qst .filter (Report .created_at .between (
138
- form .start_at .data , form .end_at .data ))
139
- if not form .user .data == '*' :
140
- qst = qst .filter_by (author_id = form .user .data )
152
+ pass
141
153
142
154
pagination = qst .filter_by ().order_by (Report .year .desc ()).order_by (
143
155
Report .week_count .desc ()).order_by (Report .created_at .desc ()).paginate (
144
- page = page_count , per_page = current_app .config ['PER_PAGE' ])
156
+ page = page , per_page = current_app .config ['PER_PAGE' ])
145
157
146
158
return render_template ('report/read_department.html' ,
147
159
form = form ,
148
160
pagination = pagination )
149
161
150
162
151
163
@report .route ('/read/crew/' , methods = ['GET' , 'POST' ])
152
- @report .route ('/read/crew/<int:page_count>' , methods = ['GET' , 'POST' ])
153
164
@permission_required (Permission .READ_ALL_REPORT )
154
- def read_crew (page_count = 1 ):
165
+ def read_crew ():
155
166
form = ReadCrewForm ()
156
-
157
- user_choices = [('*' , '*' )]
167
+ user_choices = [('0' , '*' )]
158
168
department_choices = user_choices [:]
159
169
160
170
for dept in Department .query .all ():
@@ -164,24 +174,40 @@ def read_crew(page_count=1):
164
174
165
175
form .user .choices = user_choices
166
176
form .department .choices = department_choices
167
- form .start_at .data = get_last_week_start_at ()
168
- form .end_at .data = date .today ()+ timedelta (hours = 24 )
169
177
170
- qst = Report .query .filter_by ()
178
+ page = request .args .get ('page' , 1 , type = int )
179
+ department_id = request .args .get ('department' , 0 , type = int )
180
+ user_id = request .args .get ('user' , 0 , type = int )
181
+ start_at = request .args .get ('start_at' , '' , type = str )
182
+ end_at = request .args .get ('end_at' , '' , type = str )
183
+
184
+ start_at = get_last_week_start_at () if not start_at \
185
+ else datetime .strptime (start_at [:10 ], '%Y-%m-%d' )
186
+ end_at = date .today ()+ timedelta (hours = 24 ) if not end_at \
187
+ else datetime .strptime (end_at [:10 ], '%Y-%m-%d' )
188
+
189
+ form .start_at .data = start_at
190
+ form .end_at .data = end_at
191
+ form .user .data = str (user_id )
192
+ form .department .data = str (department_id )
193
+
194
+ qst = Report .query .filter_by ().filter (
195
+ Report .created_at .between (start_at , end_at ))
196
+
197
+ if department_id :
198
+ ids = [user .id for user in User .query .filter_by (
199
+ department_id = department_id )]
200
+ qst = qst .filter (Report .author_id .in_ (ids ))
201
+
202
+ if user_id :
203
+ qst = qst .filter_by (author_id = user_id )
171
204
172
205
if form .validate_on_submit ():
173
- qst = qst .filter (Report .created_at .between (
174
- form .start_at .data , form .end_at .data ))
175
- if not form .department .data == '*' :
176
- ids = [user .id for user in User .query .filter_by (
177
- department_id = form .department .data )]
178
- qst = qst .filter (Report .author_id .in_ (ids ))
179
- if not form .user .data == '*' :
180
- qst = qst .filter_by (author_id = form .user .data )
206
+ pass
181
207
182
208
pagination = qst .filter_by ().order_by (Report .year .desc ()).order_by (
183
209
Report .week_count .desc ()).order_by (Report .created_at .desc ()).paginate (
184
- page = page_count , per_page = current_app .config ['PER_PAGE' ])
210
+ page = page , per_page = current_app .config ['PER_PAGE' ])
185
211
186
212
return render_template ('report/read_crew.html' ,
187
213
form = form ,
0 commit comments