mirror of
https://github.com/jrnl-org/jrnl.git
synced 2025-05-10 16:48:31 +02:00
commit
5dca96d0dd
11 changed files with 16 additions and 34 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -33,3 +33,7 @@ obj
|
||||||
*.pyproj
|
*.pyproj
|
||||||
*.sln
|
*.sln
|
||||||
*.suo
|
*.suo
|
||||||
|
|
||||||
|
# virtaulenv
|
||||||
|
env/
|
||||||
|
env*/
|
||||||
|
|
|
@ -4,7 +4,8 @@ python:
|
||||||
- "2.7"
|
- "2.7"
|
||||||
- "3.3"
|
- "3.3"
|
||||||
install:
|
install:
|
||||||
- "pip install -q -r requirements.txt --use-mirrors"
|
- "pip install -e . --use-mirrors"
|
||||||
|
- "pip install pycrypto>=2.6 --use-mirrors"
|
||||||
- "pip install -q behave"
|
- "pip install -q behave"
|
||||||
# command to run tests
|
# command to run tests
|
||||||
script:
|
script:
|
||||||
|
|
|
@ -8,7 +8,7 @@ Changelog
|
||||||
* __1.7.8__ Upgrade to parsedatetime 1.2
|
* __1.7.8__ Upgrade to parsedatetime 1.2
|
||||||
* __1.7.7__ Cleaned up imports, better unicode support
|
* __1.7.7__ Cleaned up imports, better unicode support
|
||||||
* __1.7.6__ Python 3 port for slugify
|
* __1.7.6__ Python 3 port for slugify
|
||||||
* __1.7.5__ Colorama is only needed on windows. Smaller fixes
|
* __1.7.5__ Colorama is only needed on Windows. Smaller fixes
|
||||||
* __1.7.3__ Touches temporary files before opening them to allow more external editors.
|
* __1.7.3__ Touches temporary files before opening them to allow more external editors.
|
||||||
* __1.7.2__ Dateutil added to requirements.
|
* __1.7.2__ Dateutil added to requirements.
|
||||||
* __1.7.1__ Fixes issues with parsing time information in entries.
|
* __1.7.1__ Fixes issues with parsing time information in entries.
|
||||||
|
|
|
@ -13,7 +13,7 @@ Feature: DayOne Ingetration
|
||||||
2013-07-17 11:38 This entry is starred!
|
2013-07-17 11:38 This entry is starred!
|
||||||
"""
|
"""
|
||||||
|
|
||||||
Scenario: Entries without timezone information will be intepreted in the current timezone
|
Scenario: Entries without timezone information will be interpreted as in the current timezone
|
||||||
Given we use the config "dayone.json"
|
Given we use the config "dayone.json"
|
||||||
When we run "jrnl -until 'feb 2013'"
|
When we run "jrnl -until 'feb 2013'"
|
||||||
Then we should get no error
|
Then we should get no error
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
Feature: Expoting a Journal
|
Feature: Exporting a Journal
|
||||||
|
|
||||||
Scenario: Exporting to json
|
Scenario: Exporting to json
|
||||||
Given we use the config "tags.json"
|
Given we use the config "tags.json"
|
||||||
|
|
|
@ -11,6 +11,7 @@ try:
|
||||||
from io import StringIO
|
from io import StringIO
|
||||||
except ImportError:
|
except ImportError:
|
||||||
from cStringIO import StringIO
|
from cStringIO import StringIO
|
||||||
|
import tzlocal
|
||||||
|
|
||||||
def _parse_args(command):
|
def _parse_args(command):
|
||||||
nargs=[]
|
nargs=[]
|
||||||
|
@ -120,7 +121,7 @@ def check_output(context):
|
||||||
@then('the output should contain "{text}" in the local time')
|
@then('the output should contain "{text}" in the local time')
|
||||||
def check_output_time_inline(context, text):
|
def check_output_time_inline(context, text):
|
||||||
out = context.stdout_capture.getvalue()
|
out = context.stdout_capture.getvalue()
|
||||||
local_tz = pytz.timezone(util.get_local_timezone())
|
local_tz = tzlocal.get_localzone()
|
||||||
utc_time = date_parser.parse(text)
|
utc_time = date_parser.parse(text)
|
||||||
date = utc_time + local_tz._utcoffset
|
date = utc_time + local_tz._utcoffset
|
||||||
local_date = date.strftime("%Y-%m-%d %H:%M")
|
local_date = date.strftime("%Y-%m-%d %H:%M")
|
||||||
|
|
|
@ -23,6 +23,7 @@ import hashlib
|
||||||
import plistlib
|
import plistlib
|
||||||
import pytz
|
import pytz
|
||||||
import uuid
|
import uuid
|
||||||
|
import tzlocal
|
||||||
|
|
||||||
class Journal(object):
|
class Journal(object):
|
||||||
def __init__(self, name='default', **kwargs):
|
def __init__(self, name='default', **kwargs):
|
||||||
|
@ -333,7 +334,7 @@ class DayOne(Journal):
|
||||||
try:
|
try:
|
||||||
timezone = pytz.timezone(dict_entry['Time Zone'])
|
timezone = pytz.timezone(dict_entry['Time Zone'])
|
||||||
except (KeyError, pytz.exceptions.UnknownTimeZoneError):
|
except (KeyError, pytz.exceptions.UnknownTimeZoneError):
|
||||||
timezone = pytz.timezone(util.get_local_timezone())
|
timezone = tzlocal.get_localzone()
|
||||||
date = dict_entry['Creation Date']
|
date = dict_entry['Creation Date']
|
||||||
date = date + timezone.utcoffset(date)
|
date = date + timezone.utcoffset(date)
|
||||||
raw = dict_entry['Entry Text']
|
raw = dict_entry['Entry Text']
|
||||||
|
@ -357,7 +358,7 @@ class DayOne(Journal):
|
||||||
'Creation Date': utc_time,
|
'Creation Date': utc_time,
|
||||||
'Starred': entry.starred if hasattr(entry, 'starred') else False,
|
'Starred': entry.starred if hasattr(entry, 'starred') else False,
|
||||||
'Entry Text': entry.title+"\n"+entry.body,
|
'Entry Text': entry.title+"\n"+entry.body,
|
||||||
'Time Zone': util.get_local_timezone(),
|
'Time Zone': str(tzlocal.get_localzone()),
|
||||||
'UUID': entry.uuid,
|
'UUID': entry.uuid,
|
||||||
'Tags': [tag.strip(self.config['tagsymbols']) for tag in entry.tags]
|
'Tags': [tag.strip(self.config['tagsymbols']) for tag in entry.tags]
|
||||||
}
|
}
|
||||||
|
|
18
jrnl/util.py
18
jrnl/util.py
|
@ -88,24 +88,6 @@ def yesno(prompt, default=True):
|
||||||
raw = py23_input(prompt)
|
raw = py23_input(prompt)
|
||||||
return {'y': True, 'n': False}.get(raw.lower(), default)
|
return {'y': True, 'n': False}.get(raw.lower(), default)
|
||||||
|
|
||||||
def get_local_timezone():
|
|
||||||
"""Returns the Olson identifier of the local timezone.
|
|
||||||
In a happy world, tzlocal.get_localzone would do this, but there's a bug on OS X
|
|
||||||
that prevents that right now: https://github.com/regebro/tzlocal/issues/6"""
|
|
||||||
global __cached_tz
|
|
||||||
if not __cached_tz and "darwin" in sys.platform:
|
|
||||||
__cached_tz = os.popen("systemsetup -gettimezone").read().replace("Time Zone: ", "").strip()
|
|
||||||
if not __cached_tz or __cached_tz not in pytz.all_timezones_set:
|
|
||||||
link = os.readlink("/etc/localtime")
|
|
||||||
# This is something like /usr/share/zoneinfo/America/Los_Angeles.
|
|
||||||
# Find second / from right and take the substring
|
|
||||||
__cached_tz = link[link.rfind('/', 0, link.rfind('/'))+1:]
|
|
||||||
elif not __cached_tz:
|
|
||||||
__cached_tz = str(get_localzone())
|
|
||||||
if not __cached_tz or __cached_tz not in pytz.all_timezones_set:
|
|
||||||
__cached_tz = "UTC"
|
|
||||||
return __cached_tz
|
|
||||||
|
|
||||||
def load_and_fix_json(json_path):
|
def load_and_fix_json(json_path):
|
||||||
"""Tries to load a json object from a file.
|
"""Tries to load a json object from a file.
|
||||||
If that fails, tries to fix common errors (no or extra , at end of the line).
|
If that fails, tries to fix common errors (no or extra , at end of the line).
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
parsedatetime >= 1.2
|
|
||||||
pytz >= 2013b
|
|
||||||
pycrypto >= 2.6
|
|
||||||
argparse==1.2.1
|
|
||||||
tzlocal == 1.0
|
|
||||||
keyring==3.0.5
|
|
||||||
python-dateutil==2.2
|
|
2
setup.py
2
setup.py
|
@ -72,7 +72,7 @@ setup(
|
||||||
install_requires = [
|
install_requires = [
|
||||||
"parsedatetime>=1.2",
|
"parsedatetime>=1.2",
|
||||||
"pytz>=2013b",
|
"pytz>=2013b",
|
||||||
"tzlocal==1.0",
|
"tzlocal>=1.1",
|
||||||
"keyring>=3.3",
|
"keyring>=3.3",
|
||||||
"python-dateutil>=2.2"
|
"python-dateutil>=2.2"
|
||||||
] + [p for p, cond in conditional_dependencies.items() if cond],
|
] + [p for p, cond in conditional_dependencies.items() if cond],
|
||||||
|
|
Loading…
Add table
Reference in a new issue