mirror of
https://github.com/krateng/maloja.git
synced 2025-04-12 15:07:13 +03:00
Merge pull request #407 from noirscape/dateutil
Add a new config option to use a ZoneInfo timezone.
This commit is contained in:
commit
3ba27ffc37
@ -50,6 +50,7 @@ def print_info():
|
|||||||
print(col['lightblue']("Log Directory: "),conf.dir_settings['logs'])
|
print(col['lightblue']("Log Directory: "),conf.dir_settings['logs'])
|
||||||
print(col['lightblue']("Network: "),f"Dual Stack, Port {conf.malojaconfig['port']}" if conf.malojaconfig['host'] == "*" else f"IPv{ip_address(conf.malojaconfig['host']).version}, Port {conf.malojaconfig['port']}")
|
print(col['lightblue']("Network: "),f"Dual Stack, Port {conf.malojaconfig['port']}" if conf.malojaconfig['host'] == "*" else f"IPv{ip_address(conf.malojaconfig['host']).version}, Port {conf.malojaconfig['port']}")
|
||||||
print(col['lightblue']("Timezone: "),f"UTC{conf.malojaconfig['timezone']:+d}")
|
print(col['lightblue']("Timezone: "),f"UTC{conf.malojaconfig['timezone']:+d}")
|
||||||
|
print(col['lightblue']("Location Timezone: "),conf.malojaconfig['location_timezone'])
|
||||||
print()
|
print()
|
||||||
try:
|
try:
|
||||||
from importlib.metadata import distribution
|
from importlib.metadata import distribution
|
||||||
|
@ -1,16 +1,18 @@
|
|||||||
from datetime import timezone, timedelta, date, time, datetime
|
from datetime import timezone, timedelta, date, time, datetime
|
||||||
from calendar import monthrange
|
from calendar import monthrange
|
||||||
import math
|
import math
|
||||||
|
import zoneinfo
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
|
|
||||||
from .pkg_global.conf import malojaconfig
|
from .pkg_global.conf import malojaconfig
|
||||||
|
|
||||||
|
|
||||||
OFFSET = malojaconfig["TIMEZONE"]
|
OFFSET = malojaconfig["TIMEZONE"]
|
||||||
TIMEZONE = timezone(timedelta(hours=OFFSET))
|
LOCATION_TIMEZONE = malojaconfig["LOCATION_TIMEZONE"]
|
||||||
|
TIMEZONE = timezone(timedelta(hours=OFFSET)) if not LOCATION_TIMEZONE or LOCATION_TIMEZONE not in zoneinfo.available_timezones() else zoneinfo.ZoneInfo(LOCATION_TIMEZONE)
|
||||||
UTC = timezone.utc
|
UTC = timezone.utc
|
||||||
|
|
||||||
FIRST_SCROBBLE = int(datetime.utcnow().replace(tzinfo=UTC).timestamp())
|
FIRST_SCROBBLE = int(datetime.now(UTC).timestamp())
|
||||||
|
|
||||||
def register_scrobbletime(timestamp):
|
def register_scrobbletime(timestamp):
|
||||||
global FIRST_SCROBBLE
|
global FIRST_SCROBBLE
|
||||||
@ -63,7 +65,7 @@ class MTRangeGeneric(ABC):
|
|||||||
|
|
||||||
# whether we currently live or will ever again live in this range
|
# whether we currently live or will ever again live in this range
|
||||||
def active(self):
|
def active(self):
|
||||||
return (self.last_stamp() > datetime.utcnow().timestamp())
|
return (self.last_stamp() > datetime.now(timezone.utc).timestamp())
|
||||||
|
|
||||||
def __contains__(self,timestamp):
|
def __contains__(self,timestamp):
|
||||||
return timestamp >= self.first_stamp() and timestamp <= self.last_stamp()
|
return timestamp >= self.first_stamp() and timestamp <= self.last_stamp()
|
||||||
@ -111,7 +113,7 @@ class MTRangeGregorian(MTRangeSingular):
|
|||||||
# whether we currently live or will ever again live in this range
|
# whether we currently live or will ever again live in this range
|
||||||
# USE GENERIC SUPER METHOD INSTEAD
|
# USE GENERIC SUPER METHOD INSTEAD
|
||||||
# def active(self):
|
# def active(self):
|
||||||
# tod = datetime.datetime.utcnow().date()
|
# tod = datetime.datetime.now(timezone.utc).date()
|
||||||
# if tod.year > self.year: return False
|
# if tod.year > self.year: return False
|
||||||
# if self.precision == 1: return True
|
# if self.precision == 1: return True
|
||||||
# if tod.year == self.year:
|
# if tod.year == self.year:
|
||||||
@ -328,7 +330,7 @@ class MTRangeComposite(MTRangeGeneric):
|
|||||||
if self.since is None: return FIRST_SCROBBLE
|
if self.since is None: return FIRST_SCROBBLE
|
||||||
else: return self.since.first_stamp()
|
else: return self.since.first_stamp()
|
||||||
def last_stamp(self):
|
def last_stamp(self):
|
||||||
#if self.to is None: return int(datetime.utcnow().replace(tzinfo=timezone.utc).timestamp())
|
#if self.to is None: return int(datetime.now(timezone.utc).timestamp())
|
||||||
if self.to is None: return today().last_stamp()
|
if self.to is None: return today().last_stamp()
|
||||||
else: return self.to.last_stamp()
|
else: return self.to.last_stamp()
|
||||||
|
|
||||||
@ -421,8 +423,8 @@ def get_last_instance(category,current,target,amount):
|
|||||||
|
|
||||||
str_to_time_range = {
|
str_to_time_range = {
|
||||||
**{s:callable for callable,strlist in currenttime_string_representations for s in strlist},
|
**{s:callable for callable,strlist in currenttime_string_representations for s in strlist},
|
||||||
**{s:(lambda i=index:get_last_instance(thismonth,datetime.utcnow().month,i,12)) for index,strlist in enumerate(month_string_representations,1) for s in strlist},
|
**{s:(lambda i=index:get_last_instance(thismonth,datetime.now(timezone.utc).month,i,12)) for index,strlist in enumerate(month_string_representations,1) for s in strlist},
|
||||||
**{s:(lambda i=index:get_last_instance(today,datetime.utcnow().isoweekday()+1%7,i,7)) for index,strlist in enumerate(weekday_string_representations,1) for s in strlist}
|
**{s:(lambda i=index:get_last_instance(today,datetime.now(timezone.utc).isoweekday()+1%7,i,7)) for index,strlist in enumerate(weekday_string_representations,1) for s in strlist}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -207,7 +207,8 @@ malojaconfig = Configuration(
|
|||||||
"filters_remix":(tp.Set(tp.String()), "Remix Filters", ["Remix", "Remix Edit", "Short Mix", "Extended Mix", "Soundtrack Version"], "Filters used to recognize the remix artists in the title"),
|
"filters_remix":(tp.Set(tp.String()), "Remix Filters", ["Remix", "Remix Edit", "Short Mix", "Extended Mix", "Soundtrack Version"], "Filters used to recognize the remix artists in the title"),
|
||||||
"parse_remix_artists":(tp.Boolean(), "Parse Remix Artists", False),
|
"parse_remix_artists":(tp.Boolean(), "Parse Remix Artists", False),
|
||||||
"week_offset":(tp.Integer(), "Week Begin Offset", 0, "Start of the week for the purpose of weekly statistics. 0 = Sunday, 6 = Saturday"),
|
"week_offset":(tp.Integer(), "Week Begin Offset", 0, "Start of the week for the purpose of weekly statistics. 0 = Sunday, 6 = Saturday"),
|
||||||
"timezone":(tp.Integer(), "UTC Offset", 0)
|
"timezone":(tp.Integer(), "UTC Offset", 0),
|
||||||
|
"location_timezone":(tp.String(), "Location Timezone", None)
|
||||||
},
|
},
|
||||||
"Web Interface":{
|
"Web Interface":{
|
||||||
"default_range_startpage":(tp.Choice({'alltime':'All Time','year':'Year','month':"Month",'week':'Week'}), "Default Range for Startpage Stats", "year"),
|
"default_range_startpage":(tp.Choice({'alltime':'All Time','year':'Year','month':"Month",'week':'Week'}), "Default Range for Startpage Stats", "year"),
|
||||||
|
@ -68,6 +68,7 @@ Settings File | Environment Variable | Type | Description
|
|||||||
`parse_remix_artists` | `MALOJA_PARSE_REMIX_ARTISTS` | Boolean | Parse Remix Artists
|
`parse_remix_artists` | `MALOJA_PARSE_REMIX_ARTISTS` | Boolean | Parse Remix Artists
|
||||||
`week_offset` | `MALOJA_WEEK_OFFSET` | Integer | Start of the week for the purpose of weekly statistics. 0 = Sunday, 6 = Saturday
|
`week_offset` | `MALOJA_WEEK_OFFSET` | Integer | Start of the week for the purpose of weekly statistics. 0 = Sunday, 6 = Saturday
|
||||||
`timezone` | `MALOJA_TIMEZONE` | Integer | UTC Offset
|
`timezone` | `MALOJA_TIMEZONE` | Integer | UTC Offset
|
||||||
|
`location_timezone` | `MALOJA_LOCATION_TIMEZONE` | String | Location Timezone (overrides `timezone`)
|
||||||
**Web Interface**
|
**Web Interface**
|
||||||
`default_range_startpage` | `MALOJA_DEFAULT_RANGE_STARTPAGE` | Choice | Default Range for Startpage Stats
|
`default_range_startpage` | `MALOJA_DEFAULT_RANGE_STARTPAGE` | Choice | Default Range for Startpage Stats
|
||||||
`default_step_pulse` | `MALOJA_DEFAULT_STEP_PULSE` | Choice | Default Pulse Step
|
`default_step_pulse` | `MALOJA_DEFAULT_STEP_PULSE` | Choice | Default Pulse Step
|
||||||
|
Loading…
x
Reference in New Issue
Block a user