|
8 | 8 | import socket |
9 | 9 | from errno import ENOTCONN |
10 | 10 |
|
| 11 | +from astral import Astral |
| 12 | +import pytz |
| 13 | + |
11 | 14 | from gunicorn.http.unreader import SocketUnreader |
12 | 15 | from gunicorn.http.body import ChunkedReader, LengthReader, EOFReader, Body |
13 | 16 | from gunicorn.http.errors import InvalidHeader, InvalidHeaderName, NoMoreData, \ |
14 | 17 | InvalidRequestLine, InvalidRequestMethod, InvalidHTTPVersion, \ |
15 | 18 | LimitRequestLine, LimitRequestHeaders, UnkosherRequest |
16 | 19 | from gunicorn.http.errors import InvalidProxyLine, ForbiddenProxyRequest |
17 | 20 | from gunicorn.six import BytesIO, urlsplit, bytes_to_str |
18 | | -from gunicorn.util import SHABBOS, weekdayname |
| 21 | +from gunicorn.util import weekdayname |
19 | 22 |
|
20 | 23 | MAX_REQUEST_LINE = 8190 |
21 | 24 | MAX_HEADERS = 32768 |
@@ -162,10 +165,15 @@ def get_data(self, unreader, buf, stop=False): |
162 | 165 | buf.write(data) |
163 | 166 |
|
164 | 167 | def parse(self, unreader): |
165 | | - |
166 | | - day_today = weekdayname[datetime.today().weekday()] |
167 | | - if day_today == SHABBOS: |
168 | | - raise UnkosherRequest("I don't work on Shabbos!") |
| 168 | + now = datetime.now(pytz.utc) |
| 169 | + day_today = weekdayname[now.weekday()] |
| 170 | + if day_today in ('Fri', 'Sat',): |
| 171 | + a = Astral() |
| 172 | + city = a[self.cfg.city] |
| 173 | + times = city.sun(date=now, local=False) |
| 174 | + if ((day_today == 'Fri' and now > times['sunrise']) |
| 175 | + or (day_today == 'Sat' and now < times['sunset'])): |
| 176 | + raise UnkosherRequest("I don't work on Shabbos!") |
169 | 177 |
|
170 | 178 | buf = BytesIO() |
171 | 179 | self.get_data(unreader, buf, stop=True) |
|
0 commit comments