├── .gitignore ├── README.md ├── app ├── __init__.py ├── config │ ├── task │ │ ├── .task │ │ ├── backlog.data │ │ ├── completed.data │ │ ├── pending.data │ │ └── undo.data │ └── taskrc ├── models.py ├── sample.cfg ├── test.db ├── test_tw.py ├── themes │ └── base │ │ ├── static │ │ ├── css │ │ │ ├── bootstrap-theme.min.css │ │ │ ├── bootstrap.min.css │ │ │ └── style.css │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ └── glyphicons-halflings-regular.woff2 │ │ └── js │ │ │ ├── bootstrap.min.js │ │ │ ├── jquery.min.js │ │ │ └── scripts.js │ │ └── templates │ │ ├── base.html │ │ ├── completed.html │ │ ├── index.html │ │ ├── login.html │ │ └── register.html ├── tw.py ├── utils.py └── views.py ├── manage.py ├── requirements.txt └── run.py /.gitignore: -------------------------------------------------------------------------------- 1 | #### joe made this: http://goel.io/joe 2 | 3 | 4 | tf/* 5 | 6 | app/config/* 7 | 8 | *.db 9 | #####=== Python ===##### 10 | *.sw* 11 | uploads/ 12 | # Byte-compiled / optimized / DLL files 13 | __pycache__/ 14 | *.py[cod] 15 | 16 | # C extensions 17 | *.so 18 | 19 | # Distribution / packaging 20 | .Python 21 | env/ 22 | build/ 23 | develop-eggs/ 24 | dist/ 25 | downloads/ 26 | eggs/ 27 | lib/ 28 | lib64/ 29 | parts/ 30 | sdist/ 31 | var/ 32 | *.egg-info/ 33 | .installed.cfg 34 | *.egg 35 | 36 | # PyInstaller 37 | # Usually these files are written by a python script from a template 38 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 39 | *.manifest 40 | *.spec 41 | 42 | # Installer logs 43 | pip-log.txt 44 | pip-delete-this-directory.txt 45 | 46 | # Unit test / coverage reports 47 | htmlcov/ 48 | .tox/ 49 | .coverage 50 | .cache 51 | nosetests.xml 52 | coverage.xml 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | 61 | # Sphinx documentation 62 | docs/_build/ 63 | 64 | # PyBuilder 65 | target/ 66 | 67 | #####=== VirtualEnv ===##### 68 | # Virtualenv 69 | # http://iamzed.com/2009/05/07/a-primer-on-virtualenv/ 70 | .Python 71 | [Bb]in 72 | [Ii]nclude 73 | [Ll]ib 74 | [Ss]cripts 75 | pyvenv.cfg 76 | pip-selfcheck.json 77 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # README 2 | 3 | ## About 4 | 5 | Written by [Chris Gwilliams](http://gwillia.ms). 6 | Using: 7 | * Flask 8 | * Flask-login 9 | * Flask-Sqlalchemy 10 | * Bootstrap 11 | 12 | ## Requirements 13 | 14 | * Python 2.7+ 15 | * Virtualenv (pip install virtualenv) 16 | * All things in `requirements.txt` 17 | * SQLite 18 | 19 | ## Running 20 | 21 | 1. `pip install virtualenv` 22 | 2. `virtualenv tf` 23 | 3. `source tf/bin/activate` 24 | 4. `tf/bin/pip install -r requirements.txt` 25 | 4. `tf/bin/python run.py` 26 | 27 | 28 | ## Creating your database 29 | 30 | All config files are in `app/config` and variables are in `sample.cfg` 31 | -------------------------------------------------------------------------------- /app/__init__.py: -------------------------------------------------------------------------------- 1 | """Application initialization.""" 2 | import os 3 | import flask.ext.login as flask_login 4 | 5 | from flask import Flask 6 | from flask_sqlalchemy import SQLAlchemy 7 | 8 | 9 | app = Flask(__name__) 10 | if os.path.exists("app/config/local.cfg"): 11 | app.config.from_pyfile('config/local.cfg', silent=True) 12 | else: 13 | app.config.from_pyfile('sample.cfg', silent=True) 14 | 15 | db = SQLAlchemy(app) 16 | 17 | login_manager = flask_login.LoginManager() 18 | from app.views import views # noqa 19 | app.register_blueprint(views) 20 | login_manager.login_view = "views.login" 21 | 22 | login_manager.init_app(app) 23 | 24 | from app import models # noqa 25 | -------------------------------------------------------------------------------- /app/config/task/.task: -------------------------------------------------------------------------------- 1 | /Users/encima/.task -------------------------------------------------------------------------------- /app/config/task/backlog.data: -------------------------------------------------------------------------------- 1 | {"description":"test","entry":"20160607T080745Z","modified":"20160607T080745Z","project":"work","status":"pending","tags":["comp_thinking"],"uuid":"a634089e-c26e-4e38-b7dc-8d9840e5a224"} 2 | {"description":"test","end":"20160607T080755Z","entry":"20160607T080745Z","modified":"20160607T080755Z","project":"work","status":"completed","tags":["comp_thinking"],"uuid":"a634089e-c26e-4e38-b7dc-8d9840e5a224"} 3 | {"description":"outline all software to be used","entry":"20160607T080846Z","modified":"20160607T080846Z","project":"work","status":"pending","tags":["devops"],"uuid":"6399fa5e-af60-4e13-af97-9dc0f344cdc0"} 4 | {"description":"test","end":"20160607T080755Z","entry":"20160607T080745Z","modified":"20160607T080919Z","project":"work","status":"deleted","tags":["comp_thinking"],"uuid":"a634089e-c26e-4e38-b7dc-8d9840e5a224"} 5 | {"description":"write assessment outline for portfolio","entry":"20160607T081012Z","modified":"20160607T081012Z","project":"work","status":"pending","tags":["mob_dev"],"uuid":"24dea1e8-8765-4149-94aa-b4d25008f2d8"} 6 | {"description":"write resit for portfolio 2015","entry":"20160607T081030Z","modified":"20160607T081030Z","priority":"H","project":"work","status":"pending","tags":["mob_dev"],"uuid":"291e1f62-52cc-44d4-901b-d73deba0f9d0"} 7 | {"description":"get quote for removing stones and rubbish","entry":"20160607T081106Z","modified":"20160607T081106Z","project":"home","status":"pending","tags":["garden"],"uuid":"fb5c4e42-1cc4-4c29-9cce-e2b534b78207"} 8 | {"description":"get quote for taking up concrete","entry":"20160607T081116Z","modified":"20160607T081116Z","project":"home","status":"pending","tags":["garden"],"uuid":"54bd6889-ed04-429e-ae9a-c22c359eb681"} 9 | {"description":"write slides for math and binary arithmetic","entry":"20160607T081511Z","modified":"20160607T081511Z","project":"work","status":"pending","tags":["comp_thinking"],"uuid":"a4909529-44b3-46be-9629-2db028e59b52"} 10 | {"description":"create server to host projects similar to thoughtboxes","entry":"20160607T081701Z","modified":"20160607T081701Z","project":"side_projects","status":"pending","tags":["task_warrior"],"uuid":"284208c7-552b-4720-8fa1-2294b5c9762a"} 11 | {"description":"run tutorials on docker and create exercises","entry":"20160607T082654Z","modified":"20160607T082654Z","project":"work","status":"pending","uuid":"a0b10e47-6c2e-465e-aa46-c57c8daa0a73"} 12 | {"description":"write reference for jack","entry":"20160607T084817Z","modified":"20160607T084817Z","project":"work","status":"pending","tags":["students"],"uuid":"b7a662fe-4326-4bea-90ac-62de6f598c00"} 13 | {"description":"write reference for jack","end":"20160607T085446Z","entry":"20160607T084817Z","modified":"20160607T085446Z","project":"work","status":"completed","tags":["students"],"uuid":"b7a662fe-4326-4bea-90ac-62de6f598c00"} 14 | {"description":"write how to contribute to open source","entry":"20160607T121710Z","modified":"20160607T121710Z","project":"work","status":"pending","tags":["blog"],"uuid":"365cb046-c2b7-421e-9ccf-d974b7fec74e"} 15 | {"description":"write how to contribute to open source","entry":"20160608T111918Z","modified":"20160608T111918Z","project":"work","status":"pending","tags":["blog"],"uuid":"d2300219-a05b-40be-b228-403adc029a5f"} 16 | {"description":"add count for comments to posts","entry":"20160608T112017Z","modified":"20160608T112017Z","project":"freelance","status":"pending","tags":["ordinary_lies"],"uuid":"f990dd9c-6c4b-492d-891e-b9c9f283dc9f"} 17 | {"description":"write how to contribute to open source","end":"20160608T112037Z","entry":"20160608T111918Z","modified":"20160608T112039Z","project":"work","status":"deleted","tags":["blog"],"uuid":"d2300219-a05b-40be-b228-403adc029a5f"} 18 | {"description":"outline all software to be used","entry":"20160607T080846Z","modified":"20160608T115344Z","project":"teaching","status":"pending","tags":["devops"],"uuid":"6399fa5e-af60-4e13-af97-9dc0f344cdc0"} 19 | {"description":"write assessment outline for portfolio","entry":"20160607T081012Z","modified":"20160608T115344Z","project":"teaching","status":"pending","tags":["mob_dev"],"uuid":"24dea1e8-8765-4149-94aa-b4d25008f2d8"} 20 | {"description":"write resit for portfolio 2015","entry":"20160607T081030Z","modified":"20160608T115344Z","priority":"H","project":"teaching","status":"pending","tags":["mob_dev"],"uuid":"291e1f62-52cc-44d4-901b-d73deba0f9d0"} 21 | {"description":"write slides for math and binary arithmetic","entry":"20160607T081511Z","modified":"20160608T115344Z","project":"teaching","status":"pending","tags":["comp_thinking"],"uuid":"a4909529-44b3-46be-9629-2db028e59b52"} 22 | {"description":"run tutorials on docker and create exercises","entry":"20160607T082654Z","modified":"20160608T115344Z","project":"teaching","status":"pending","uuid":"a0b10e47-6c2e-465e-aa46-c57c8daa0a73"} 23 | {"description":"write how to contribute to open source","entry":"20160607T121710Z","modified":"20160608T115344Z","project":"teaching","status":"pending","tags":["blog"],"uuid":"365cb046-c2b7-421e-9ccf-d974b7fec74e"} 24 | {"description":"write how to contribute to open source","end":"20160608T112037Z","entry":"20160608T111918Z","modified":"20160608T115344Z","project":"teaching","status":"deleted","tags":["blog"],"uuid":"d2300219-a05b-40be-b228-403adc029a5f"} 25 | {"description":"write reference for jack","end":"20160607T085446Z","entry":"20160607T084817Z","modified":"20160608T115344Z","project":"teaching","status":"completed","tags":["students"],"uuid":"b7a662fe-4326-4bea-90ac-62de6f598c00"} 26 | {"description":"test","end":"20160607T080755Z","entry":"20160607T080745Z","modified":"20160608T115344Z","project":"teaching","status":"deleted","tags":["comp_thinking"],"uuid":"a634089e-c26e-4e38-b7dc-8d9840e5a224"} 27 | {"description":"write resit for portfolio 2015","end":"20160608T131712Z","entry":"20160607T081030Z","modified":"20160608T131712Z","priority":"H","project":"teaching","status":"completed","tags":["mob_dev"],"uuid":"291e1f62-52cc-44d4-901b-d73deba0f9d0"} 28 | {"description":"get quote for removing stones and rubbish","end":"20160608T131731Z","entry":"20160607T081106Z","modified":"20160608T131731Z","project":"home","status":"completed","tags":["garden"],"uuid":"fb5c4e42-1cc4-4c29-9cce-e2b534b78207"} 29 | {"description":"write assessment outline for portfolio","end":"20160608T131743Z","entry":"20160607T081012Z","modified":"20160608T131743Z","project":"teaching","status":"completed","tags":["mob_dev"],"uuid":"24dea1e8-8765-4149-94aa-b4d25008f2d8"} 30 | {"description":"upload resits to learning central","entry":"20160608T131758Z","modified":"20160608T131758Z","project":"teaching","status":"pending","tags":["mob_dev"],"uuid":"27e208fd-390d-4dd4-8cb8-41d994fa5f97"} 31 | {"description":"project:work hello","entry":"20160608T144132Z","modified":"20160608T144132Z","status":"pending","uuid":"ee3269d7-7eb9-43bb-a61f-cf81d6fc5bf1"} 32 | {"description":"test","entry":"20160608T145249Z","modified":"20160608T145249Z","status":"pending","tags":[" ","p","r","o","j","e","c","t","=","&dquot;","a","h","i","n","g"],"uuid":"0aeca992-cd39-42e9-9d26-301e508648f8"} 33 | {"description":"test","entry":"20160608T145356Z","modified":"20160608T145356Z","status":"pending","tags":[" ","p","r","o","j","e","c","t","=","&dquot;","a","h","i","n","g"],"uuid":"1a163b9f-033e-44fe-b4da-56c67e44be7d"} 34 | {"description":"test","entry":"20160608T145408Z","modified":"20160608T145408Z","status":"pending","tags":[" ","p","r","o","j","e","c","t","=","&dquot;","a","h","i","n","g"],"uuid":"44191caf-c63f-4ee0-8e17-da0e89a3152a"} 35 | {"description":"test","end":"20160608T145455Z","entry":"20160608T145356Z","modified":"20160608T145459Z","status":"deleted","tags":[" ","p","r","o","j","e","c","t","=",""","a","h","i","n","g"],"uuid":"1a163b9f-033e-44fe-b4da-56c67e44be7d"} 36 | {"description":"test","end":"20160608T145459Z","entry":"20160608T145408Z","modified":"20160608T145500Z","status":"deleted","tags":[" ","p","r","o","j","e","c","t","=",""","a","h","i","n","g"],"uuid":"44191caf-c63f-4ee0-8e17-da0e89a3152a"} 37 | {"description":"test","entry":"20160608T145725Z","modified":"20160608T145725Z","status":"pending","tags":["p","r","o","j","e","c","t","=","&dquot;","a","h","i","n","g"],"uuid":"c55b35e2-8496-4e5a-8aec-88a6d1006734"} 38 | {"description":"hello","entry":"20160609T084932Z","modified":"20160609T084932Z","project":"test","status":"pending","tags":["t","e","s","","d","a"],"uuid":"2de6a201-5240-403b-bcb1-789da5a6d03b"} 39 | {"description":"hello","entry":"20160609T085035Z","modified":"20160609T085035Z","project":"test","status":"pending","tags":["t","e","s","","d","a"],"uuid":"46e72078-191f-41c6-b948-f3103ffd811a"} 40 | {"description":"hello","entry":"20160609T085036Z","modified":"20160609T085036Z","project":"test","status":"pending","tags":["t","e","s","","d","a"],"uuid":"dbb1b29d-92e3-4dda-b444-6d2cc75129be"} 41 | {"description":"hello","end":"20160609T085057Z","entry":"20160609T084932Z","modified":"20160609T085059Z","project":"test","status":"deleted","tags":["t","e","s","","d","a"],"uuid":"2de6a201-5240-403b-bcb1-789da5a6d03b"} 42 | {"description":"hello","end":"20160609T085059Z","entry":"20160609T085035Z","modified":"20160609T085059Z","project":"test","status":"deleted","tags":["t","e","s","","d","a"],"uuid":"46e72078-191f-41c6-b948-f3103ffd811a"} 43 | {"description":"hello","end":"20160609T085059Z","entry":"20160609T085036Z","modified":"20160609T085059Z","project":"test","status":"deleted","tags":["t","e","s","","d","a"],"uuid":"dbb1b29d-92e3-4dda-b444-6d2cc75129be"} 44 | {"description":"hello","entry":"20160609T085111Z","modified":"20160609T085111Z","project":"test","status":"pending","tags":["t","e","s","","d","a"],"uuid":"9f03f8fc-cc06-4282-9247-4e1c26b1aa98"} 45 | {"description":"hello","entry":"20160609T085112Z","modified":"20160609T085112Z","project":"test","status":"pending","tags":["t","e","s","","d","a"],"uuid":"903fdb18-9123-4885-a661-37f696a67149"} 46 | {"description":"hello","entry":"20160609T085200Z","modified":"20160609T085200Z","project":"test","status":"pending","tags":["t","e","s","","d","a"],"uuid":"b9b7180e-2a4b-4d7a-b1a2-921d91e4cd1c"} 47 | {"description":"hello","entry":"20160609T085419Z","modified":"20160609T085419Z","project":"test","status":"pending","tags":["t","e","s","","d","a"],"uuid":"d2ccc771-66dd-405b-9138-cc3718d02e84"} 48 | {"description":"hello","end":"20160609T085430Z","entry":"20160609T085111Z","modified":"20160609T085432Z","project":"test","status":"deleted","tags":["t","e","s","","d","a"],"uuid":"9f03f8fc-cc06-4282-9247-4e1c26b1aa98"} 49 | {"description":"hello","end":"20160609T085432Z","entry":"20160609T085112Z","modified":"20160609T085432Z","project":"test","status":"deleted","tags":["t","e","s","","d","a"],"uuid":"903fdb18-9123-4885-a661-37f696a67149"} 50 | {"description":"hello","entry":"20160609T085440Z","modified":"20160609T085440Z","project":"test","status":"pending","tags":["t","e","s","","d","a"],"uuid":"ad81370e-0d4f-4b72-b910-3507ad49b4bf"} 51 | {"description":"hello","entry":"20160609T085442Z","modified":"20160609T085442Z","project":"test","status":"pending","tags":["t","e","s","","d","a"],"uuid":"80b9efcc-6264-43bb-8166-d0d1cbf4c6b4"} 52 | {"description":"hello","end":"20160609T085503Z","entry":"20160609T085200Z","modified":"20160609T085504Z","project":"test","status":"deleted","tags":["t","e","s","","d","a"],"uuid":"b9b7180e-2a4b-4d7a-b1a2-921d91e4cd1c"} 53 | {"description":"hello","end":"20160609T085504Z","entry":"20160609T085419Z","modified":"20160609T085504Z","project":"test","status":"deleted","tags":["t","e","s","","d","a"],"uuid":"d2ccc771-66dd-405b-9138-cc3718d02e84"} 54 | {"description":"hello","end":"20160609T085504Z","entry":"20160609T085440Z","modified":"20160609T085504Z","project":"test","status":"deleted","tags":["t","e","s","","d","a"],"uuid":"ad81370e-0d4f-4b72-b910-3507ad49b4bf"} 55 | {"description":"hello","end":"20160609T085504Z","entry":"20160609T085442Z","modified":"20160609T085504Z","project":"test","status":"deleted","tags":["t","e","s","","d","a"],"uuid":"80b9efcc-6264-43bb-8166-d0d1cbf4c6b4"} 56 | {"description":"hello","entry":"20160609T100158Z","modified":"20160609T100158Z","project":"test_project","status":"pending","tags":["t","a","g","","s"],"uuid":"0290897b-8493-40f2-97f0-30979a36dd74"} 57 | {"description":"hello","entry":"20160609T100247Z","modified":"20160609T100247Z","project":"test_project","status":"pending","tags":["t","a","g","","s"],"uuid":"9fdc9717-ffd5-4eb6-ba04-7d8645dd3c27"} 58 | {"description":"hello","entry":"20160609T100309Z","modified":"20160609T100309Z","project":"test_project","status":"pending","tags":["t","a","g","","s"],"uuid":"372fc6fb-9ed1-466f-80f6-df8ee56f9cd1"} 59 | {"description":"hello","entry":"20160609T100317Z","modified":"20160609T100317Z","project":"test_project","status":"pending","tags":["t","a","g","","s"],"uuid":"b2be4dd1-5410-42c9-9cdf-510b09b709fc"} 60 | {"description":"hello","entry":"20160609T100335Z","modified":"20160609T100335Z","project":"test_project","status":"pending","tags":["t","a","g","","s"],"uuid":"b3b9d9ce-0fee-40bd-aab1-ef3b779098b3"} 61 | {"description":"hello","entry":"20160609T100346Z","modified":"20160609T100346Z","project":"test_project","status":"pending","tags":["t","a","g","","s"],"uuid":"fdfacc44-a591-4ec5-a5d4-6387142d991e"} 62 | {"description":"hello there","entry":"20160609T101539Z","modified":"20160609T101539Z","project":"test_project","status":"pending","tags":["t","a","g","","s"],"uuid":"9bf85cd1-a958-48b4-b46f-f7d673123c4e"} 63 | {"description":"hello there stranger","entry":"20160609T102741Z","modified":"20160609T102741Z","status":"pending","uuid":"0cf85b4e-d970-403a-96d4-d8bc8c181a53"} 64 | {"description":"hello there stranger","entry":"20160609T102812Z","modified":"20160609T102812Z","status":"pending","uuid":"b352c1ac-caa1-4753-888e-ffb5ebb0d45a"} 65 | {"description":"upload resits to learning central","end":"20160609T141449Z","entry":"20160608T131758Z","modified":"20160609T141449Z","project":"teaching","status":"completed","tags":["mob_dev"],"uuid":"27e208fd-390d-4dd4-8cb8-41d994fa5f97"} 66 | {"description":"connect search bar to map view controller","entry":"20160609T141936Z","modified":"20160609T141936Z","project":"side_projects","status":"pending","tags":["fumbs"],"uuid":"a098a60b-c94a-49eb-bc50-c4d6d7b510dc"} 67 | {"description":"test","entry":"20160609T142001Z","modified":"20160609T142001Z","status":"pending","uuid":"97107067-2ef8-47bd-8ee9-09b319b0ea59"} 68 | {"description":"test","entry":"20160609T142008Z","modified":"20160609T142008Z","status":"pending","uuid":"5e121ae4-2093-43a2-bdef-86b0853bf192"} 69 | {"description":"test","end":"20160609T142154Z","entry":"20160609T142008Z","modified":"20160609T142154Z","status":"completed","uuid":"5e121ae4-2093-43a2-bdef-86b0853bf192"} 70 | {"description":"test","end":"20160609T142209Z","entry":"20160609T142001Z","modified":"20160609T142209Z","status":"completed","uuid":"97107067-2ef8-47bd-8ee9-09b319b0ea59"} 71 | {"description":"upload flask-task to digital ocean","entry":"20160609T142314Z","modified":"20160609T142314Z","project":"side_projects","status":"pending","tags":["task"],"uuid":"d8464fb1-e98a-459a-aeca-e07823ae5692"} 72 | {"description":"complete vetting form","entry":"20160609T142721Z","modified":"20160609T142721Z","status":"pending","uuid":"533d1f32-7568-41c8-8e9f-3a98df31600e"} 73 | {"description":"complete vetting form","entry":"20160609T142811Z","modified":"20160609T142811Z","status":"pending","uuid":"7a8cd94a-2f77-4f62-9c29-e71ddf31126a"} 74 | {"description":"complete vetting form","end":"20160609T142815Z","entry":"20160609T142811Z","modified":"20160609T142815Z","status":"completed","uuid":"7a8cd94a-2f77-4f62-9c29-e71ddf31126a"} 75 | {"description":"complete vetting form","end":"20160609T142816Z","entry":"20160609T142721Z","modified":"20160609T142816Z","status":"completed","uuid":"533d1f32-7568-41c8-8e9f-3a98df31600e"} 76 | {"description":"vetting form","entry":"20160609T142828Z","modified":"20160609T142828Z","project":"curop","status":"pending","uuid":"405ed116-499d-425b-858a-f0d379746dfa"} 77 | {"description":"call john on facetime","entry":"20160609T195949Z","modified":"20160609T195949Z","project":"side_projects","status":"pending","uuid":"8c569a10-5a77-4aab-bab4-2332f950dc70"} 78 | {"description":"call john on facetime","entry":"20160609T200004Z","modified":"20160609T200004Z","project":"side_projects","status":"pending","tags":["tag","fumbs"],"uuid":"2a2197fc-747a-48e2-9148-cfb0fd996ee5"} 79 | {"description":"call john on facetime","entry":"20160609T200340Z","modified":"20160609T200340Z","project":"side_projects","status":"pending","tags":["tag"],"uuid":"964d80e2-268a-4daf-9c4e-86ff276b702a"} 80 | {"description":"call john on facetime","entry":"20160609T201344Z","modified":"20160609T201344Z","priority":"H","project":"side_projects","status":"pending","tags":["tag"],"uuid":"748af634-a52d-42ca-bc98-781dcfcfd14b"} 81 | {"description":"call john on facetime","entry":"20160609T201358Z","modified":"20160609T201358Z","priority":"H","project":"side_projects","status":"pending","tags":["tag"],"uuid":"34f663db-2807-48a9-95c3-d87298e02688"} 82 | {"description":"call john on facetime","entry":"20160609T201403Z","modified":"20160609T201403Z","project":"side_projects","status":"pending","tags":["tag"],"uuid":"5afdb8eb-c3bf-416b-aac1-75a0d1b03005"} 83 | {"description":"call john on facetime","entry":"20160609T201423Z","modified":"20160609T201423Z","project":"side_projects","status":"pending","uuid":"556d74a5-b583-4ded-ad96-359f1d49efcc"} 84 | {"description":"call Kia for door fix quote","entry":"20160610T091911Z","modified":"20160610T091911Z","project":"car","status":"pending","uuid":"00946010-97fb-4ce8-aefd-b1d8eb104f2c"} 85 | {"description":"call police to report","entry":"20160610T091925Z","modified":"20160610T091925Z","project":"car","status":"pending","uuid":"ca173af5-22da-4020-97a8-1aa99c8c21eb"} 86 | {"description":"upload flask-task to digital ocean","end":"20160610T091931Z","entry":"20160609T142314Z","modified":"20160610T091931Z","project":"side_projects","status":"completed","tags":["task"],"uuid":"d8464fb1-e98a-459a-aeca-e07823ae5692"} 87 | {"description":"call police to report","end":"20160610T101623Z","entry":"20160610T091925Z","modified":"20160610T101623Z","project":"car","status":"completed","uuid":"ca173af5-22da-4020-97a8-1aa99c8c21eb"} 88 | {"description":"take up garden decking","entry":"20160610T120127Z","modified":"20160610T120127Z","project":"home","status":"pending","uuid":"9d834e85-5237-4c1d-b9d9-afd0a0b9a00c"} 89 | {"description":"buy garden gloves","entry":"20160611T090346Z","modified":"20160611T090346Z","project":"home","status":"pending","uuid":"c1587a67-456d-41d8-aed3-af126e6b3eb9"} 90 | {"description":"check with bmw for car","entry":"20160611T090420Z","modified":"20160611T090420Z","project":"car","status":"pending","uuid":"3ef30458-624f-46d5-a97d-24c3a868a8c9"} 91 | {"description":"buy soap","entry":"20160611T101842Z","modified":"20160611T101842Z","project":"home","status":"pending","uuid":"ecbcc5a2-32b7-47d5-97a9-35b7df570686"} 92 | {"description":"buy garden gloves","end":"20160611T171402Z","entry":"20160611T090346Z","modified":"20160611T171402Z","project":"home","status":"completed","uuid":"c1587a67-456d-41d8-aed3-af126e6b3eb9"} 93 | {"description":"buy soap","end":"20160611T171403Z","entry":"20160611T101842Z","modified":"20160611T171403Z","project":"home","status":"completed","uuid":"ecbcc5a2-32b7-47d5-97a9-35b7df570686"} 94 | {"description":"check with bmw for car","end":"20160611T171412Z","entry":"20160611T090420Z","modified":"20160611T171412Z","project":"car","status":"completed","uuid":"3ef30458-624f-46d5-a97d-24c3a868a8c9"} 95 | {"description":"get video of crash from cctv hdd","entry":"20160611T175123Z","modified":"20160611T175123Z","project":"car","status":"pending","uuid":"a79ddb69-e2dd-47ad-a474-acb07e1d64d3"} 96 | {"description":"call tesco to return foreman","entry":"20160613T141643Z","modified":"20160613T141643Z","project":"home","status":"pending","uuid":"495fc110-c9f3-4b51-979e-ed6281c1ac3e"} 97 | {"description":"add count for comments to posts","end":"20160613T141648Z","entry":"20160608T112017Z","modified":"20160613T141648Z","project":"freelance","status":"completed","tags":["ordinary_lies"],"uuid":"f990dd9c-6c4b-492d-891e-b9c9f283dc9f"} 98 | {"description":"create bakuro generator and solver checker","entry":"20160613T141713Z","modified":"20160613T141713Z","priority":"L","project":"teaching","status":"pending","uuid":"d2643989-2770-4d1c-9113-66d0056b01d6"} 99 | {"description":"connect search bar to map view controller","end":"20160613T141726Z","entry":"20160609T141936Z","modified":"20160613T141726Z","project":"side_projects","status":"completed","tags":["fumbs"],"uuid":"a098a60b-c94a-49eb-bc50-c4d6d7b510dc"} 100 | {"description":"create server to host projects similar to thoughtboxes","end":"20160613T141730Z","entry":"20160607T081701Z","modified":"20160613T141730Z","project":"side_projects","status":"completed","tags":["task_warrior"],"uuid":"284208c7-552b-4720-8fa1-2294b5c9762a"} 101 | {"description":"call Kia for door fix quote","end":"20160613T141733Z","entry":"20160610T091911Z","modified":"20160613T141733Z","project":"car","status":"completed","uuid":"00946010-97fb-4ce8-aefd-b1d8eb104f2c"} 102 | {"description":"get video of crash from cctv hdd","end":"20160613T141736Z","entry":"20160611T175123Z","modified":"20160613T141736Z","project":"car","status":"completed","uuid":"a79ddb69-e2dd-47ad-a474-acb07e1d64d3"} 103 | {"description":"take up garden decking","end":"20160613T141739Z","entry":"20160610T120127Z","modified":"20160613T141739Z","project":"home","status":"completed","uuid":"9d834e85-5237-4c1d-b9d9-afd0a0b9a00c"} 104 | {"description":"sort Amazon return for bag","entry":"20160614T074150Z","modified":"20160614T074150Z","project":"home","status":"pending","tags":["tash"],"uuid":"57db6b57-d249-432b-872b-be31770cc37e"} 105 | {"description":"link search bar to map markers","entry":"20160614T074716Z","modified":"20160614T074716Z","project":"side_projects","status":"pending","tags":["fumbs"],"uuid":"7d6cd354-d7f9-401c-828b-6fe5d6746dcc"} 106 | {"description":"sort Amazon return for bag","end":"20160621T100521Z","entry":"20160614T074150Z","modified":"20160621T100521Z","project":"home","status":"completed","tags":["tash"],"uuid":"57db6b57-d249-432b-872b-be31770cc37e"} 107 | {"description":"outline all software to be used","end":"20160621T100529Z","entry":"20160607T080846Z","modified":"20160621T100529Z","project":"teaching","status":"completed","tags":["devops"],"uuid":"6399fa5e-af60-4e13-af97-9dc0f344cdc0"} 108 | {"description":"get quote for taking up concrete","end":"20160621T100529Z","entry":"20160607T081116Z","modified":"20160621T100529Z","project":"home","status":"completed","tags":["garden"],"uuid":"54bd6889-ed04-429e-ae9a-c22c359eb681"} 109 | {"description":"set up task warrior server","entry":"20160621T100603Z","modified":"20160621T100603Z","project":"side_projects","status":"pending","uuid":"70d8f1c5-d5d9-4104-be96-31ca2f5aae24"} 110 | {"description":"find ring size","entry":"20160622T075701Z","modified":"20160622T075701Z","project":"personal","status":"pending","uuid":"3692fd9e-28d1-4956-b175-c10f7cb6c138"} 111 | {"description":"post tash parcel","entry":"20160622T075718Z","modified":"20160622T075718Z","project":"personal","status":"pending","uuid":"aaaad1af-24a2-4009-b6c5-fa2a518c1de8"} 112 | {"description":"buy tash mooncup","entry":"20160622T075731Z","modified":"20160622T075731Z","project":"personal","status":"pending","uuid":"80d193c5-2d3b-4307-9394-35be1913e06d"} 113 | {"description":"buy pomade and comb","entry":"20160622T075746Z","modified":"20160622T075746Z","project":"personal","status":"pending","uuid":"53d708d7-4809-43b7-8497-c72d7f5d5d05"} 114 | {"description":"set up task warrior server","end":"20160622T080032Z","entry":"20160621T100603Z","modified":"20160622T080032Z","project":"side_projects","status":"completed","uuid":"70d8f1c5-d5d9-4104-be96-31ca2f5aae24"} 115 | {"description":"set up users and certs on taskwarrior server","entry":"20160622T080047Z","modified":"20160622T080047Z","project":"side_projects","status":"pending","uuid":"14784ebe-7937-468c-af1b-593b7c198afc"} 116 | {"description":"create bakuro generator and solver checker","end":"20160622T080106Z","entry":"20160613T141713Z","modified":"20160622T080106Z","priority":"L","project":"teaching","status":"completed","uuid":"d2643989-2770-4d1c-9113-66d0056b01d6"} 117 | {"description":"read and write bakuro grids","entry":"20160622T080127Z","modified":"20160622T080127Z","project":"teaching","status":"pending","tags":["comp_thinking"],"uuid":"671bbb63-ff15-4a0e-a2c7-327bdaeae7c5"} 118 | {"description":"output grids as image","entry":"20160622T080148Z","modified":"20160622T080148Z","project":"teaching","status":"pending","tags":["comp_thinking"],"uuid":"fa795367-0ae0-4415-a3b1-086f9a33b210"} 119 | {"description":"buy tash mooncup","end":"20160622T125209Z","entry":"20160622T075731Z","modified":"20160622T125209Z","project":"personal","status":"completed","uuid":"80d193c5-2d3b-4307-9394-35be1913e06d"} 120 | {"description":"buy pomade and comb","end":"20160622T125211Z","entry":"20160622T075746Z","modified":"20160622T125211Z","project":"personal","status":"completed","uuid":"53d708d7-4809-43b7-8497-c72d7f5d5d05"} 121 | {"description":"find ring size","end":"20160622T125212Z","entry":"20160622T075701Z","modified":"20160622T125212Z","project":"personal","status":"completed","uuid":"3692fd9e-28d1-4956-b175-c10f7cb6c138"} 122 | {"description":"read and write bakuro grids","end":"20160626T183716Z","entry":"20160622T080127Z","modified":"20160626T183716Z","project":"teaching","status":"completed","tags":["comp_thinking"],"uuid":"671bbb63-ff15-4a0e-a2c7-327bdaeae7c5"} 123 | {"description":"post tash parcel","end":"20160626T183719Z","entry":"20160622T075718Z","modified":"20160626T183719Z","project":"personal","status":"completed","uuid":"aaaad1af-24a2-4009-b6c5-fa2a518c1de8"} 124 | {"description":"set up users and certs on taskwarrior server","end":"20160626T183719Z","entry":"20160622T080047Z","modified":"20160626T183719Z","project":"side_projects","status":"completed","uuid":"14784ebe-7937-468c-af1b-593b7c198afc"} 125 | {"description":"call getmein","entry":"20160626T183755Z","modified":"20160626T183755Z","project":"home","status":"pending","uuid":"4255b5e8-918b-4a9b-91e1-8e923a10b26c"} 126 | {"description":"vetting form","end":"20160627T102252Z","entry":"20160609T142828Z","modified":"20160627T102252Z","project":"curop","status":"completed","uuid":"405ed116-499d-425b-858a-f0d379746dfa"} 127 | {"description":"add delivery methods","entry":"20160628T091455Z","modified":"20160628T091455Z","project":"papers","status":"pending","uuid":"7c438407-8e3d-4ba6-9078-d92d259b7600"} 128 | {"description":"pick up caz","entry":"20160628T091540Z","modified":"20160628T091540Z","project":"home","status":"pending","uuid":"849b2691-a108-4901-9565-a7c3a0bcf5d3"} 129 | {"description":"WSSSPE paper on links with industry and academia","entry":"20160628T103559Z","modified":"20160628T103559Z","project":"papers","status":"pending","uuid":"68677ddd-cf9d-4bda-9ffd-49016af44c69"} 130 | {"description":"call tesco to return foreman","end":"20160705T105258Z","entry":"20160613T141643Z","modified":"20160705T105258Z","project":"home","status":"completed","uuid":"495fc110-c9f3-4b51-979e-ed6281c1ac3e"} 131 | {"description":"call getmein","end":"20160705T105300Z","entry":"20160626T183755Z","modified":"20160705T105300Z","project":"home","status":"completed","uuid":"4255b5e8-918b-4a9b-91e1-8e923a10b26c"} 132 | {"description":"pick up caz","end":"20160705T105302Z","entry":"20160628T091540Z","modified":"20160705T105302Z","project":"home","status":"completed","uuid":"849b2691-a108-4901-9565-a7c3a0bcf5d3"} 133 | {"description":"add delivery methods","end":"20160705T105318Z","entry":"20160628T091455Z","modified":"20160705T105318Z","project":"papers","status":"completed","uuid":"7c438407-8e3d-4ba6-9078-d92d259b7600"} 134 | {"description":"WSSSPE paper on links with industry and academia","end":"20160705T105320Z","entry":"20160628T103559Z","modified":"20160705T105320Z","project":"papers","status":"completed","uuid":"68677ddd-cf9d-4bda-9ffd-49016af44c69"} 135 | {"description":"add in Wendy comments","entry":"20160705T105342Z","modified":"20160705T105342Z","project":"papers","status":"pending","uuid":"0fb9e9d2-20c4-4ad8-ab9b-6a0c5c226216"} 136 | {"description":"add in pics from Dropbox","entry":"20160705T105355Z","modified":"20160705T105355Z","project":"papers","status":"pending","uuid":"33c3421f-24ff-49ef-9857-72242862a5fd"} 137 | {"description":"submit paper to wssspe","entry":"20160705T105441Z","modified":"20160705T105441Z","project":"papers","status":"pending","uuid":"15cae819-8c22-4c7e-937b-7115195d6c12"} 138 | {"description":"write slides for math and binary arithmetic","end":"20160705T105448Z","entry":"20160607T081511Z","modified":"20160705T105448Z","project":"teaching","status":"completed","tags":["comp_thinking"],"uuid":"a4909529-44b3-46be-9629-2db028e59b52"} 139 | {"description":"finish complexity slides","entry":"20160705T105508Z","modified":"20160705T105508Z","project":"teaching","status":"pending","uuid":"ee54ff9d-ed8a-4df7-bc30-87828b709a70"} 140 | {"description":"comp thinking coursework","entry":"20160705T105520Z","modified":"20160705T105520Z","project":"teaching","status":"pending","uuid":"897531d8-23e5-475f-95d7-55e6f9a27880"} 141 | {"description":"Raspberry Pi and NFC reader","entry":"20160705T105538Z","modified":"20160705T105538Z","project":"NSA","status":"pending","uuid":"d453aba6-1425-44b0-9b4d-b1e497e69943"} 142 | {"description":"Presentation on student dev pipeline","entry":"20160705T105609Z","modified":"20160705T105609Z","project":"NSA","status":"pending","uuid":"049cc02a-8143-41aa-a40d-5e038afcdb54"} 143 | {"description":"canadian visa","entry":"20160707T081056Z","modified":"20160707T081056Z","project":"us_wedding","status":"pending","uuid":"4fd8aa7e-ac8b-40be-a71d-8def2cccf4bb"} 144 | {"description":"us visa","entry":"20160707T081110Z","modified":"20160707T081110Z","project":"us_wedding","status":"pending","uuid":"25d3a7a0-9167-4de1-8dfd-dab92d1436a3"} 145 | {"description":"amsterdam accom","entry":"20160707T081121Z","modified":"20160707T081121Z","project":"us_wedding","status":"pending","uuid":"8ab0b1ea-ab14-474a-b2a4-baa4671d1208"} 146 | {"description":"toronto accom (1\/2 nights)","entry":"20160707T081138Z","modified":"20160707T081138Z","project":"us_wedding","status":"pending","uuid":"2c22f106-98e5-4a18-9705-55ae28d34f19"} 147 | {"description":"pay canada for accom","entry":"20160707T083647Z","modified":"20160707T083647Z","project":"us_wedding","status":"pending","uuid":"1109339e-edd4-4a66-91cc-e634b1df44af"} 148 | {"description":"canadian visa","end":"20160707T093930Z","entry":"20160707T081056Z","modified":"20160707T093930Z","project":"us_wedding","status":"completed","uuid":"4fd8aa7e-ac8b-40be-a71d-8def2cccf4bb"} 149 | {"description":"us visa","end":"20160707T093931Z","entry":"20160707T081110Z","modified":"20160707T093931Z","project":"us_wedding","status":"completed","uuid":"25d3a7a0-9167-4de1-8dfd-dab92d1436a3"} 150 | {"description":"amsterdam accom","end":"20160707T093933Z","entry":"20160707T081121Z","modified":"20160707T093933Z","project":"us_wedding","status":"completed","uuid":"8ab0b1ea-ab14-474a-b2a4-baa4671d1208"} 151 | {"description":"add in Wendy comments","end":"20160707T121636Z","entry":"20160705T105342Z","modified":"20160707T121636Z","project":"papers","status":"completed","uuid":"0fb9e9d2-20c4-4ad8-ab9b-6a0c5c226216"} 152 | {"description":"add in pics from Dropbox","end":"20160707T121637Z","entry":"20160705T105355Z","modified":"20160707T121637Z","project":"papers","status":"completed","uuid":"33c3421f-24ff-49ef-9857-72242862a5fd"} 153 | {"description":"submit paper to wssspe","end":"20160707T121638Z","entry":"20160705T105441Z","modified":"20160707T121638Z","project":"papers","status":"completed","uuid":"15cae819-8c22-4c7e-937b-7115195d6c12"} 154 | {"description":"latex exam generator","entry":"20160707T121707Z","modified":"20160707T121707Z","project":"teaching","status":"pending","tags":["cm6111"],"uuid":"de2d56c5-6a0a-4c4d-8975-c433973de6df"} 155 | {"description":"finish complexity slides","end":"20160711T072801Z","entry":"20160705T105508Z","modified":"20160711T072801Z","project":"teaching","status":"completed","uuid":"ee54ff9d-ed8a-4df7-bc30-87828b709a70"} 156 | {"description":"organise mentor prlt","entry":"20160711T090203Z","modified":"20160711T090203Z","project":"pcutl","status":"pending","uuid":"73a4035d-b86b-4add-b842-b526c8196b70"} 157 | {"description":"meetup api to generate email for cardiff meets","entry":"20160711T212836Z","modified":"20160711T212836Z","project":"side_projects","status":"pending","uuid":"336cfcca-e1da-496f-bb1c-228455c800af"} 158 | {"description":"contract for police","entry":"20160712T130329Z","modified":"20160712T130329Z","project":"curop","status":"pending","uuid":"63b38a7e-2f4b-487c-8fff-4f3b49340e5b"} 159 | {"description":"run tutorials on docker and create exercises","end":"20160722T122504Z","entry":"20160607T082654Z","modified":"20160722T122504Z","project":"teaching","status":"completed","uuid":"a0b10e47-6c2e-465e-aa46-c57c8daa0a73"} 160 | {"description":"output grids as image","end":"20160722T122508Z","entry":"20160622T080148Z","modified":"20160722T122508Z","project":"teaching","status":"completed","tags":["comp_thinking"],"uuid":"fa795367-0ae0-4415-a3b1-086f9a33b210"} 161 | {"description":"contract for police","end":"20160722T122721Z","entry":"20160712T130329Z","modified":"20160722T122721Z","project":"curop","status":"completed","uuid":"63b38a7e-2f4b-487c-8fff-4f3b49340e5b"} 162 | {"description":"organise mentor prlt","end":"20160722T122726Z","entry":"20160711T090203Z","modified":"20160722T122726Z","project":"pcutl","status":"completed","uuid":"73a4035d-b86b-4add-b842-b526c8196b70"} 163 | {"description":"meetup api to generate email for cardiff meets","end":"20160722T122726Z","entry":"20160711T212836Z","modified":"20160722T122726Z","project":"side_projects","status":"completed","uuid":"336cfcca-e1da-496f-bb1c-228455c800af"} 164 | {"description":"turn android projects into git repos","entry":"20160801T074956Z","modified":"20160801T074956Z","status":"pending","uuid":"678924ce-90d8-4139-b70f-f13f7f54b079"} 165 | {"description":"turn android projects into git repos","end":"20160803T081850Z","entry":"20160801T074956Z","modified":"20160803T081850Z","status":"completed","uuid":"678924ce-90d8-4139-b70f-f13f7f54b079"} 166 | {"description":"book WSSSPE","entry":"20160803T081901Z","modified":"20160803T081901Z","project":"NSA","status":"pending","uuid":"131084ea-33f7-4ac8-991d-f8f23ab75511"} 167 | {"description":"turn android projects into git repos","entry":"20160803T081925Z","modified":"20160803T081925Z","project":"CM6122","status":"pending","uuid":"234e0a7c-6f1f-4342-8005-3213ba776000"} 168 | {"description":"Review content of all slides","entry":"20160803T083413Z","modified":"20160803T083413Z","project":"CM6111","status":"pending","uuid":"fcf90624-66ca-4380-a18c-ac1e9924d8c8"} 169 | {"description":"Write basic exam structure","entry":"20160803T083531Z","modified":"20160803T083531Z","project":"CM6111","status":"pending","uuid":"56f53275-eade-4101-9ab8-6c141c486c17"} 170 | {"description":"screens for sims auto refreshing","entry":"20160804T134837Z","modified":"20160804T134837Z","project":"admissions","status":"pending","uuid":"71253d6f-83b8-4111-b98c-49eca00fd757"} 171 | {"description":"screens for sims auto refreshing","end":"20160806T140755Z","entry":"20160804T134837Z","modified":"20160806T140755Z","project":"admissions","status":"completed","uuid":"71253d6f-83b8-4111-b98c-49eca00fd757"} 172 | {"description":"amend paper and send out","entry":"20160808T145322Z","modified":"20160808T145322Z","project":"nsa","status":"pending","uuid":"40591f85-d4ad-4574-a88f-5af7f8420be0"} 173 | {"description":"amend paper and send out","end":"20160808T145419Z","entry":"20160808T145322Z","modified":"20160808T145419Z","project":"nsa","status":"completed","uuid":"40591f85-d4ad-4574-a88f-5af7f8420be0"} 174 | {"description":"find R script for ggplot multiple vars","entry":"20160809T095712Z","modified":"20160809T095712Z","project":"susan","status":"pending","uuid":"7ac41d6b-9a7a-43e8-b896-8c88da78f248"} 175 | {"description":"print all tickets","entry":"20160826T075302Z","modified":"20160826T075302Z","project":"travel","status":"pending","uuid":"37687b64-a92c-429b-9036-910c660e2520"} 176 | {"description":"add all events to calendar","entry":"20160826T075316Z","modified":"20160826T075316Z","project":"travel","status":"pending","uuid":"935768c5-9d9e-4948-abdc-ad9744886877"} 177 | {"description":"book car for US\/Canada","entry":"20160826T075429Z","modified":"20160826T075429Z","project":"travel","status":"pending","uuid":"2721a330-d281-4fa8-8abd-8df355c29352"} 178 | {"description":"d duggan","entry":"20160826T080723Z","modified":"20160826T080723Z","project":"adm","status":"pending","uuid":"b913a4bd-961f-4de0-80a1-3dd77300df15"} 179 | {"description":"d duggan","end":"20160826T083805Z","entry":"20160826T080723Z","modified":"20160826T083805Z","project":"adm","status":"completed","uuid":"b913a4bd-961f-4de0-80a1-3dd77300df15"} 180 | {"description":"book WSSSPE","end":"20160826T084238Z","entry":"20160803T081901Z","modified":"20160826T084238Z","project":"NSA","status":"completed","uuid":"131084ea-33f7-4ac8-991d-f8f23ab75511"} 181 | {"description":"turn android projects into git repos","end":"20160826T084238Z","entry":"20160803T081925Z","modified":"20160826T084238Z","project":"CM6122","status":"completed","uuid":"234e0a7c-6f1f-4342-8005-3213ba776000"} 182 | {"description":"toronto accom (1\/2 nights)","end":"20160827T145053Z","entry":"20160707T081138Z","modified":"20160827T145053Z","project":"us_wedding","status":"completed","uuid":"2c22f106-98e5-4a18-9705-55ae28d34f19"} 183 | {"description":"add all events to calendar","end":"20160827T145108Z","entry":"20160826T075316Z","modified":"20160827T145108Z","project":"travel","status":"completed","uuid":"935768c5-9d9e-4948-abdc-ad9744886877"} 184 | {"description":"book car for US\/Canada","end":"20160827T145108Z","entry":"20160826T075429Z","modified":"20160827T145108Z","project":"travel","status":"completed","uuid":"2721a330-d281-4fa8-8abd-8df355c29352"} 185 | {"description":"Review content of all slides","end":"20160927T122351Z","entry":"20160803T083413Z","modified":"20160927T122351Z","project":"CM6111","status":"completed","uuid":"fcf90624-66ca-4380-a18c-ac1e9924d8c8"} 186 | {"description":"write coursework","entry":"20160927T122405Z","modified":"20160927T122405Z","project":"cm6111","status":"pending","uuid":"ee526440-7c99-4fec-858b-b72081a6a485"} 187 | {"description":"find R script for ggplot multiple vars","end":"20160927T122408Z","entry":"20160809T095712Z","modified":"20160927T122408Z","project":"susan","status":"completed","uuid":"7ac41d6b-9a7a-43e8-b896-8c88da78f248"} 188 | {"description":"finish thumb print generator","entry":"20160927T122418Z","modified":"20160927T122418Z","project":"susan","status":"pending","uuid":"cf2f4964-d8d6-4201-a8c6-3829f0fd5879"} 189 | {"description":"link search bar to map markers","end":"20160927T122424Z","entry":"20160614T074716Z","modified":"20160927T122424Z","project":"side_projects","status":"completed","tags":["fumbs"],"uuid":"7d6cd354-d7f9-401c-828b-6fe5d6746dcc"} 190 | {"description":"latex exam generator","end":"20160927T122442Z","entry":"20160707T121707Z","modified":"20160927T122442Z","project":"teaching","status":"completed","tags":["cm6111"],"uuid":"de2d56c5-6a0a-4c4d-8975-c433973de6df"} 191 | {"description":"Write basic exam structure","end":"20160927T122443Z","entry":"20160803T083531Z","modified":"20160927T122443Z","project":"CM6111","status":"completed","uuid":"56f53275-eade-4101-9ab8-6c141c486c17"} 192 | {"description":"pay canada for accom","end":"20160927T122449Z","entry":"20160707T083647Z","modified":"20160927T122449Z","project":"us_wedding","status":"completed","uuid":"1109339e-edd4-4a66-91cc-e634b1df44af"} 193 | {"description":"write coursework","end":"20160927T122453Z","entry":"20160927T122405Z","modified":"20160927T122453Z","project":"cm6111","status":"completed","uuid":"ee526440-7c99-4fec-858b-b72081a6a485"} 194 | {"description":"finish thumb print generator","end":"20160927T122453Z","entry":"20160927T122418Z","modified":"20160927T122453Z","project":"susan","status":"completed","uuid":"cf2f4964-d8d6-4201-a8c6-3829f0fd5879"} 195 | {"description":"comp thinking coursework","end":"20161123T142042Z","entry":"20160705T105520Z","modified":"20161123T142042Z","project":"teaching","status":"completed","uuid":"897531d8-23e5-475f-95d7-55e6f9a27880"} 196 | {"description":"print all tickets","end":"20161123T142050Z","entry":"20160826T075302Z","modified":"20161123T142050Z","project":"travel","status":"completed","uuid":"37687b64-a92c-429b-9036-910c660e2520"} 197 | {"description":"Presentation on student dev pipeline","end":"20161123T142055Z","entry":"20160705T105609Z","modified":"20161123T142055Z","project":"NSA","status":"completed","uuid":"049cc02a-8143-41aa-a40d-5e038afcdb54"} 198 | {"description":"write how to contribute to open source","end":"20161123T142057Z","entry":"20160607T121710Z","modified":"20161123T142057Z","project":"teaching","status":"completed","tags":["blog"],"uuid":"365cb046-c2b7-421e-9ccf-d974b7fec74e"} 199 | {"description":"Raspberry Pi and NFC reader","end":"20161123T142057Z","entry":"20160705T105538Z","modified":"20161123T142057Z","project":"NSA","status":"completed","uuid":"d453aba6-1425-44b0-9b4d-b1e497e69943"} 200 | -------------------------------------------------------------------------------- /app/config/task/completed.data: -------------------------------------------------------------------------------- 1 | [description:"Raspberry Pi and NFC reader" end:"1479910857" entry:"1467716138" modified:"1479910857" project:"NSA" status:"completed" uuid:"d453aba6-1425-44b0-9b4d-b1e497e69943"] 2 | [description:"write how to contribute to open source" end:"1479910857" entry:"1465301830" modified:"1479910857" project:"teaching" status:"completed" tags:"blog" uuid:"365cb046-c2b7-421e-9ccf-d974b7fec74e"] 3 | [description:"Presentation on student dev pipeline" end:"1479910855" entry:"1467716169" modified:"1479910855" project:"NSA" status:"completed" uuid:"049cc02a-8143-41aa-a40d-5e038afcdb54"] 4 | [description:"print all tickets" end:"1479910850" entry:"1472197982" modified:"1479910850" project:"travel" status:"completed" uuid:"37687b64-a92c-429b-9036-910c660e2520"] 5 | [description:"comp thinking coursework" end:"1479910842" entry:"1467716120" modified:"1479910842" project:"teaching" status:"completed" uuid:"897531d8-23e5-475f-95d7-55e6f9a27880"] 6 | [description:"finish thumb print generator" end:"1474979093" entry:"1474979058" modified:"1474979093" project:"susan" status:"completed" uuid:"cf2f4964-d8d6-4201-a8c6-3829f0fd5879"] 7 | [description:"write coursework" end:"1474979093" entry:"1474979045" modified:"1474979093" project:"cm6111" status:"completed" uuid:"ee526440-7c99-4fec-858b-b72081a6a485"] 8 | [description:"pay canada for accom" end:"1474979089" entry:"1467880607" modified:"1474979089" project:"us_wedding" status:"completed" uuid:"1109339e-edd4-4a66-91cc-e634b1df44af"] 9 | [description:"Write basic exam structure" end:"1474979083" entry:"1470213331" modified:"1474979083" project:"CM6111" status:"completed" uuid:"56f53275-eade-4101-9ab8-6c141c486c17"] 10 | [description:"latex exam generator" end:"1474979082" entry:"1467893827" modified:"1474979082" project:"teaching" status:"completed" tags:"cm6111" uuid:"de2d56c5-6a0a-4c4d-8975-c433973de6df"] 11 | [description:"link search bar to map markers" end:"1474979064" entry:"1465890436" modified:"1474979064" project:"side_projects" status:"completed" tags:"fumbs" uuid:"7d6cd354-d7f9-401c-828b-6fe5d6746dcc"] 12 | [description:"find R script for ggplot multiple vars" end:"1474979048" entry:"1470736632" modified:"1474979048" project:"susan" status:"completed" uuid:"7ac41d6b-9a7a-43e8-b896-8c88da78f248"] 13 | [description:"Review content of all slides" end:"1474979031" entry:"1470213253" modified:"1474979031" project:"CM6111" status:"completed" uuid:"fcf90624-66ca-4380-a18c-ac1e9924d8c8"] 14 | [description:"book car for US\/Canada" end:"1472309468" entry:"1472198069" modified:"1472309468" project:"travel" status:"completed" uuid:"2721a330-d281-4fa8-8abd-8df355c29352"] 15 | [description:"add all events to calendar" end:"1472309468" entry:"1472197996" modified:"1472309468" project:"travel" status:"completed" uuid:"935768c5-9d9e-4948-abdc-ad9744886877"] 16 | [description:"toronto accom (1\/2 nights)" end:"1472309453" entry:"1467879098" modified:"1472309453" project:"us_wedding" status:"completed" uuid:"2c22f106-98e5-4a18-9705-55ae28d34f19"] 17 | [description:"turn android projects into git repos" end:"1472200958" entry:"1470212365" modified:"1472200958" project:"CM6122" status:"completed" uuid:"234e0a7c-6f1f-4342-8005-3213ba776000"] 18 | [description:"book WSSSPE" end:"1472200958" entry:"1470212341" modified:"1472200958" project:"NSA" status:"completed" uuid:"131084ea-33f7-4ac8-991d-f8f23ab75511"] 19 | [description:"d duggan" end:"1472200685" entry:"1472198843" modified:"1472200685" project:"adm" status:"completed" uuid:"b913a4bd-961f-4de0-80a1-3dd77300df15"] 20 | [description:"amend paper and send out" end:"1470668059" entry:"1470668002" modified:"1470668059" project:"nsa" status:"completed" uuid:"40591f85-d4ad-4574-a88f-5af7f8420be0"] 21 | [description:"screens for sims auto refreshing" end:"1470492475" entry:"1470318517" modified:"1470492475" project:"admissions" status:"completed" uuid:"71253d6f-83b8-4111-b98c-49eca00fd757"] 22 | [description:"turn android projects into git repos" end:"1470212330" entry:"1470037796" modified:"1470212330" status:"completed" uuid:"678924ce-90d8-4139-b70f-f13f7f54b079"] 23 | [description:"meetup api to generate email for cardiff meets" end:"1469190446" entry:"1468272516" modified:"1469190446" project:"side_projects" status:"completed" uuid:"336cfcca-e1da-496f-bb1c-228455c800af"] 24 | [description:"organise mentor prlt" end:"1469190446" entry:"1468227723" modified:"1469190446" project:"pcutl" status:"completed" uuid:"73a4035d-b86b-4add-b842-b526c8196b70"] 25 | [description:"contract for police" end:"1469190441" entry:"1468328609" modified:"1469190441" project:"curop" status:"completed" uuid:"63b38a7e-2f4b-487c-8fff-4f3b49340e5b"] 26 | [description:"output grids as image" end:"1469190308" entry:"1466582508" modified:"1469190308" project:"teaching" status:"completed" tags:"comp_thinking" uuid:"fa795367-0ae0-4415-a3b1-086f9a33b210"] 27 | [description:"run tutorials on docker and create exercises" end:"1469190304" entry:"1465288014" modified:"1469190304" project:"teaching" status:"completed" uuid:"a0b10e47-6c2e-465e-aa46-c57c8daa0a73"] 28 | [description:"finish complexity slides" end:"1468222081" entry:"1467716108" modified:"1468222081" project:"teaching" status:"completed" uuid:"ee54ff9d-ed8a-4df7-bc30-87828b709a70"] 29 | [description:"submit paper to wssspe" end:"1467893798" entry:"1467716081" modified:"1467893798" project:"papers" status:"completed" uuid:"15cae819-8c22-4c7e-937b-7115195d6c12"] 30 | [description:"add in pics from Dropbox" end:"1467893797" entry:"1467716035" modified:"1467893797" project:"papers" status:"completed" uuid:"33c3421f-24ff-49ef-9857-72242862a5fd"] 31 | [description:"add in Wendy comments" end:"1467893796" entry:"1467716022" modified:"1467893796" project:"papers" status:"completed" uuid:"0fb9e9d2-20c4-4ad8-ab9b-6a0c5c226216"] 32 | [description:"amsterdam accom" end:"1467884373" entry:"1467879081" modified:"1467884373" project:"us_wedding" status:"completed" uuid:"8ab0b1ea-ab14-474a-b2a4-baa4671d1208"] 33 | [description:"us visa" end:"1467884371" entry:"1467879070" modified:"1467884371" project:"us_wedding" status:"completed" uuid:"25d3a7a0-9167-4de1-8dfd-dab92d1436a3"] 34 | [description:"canadian visa" end:"1467884370" entry:"1467879056" modified:"1467884370" project:"us_wedding" status:"completed" uuid:"4fd8aa7e-ac8b-40be-a71d-8def2cccf4bb"] 35 | [description:"write slides for math and binary arithmetic" end:"1467716088" entry:"1465287311" modified:"1467716088" project:"teaching" status:"completed" tags:"comp_thinking" uuid:"a4909529-44b3-46be-9629-2db028e59b52"] 36 | [description:"WSSSPE paper on links with industry and academia" end:"1467716000" entry:"1467110159" modified:"1467716000" project:"papers" status:"completed" uuid:"68677ddd-cf9d-4bda-9ffd-49016af44c69"] 37 | [description:"add delivery methods" end:"1467715998" entry:"1467105295" modified:"1467715998" project:"papers" status:"completed" uuid:"7c438407-8e3d-4ba6-9078-d92d259b7600"] 38 | [description:"pick up caz" end:"1467715982" entry:"1467105340" modified:"1467715982" project:"home" status:"completed" uuid:"849b2691-a108-4901-9565-a7c3a0bcf5d3"] 39 | [description:"call getmein" end:"1467715980" entry:"1466966275" modified:"1467715980" project:"home" status:"completed" uuid:"4255b5e8-918b-4a9b-91e1-8e923a10b26c"] 40 | [description:"call tesco to return foreman" end:"1467715978" entry:"1465827403" modified:"1467715978" project:"home" status:"completed" uuid:"495fc110-c9f3-4b51-979e-ed6281c1ac3e"] 41 | [description:"vetting form" end:"1467022972" entry:"1465482508" modified:"1467022972" project:"curop" status:"completed" uuid:"405ed116-499d-425b-858a-f0d379746dfa"] 42 | [description:"set up users and certs on taskwarrior server" end:"1466966239" entry:"1466582447" modified:"1466966239" project:"side_projects" status:"completed" uuid:"14784ebe-7937-468c-af1b-593b7c198afc"] 43 | [description:"post tash parcel" end:"1466966239" entry:"1466582238" modified:"1466966239" project:"personal" status:"completed" uuid:"aaaad1af-24a2-4009-b6c5-fa2a518c1de8"] 44 | [description:"read and write bakuro grids" end:"1466966236" entry:"1466582487" modified:"1466966236" project:"teaching" status:"completed" tags:"comp_thinking" uuid:"671bbb63-ff15-4a0e-a2c7-327bdaeae7c5"] 45 | [description:"find ring size" end:"1466599932" entry:"1466582221" modified:"1466599932" project:"personal" status:"completed" uuid:"3692fd9e-28d1-4956-b175-c10f7cb6c138"] 46 | [description:"buy pomade and comb" end:"1466599931" entry:"1466582266" modified:"1466599931" project:"personal" status:"completed" uuid:"53d708d7-4809-43b7-8497-c72d7f5d5d05"] 47 | [description:"buy tash mooncup" end:"1466599929" entry:"1466582251" modified:"1466599929" project:"personal" status:"completed" uuid:"80d193c5-2d3b-4307-9394-35be1913e06d"] 48 | [description:"create bakuro generator and solver checker" end:"1466582466" entry:"1465827433" modified:"1466582466" priority:"L" project:"teaching" status:"completed" uuid:"d2643989-2770-4d1c-9113-66d0056b01d6"] 49 | [description:"set up task warrior server" end:"1466582432" entry:"1466503563" modified:"1466582432" project:"side_projects" status:"completed" uuid:"70d8f1c5-d5d9-4104-be96-31ca2f5aae24"] 50 | [description:"get quote for taking up concrete" end:"1466503529" entry:"1465287076" modified:"1466503529" project:"home" status:"completed" tags:"garden" uuid:"54bd6889-ed04-429e-ae9a-c22c359eb681"] 51 | [description:"outline all software to be used" end:"1466503529" entry:"1465286926" modified:"1466503529" project:"teaching" status:"completed" tags:"devops" uuid:"6399fa5e-af60-4e13-af97-9dc0f344cdc0"] 52 | [description:"sort Amazon return for bag" end:"1466503521" entry:"1465890110" modified:"1466503521" project:"home" status:"completed" tags:"tash" uuid:"57db6b57-d249-432b-872b-be31770cc37e"] 53 | [description:"take up garden decking" end:"1465827459" entry:"1465560087" modified:"1465827459" project:"home" status:"completed" uuid:"9d834e85-5237-4c1d-b9d9-afd0a0b9a00c"] 54 | [description:"get video of crash from cctv hdd" end:"1465827456" entry:"1465667483" modified:"1465827456" project:"car" status:"completed" uuid:"a79ddb69-e2dd-47ad-a474-acb07e1d64d3"] 55 | [description:"call Kia for door fix quote" end:"1465827453" entry:"1465550351" modified:"1465827453" project:"car" status:"completed" uuid:"00946010-97fb-4ce8-aefd-b1d8eb104f2c"] 56 | [description:"create server to host projects similar to thoughtboxes" end:"1465827450" entry:"1465287421" modified:"1465827450" project:"side_projects" status:"completed" tags:"task_warrior" uuid:"284208c7-552b-4720-8fa1-2294b5c9762a"] 57 | [description:"connect search bar to map view controller" end:"1465827446" entry:"1465481976" modified:"1465827446" project:"side_projects" status:"completed" tags:"fumbs" uuid:"a098a60b-c94a-49eb-bc50-c4d6d7b510dc"] 58 | [description:"add count for comments to posts" end:"1465827408" entry:"1465384817" modified:"1465827408" project:"freelance" status:"completed" tags:"ordinary_lies" uuid:"f990dd9c-6c4b-492d-891e-b9c9f283dc9f"] 59 | [description:"check with bmw for car" end:"1465665252" entry:"1465635860" modified:"1465665252" project:"car" status:"completed" uuid:"3ef30458-624f-46d5-a97d-24c3a868a8c9"] 60 | [description:"buy soap" end:"1465665243" entry:"1465640322" modified:"1465665243" project:"home" status:"completed" uuid:"ecbcc5a2-32b7-47d5-97a9-35b7df570686"] 61 | [description:"buy garden gloves" end:"1465665242" entry:"1465635826" modified:"1465665242" project:"home" status:"completed" uuid:"c1587a67-456d-41d8-aed3-af126e6b3eb9"] 62 | [description:"call police to report" end:"1465553783" entry:"1465550365" modified:"1465553783" project:"car" status:"completed" uuid:"ca173af5-22da-4020-97a8-1aa99c8c21eb"] 63 | [description:"upload flask-task to digital ocean" end:"1465550371" entry:"1465482194" modified:"1465550371" project:"side_projects" status:"completed" tags:"task" uuid:"d8464fb1-e98a-459a-aeca-e07823ae5692"] 64 | [description:"write assessment outline for portfolio" end:"1465391863" entry:"1465287012" modified:"1465391863" project:"teaching" status:"completed" tags:"mob_dev" uuid:"24dea1e8-8765-4149-94aa-b4d25008f2d8"] 65 | [description:"get quote for removing stones and rubbish" end:"1465391851" entry:"1465287066" modified:"1465391851" project:"home" status:"completed" tags:"garden" uuid:"fb5c4e42-1cc4-4c29-9cce-e2b534b78207"] 66 | [description:"write resit for portfolio 2015" end:"1465391832" entry:"1465287030" modified:"1465391832" priority:"H" project:"teaching" status:"completed" tags:"mob_dev" uuid:"291e1f62-52cc-44d4-901b-d73deba0f9d0"] 67 | [description:"write how to contribute to open source" end:"1465384837" entry:"1465384758" modified:"1465386824" project:"teaching" status:"deleted" tags:"blog" uuid:"d2300219-a05b-40be-b228-403adc029a5f"] 68 | [description:"write reference for jack" end:"1465289686" entry:"1465289297" modified:"1465386824" project:"teaching" status:"completed" tags:"students" uuid:"b7a662fe-4326-4bea-90ac-62de6f598c00"] 69 | -------------------------------------------------------------------------------- /app/config/task/pending.data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/encima/flask-task/55a449e41e4e28669bbed7cb5aba6493611c2219/app/config/task/pending.data -------------------------------------------------------------------------------- /app/config/task/undo.data: -------------------------------------------------------------------------------- 1 | time 1465286865 2 | new [description:"test" entry:"1465286865" modified:"1465286865" project:"work" status:"pending" tags:"comp_thinking" uuid:"a634089e-c26e-4e38-b7dc-8d9840e5a224"] 3 | --- 4 | time 1465286875 5 | old [description:"test" entry:"1465286865" modified:"1465286865" project:"work" status:"pending" tags:"comp_thinking" uuid:"a634089e-c26e-4e38-b7dc-8d9840e5a224"] 6 | new [description:"test" end:"1465286875" entry:"1465286865" modified:"1465286875" project:"work" status:"completed" tags:"comp_thinking" uuid:"a634089e-c26e-4e38-b7dc-8d9840e5a224"] 7 | --- 8 | time 1465286926 9 | new [description:"outline all software to be used" entry:"1465286926" modified:"1465286926" project:"work" status:"pending" tags:"devops" uuid:"6399fa5e-af60-4e13-af97-9dc0f344cdc0"] 10 | --- 11 | time 1465286959 12 | old [description:"test" end:"1465286875" entry:"1465286865" modified:"1465286875" project:"work" status:"completed" tags:"comp_thinking" uuid:"a634089e-c26e-4e38-b7dc-8d9840e5a224"] 13 | new [description:"test" end:"1465286875" entry:"1465286865" modified:"1465286959" project:"work" status:"deleted" tags:"comp_thinking" uuid:"a634089e-c26e-4e38-b7dc-8d9840e5a224"] 14 | --- 15 | time 1465287012 16 | new [description:"write assessment outline for portfolio" entry:"1465287012" modified:"1465287012" project:"work" status:"pending" tags:"mob_dev" uuid:"24dea1e8-8765-4149-94aa-b4d25008f2d8"] 17 | --- 18 | time 1465287030 19 | new [description:"write resit for portfolio 2015" entry:"1465287030" modified:"1465287030" priority:"H" project:"work" status:"pending" tags:"mob_dev" uuid:"291e1f62-52cc-44d4-901b-d73deba0f9d0"] 20 | --- 21 | time 1465287066 22 | new [description:"get quote for removing stones and rubbish" entry:"1465287066" modified:"1465287066" project:"home" status:"pending" tags:"garden" uuid:"fb5c4e42-1cc4-4c29-9cce-e2b534b78207"] 23 | --- 24 | time 1465287076 25 | new [description:"get quote for taking up concrete" entry:"1465287076" modified:"1465287076" project:"home" status:"pending" tags:"garden" uuid:"54bd6889-ed04-429e-ae9a-c22c359eb681"] 26 | --- 27 | time 1465287311 28 | new [description:"write slides for math and binary arithmetic" entry:"1465287311" modified:"1465287311" project:"work" status:"pending" tags:"comp_thinking" uuid:"a4909529-44b3-46be-9629-2db028e59b52"] 29 | --- 30 | time 1465287421 31 | new [description:"create server to host projects similar to thoughtboxes" entry:"1465287421" modified:"1465287421" project:"side_projects" status:"pending" tags:"task_warrior" uuid:"284208c7-552b-4720-8fa1-2294b5c9762a"] 32 | --- 33 | time 1465288014 34 | new [description:"run tutorials on docker and create exercises" entry:"1465288014" modified:"1465288014" project:"work" status:"pending" uuid:"a0b10e47-6c2e-465e-aa46-c57c8daa0a73"] 35 | --- 36 | time 1465289297 37 | new [description:"write reference for jack" entry:"1465289297" modified:"1465289297" project:"work" status:"pending" tags:"students" uuid:"b7a662fe-4326-4bea-90ac-62de6f598c00"] 38 | --- 39 | time 1465289686 40 | old [description:"write reference for jack" entry:"1465289297" modified:"1465289297" project:"work" status:"pending" tags:"students" uuid:"b7a662fe-4326-4bea-90ac-62de6f598c00"] 41 | new [description:"write reference for jack" end:"1465289686" entry:"1465289297" modified:"1465289686" project:"work" status:"completed" tags:"students" uuid:"b7a662fe-4326-4bea-90ac-62de6f598c00"] 42 | --- 43 | time 1465301830 44 | new [description:"write how to contribute to open source" entry:"1465301830" modified:"1465301830" project:"work" status:"pending" tags:"blog" uuid:"365cb046-c2b7-421e-9ccf-d974b7fec74e"] 45 | --- 46 | time 1465384758 47 | new [description:"write how to contribute to open source" entry:"1465384758" modified:"1465384758" project:"work" status:"pending" tags:"blog" uuid:"d2300219-a05b-40be-b228-403adc029a5f"] 48 | --- 49 | time 1465384817 50 | new [description:"add count for comments to posts" entry:"1465384817" modified:"1465384817" project:"freelance" status:"pending" tags:"ordinary_lies" uuid:"f990dd9c-6c4b-492d-891e-b9c9f283dc9f"] 51 | --- 52 | time 1465384839 53 | old [description:"write how to contribute to open source" entry:"1465384758" modified:"1465384758" project:"work" status:"pending" tags:"blog" uuid:"d2300219-a05b-40be-b228-403adc029a5f"] 54 | new [description:"write how to contribute to open source" end:"1465384837" entry:"1465384758" modified:"1465384839" project:"work" status:"deleted" tags:"blog" uuid:"d2300219-a05b-40be-b228-403adc029a5f"] 55 | --- 56 | time 1465386824 57 | old [description:"outline all software to be used" entry:"1465286926" modified:"1465286926" project:"work" status:"pending" tags:"devops" uuid:"6399fa5e-af60-4e13-af97-9dc0f344cdc0"] 58 | new [description:"outline all software to be used" entry:"1465286926" modified:"1465386824" project:"teaching" status:"pending" tags:"devops" uuid:"6399fa5e-af60-4e13-af97-9dc0f344cdc0"] 59 | --- 60 | time 1465386824 61 | old [description:"write assessment outline for portfolio" entry:"1465287012" modified:"1465287012" project:"work" status:"pending" tags:"mob_dev" uuid:"24dea1e8-8765-4149-94aa-b4d25008f2d8"] 62 | new [description:"write assessment outline for portfolio" entry:"1465287012" modified:"1465386824" project:"teaching" status:"pending" tags:"mob_dev" uuid:"24dea1e8-8765-4149-94aa-b4d25008f2d8"] 63 | --- 64 | time 1465386824 65 | old [description:"write resit for portfolio 2015" entry:"1465287030" modified:"1465287030" priority:"H" project:"work" status:"pending" tags:"mob_dev" uuid:"291e1f62-52cc-44d4-901b-d73deba0f9d0"] 66 | new [description:"write resit for portfolio 2015" entry:"1465287030" modified:"1465386824" priority:"H" project:"teaching" status:"pending" tags:"mob_dev" uuid:"291e1f62-52cc-44d4-901b-d73deba0f9d0"] 67 | --- 68 | time 1465386824 69 | old [description:"write slides for math and binary arithmetic" entry:"1465287311" modified:"1465287311" project:"work" status:"pending" tags:"comp_thinking" uuid:"a4909529-44b3-46be-9629-2db028e59b52"] 70 | new [description:"write slides for math and binary arithmetic" entry:"1465287311" modified:"1465386824" project:"teaching" status:"pending" tags:"comp_thinking" uuid:"a4909529-44b3-46be-9629-2db028e59b52"] 71 | --- 72 | time 1465386824 73 | old [description:"run tutorials on docker and create exercises" entry:"1465288014" modified:"1465288014" project:"work" status:"pending" uuid:"a0b10e47-6c2e-465e-aa46-c57c8daa0a73"] 74 | new [description:"run tutorials on docker and create exercises" entry:"1465288014" modified:"1465386824" project:"teaching" status:"pending" uuid:"a0b10e47-6c2e-465e-aa46-c57c8daa0a73"] 75 | --- 76 | time 1465386824 77 | old [description:"write how to contribute to open source" entry:"1465301830" modified:"1465301830" project:"work" status:"pending" tags:"blog" uuid:"365cb046-c2b7-421e-9ccf-d974b7fec74e"] 78 | new [description:"write how to contribute to open source" entry:"1465301830" modified:"1465386824" project:"teaching" status:"pending" tags:"blog" uuid:"365cb046-c2b7-421e-9ccf-d974b7fec74e"] 79 | --- 80 | time 1465386824 81 | old [description:"write how to contribute to open source" end:"1465384837" entry:"1465384758" modified:"1465384839" project:"work" status:"deleted" tags:"blog" uuid:"d2300219-a05b-40be-b228-403adc029a5f"] 82 | new [description:"write how to contribute to open source" end:"1465384837" entry:"1465384758" modified:"1465386824" project:"teaching" status:"deleted" tags:"blog" uuid:"d2300219-a05b-40be-b228-403adc029a5f"] 83 | --- 84 | time 1465386824 85 | old [description:"write reference for jack" end:"1465289686" entry:"1465289297" modified:"1465289686" project:"work" status:"completed" tags:"students" uuid:"b7a662fe-4326-4bea-90ac-62de6f598c00"] 86 | new [description:"write reference for jack" end:"1465289686" entry:"1465289297" modified:"1465386824" project:"teaching" status:"completed" tags:"students" uuid:"b7a662fe-4326-4bea-90ac-62de6f598c00"] 87 | --- 88 | time 1465386824 89 | old [description:"test" end:"1465286875" entry:"1465286865" modified:"1465286959" project:"work" status:"deleted" tags:"comp_thinking" uuid:"a634089e-c26e-4e38-b7dc-8d9840e5a224"] 90 | new [description:"test" end:"1465286875" entry:"1465286865" modified:"1465386824" project:"teaching" status:"deleted" tags:"comp_thinking" uuid:"a634089e-c26e-4e38-b7dc-8d9840e5a224"] 91 | --- 92 | time 1465391832 93 | old [description:"write resit for portfolio 2015" entry:"1465287030" modified:"1465386824" priority:"H" project:"teaching" status:"pending" tags:"mob_dev" uuid:"291e1f62-52cc-44d4-901b-d73deba0f9d0"] 94 | new [description:"write resit for portfolio 2015" end:"1465391832" entry:"1465287030" modified:"1465391832" priority:"H" project:"teaching" status:"completed" tags:"mob_dev" uuid:"291e1f62-52cc-44d4-901b-d73deba0f9d0"] 95 | --- 96 | time 1465391851 97 | old [description:"get quote for removing stones and rubbish" entry:"1465287066" modified:"1465287066" project:"home" status:"pending" tags:"garden" uuid:"fb5c4e42-1cc4-4c29-9cce-e2b534b78207"] 98 | new [description:"get quote for removing stones and rubbish" end:"1465391851" entry:"1465287066" modified:"1465391851" project:"home" status:"completed" tags:"garden" uuid:"fb5c4e42-1cc4-4c29-9cce-e2b534b78207"] 99 | --- 100 | time 1465391863 101 | old [description:"write assessment outline for portfolio" entry:"1465287012" modified:"1465386824" project:"teaching" status:"pending" tags:"mob_dev" uuid:"24dea1e8-8765-4149-94aa-b4d25008f2d8"] 102 | new [description:"write assessment outline for portfolio" end:"1465391863" entry:"1465287012" modified:"1465391863" project:"teaching" status:"completed" tags:"mob_dev" uuid:"24dea1e8-8765-4149-94aa-b4d25008f2d8"] 103 | --- 104 | time 1465391878 105 | new [description:"upload resits to learning central" entry:"1465391878" modified:"1465391878" project:"teaching" status:"pending" tags:"mob_dev" uuid:"27e208fd-390d-4dd4-8cb8-41d994fa5f97"] 106 | --- 107 | time 1465396892 108 | new [description:"project:work hello" entry:"1465396892" modified:"1465396892" status:"pending" uuid:"ee3269d7-7eb9-43bb-a61f-cf81d6fc5bf1"] 109 | --- 110 | time 1465397569 111 | new [description:"test" entry:"1465397569" modified:"1465397569" status:"pending" tags:" ,p,r,o,j,e,c,t,=,&dquot;,a,h,i,n,g" uuid:"0aeca992-cd39-42e9-9d26-301e508648f8"] 112 | --- 113 | time 1465397636 114 | new [description:"test" entry:"1465397636" modified:"1465397636" status:"pending" tags:" ,p,r,o,j,e,c,t,=,&dquot;,a,h,i,n,g" uuid:"1a163b9f-033e-44fe-b4da-56c67e44be7d"] 115 | --- 116 | time 1465397648 117 | new [description:"test" entry:"1465397648" modified:"1465397648" status:"pending" tags:" ,p,r,o,j,e,c,t,=,&dquot;,a,h,i,n,g" uuid:"44191caf-c63f-4ee0-8e17-da0e89a3152a"] 118 | --- 119 | time 1465397699 120 | old [description:"test" entry:"1465397636" modified:"1465397636" status:"pending" tags:" ,p,r,o,j,e,c,t,=,\",a,h,i,n,g" uuid:"1a163b9f-033e-44fe-b4da-56c67e44be7d"] 121 | new [description:"test" end:"1465397695" entry:"1465397636" modified:"1465397699" status:"deleted" tags:" ,p,r,o,j,e,c,t,=,\",a,h,i,n,g" uuid:"1a163b9f-033e-44fe-b4da-56c67e44be7d"] 122 | --- 123 | time 1465397700 124 | old [description:"test" entry:"1465397648" modified:"1465397648" status:"pending" tags:" ,p,r,o,j,e,c,t,=,\",a,h,i,n,g" uuid:"44191caf-c63f-4ee0-8e17-da0e89a3152a"] 125 | new [description:"test" end:"1465397699" entry:"1465397648" modified:"1465397700" status:"deleted" tags:" ,p,r,o,j,e,c,t,=,\",a,h,i,n,g" uuid:"44191caf-c63f-4ee0-8e17-da0e89a3152a"] 126 | --- 127 | time 1465397845 128 | new [description:"test" entry:"1465397845" modified:"1465397845" status:"pending" tags:"p,r,o,j,e,c,t,=,&dquot;,a,h,i,n,g" uuid:"c55b35e2-8496-4e5a-8aec-88a6d1006734"] 129 | --- 130 | time 1465462172 131 | new [description:"hello" entry:"1465462172" modified:"1465462172" project:"test" status:"pending" tags:"t,e,s,,d,a" uuid:"2de6a201-5240-403b-bcb1-789da5a6d03b"] 132 | --- 133 | time 1465462235 134 | new [description:"hello" entry:"1465462235" modified:"1465462235" project:"test" status:"pending" tags:"t,e,s,,d,a" uuid:"46e72078-191f-41c6-b948-f3103ffd811a"] 135 | --- 136 | time 1465462236 137 | new [description:"hello" entry:"1465462236" modified:"1465462236" project:"test" status:"pending" tags:"t,e,s,,d,a" uuid:"dbb1b29d-92e3-4dda-b444-6d2cc75129be"] 138 | --- 139 | time 1465462259 140 | old [description:"hello" entry:"1465462172" modified:"1465462172" project:"test" status:"pending" tags:"t,e,s,,d,a" uuid:"2de6a201-5240-403b-bcb1-789da5a6d03b"] 141 | new [description:"hello" end:"1465462257" entry:"1465462172" modified:"1465462259" project:"test" status:"deleted" tags:"t,e,s,,d,a" uuid:"2de6a201-5240-403b-bcb1-789da5a6d03b"] 142 | --- 143 | time 1465462259 144 | old [description:"hello" entry:"1465462235" modified:"1465462235" project:"test" status:"pending" tags:"t,e,s,,d,a" uuid:"46e72078-191f-41c6-b948-f3103ffd811a"] 145 | new [description:"hello" end:"1465462259" entry:"1465462235" modified:"1465462259" project:"test" status:"deleted" tags:"t,e,s,,d,a" uuid:"46e72078-191f-41c6-b948-f3103ffd811a"] 146 | --- 147 | time 1465462259 148 | old [description:"hello" entry:"1465462236" modified:"1465462236" project:"test" status:"pending" tags:"t,e,s,,d,a" uuid:"dbb1b29d-92e3-4dda-b444-6d2cc75129be"] 149 | new [description:"hello" end:"1465462259" entry:"1465462236" modified:"1465462259" project:"test" status:"deleted" tags:"t,e,s,,d,a" uuid:"dbb1b29d-92e3-4dda-b444-6d2cc75129be"] 150 | --- 151 | time 1465462271 152 | new [description:"hello" entry:"1465462271" modified:"1465462271" project:"test" status:"pending" tags:"t,e,s,,d,a" uuid:"9f03f8fc-cc06-4282-9247-4e1c26b1aa98"] 153 | --- 154 | time 1465462272 155 | new [description:"hello" entry:"1465462272" modified:"1465462272" project:"test" status:"pending" tags:"t,e,s,,d,a" uuid:"903fdb18-9123-4885-a661-37f696a67149"] 156 | --- 157 | time 1465462320 158 | new [description:"hello" entry:"1465462320" modified:"1465462320" project:"test" status:"pending" tags:"t,e,s,,d,a" uuid:"b9b7180e-2a4b-4d7a-b1a2-921d91e4cd1c"] 159 | --- 160 | time 1465462459 161 | new [description:"hello" entry:"1465462459" modified:"1465462459" project:"test" status:"pending" tags:"t,e,s,,d,a" uuid:"d2ccc771-66dd-405b-9138-cc3718d02e84"] 162 | --- 163 | time 1465462472 164 | old [description:"hello" entry:"1465462271" modified:"1465462271" project:"test" status:"pending" tags:"t,e,s,,d,a" uuid:"9f03f8fc-cc06-4282-9247-4e1c26b1aa98"] 165 | new [description:"hello" end:"1465462470" entry:"1465462271" modified:"1465462472" project:"test" status:"deleted" tags:"t,e,s,,d,a" uuid:"9f03f8fc-cc06-4282-9247-4e1c26b1aa98"] 166 | --- 167 | time 1465462472 168 | old [description:"hello" entry:"1465462272" modified:"1465462272" project:"test" status:"pending" tags:"t,e,s,,d,a" uuid:"903fdb18-9123-4885-a661-37f696a67149"] 169 | new [description:"hello" end:"1465462472" entry:"1465462272" modified:"1465462472" project:"test" status:"deleted" tags:"t,e,s,,d,a" uuid:"903fdb18-9123-4885-a661-37f696a67149"] 170 | --- 171 | time 1465462480 172 | new [description:"hello" entry:"1465462480" modified:"1465462480" project:"test" status:"pending" tags:"t,e,s,,d,a" uuid:"ad81370e-0d4f-4b72-b910-3507ad49b4bf"] 173 | --- 174 | time 1465462482 175 | new [description:"hello" entry:"1465462482" modified:"1465462482" project:"test" status:"pending" tags:"t,e,s,,d,a" uuid:"80b9efcc-6264-43bb-8166-d0d1cbf4c6b4"] 176 | --- 177 | time 1465462504 178 | old [description:"hello" entry:"1465462320" modified:"1465462320" project:"test" status:"pending" tags:"t,e,s,,d,a" uuid:"b9b7180e-2a4b-4d7a-b1a2-921d91e4cd1c"] 179 | new [description:"hello" end:"1465462503" entry:"1465462320" modified:"1465462504" project:"test" status:"deleted" tags:"t,e,s,,d,a" uuid:"b9b7180e-2a4b-4d7a-b1a2-921d91e4cd1c"] 180 | --- 181 | time 1465462504 182 | old [description:"hello" entry:"1465462459" modified:"1465462459" project:"test" status:"pending" tags:"t,e,s,,d,a" uuid:"d2ccc771-66dd-405b-9138-cc3718d02e84"] 183 | new [description:"hello" end:"1465462504" entry:"1465462459" modified:"1465462504" project:"test" status:"deleted" tags:"t,e,s,,d,a" uuid:"d2ccc771-66dd-405b-9138-cc3718d02e84"] 184 | --- 185 | time 1465462504 186 | old [description:"hello" entry:"1465462480" modified:"1465462480" project:"test" status:"pending" tags:"t,e,s,,d,a" uuid:"ad81370e-0d4f-4b72-b910-3507ad49b4bf"] 187 | new [description:"hello" end:"1465462504" entry:"1465462480" modified:"1465462504" project:"test" status:"deleted" tags:"t,e,s,,d,a" uuid:"ad81370e-0d4f-4b72-b910-3507ad49b4bf"] 188 | --- 189 | time 1465462504 190 | old [description:"hello" entry:"1465462482" modified:"1465462482" project:"test" status:"pending" tags:"t,e,s,,d,a" uuid:"80b9efcc-6264-43bb-8166-d0d1cbf4c6b4"] 191 | new [description:"hello" end:"1465462504" entry:"1465462482" modified:"1465462504" project:"test" status:"deleted" tags:"t,e,s,,d,a" uuid:"80b9efcc-6264-43bb-8166-d0d1cbf4c6b4"] 192 | --- 193 | time 1465466518 194 | new [description:"hello" entry:"1465466518" modified:"1465466518" project:"test_project" status:"pending" tags:"t,a,g,,s" uuid:"0290897b-8493-40f2-97f0-30979a36dd74"] 195 | --- 196 | time 1465466567 197 | new [description:"hello" entry:"1465466567" modified:"1465466567" project:"test_project" status:"pending" tags:"t,a,g,,s" uuid:"9fdc9717-ffd5-4eb6-ba04-7d8645dd3c27"] 198 | --- 199 | time 1465466589 200 | new [description:"hello" entry:"1465466589" modified:"1465466589" project:"test_project" status:"pending" tags:"t,a,g,,s" uuid:"372fc6fb-9ed1-466f-80f6-df8ee56f9cd1"] 201 | --- 202 | time 1465466597 203 | new [description:"hello" entry:"1465466597" modified:"1465466597" project:"test_project" status:"pending" tags:"t,a,g,,s" uuid:"b2be4dd1-5410-42c9-9cdf-510b09b709fc"] 204 | --- 205 | time 1465466615 206 | new [description:"hello" entry:"1465466615" modified:"1465466615" project:"test_project" status:"pending" tags:"t,a,g,,s" uuid:"b3b9d9ce-0fee-40bd-aab1-ef3b779098b3"] 207 | --- 208 | time 1465466626 209 | new [description:"hello" entry:"1465466626" modified:"1465466626" project:"test_project" status:"pending" tags:"t,a,g,,s" uuid:"fdfacc44-a591-4ec5-a5d4-6387142d991e"] 210 | --- 211 | time 1465467339 212 | new [description:"hello there" entry:"1465467339" modified:"1465467339" project:"test_project" status:"pending" tags:"t,a,g,,s" uuid:"9bf85cd1-a958-48b4-b46f-f7d673123c4e"] 213 | --- 214 | time 1465468061 215 | new [description:"hello there stranger" entry:"1465468061" modified:"1465468061" status:"pending" uuid:"0cf85b4e-d970-403a-96d4-d8bc8c181a53"] 216 | --- 217 | time 1465468092 218 | new [description:"hello there stranger" entry:"1465468092" modified:"1465468092" status:"pending" uuid:"b352c1ac-caa1-4753-888e-ffb5ebb0d45a"] 219 | --- 220 | time 1465481689 221 | old [description:"upload resits to learning central" entry:"1465391878" modified:"1465391878" project:"teaching" status:"pending" tags:"mob_dev" uuid:"27e208fd-390d-4dd4-8cb8-41d994fa5f97"] 222 | new [description:"upload resits to learning central" end:"1465481689" entry:"1465391878" modified:"1465481689" project:"teaching" status:"completed" tags:"mob_dev" uuid:"27e208fd-390d-4dd4-8cb8-41d994fa5f97"] 223 | --- 224 | time 1465481976 225 | new [description:"connect search bar to map view controller" entry:"1465481976" modified:"1465481976" project:"side_projects" status:"pending" tags:"fumbs" uuid:"a098a60b-c94a-49eb-bc50-c4d6d7b510dc"] 226 | --- 227 | time 1465482001 228 | new [description:"test" entry:"1465482001" modified:"1465482001" status:"pending" uuid:"97107067-2ef8-47bd-8ee9-09b319b0ea59"] 229 | --- 230 | time 1465482008 231 | new [description:"test" entry:"1465482008" modified:"1465482008" status:"pending" uuid:"5e121ae4-2093-43a2-bdef-86b0853bf192"] 232 | --- 233 | time 1465482114 234 | old [description:"test" entry:"1465482008" modified:"1465482008" status:"pending" uuid:"5e121ae4-2093-43a2-bdef-86b0853bf192"] 235 | new [description:"test" end:"1465482114" entry:"1465482008" modified:"1465482114" status:"completed" uuid:"5e121ae4-2093-43a2-bdef-86b0853bf192"] 236 | --- 237 | time 1465482129 238 | old [description:"test" entry:"1465482001" modified:"1465482001" status:"pending" uuid:"97107067-2ef8-47bd-8ee9-09b319b0ea59"] 239 | new [description:"test" end:"1465482129" entry:"1465482001" modified:"1465482129" status:"completed" uuid:"97107067-2ef8-47bd-8ee9-09b319b0ea59"] 240 | --- 241 | time 1465482194 242 | new [description:"upload flask-task to digital ocean" entry:"1465482194" modified:"1465482194" project:"side_projects" status:"pending" tags:"task" uuid:"d8464fb1-e98a-459a-aeca-e07823ae5692"] 243 | --- 244 | time 1465482441 245 | new [description:"complete vetting form" entry:"1465482441" modified:"1465482441" status:"pending" uuid:"533d1f32-7568-41c8-8e9f-3a98df31600e"] 246 | --- 247 | time 1465482491 248 | new [description:"complete vetting form" entry:"1465482491" modified:"1465482491" status:"pending" uuid:"7a8cd94a-2f77-4f62-9c29-e71ddf31126a"] 249 | --- 250 | time 1465482495 251 | old [description:"complete vetting form" entry:"1465482491" modified:"1465482491" status:"pending" uuid:"7a8cd94a-2f77-4f62-9c29-e71ddf31126a"] 252 | new [description:"complete vetting form" end:"1465482495" entry:"1465482491" modified:"1465482495" status:"completed" uuid:"7a8cd94a-2f77-4f62-9c29-e71ddf31126a"] 253 | --- 254 | time 1465482496 255 | old [description:"complete vetting form" entry:"1465482441" modified:"1465482441" status:"pending" uuid:"533d1f32-7568-41c8-8e9f-3a98df31600e"] 256 | new [description:"complete vetting form" end:"1465482496" entry:"1465482441" modified:"1465482496" status:"completed" uuid:"533d1f32-7568-41c8-8e9f-3a98df31600e"] 257 | --- 258 | time 1465482508 259 | new [description:"vetting form" entry:"1465482508" modified:"1465482508" project:"curop" status:"pending" uuid:"405ed116-499d-425b-858a-f0d379746dfa"] 260 | --- 261 | time 1465502389 262 | new [description:"call john on facetime" entry:"1465502389" modified:"1465502389" project:"side_projects" status:"pending" uuid:"8c569a10-5a77-4aab-bab4-2332f950dc70"] 263 | --- 264 | time 1465502404 265 | new [description:"call john on facetime" entry:"1465502404" modified:"1465502404" project:"side_projects" status:"pending" tags:"tag,fumbs" uuid:"2a2197fc-747a-48e2-9148-cfb0fd996ee5"] 266 | --- 267 | time 1465502620 268 | new [description:"call john on facetime" entry:"1465502620" modified:"1465502620" project:"side_projects" status:"pending" tags:"tag" uuid:"964d80e2-268a-4daf-9c4e-86ff276b702a"] 269 | --- 270 | time 1465503224 271 | new [description:"call john on facetime" entry:"1465503224" modified:"1465503224" priority:"H" project:"side_projects" status:"pending" tags:"tag" uuid:"748af634-a52d-42ca-bc98-781dcfcfd14b"] 272 | --- 273 | time 1465503238 274 | new [description:"call john on facetime" entry:"1465503238" modified:"1465503238" priority:"H" project:"side_projects" status:"pending" tags:"tag" uuid:"34f663db-2807-48a9-95c3-d87298e02688"] 275 | --- 276 | time 1465503243 277 | new [description:"call john on facetime" entry:"1465503243" modified:"1465503243" project:"side_projects" status:"pending" tags:"tag" uuid:"5afdb8eb-c3bf-416b-aac1-75a0d1b03005"] 278 | --- 279 | time 1465503263 280 | new [description:"call john on facetime" entry:"1465503263" modified:"1465503263" project:"side_projects" status:"pending" uuid:"556d74a5-b583-4ded-ad96-359f1d49efcc"] 281 | --- 282 | time 1465550351 283 | new [description:"call Kia for door fix quote" entry:"1465550351" modified:"1465550351" project:"car" status:"pending" uuid:"00946010-97fb-4ce8-aefd-b1d8eb104f2c"] 284 | --- 285 | time 1465550365 286 | new [description:"call police to report" entry:"1465550365" modified:"1465550365" project:"car" status:"pending" uuid:"ca173af5-22da-4020-97a8-1aa99c8c21eb"] 287 | --- 288 | time 1465550371 289 | old [description:"upload flask-task to digital ocean" entry:"1465482194" modified:"1465482194" project:"side_projects" status:"pending" tags:"task" uuid:"d8464fb1-e98a-459a-aeca-e07823ae5692"] 290 | new [description:"upload flask-task to digital ocean" end:"1465550371" entry:"1465482194" modified:"1465550371" project:"side_projects" status:"completed" tags:"task" uuid:"d8464fb1-e98a-459a-aeca-e07823ae5692"] 291 | --- 292 | time 1465553783 293 | old [description:"call police to report" entry:"1465550365" modified:"1465550365" project:"car" status:"pending" uuid:"ca173af5-22da-4020-97a8-1aa99c8c21eb"] 294 | new [description:"call police to report" end:"1465553783" entry:"1465550365" modified:"1465553783" project:"car" status:"completed" uuid:"ca173af5-22da-4020-97a8-1aa99c8c21eb"] 295 | --- 296 | time 1465560087 297 | new [description:"take up garden decking" entry:"1465560087" modified:"1465560087" project:"home" status:"pending" uuid:"9d834e85-5237-4c1d-b9d9-afd0a0b9a00c"] 298 | --- 299 | time 1465635826 300 | new [description:"buy garden gloves" entry:"1465635826" modified:"1465635826" project:"home" status:"pending" uuid:"c1587a67-456d-41d8-aed3-af126e6b3eb9"] 301 | --- 302 | time 1465635860 303 | new [description:"check with bmw for car" entry:"1465635860" modified:"1465635860" project:"car" status:"pending" uuid:"3ef30458-624f-46d5-a97d-24c3a868a8c9"] 304 | --- 305 | time 1465640322 306 | new [description:"buy soap" entry:"1465640322" modified:"1465640322" project:"home" status:"pending" uuid:"ecbcc5a2-32b7-47d5-97a9-35b7df570686"] 307 | --- 308 | time 1465665242 309 | old [description:"buy garden gloves" entry:"1465635826" modified:"1465635826" project:"home" status:"pending" uuid:"c1587a67-456d-41d8-aed3-af126e6b3eb9"] 310 | new [description:"buy garden gloves" end:"1465665242" entry:"1465635826" modified:"1465665242" project:"home" status:"completed" uuid:"c1587a67-456d-41d8-aed3-af126e6b3eb9"] 311 | --- 312 | time 1465665243 313 | old [description:"buy soap" entry:"1465640322" modified:"1465640322" project:"home" status:"pending" uuid:"ecbcc5a2-32b7-47d5-97a9-35b7df570686"] 314 | new [description:"buy soap" end:"1465665243" entry:"1465640322" modified:"1465665243" project:"home" status:"completed" uuid:"ecbcc5a2-32b7-47d5-97a9-35b7df570686"] 315 | --- 316 | time 1465665252 317 | old [description:"check with bmw for car" entry:"1465635860" modified:"1465635860" project:"car" status:"pending" uuid:"3ef30458-624f-46d5-a97d-24c3a868a8c9"] 318 | new [description:"check with bmw for car" end:"1465665252" entry:"1465635860" modified:"1465665252" project:"car" status:"completed" uuid:"3ef30458-624f-46d5-a97d-24c3a868a8c9"] 319 | --- 320 | time 1465667483 321 | new [description:"get video of crash from cctv hdd" entry:"1465667483" modified:"1465667483" project:"car" status:"pending" uuid:"a79ddb69-e2dd-47ad-a474-acb07e1d64d3"] 322 | --- 323 | time 1465827403 324 | new [description:"call tesco to return foreman" entry:"1465827403" modified:"1465827403" project:"home" status:"pending" uuid:"495fc110-c9f3-4b51-979e-ed6281c1ac3e"] 325 | --- 326 | time 1465827408 327 | old [description:"add count for comments to posts" entry:"1465384817" modified:"1465384817" project:"freelance" status:"pending" tags:"ordinary_lies" uuid:"f990dd9c-6c4b-492d-891e-b9c9f283dc9f"] 328 | new [description:"add count for comments to posts" end:"1465827408" entry:"1465384817" modified:"1465827408" project:"freelance" status:"completed" tags:"ordinary_lies" uuid:"f990dd9c-6c4b-492d-891e-b9c9f283dc9f"] 329 | --- 330 | time 1465827433 331 | new [description:"create bakuro generator and solver checker" entry:"1465827433" modified:"1465827433" priority:"L" project:"teaching" status:"pending" uuid:"d2643989-2770-4d1c-9113-66d0056b01d6"] 332 | --- 333 | time 1465827446 334 | old [description:"connect search bar to map view controller" entry:"1465481976" modified:"1465481976" project:"side_projects" status:"pending" tags:"fumbs" uuid:"a098a60b-c94a-49eb-bc50-c4d6d7b510dc"] 335 | new [description:"connect search bar to map view controller" end:"1465827446" entry:"1465481976" modified:"1465827446" project:"side_projects" status:"completed" tags:"fumbs" uuid:"a098a60b-c94a-49eb-bc50-c4d6d7b510dc"] 336 | --- 337 | time 1465827450 338 | old [description:"create server to host projects similar to thoughtboxes" entry:"1465287421" modified:"1465287421" project:"side_projects" status:"pending" tags:"task_warrior" uuid:"284208c7-552b-4720-8fa1-2294b5c9762a"] 339 | new [description:"create server to host projects similar to thoughtboxes" end:"1465827450" entry:"1465287421" modified:"1465827450" project:"side_projects" status:"completed" tags:"task_warrior" uuid:"284208c7-552b-4720-8fa1-2294b5c9762a"] 340 | --- 341 | time 1465827453 342 | old [description:"call Kia for door fix quote" entry:"1465550351" modified:"1465550351" project:"car" status:"pending" uuid:"00946010-97fb-4ce8-aefd-b1d8eb104f2c"] 343 | new [description:"call Kia for door fix quote" end:"1465827453" entry:"1465550351" modified:"1465827453" project:"car" status:"completed" uuid:"00946010-97fb-4ce8-aefd-b1d8eb104f2c"] 344 | --- 345 | time 1465827456 346 | old [description:"get video of crash from cctv hdd" entry:"1465667483" modified:"1465667483" project:"car" status:"pending" uuid:"a79ddb69-e2dd-47ad-a474-acb07e1d64d3"] 347 | new [description:"get video of crash from cctv hdd" end:"1465827456" entry:"1465667483" modified:"1465827456" project:"car" status:"completed" uuid:"a79ddb69-e2dd-47ad-a474-acb07e1d64d3"] 348 | --- 349 | time 1465827459 350 | old [description:"take up garden decking" entry:"1465560087" modified:"1465560087" project:"home" status:"pending" uuid:"9d834e85-5237-4c1d-b9d9-afd0a0b9a00c"] 351 | new [description:"take up garden decking" end:"1465827459" entry:"1465560087" modified:"1465827459" project:"home" status:"completed" uuid:"9d834e85-5237-4c1d-b9d9-afd0a0b9a00c"] 352 | --- 353 | time 1465890110 354 | new [description:"sort Amazon return for bag" entry:"1465890110" modified:"1465890110" project:"home" status:"pending" tags:"tash" uuid:"57db6b57-d249-432b-872b-be31770cc37e"] 355 | --- 356 | time 1465890436 357 | new [description:"link search bar to map markers" entry:"1465890436" modified:"1465890436" project:"side_projects" status:"pending" tags:"fumbs" uuid:"7d6cd354-d7f9-401c-828b-6fe5d6746dcc"] 358 | --- 359 | time 1466503521 360 | old [description:"sort Amazon return for bag" entry:"1465890110" modified:"1465890110" project:"home" status:"pending" tags:"tash" uuid:"57db6b57-d249-432b-872b-be31770cc37e"] 361 | new [description:"sort Amazon return for bag" end:"1466503521" entry:"1465890110" modified:"1466503521" project:"home" status:"completed" tags:"tash" uuid:"57db6b57-d249-432b-872b-be31770cc37e"] 362 | --- 363 | time 1466503529 364 | old [description:"outline all software to be used" entry:"1465286926" modified:"1465386824" project:"teaching" status:"pending" tags:"devops" uuid:"6399fa5e-af60-4e13-af97-9dc0f344cdc0"] 365 | new [description:"outline all software to be used" end:"1466503529" entry:"1465286926" modified:"1466503529" project:"teaching" status:"completed" tags:"devops" uuid:"6399fa5e-af60-4e13-af97-9dc0f344cdc0"] 366 | --- 367 | time 1466503529 368 | old [description:"get quote for taking up concrete" entry:"1465287076" modified:"1465287076" project:"home" status:"pending" tags:"garden" uuid:"54bd6889-ed04-429e-ae9a-c22c359eb681"] 369 | new [description:"get quote for taking up concrete" end:"1466503529" entry:"1465287076" modified:"1466503529" project:"home" status:"completed" tags:"garden" uuid:"54bd6889-ed04-429e-ae9a-c22c359eb681"] 370 | --- 371 | time 1466503563 372 | new [description:"set up task warrior server" entry:"1466503563" modified:"1466503563" project:"side_projects" status:"pending" uuid:"70d8f1c5-d5d9-4104-be96-31ca2f5aae24"] 373 | --- 374 | time 1466582221 375 | new [description:"find ring size" entry:"1466582221" modified:"1466582221" project:"personal" status:"pending" uuid:"3692fd9e-28d1-4956-b175-c10f7cb6c138"] 376 | --- 377 | time 1466582238 378 | new [description:"post tash parcel" entry:"1466582238" modified:"1466582238" project:"personal" status:"pending" uuid:"aaaad1af-24a2-4009-b6c5-fa2a518c1de8"] 379 | --- 380 | time 1466582251 381 | new [description:"buy tash mooncup" entry:"1466582251" modified:"1466582251" project:"personal" status:"pending" uuid:"80d193c5-2d3b-4307-9394-35be1913e06d"] 382 | --- 383 | time 1466582266 384 | new [description:"buy pomade and comb" entry:"1466582266" modified:"1466582266" project:"personal" status:"pending" uuid:"53d708d7-4809-43b7-8497-c72d7f5d5d05"] 385 | --- 386 | time 1466582432 387 | old [description:"set up task warrior server" entry:"1466503563" modified:"1466503563" project:"side_projects" status:"pending" uuid:"70d8f1c5-d5d9-4104-be96-31ca2f5aae24"] 388 | new [description:"set up task warrior server" end:"1466582432" entry:"1466503563" modified:"1466582432" project:"side_projects" status:"completed" uuid:"70d8f1c5-d5d9-4104-be96-31ca2f5aae24"] 389 | --- 390 | time 1466582447 391 | new [description:"set up users and certs on taskwarrior server" entry:"1466582447" modified:"1466582447" project:"side_projects" status:"pending" uuid:"14784ebe-7937-468c-af1b-593b7c198afc"] 392 | --- 393 | time 1466582466 394 | old [description:"create bakuro generator and solver checker" entry:"1465827433" modified:"1465827433" priority:"L" project:"teaching" status:"pending" uuid:"d2643989-2770-4d1c-9113-66d0056b01d6"] 395 | new [description:"create bakuro generator and solver checker" end:"1466582466" entry:"1465827433" modified:"1466582466" priority:"L" project:"teaching" status:"completed" uuid:"d2643989-2770-4d1c-9113-66d0056b01d6"] 396 | --- 397 | time 1466582487 398 | new [description:"read and write bakuro grids" entry:"1466582487" modified:"1466582487" project:"teaching" status:"pending" tags:"comp_thinking" uuid:"671bbb63-ff15-4a0e-a2c7-327bdaeae7c5"] 399 | --- 400 | time 1466582508 401 | new [description:"output grids as image" entry:"1466582508" modified:"1466582508" project:"teaching" status:"pending" tags:"comp_thinking" uuid:"fa795367-0ae0-4415-a3b1-086f9a33b210"] 402 | --- 403 | time 1466599929 404 | old [description:"buy tash mooncup" entry:"1466582251" modified:"1466582251" project:"personal" status:"pending" uuid:"80d193c5-2d3b-4307-9394-35be1913e06d"] 405 | new [description:"buy tash mooncup" end:"1466599929" entry:"1466582251" modified:"1466599929" project:"personal" status:"completed" uuid:"80d193c5-2d3b-4307-9394-35be1913e06d"] 406 | --- 407 | time 1466599931 408 | old [description:"buy pomade and comb" entry:"1466582266" modified:"1466582266" project:"personal" status:"pending" uuid:"53d708d7-4809-43b7-8497-c72d7f5d5d05"] 409 | new [description:"buy pomade and comb" end:"1466599931" entry:"1466582266" modified:"1466599931" project:"personal" status:"completed" uuid:"53d708d7-4809-43b7-8497-c72d7f5d5d05"] 410 | --- 411 | time 1466599932 412 | old [description:"find ring size" entry:"1466582221" modified:"1466582221" project:"personal" status:"pending" uuid:"3692fd9e-28d1-4956-b175-c10f7cb6c138"] 413 | new [description:"find ring size" end:"1466599932" entry:"1466582221" modified:"1466599932" project:"personal" status:"completed" uuid:"3692fd9e-28d1-4956-b175-c10f7cb6c138"] 414 | --- 415 | time 1466966236 416 | old [description:"read and write bakuro grids" entry:"1466582487" modified:"1466582487" project:"teaching" status:"pending" tags:"comp_thinking" uuid:"671bbb63-ff15-4a0e-a2c7-327bdaeae7c5"] 417 | new [description:"read and write bakuro grids" end:"1466966236" entry:"1466582487" modified:"1466966236" project:"teaching" status:"completed" tags:"comp_thinking" uuid:"671bbb63-ff15-4a0e-a2c7-327bdaeae7c5"] 418 | --- 419 | time 1466966239 420 | old [description:"post tash parcel" entry:"1466582238" modified:"1466582238" project:"personal" status:"pending" uuid:"aaaad1af-24a2-4009-b6c5-fa2a518c1de8"] 421 | new [description:"post tash parcel" end:"1466966239" entry:"1466582238" modified:"1466966239" project:"personal" status:"completed" uuid:"aaaad1af-24a2-4009-b6c5-fa2a518c1de8"] 422 | --- 423 | time 1466966239 424 | old [description:"set up users and certs on taskwarrior server" entry:"1466582447" modified:"1466582447" project:"side_projects" status:"pending" uuid:"14784ebe-7937-468c-af1b-593b7c198afc"] 425 | new [description:"set up users and certs on taskwarrior server" end:"1466966239" entry:"1466582447" modified:"1466966239" project:"side_projects" status:"completed" uuid:"14784ebe-7937-468c-af1b-593b7c198afc"] 426 | --- 427 | time 1466966275 428 | new [description:"call getmein" entry:"1466966275" modified:"1466966275" project:"home" status:"pending" uuid:"4255b5e8-918b-4a9b-91e1-8e923a10b26c"] 429 | --- 430 | time 1467022972 431 | old [description:"vetting form" entry:"1465482508" modified:"1465482508" project:"curop" status:"pending" uuid:"405ed116-499d-425b-858a-f0d379746dfa"] 432 | new [description:"vetting form" end:"1467022972" entry:"1465482508" modified:"1467022972" project:"curop" status:"completed" uuid:"405ed116-499d-425b-858a-f0d379746dfa"] 433 | --- 434 | time 1467105295 435 | new [description:"add delivery methods" entry:"1467105295" modified:"1467105295" project:"papers" status:"pending" uuid:"7c438407-8e3d-4ba6-9078-d92d259b7600"] 436 | --- 437 | time 1467105340 438 | new [description:"pick up caz" entry:"1467105340" modified:"1467105340" project:"home" status:"pending" uuid:"849b2691-a108-4901-9565-a7c3a0bcf5d3"] 439 | --- 440 | time 1467110159 441 | new [description:"WSSSPE paper on links with industry and academia" entry:"1467110159" modified:"1467110159" project:"papers" status:"pending" uuid:"68677ddd-cf9d-4bda-9ffd-49016af44c69"] 442 | --- 443 | time 1467715978 444 | old [description:"call tesco to return foreman" entry:"1465827403" modified:"1465827403" project:"home" status:"pending" uuid:"495fc110-c9f3-4b51-979e-ed6281c1ac3e"] 445 | new [description:"call tesco to return foreman" end:"1467715978" entry:"1465827403" modified:"1467715978" project:"home" status:"completed" uuid:"495fc110-c9f3-4b51-979e-ed6281c1ac3e"] 446 | --- 447 | time 1467715980 448 | old [description:"call getmein" entry:"1466966275" modified:"1466966275" project:"home" status:"pending" uuid:"4255b5e8-918b-4a9b-91e1-8e923a10b26c"] 449 | new [description:"call getmein" end:"1467715980" entry:"1466966275" modified:"1467715980" project:"home" status:"completed" uuid:"4255b5e8-918b-4a9b-91e1-8e923a10b26c"] 450 | --- 451 | time 1467715982 452 | old [description:"pick up caz" entry:"1467105340" modified:"1467105340" project:"home" status:"pending" uuid:"849b2691-a108-4901-9565-a7c3a0bcf5d3"] 453 | new [description:"pick up caz" end:"1467715982" entry:"1467105340" modified:"1467715982" project:"home" status:"completed" uuid:"849b2691-a108-4901-9565-a7c3a0bcf5d3"] 454 | --- 455 | time 1467715998 456 | old [description:"add delivery methods" entry:"1467105295" modified:"1467105295" project:"papers" status:"pending" uuid:"7c438407-8e3d-4ba6-9078-d92d259b7600"] 457 | new [description:"add delivery methods" end:"1467715998" entry:"1467105295" modified:"1467715998" project:"papers" status:"completed" uuid:"7c438407-8e3d-4ba6-9078-d92d259b7600"] 458 | --- 459 | time 1467716000 460 | old [description:"WSSSPE paper on links with industry and academia" entry:"1467110159" modified:"1467110159" project:"papers" status:"pending" uuid:"68677ddd-cf9d-4bda-9ffd-49016af44c69"] 461 | new [description:"WSSSPE paper on links with industry and academia" end:"1467716000" entry:"1467110159" modified:"1467716000" project:"papers" status:"completed" uuid:"68677ddd-cf9d-4bda-9ffd-49016af44c69"] 462 | --- 463 | time 1467716022 464 | new [description:"add in Wendy comments" entry:"1467716022" modified:"1467716022" project:"papers" status:"pending" uuid:"0fb9e9d2-20c4-4ad8-ab9b-6a0c5c226216"] 465 | --- 466 | time 1467716035 467 | new [description:"add in pics from Dropbox" entry:"1467716035" modified:"1467716035" project:"papers" status:"pending" uuid:"33c3421f-24ff-49ef-9857-72242862a5fd"] 468 | --- 469 | time 1467716081 470 | new [description:"submit paper to wssspe" entry:"1467716081" modified:"1467716081" project:"papers" status:"pending" uuid:"15cae819-8c22-4c7e-937b-7115195d6c12"] 471 | --- 472 | time 1467716088 473 | old [description:"write slides for math and binary arithmetic" entry:"1465287311" modified:"1465386824" project:"teaching" status:"pending" tags:"comp_thinking" uuid:"a4909529-44b3-46be-9629-2db028e59b52"] 474 | new [description:"write slides for math and binary arithmetic" end:"1467716088" entry:"1465287311" modified:"1467716088" project:"teaching" status:"completed" tags:"comp_thinking" uuid:"a4909529-44b3-46be-9629-2db028e59b52"] 475 | --- 476 | time 1467716108 477 | new [description:"finish complexity slides" entry:"1467716108" modified:"1467716108" project:"teaching" status:"pending" uuid:"ee54ff9d-ed8a-4df7-bc30-87828b709a70"] 478 | --- 479 | time 1467716120 480 | new [description:"comp thinking coursework" entry:"1467716120" modified:"1467716120" project:"teaching" status:"pending" uuid:"897531d8-23e5-475f-95d7-55e6f9a27880"] 481 | --- 482 | time 1467716138 483 | new [description:"Raspberry Pi and NFC reader" entry:"1467716138" modified:"1467716138" project:"NSA" status:"pending" uuid:"d453aba6-1425-44b0-9b4d-b1e497e69943"] 484 | --- 485 | time 1467716169 486 | new [description:"Presentation on student dev pipeline" entry:"1467716169" modified:"1467716169" project:"NSA" status:"pending" uuid:"049cc02a-8143-41aa-a40d-5e038afcdb54"] 487 | --- 488 | time 1467879056 489 | new [description:"canadian visa" entry:"1467879056" modified:"1467879056" project:"us_wedding" status:"pending" uuid:"4fd8aa7e-ac8b-40be-a71d-8def2cccf4bb"] 490 | --- 491 | time 1467879070 492 | new [description:"us visa" entry:"1467879070" modified:"1467879070" project:"us_wedding" status:"pending" uuid:"25d3a7a0-9167-4de1-8dfd-dab92d1436a3"] 493 | --- 494 | time 1467879081 495 | new [description:"amsterdam accom" entry:"1467879081" modified:"1467879081" project:"us_wedding" status:"pending" uuid:"8ab0b1ea-ab14-474a-b2a4-baa4671d1208"] 496 | --- 497 | time 1467879098 498 | new [description:"toronto accom (1\/2 nights)" entry:"1467879098" modified:"1467879098" project:"us_wedding" status:"pending" uuid:"2c22f106-98e5-4a18-9705-55ae28d34f19"] 499 | --- 500 | time 1467880607 501 | new [description:"pay canada for accom" entry:"1467880607" modified:"1467880607" project:"us_wedding" status:"pending" uuid:"1109339e-edd4-4a66-91cc-e634b1df44af"] 502 | --- 503 | time 1467884370 504 | old [description:"canadian visa" entry:"1467879056" modified:"1467879056" project:"us_wedding" status:"pending" uuid:"4fd8aa7e-ac8b-40be-a71d-8def2cccf4bb"] 505 | new [description:"canadian visa" end:"1467884370" entry:"1467879056" modified:"1467884370" project:"us_wedding" status:"completed" uuid:"4fd8aa7e-ac8b-40be-a71d-8def2cccf4bb"] 506 | --- 507 | time 1467884371 508 | old [description:"us visa" entry:"1467879070" modified:"1467879070" project:"us_wedding" status:"pending" uuid:"25d3a7a0-9167-4de1-8dfd-dab92d1436a3"] 509 | new [description:"us visa" end:"1467884371" entry:"1467879070" modified:"1467884371" project:"us_wedding" status:"completed" uuid:"25d3a7a0-9167-4de1-8dfd-dab92d1436a3"] 510 | --- 511 | time 1467884373 512 | old [description:"amsterdam accom" entry:"1467879081" modified:"1467879081" project:"us_wedding" status:"pending" uuid:"8ab0b1ea-ab14-474a-b2a4-baa4671d1208"] 513 | new [description:"amsterdam accom" end:"1467884373" entry:"1467879081" modified:"1467884373" project:"us_wedding" status:"completed" uuid:"8ab0b1ea-ab14-474a-b2a4-baa4671d1208"] 514 | --- 515 | time 1467893796 516 | old [description:"add in Wendy comments" entry:"1467716022" modified:"1467716022" project:"papers" status:"pending" uuid:"0fb9e9d2-20c4-4ad8-ab9b-6a0c5c226216"] 517 | new [description:"add in Wendy comments" end:"1467893796" entry:"1467716022" modified:"1467893796" project:"papers" status:"completed" uuid:"0fb9e9d2-20c4-4ad8-ab9b-6a0c5c226216"] 518 | --- 519 | time 1467893797 520 | old [description:"add in pics from Dropbox" entry:"1467716035" modified:"1467716035" project:"papers" status:"pending" uuid:"33c3421f-24ff-49ef-9857-72242862a5fd"] 521 | new [description:"add in pics from Dropbox" end:"1467893797" entry:"1467716035" modified:"1467893797" project:"papers" status:"completed" uuid:"33c3421f-24ff-49ef-9857-72242862a5fd"] 522 | --- 523 | time 1467893798 524 | old [description:"submit paper to wssspe" entry:"1467716081" modified:"1467716081" project:"papers" status:"pending" uuid:"15cae819-8c22-4c7e-937b-7115195d6c12"] 525 | new [description:"submit paper to wssspe" end:"1467893798" entry:"1467716081" modified:"1467893798" project:"papers" status:"completed" uuid:"15cae819-8c22-4c7e-937b-7115195d6c12"] 526 | --- 527 | time 1467893827 528 | new [description:"latex exam generator" entry:"1467893827" modified:"1467893827" project:"teaching" status:"pending" tags:"cm6111" uuid:"de2d56c5-6a0a-4c4d-8975-c433973de6df"] 529 | --- 530 | time 1468222081 531 | old [description:"finish complexity slides" entry:"1467716108" modified:"1467716108" project:"teaching" status:"pending" uuid:"ee54ff9d-ed8a-4df7-bc30-87828b709a70"] 532 | new [description:"finish complexity slides" end:"1468222081" entry:"1467716108" modified:"1468222081" project:"teaching" status:"completed" uuid:"ee54ff9d-ed8a-4df7-bc30-87828b709a70"] 533 | --- 534 | time 1468227723 535 | new [description:"organise mentor prlt" entry:"1468227723" modified:"1468227723" project:"pcutl" status:"pending" uuid:"73a4035d-b86b-4add-b842-b526c8196b70"] 536 | --- 537 | time 1468272516 538 | new [description:"meetup api to generate email for cardiff meets" entry:"1468272516" modified:"1468272516" project:"side_projects" status:"pending" uuid:"336cfcca-e1da-496f-bb1c-228455c800af"] 539 | --- 540 | time 1468328609 541 | new [description:"contract for police" entry:"1468328609" modified:"1468328609" project:"curop" status:"pending" uuid:"63b38a7e-2f4b-487c-8fff-4f3b49340e5b"] 542 | --- 543 | time 1469190304 544 | old [description:"run tutorials on docker and create exercises" entry:"1465288014" modified:"1465386824" project:"teaching" status:"pending" uuid:"a0b10e47-6c2e-465e-aa46-c57c8daa0a73"] 545 | new [description:"run tutorials on docker and create exercises" end:"1469190304" entry:"1465288014" modified:"1469190304" project:"teaching" status:"completed" uuid:"a0b10e47-6c2e-465e-aa46-c57c8daa0a73"] 546 | --- 547 | time 1469190308 548 | old [description:"output grids as image" entry:"1466582508" modified:"1466582508" project:"teaching" status:"pending" tags:"comp_thinking" uuid:"fa795367-0ae0-4415-a3b1-086f9a33b210"] 549 | new [description:"output grids as image" end:"1469190308" entry:"1466582508" modified:"1469190308" project:"teaching" status:"completed" tags:"comp_thinking" uuid:"fa795367-0ae0-4415-a3b1-086f9a33b210"] 550 | --- 551 | time 1469190441 552 | old [description:"contract for police" entry:"1468328609" modified:"1468328609" project:"curop" status:"pending" uuid:"63b38a7e-2f4b-487c-8fff-4f3b49340e5b"] 553 | new [description:"contract for police" end:"1469190441" entry:"1468328609" modified:"1469190441" project:"curop" status:"completed" uuid:"63b38a7e-2f4b-487c-8fff-4f3b49340e5b"] 554 | --- 555 | time 1469190446 556 | old [description:"organise mentor prlt" entry:"1468227723" modified:"1468227723" project:"pcutl" status:"pending" uuid:"73a4035d-b86b-4add-b842-b526c8196b70"] 557 | new [description:"organise mentor prlt" end:"1469190446" entry:"1468227723" modified:"1469190446" project:"pcutl" status:"completed" uuid:"73a4035d-b86b-4add-b842-b526c8196b70"] 558 | --- 559 | time 1469190446 560 | old [description:"meetup api to generate email for cardiff meets" entry:"1468272516" modified:"1468272516" project:"side_projects" status:"pending" uuid:"336cfcca-e1da-496f-bb1c-228455c800af"] 561 | new [description:"meetup api to generate email for cardiff meets" end:"1469190446" entry:"1468272516" modified:"1469190446" project:"side_projects" status:"completed" uuid:"336cfcca-e1da-496f-bb1c-228455c800af"] 562 | --- 563 | time 1470037796 564 | new [description:"turn android projects into git repos" entry:"1470037796" modified:"1470037796" status:"pending" uuid:"678924ce-90d8-4139-b70f-f13f7f54b079"] 565 | --- 566 | time 1470212330 567 | old [description:"turn android projects into git repos" entry:"1470037796" modified:"1470037796" status:"pending" uuid:"678924ce-90d8-4139-b70f-f13f7f54b079"] 568 | new [description:"turn android projects into git repos" end:"1470212330" entry:"1470037796" modified:"1470212330" status:"completed" uuid:"678924ce-90d8-4139-b70f-f13f7f54b079"] 569 | --- 570 | time 1470212341 571 | new [description:"book WSSSPE" entry:"1470212341" modified:"1470212341" project:"NSA" status:"pending" uuid:"131084ea-33f7-4ac8-991d-f8f23ab75511"] 572 | --- 573 | time 1470212365 574 | new [description:"turn android projects into git repos" entry:"1470212365" modified:"1470212365" project:"CM6122" status:"pending" uuid:"234e0a7c-6f1f-4342-8005-3213ba776000"] 575 | --- 576 | time 1470213253 577 | new [description:"Review content of all slides" entry:"1470213253" modified:"1470213253" project:"CM6111" status:"pending" uuid:"fcf90624-66ca-4380-a18c-ac1e9924d8c8"] 578 | --- 579 | time 1470213331 580 | new [description:"Write basic exam structure" entry:"1470213331" modified:"1470213331" project:"CM6111" status:"pending" uuid:"56f53275-eade-4101-9ab8-6c141c486c17"] 581 | --- 582 | time 1470318517 583 | new [description:"screens for sims auto refreshing" entry:"1470318517" modified:"1470318517" project:"admissions" status:"pending" uuid:"71253d6f-83b8-4111-b98c-49eca00fd757"] 584 | --- 585 | time 1470492475 586 | old [description:"screens for sims auto refreshing" entry:"1470318517" modified:"1470318517" project:"admissions" status:"pending" uuid:"71253d6f-83b8-4111-b98c-49eca00fd757"] 587 | new [description:"screens for sims auto refreshing" end:"1470492475" entry:"1470318517" modified:"1470492475" project:"admissions" status:"completed" uuid:"71253d6f-83b8-4111-b98c-49eca00fd757"] 588 | --- 589 | time 1470668002 590 | new [description:"amend paper and send out" entry:"1470668002" modified:"1470668002" project:"nsa" status:"pending" uuid:"40591f85-d4ad-4574-a88f-5af7f8420be0"] 591 | --- 592 | time 1470668059 593 | old [description:"amend paper and send out" entry:"1470668002" modified:"1470668002" project:"nsa" status:"pending" uuid:"40591f85-d4ad-4574-a88f-5af7f8420be0"] 594 | new [description:"amend paper and send out" end:"1470668059" entry:"1470668002" modified:"1470668059" project:"nsa" status:"completed" uuid:"40591f85-d4ad-4574-a88f-5af7f8420be0"] 595 | --- 596 | time 1470736632 597 | new [description:"find R script for ggplot multiple vars" entry:"1470736632" modified:"1470736632" project:"susan" status:"pending" uuid:"7ac41d6b-9a7a-43e8-b896-8c88da78f248"] 598 | --- 599 | time 1472197982 600 | new [description:"print all tickets" entry:"1472197982" modified:"1472197982" project:"travel" status:"pending" uuid:"37687b64-a92c-429b-9036-910c660e2520"] 601 | --- 602 | time 1472197996 603 | new [description:"add all events to calendar" entry:"1472197996" modified:"1472197996" project:"travel" status:"pending" uuid:"935768c5-9d9e-4948-abdc-ad9744886877"] 604 | --- 605 | time 1472198069 606 | new [description:"book car for US\/Canada" entry:"1472198069" modified:"1472198069" project:"travel" status:"pending" uuid:"2721a330-d281-4fa8-8abd-8df355c29352"] 607 | --- 608 | time 1472198843 609 | new [description:"d duggan" entry:"1472198843" modified:"1472198843" project:"adm" status:"pending" uuid:"b913a4bd-961f-4de0-80a1-3dd77300df15"] 610 | --- 611 | time 1472200685 612 | old [description:"d duggan" entry:"1472198843" modified:"1472198843" project:"adm" status:"pending" uuid:"b913a4bd-961f-4de0-80a1-3dd77300df15"] 613 | new [description:"d duggan" end:"1472200685" entry:"1472198843" modified:"1472200685" project:"adm" status:"completed" uuid:"b913a4bd-961f-4de0-80a1-3dd77300df15"] 614 | --- 615 | time 1472200958 616 | old [description:"book WSSSPE" entry:"1470212341" modified:"1470212341" project:"NSA" status:"pending" uuid:"131084ea-33f7-4ac8-991d-f8f23ab75511"] 617 | new [description:"book WSSSPE" end:"1472200958" entry:"1470212341" modified:"1472200958" project:"NSA" status:"completed" uuid:"131084ea-33f7-4ac8-991d-f8f23ab75511"] 618 | --- 619 | time 1472200958 620 | old [description:"turn android projects into git repos" entry:"1470212365" modified:"1470212365" project:"CM6122" status:"pending" uuid:"234e0a7c-6f1f-4342-8005-3213ba776000"] 621 | new [description:"turn android projects into git repos" end:"1472200958" entry:"1470212365" modified:"1472200958" project:"CM6122" status:"completed" uuid:"234e0a7c-6f1f-4342-8005-3213ba776000"] 622 | --- 623 | time 1472309453 624 | old [description:"toronto accom (1\/2 nights)" entry:"1467879098" modified:"1467879098" project:"us_wedding" status:"pending" uuid:"2c22f106-98e5-4a18-9705-55ae28d34f19"] 625 | new [description:"toronto accom (1\/2 nights)" end:"1472309453" entry:"1467879098" modified:"1472309453" project:"us_wedding" status:"completed" uuid:"2c22f106-98e5-4a18-9705-55ae28d34f19"] 626 | --- 627 | time 1472309468 628 | old [description:"add all events to calendar" entry:"1472197996" modified:"1472197996" project:"travel" status:"pending" uuid:"935768c5-9d9e-4948-abdc-ad9744886877"] 629 | new [description:"add all events to calendar" end:"1472309468" entry:"1472197996" modified:"1472309468" project:"travel" status:"completed" uuid:"935768c5-9d9e-4948-abdc-ad9744886877"] 630 | --- 631 | time 1472309468 632 | old [description:"book car for US\/Canada" entry:"1472198069" modified:"1472198069" project:"travel" status:"pending" uuid:"2721a330-d281-4fa8-8abd-8df355c29352"] 633 | new [description:"book car for US\/Canada" end:"1472309468" entry:"1472198069" modified:"1472309468" project:"travel" status:"completed" uuid:"2721a330-d281-4fa8-8abd-8df355c29352"] 634 | --- 635 | time 1474979031 636 | old [description:"Review content of all slides" entry:"1470213253" modified:"1470213253" project:"CM6111" status:"pending" uuid:"fcf90624-66ca-4380-a18c-ac1e9924d8c8"] 637 | new [description:"Review content of all slides" end:"1474979031" entry:"1470213253" modified:"1474979031" project:"CM6111" status:"completed" uuid:"fcf90624-66ca-4380-a18c-ac1e9924d8c8"] 638 | --- 639 | time 1474979045 640 | new [description:"write coursework" entry:"1474979045" modified:"1474979045" project:"cm6111" status:"pending" uuid:"ee526440-7c99-4fec-858b-b72081a6a485"] 641 | --- 642 | time 1474979048 643 | old [description:"find R script for ggplot multiple vars" entry:"1470736632" modified:"1470736632" project:"susan" status:"pending" uuid:"7ac41d6b-9a7a-43e8-b896-8c88da78f248"] 644 | new [description:"find R script for ggplot multiple vars" end:"1474979048" entry:"1470736632" modified:"1474979048" project:"susan" status:"completed" uuid:"7ac41d6b-9a7a-43e8-b896-8c88da78f248"] 645 | --- 646 | time 1474979058 647 | new [description:"finish thumb print generator" entry:"1474979058" modified:"1474979058" project:"susan" status:"pending" uuid:"cf2f4964-d8d6-4201-a8c6-3829f0fd5879"] 648 | --- 649 | time 1474979064 650 | old [description:"link search bar to map markers" entry:"1465890436" modified:"1465890436" project:"side_projects" status:"pending" tags:"fumbs" uuid:"7d6cd354-d7f9-401c-828b-6fe5d6746dcc"] 651 | new [description:"link search bar to map markers" end:"1474979064" entry:"1465890436" modified:"1474979064" project:"side_projects" status:"completed" tags:"fumbs" uuid:"7d6cd354-d7f9-401c-828b-6fe5d6746dcc"] 652 | --- 653 | time 1474979082 654 | old [description:"latex exam generator" entry:"1467893827" modified:"1467893827" project:"teaching" status:"pending" tags:"cm6111" uuid:"de2d56c5-6a0a-4c4d-8975-c433973de6df"] 655 | new [description:"latex exam generator" end:"1474979082" entry:"1467893827" modified:"1474979082" project:"teaching" status:"completed" tags:"cm6111" uuid:"de2d56c5-6a0a-4c4d-8975-c433973de6df"] 656 | --- 657 | time 1474979083 658 | old [description:"Write basic exam structure" entry:"1470213331" modified:"1470213331" project:"CM6111" status:"pending" uuid:"56f53275-eade-4101-9ab8-6c141c486c17"] 659 | new [description:"Write basic exam structure" end:"1474979083" entry:"1470213331" modified:"1474979083" project:"CM6111" status:"completed" uuid:"56f53275-eade-4101-9ab8-6c141c486c17"] 660 | --- 661 | time 1474979089 662 | old [description:"pay canada for accom" entry:"1467880607" modified:"1467880607" project:"us_wedding" status:"pending" uuid:"1109339e-edd4-4a66-91cc-e634b1df44af"] 663 | new [description:"pay canada for accom" end:"1474979089" entry:"1467880607" modified:"1474979089" project:"us_wedding" status:"completed" uuid:"1109339e-edd4-4a66-91cc-e634b1df44af"] 664 | --- 665 | time 1474979093 666 | old [description:"write coursework" entry:"1474979045" modified:"1474979045" project:"cm6111" status:"pending" uuid:"ee526440-7c99-4fec-858b-b72081a6a485"] 667 | new [description:"write coursework" end:"1474979093" entry:"1474979045" modified:"1474979093" project:"cm6111" status:"completed" uuid:"ee526440-7c99-4fec-858b-b72081a6a485"] 668 | --- 669 | time 1474979093 670 | old [description:"finish thumb print generator" entry:"1474979058" modified:"1474979058" project:"susan" status:"pending" uuid:"cf2f4964-d8d6-4201-a8c6-3829f0fd5879"] 671 | new [description:"finish thumb print generator" end:"1474979093" entry:"1474979058" modified:"1474979093" project:"susan" status:"completed" uuid:"cf2f4964-d8d6-4201-a8c6-3829f0fd5879"] 672 | --- 673 | time 1479910842 674 | old [description:"comp thinking coursework" entry:"1467716120" modified:"1467716120" project:"teaching" status:"pending" uuid:"897531d8-23e5-475f-95d7-55e6f9a27880"] 675 | new [description:"comp thinking coursework" end:"1479910842" entry:"1467716120" modified:"1479910842" project:"teaching" status:"completed" uuid:"897531d8-23e5-475f-95d7-55e6f9a27880"] 676 | --- 677 | time 1479910850 678 | old [description:"print all tickets" entry:"1472197982" modified:"1472197982" project:"travel" status:"pending" uuid:"37687b64-a92c-429b-9036-910c660e2520"] 679 | new [description:"print all tickets" end:"1479910850" entry:"1472197982" modified:"1479910850" project:"travel" status:"completed" uuid:"37687b64-a92c-429b-9036-910c660e2520"] 680 | --- 681 | time 1479910855 682 | old [description:"Presentation on student dev pipeline" entry:"1467716169" modified:"1467716169" project:"NSA" status:"pending" uuid:"049cc02a-8143-41aa-a40d-5e038afcdb54"] 683 | new [description:"Presentation on student dev pipeline" end:"1479910855" entry:"1467716169" modified:"1479910855" project:"NSA" status:"completed" uuid:"049cc02a-8143-41aa-a40d-5e038afcdb54"] 684 | --- 685 | time 1479910857 686 | old [description:"write how to contribute to open source" entry:"1465301830" modified:"1465386824" project:"teaching" status:"pending" tags:"blog" uuid:"365cb046-c2b7-421e-9ccf-d974b7fec74e"] 687 | new [description:"write how to contribute to open source" end:"1479910857" entry:"1465301830" modified:"1479910857" project:"teaching" status:"completed" tags:"blog" uuid:"365cb046-c2b7-421e-9ccf-d974b7fec74e"] 688 | --- 689 | time 1479910857 690 | old [description:"Raspberry Pi and NFC reader" entry:"1467716138" modified:"1467716138" project:"NSA" status:"pending" uuid:"d453aba6-1425-44b0-9b4d-b1e497e69943"] 691 | new [description:"Raspberry Pi and NFC reader" end:"1479910857" entry:"1467716138" modified:"1479910857" project:"NSA" status:"completed" uuid:"d453aba6-1425-44b0-9b4d-b1e497e69943"] 692 | --- 693 | -------------------------------------------------------------------------------- /app/config/taskrc: -------------------------------------------------------------------------------- 1 | data.location=./app/config/task -------------------------------------------------------------------------------- /app/models.py: -------------------------------------------------------------------------------- 1 | """File containing the models linked to the application.""" 2 | from app import db 3 | import flask.ext.login as flask_login 4 | 5 | 6 | class User(db.Model, flask_login.UserMixin): 7 | """Represent user for the ORM layer.""" 8 | 9 | id = db.Column(db.Integer, primary_key=True) 10 | email = db.Column(db.String(200), unique=False) 11 | hash = db.Column(db.String(300), unique=False) 12 | 13 | def __init__(self, email, hash): 14 | """Instanciate a new user in memory. 15 | 16 | :param str email: email of the user you want to instanciate. 17 | :param str hash: password hash of the user you want to instanciate. 18 | """ 19 | self.email = email 20 | self.hash = hash 21 | 22 | def get_id(self): 23 | return self.email 24 | 25 | def __repr__(self): 26 | """Override how represent a user.""" 27 | return '' % (self.email, self.hash, self.id) 28 | -------------------------------------------------------------------------------- /app/sample.cfg: -------------------------------------------------------------------------------- 1 | SQLALCHEMY_DATABASE_URI = 'sqlite:///test.db' 2 | SQLALCHEMY_TRACK_MODIFICATIONS = False 3 | UPLOAD_FOLDER = './app/static/uploads/' 4 | SECRET_KEY='redpr0d' 5 | ENV='PROD' 6 | TASKRC='./app/config/taskrc' 7 | ADMIN_EMAIL='encima@gmail.com' 8 | ADMIN_PW='Tumultuous4Sunscreen' 9 | THEME="base" 10 | -------------------------------------------------------------------------------- /app/test.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/encima/flask-task/55a449e41e4e28669bbed7cb5aba6493611c2219/app/test.db -------------------------------------------------------------------------------- /app/test_tw.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ../tf/bin/ 2 | 3 | from tw import TW_Loader 4 | import unittest 5 | 6 | 7 | class Test_TW(unittest.TestCase): 8 | 9 | def setUp(self): 10 | self.twl = TW_Loader() 11 | 12 | def test_add(self): 13 | parsed_task = self.twl.add_task( 14 | "task:hello there project:test_project +tag +tags urgency:h") 15 | self.assertEqual(parsed_task['task'], 'hello there') 16 | self.assertEqual(parsed_task['project'], 'test_project') 17 | self.assertEqual(parsed_task['tags'], ['tag', 'tags']) 18 | self.assertEqual(parsed_task['urgency'], 'H') 19 | 20 | 21 | if __name__ == '__main__': 22 | unittest.main() 23 | -------------------------------------------------------------------------------- /app/themes/base/static/css/bootstrap-theme.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v3.3.5 (http://getbootstrap.com) 3 | * Copyright 2011-2015 Twitter, Inc. 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */.btn-danger,.btn-default,.btn-info,.btn-primary,.btn-success,.btn-warning{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-danger.disabled,.btn-danger[disabled],.btn-default.disabled,.btn-default[disabled],.btn-info.disabled,.btn-info[disabled],.btn-primary.disabled,.btn-primary[disabled],.btn-success.disabled,.btn-success[disabled],.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-danger,fieldset[disabled] .btn-default,fieldset[disabled] .btn-info,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-success,fieldset[disabled] .btn-warning{-webkit-box-shadow:none;box-shadow:none}.btn-danger .badge,.btn-default .badge,.btn-info .badge,.btn-primary .badge,.btn-success .badge,.btn-warning .badge{text-shadow:none}.btn.active,.btn:active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:focus,.btn-default:hover{background-color:#e0e0e0;background-position:0 -15px}.btn-default.active,.btn-default:active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:focus,.btn-primary:hover{background-color:#265a88;background-position:0 -15px}.btn-primary.active,.btn-primary:active{background-color:#265a88;border-color:#245580}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:focus,.btn-success:hover{background-color:#419641;background-position:0 -15px}.btn-success.active,.btn-success:active{background-color:#419641;border-color:#3e8f3e}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:focus,.btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.btn-info.active,.btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:focus,.btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.btn-warning.active,.btn-warning:active{background-color:#eb9316;border-color:#e38d13}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:focus,.btn-danger:hover{background-color:#c12e2a;background-position:0 -15px}.btn-danger.active,.btn-danger:active{background-color:#c12e2a;border-color:#b92c28}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#c12e2a;background-image:none}.img-thumbnail,.thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:focus .badge,.list-group-item.active:hover .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)} -------------------------------------------------------------------------------- /app/themes/base/static/css/style.css: -------------------------------------------------------------------------------- 1 | html, body, .container-table { 2 | background: rgb(230,231,232); 3 | height: 100%; 4 | width: 100%; 5 | } 6 | 7 | .add-task { 8 | width: 100%; 9 | } 10 | 11 | .add-task input { 12 | width: 100%; 13 | } 14 | 15 | 16 | .widget { 17 | padding:20px; 18 | background-color: #FFF; 19 | } 20 | 21 | .container-table { 22 | display: table; 23 | } 24 | .vertical-center-row { 25 | display: table-cell; 26 | vertical-align: middle; 27 | } 28 | 29 | .top-buffer { 30 | margin-top:20px; 31 | } 32 | .navbar { 33 | border-radius: 0!important; 34 | } 35 | 36 | .navbar-right { 37 | margin-right: 15px; 38 | } 39 | -------------------------------------------------------------------------------- /app/themes/base/static/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/encima/flask-task/55a449e41e4e28669bbed7cb5aba6493611c2219/app/themes/base/static/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /app/themes/base/static/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/encima/flask-task/55a449e41e4e28669bbed7cb5aba6493611c2219/app/themes/base/static/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /app/themes/base/static/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/encima/flask-task/55a449e41e4e28669bbed7cb5aba6493611c2219/app/themes/base/static/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /app/themes/base/static/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/encima/flask-task/55a449e41e4e28669bbed7cb5aba6493611c2219/app/themes/base/static/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /app/themes/base/static/js/bootstrap.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v3.3.5 (http://getbootstrap.com) 3 | * Copyright 2011-2015 Twitter, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.5",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.5",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),a(c.target).is('input[type="radio"]')||a(c.target).is('input[type="checkbox"]')||c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.5",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.5",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.5",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),c.isInStateTrue()?void 0:(clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide())},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.5",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.5",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.5",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); -------------------------------------------------------------------------------- /app/themes/base/static/js/scripts.js: -------------------------------------------------------------------------------- 1 | $(document).ready( function() { 2 | 3 | $('tr').on('click', function(e){ 4 | var self = this; 5 | doTask(self); 6 | }); 7 | 8 | function doTask(self) { 9 | $.ajax({ 10 | url:"/do", 11 | method:"POST", 12 | data:{"id":self.getAttribute('data-id')}, 13 | success:function(data) { 14 | console.log(data); 15 | //todo remove table with dynamic key 16 | if(data['project'] in data['table']) { 17 | $(self).parent().parent().html(data['table'][data['project']]) 18 | } else { 19 | $(self).closest('div').remove(); 20 | } 21 | $('tr').on('click', function(e){ 22 | var self = this; 23 | doTask(self); 24 | }); 25 | } 26 | }); 27 | } 28 | }); 29 | -------------------------------------------------------------------------------- /app/themes/base/templates/base.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | {{title}} 10 | 11 | 12 | 13 | 14 | 15 | {% block extra_static %}{% endblock %} 16 | 17 | 18 | 19 | 33 |
34 | 35 | {% block body %}{% endblock %} 36 |
37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /app/themes/base/templates/completed.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% block body %} 3 |
4 |
5 |
6 | {% for project in tasks: %} 7 |

{{project|capitalize}}

8 | {{tasks[project]}} 9 | {% endfor %} 10 |
11 |
12 |
13 | {% endblock %} 14 | -------------------------------------------------------------------------------- /app/themes/base/templates/index.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% block body %} 3 |
4 |
5 |
6 |
7 | 8 |
9 |
10 |
11 |
12 | 13 |
14 |
15 |
16 | {% for project in tasks: %} 17 |

{{project|capitalize}}

18 | {{tasks[project]}} 19 | {% endfor %} 20 |
21 |
22 |
23 | {% endblock %} 24 | -------------------------------------------------------------------------------- /app/themes/base/templates/login.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% block extra_static %} 3 | 4 | {% endblock %} 5 | 6 | {% block body %} 7 | 8 | 9 |
10 |
11 |
12 |
13 | 14 | 15 | 29 | 30 | {% if error_message %}{% endif %} 31 |
32 |
33 |
34 |
35 | {% endblock %} 36 | -------------------------------------------------------------------------------- /app/themes/base/templates/register.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | {{title}} 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 25 | 39 | 40 | 41 | 42 |
43 | 44 | 57 | 58 |
59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /app/tw.py: -------------------------------------------------------------------------------- 1 | from taskw import TaskWarrior 2 | from tabulate import tabulate 3 | from flask_table import Table, Col 4 | import re 5 | 6 | 7 | class TaskTable(Table): 8 | # match bootstrap classes 9 | classes = ["table", "table-responsive", 10 | "table-condensed", 11 | "table-striped"] 12 | id = Col('id') 13 | description = Col('Description') 14 | status = Col('Status') 15 | urgency = Col('Urgency') 16 | # tags = OptCol('Tags', default_value='No Tags') 17 | 18 | def tr_format(self, item): 19 | if item['urgency'] >= 6: 20 | return ''.format(item['id'], 'important') + "{}" 21 | elif item['urgency'] >= 1 and item['urgency'] < 6: 22 | return ''.format(item['id'], 'moderate') + "{}" 23 | else: 24 | return ''.format(item['id'], 'normal') + "{}" 25 | 26 | 27 | class TW_Loader: 28 | 29 | symbol = "*" 30 | 31 | def __init__(self, config=None, status="pending"): 32 | self.status = status 33 | if config is not None: 34 | self.w = TaskWarrior(config_filename=config) 35 | else: 36 | self.w = TaskWarrior() 37 | self.refresh_tasks() 38 | 39 | def refresh_tasks(self): 40 | self.tasks = self.w.load_tasks() 41 | filtered = self.tasks[self.status] 42 | # newlist = sorted(pending, key=itemgetter('project', 'urgency'), 43 | # reverse=True) #reverse=True sorts descending 44 | self.tasks = {} 45 | self.task_tables = {} 46 | for task in filtered: 47 | pr = 'unassigned' 48 | if 'project' in task: 49 | pr = task['project'] 50 | task["actions"] = '' 51 | if pr in self.tasks: 52 | self.tasks[pr].append(task) 53 | else: 54 | self.tasks[pr] = [] 55 | self.tasks[pr].append(task) 56 | # create tables from sorted tasks 57 | for project in self.tasks.keys(): 58 | table = TaskTable(self.tasks[project]) 59 | self.task_tables[project] = table 60 | 61 | def get_tasks(self, project=None): 62 | if project is None: 63 | return self.tasks 64 | elif project in self.tasks: 65 | return self.tasks[project] 66 | else: 67 | return None 68 | 69 | def add_task(self, text): 70 | # positive lookbehind to match and extract terms 71 | # task MUST come before project 72 | task = re.search("(?<=task:)(?:(?!project:).)*", text) 73 | project = re.search("(?<=project:)\w+", text) 74 | tags = re.findall("\+(\S+)", text) 75 | urgency = re.search("(?<=urgency:)\w+", text) 76 | due = re.search("(?<=due:).*?(?=\s)", text) 77 | parsed_task = {} 78 | if project is not None: 79 | project = project.group().strip() 80 | if urgency is not None: 81 | urgency = urgency.group().strip().upper() 82 | if task is not None: 83 | task = task.group().strip() 84 | if due is not None: 85 | due = due.group().strip() 86 | # TODO convert to epoch 87 | self.w.task_add(task, project=project, tags=tags, priority=urgency) 88 | self.refresh_tasks() 89 | parsed_task['task'] = task 90 | parsed_task['project'] = project 91 | parsed_task['urgency'] = urgency 92 | parsed_task['tags'] = tags 93 | return parsed_task 94 | 95 | def print_tasks(self): 96 | for project in self.tasks.keys(): 97 | proj = "* {0} *".format(project) 98 | print(proj) 99 | print("*" * len(proj)) 100 | print(tabulate(self.tasks[project], 101 | headers="keys", tablefmt="pipe")) 102 | print() 103 | 104 | def get_tables(self, project=None): 105 | if project is None: 106 | return self.task_tables 107 | elif project in self.tasks: 108 | table = TaskTable(self.tasks[project]) 109 | return table 110 | else: 111 | return None 112 | 113 | 114 | if __name__ == '__main__': 115 | twl = TW_Loader('./config/taskrc') 116 | twl.add_task("task:hello there stranger") 117 | twl.print_tasks() 118 | -------------------------------------------------------------------------------- /app/utils.py: -------------------------------------------------------------------------------- 1 | """Various utils function.""" 2 | 3 | 4 | def safe_lower(val): 5 | if isinstance(val, str): 6 | return val.lower() 7 | return val 8 | -------------------------------------------------------------------------------- /app/views.py: -------------------------------------------------------------------------------- 1 | """File containing the routes linked to the application.""" 2 | from app.tw import TW_Loader 3 | from app import app, login_manager 4 | from app.models import User 5 | from flask import request, redirect, url_for, render_template, jsonify, Blueprint 6 | import flask.ext.login as flask_login 7 | from passlib.hash import sha256_crypt 8 | from app.utils import safe_lower 9 | 10 | twl_todo = TW_Loader(app.config['TASKRC']) 11 | tasks = twl_todo.get_tasks() 12 | 13 | twl_completed = TW_Loader(app.config['TASKRC'], status="completed") 14 | tasks_completed = twl_completed.get_tasks() 15 | theme = app.config['THEME'].lower() 16 | views = Blueprint('views', __name__, 17 | template_folder='themes/{}/templates'.format(theme), 18 | static_folder='themes/{}/static'.format(theme), 19 | static_url_path='/themes/{}/static'.format(theme)) 20 | 21 | 22 | @login_manager.user_loader 23 | def user_loader(email): 24 | """Return a user object based on its email. 25 | 26 | :param str email: email of the user we are looking for. 27 | :return: A user object corresponding to the email. 28 | :rtype: User 29 | """ 30 | return User.query.filter_by(email=safe_lower(email)).first() 31 | 32 | 33 | @login_manager.request_loader 34 | def request_loader(request): 35 | email = safe_lower(request.form.get('email')) 36 | user = User.query.filter_by(email=email).first() 37 | if user is not None: 38 | if sha256_crypt.verify(request.form['pw'], user.hash): 39 | flask_login.login_user(user) 40 | return user 41 | 42 | # Login Handling 43 | 44 | # FIXME: Each user should have a different taskrc 45 | # @views.route('/register', methods=['GET', 'POST']) 46 | # def register(): 47 | # if request.method == 'POST': 48 | # email = safe_lower(request.form['email']) 49 | # pw = request.form['pw'] 50 | # hash = sha256_crypt.encrypt(pw) 51 | # user = User(email, hash) 52 | # db.session.add(user) 53 | # db.session.commit() 54 | # flask_login.login_user(user) 55 | # return redirect(url_for('index')) 56 | # elif request.method == 'GET': 57 | # return render_template('register.html') 58 | 59 | 60 | @views.route('/login', methods=['GET', 'POST']) 61 | def login(): 62 | if request.method == 'POST': 63 | email = safe_lower(request.form['email']) 64 | pw = request.form['pw'] 65 | user = User.query.filter_by(email=email).first() 66 | error_message = "" 67 | if user is not None: 68 | if sha256_crypt.verify(pw, user.hash): 69 | flask_login.login_user(user) 70 | return redirect(url_for('views.index')) 71 | else: 72 | error_message = "Incorrect password." 73 | else: 74 | error_message = "User not found." 75 | return render_template('login.html', title="Signin", 76 | error_message=error_message, 77 | container_table=True) 78 | elif request.method == 'GET': 79 | return render_template('login.html', title="Signin", 80 | container_table=True) 81 | 82 | 83 | @views.route('/logout') 84 | @flask_login.login_required 85 | def logout(): 86 | flask_login.logout_user() 87 | return redirect(url_for('views.login')) 88 | 89 | 90 | @views.route('/add', methods=["POST"]) 91 | @flask_login.login_required 92 | def add_task(): 93 | twl_todo.add_task(request.form['task']) 94 | return redirect(url_for('views.index')) 95 | 96 | 97 | @views.route('/do', methods=['POST', 'PUT']) 98 | @flask_login.login_required 99 | def do_task(): 100 | msg = "ok" 101 | project = "unassigned" 102 | if 'id' in request.form: 103 | task = twl_todo.w.get_task(id=request.form['id']) 104 | if 'project' in task[1]: 105 | project = task[1]['project'] 106 | twl_todo.w.task_done(id=request.form['id']) 107 | twl_todo.refresh_tasks() 108 | msg = twl_todo.get_tables() 109 | return jsonify({"error": False, "table": msg, "project": project}) 110 | 111 | 112 | @views.route('/refresh') 113 | @flask_login.login_required 114 | def refresh(): 115 | twl_todo.refresh_tasks() 116 | twl_completed.refresh_tasks() 117 | return redirect(url_for('views.index')) 118 | 119 | 120 | @views.route('/') 121 | @flask_login.login_required 122 | def index(name=None): 123 | return render_template('index.html', current_user=flask_login.current_user, 124 | tasks=twl_todo.get_tables(), title="To Do") 125 | 126 | 127 | @views.route('/completed') 128 | @flask_login.login_required 129 | def completed(name=None): 130 | return render_template('completed.html', current_user=flask_login.current_user, 131 | tasks=twl_completed.get_tables(), title="Completed") 132 | -------------------------------------------------------------------------------- /manage.py: -------------------------------------------------------------------------------- 1 | """Manager to run commands linked to the application.""" 2 | import subprocess 3 | from flask_script import Manager 4 | 5 | from app import app 6 | 7 | 8 | manager = Manager(app) 9 | 10 | 11 | def taskrc_handler(variable, variable_details): 12 | """Specific handler for TASKRC config. 13 | 14 | :param str variable: variable name to edit. 15 | :param dict variable_details: dictionnary containing details of the config 16 | variable. 17 | """ 18 | # Unix specific try: 19 | try: 20 | possible_existing_taskrc = subprocess.check_output( 21 | ['locate', 'taskrc']).decode("utf-8") 22 | for taskrc in possible_existing_taskrc.split("\n"): 23 | if taskrc.endswith("taskrc"): 24 | variable_details["value"] = taskrc 25 | break 26 | except Exception: 27 | # It will fail on windows. 28 | pass 29 | variable_details["value"] = input("{} [{}]:".format( 30 | variable, variable_details["value"])) or variable_details["value"] 31 | 32 | 33 | @manager.command 34 | def new_config(): 35 | """Generate local config file.""" 36 | # List of variables that can be specified. 37 | # value key is set to default value. 38 | config_variables = {"SQLALCHEMY_DATABASE_URI": {"description": "", 39 | "value": "sqlite:///test.db"}, 40 | "SQLALCHEMY_TRACK_MODIFICATIONS": {"description": "", 41 | "value": False}, 42 | "UPLOAD_FOLDER": {"description": "", 43 | "value": "./app/static/uploads/"}, 44 | "SECRET_KEY": {"description": "", 45 | "value": "redpr0d"}, 46 | "ENV": {"description": "", 47 | "value": "PROD"}, 48 | "TASKRC": {"description": "", 49 | "value": "./app/config/taskrc", 50 | "handler": taskrc_handler}, 51 | "ADMIN_EMAIL": {"description": "", 52 | "value": "encima@gmail.com"}, 53 | "ADMIN_PW": {"description": "", 54 | "value": "Tumultuous4Sunscreen"}, 55 | "THEME": {"description": "", 56 | "value": "Base"}} 57 | 58 | # Write the file in the config folder. 59 | for variable in config_variables: 60 | variable_details = config_variables[variable] 61 | if "handler" not in variable_details: 62 | # Default case. 63 | variable_details["value"] = input("{} [{}]:".format( 64 | variable, variable_details["value"])) or variable_details["value"] 65 | 66 | else: 67 | # Case we have a specific handler for a specific variable 68 | variable_details["handler"](variable, variable_details) 69 | 70 | # Write the local config file 71 | with open("app/config/local.cfg", "w+") as config_file: 72 | for variable in config_variables: 73 | config_file.write("{}='{}'\n".format( 74 | variable, config_variables[variable]["value"])) 75 | 76 | 77 | if __name__ == "__main__": 78 | manager.run() 79 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | Babel==2.3.4 2 | backports-abc==0.4 3 | backports.ssl-match-hostname==3.5.0.1 4 | certifi==2016.2.28 5 | Flask==0.10.1 6 | Flask-Admin==1.4.0 7 | Flask-Login==0.3.2 8 | Flask-SQLAlchemy==2.1 9 | Flask-Table==0.2.10 10 | itsdangerous==0.24 11 | Jinja2==2.8 12 | MarkupSafe==0.23 13 | passlib==1.6.5 14 | python-dateutil==2.5.3 15 | pytz==2016.4 16 | singledispatch==3.4.0.3 17 | six==1.10.0 18 | SQLAlchemy==1.0.12 19 | tabulate==0.7.5 20 | taskw==1.1.0 21 | tornado==4.3 22 | Werkzeug==0.11.4 23 | WTForms==2.1 24 | flask_script 25 | -------------------------------------------------------------------------------- /run.py: -------------------------------------------------------------------------------- 1 | """Run the server in either production or development.""" 2 | from app import app, db, models 3 | from tornado.wsgi import WSGIContainer 4 | from tornado.httpserver import HTTPServer 5 | from tornado.ioloop import IOLoop 6 | from passlib.hash import sha256_crypt 7 | 8 | if app.config['ENV'] == 'PROD': 9 | db.create_all() 10 | email = app.config['ADMIN_EMAIL'].lower() 11 | pw = app.config['ADMIN_PW'] 12 | hash = sha256_crypt.encrypt(pw) 13 | user = models.User(email, hash) 14 | db.session.add(user) 15 | db.session.commit() 16 | http_server = HTTPServer(WSGIContainer(app)) 17 | http_server.listen(9000) 18 | print("Running production on 9000") 19 | IOLoop.instance().start() 20 | elif app.config['ENV'] == 'DEV': 21 | db.drop_all() 22 | db.create_all() 23 | email = app.config['ADMIN_EMAIL'] 24 | pw = app.config['ADMIN_PW'] 25 | hash = sha256_crypt.encrypt(pw) 26 | user = models.User(email, hash) 27 | db.session.add(user) 28 | db.session.commit() 29 | print("Running development") 30 | app.run(debug=True) 31 | --------------------------------------------------------------------------------