Compare commits
18 commits
main
...
add-docume
Author | SHA1 | Date | |
---|---|---|---|
8990daec21 | |||
171d13f9ca | |||
8dae88d6b4 | |||
9f90fbd52d | |||
2051da0220 | |||
c4dfa48fa3 | |||
47104df2a7 | |||
057296012c | |||
b191940b6e | |||
55d1efaf16 | |||
92456553e6 | |||
2f35dd712c | |||
99f74b12d0 | |||
acd5f94bd3 | |||
78296ce189 | |||
fa02c59ae7 | |||
3869ef32c0 | |||
6beec54fd1 |
5
.gitignore
vendored
5
.gitignore
vendored
|
@ -2,3 +2,8 @@ venv
|
||||||
__pycache__
|
__pycache__
|
||||||
.mypy_cache/
|
.mypy_cache/
|
||||||
config/default.py
|
config/default.py
|
||||||
|
node_modules/
|
||||||
|
.vscode/
|
||||||
|
config.default
|
||||||
|
package-lock.json
|
||||||
|
config/
|
||||||
|
|
35
README.md
Normal file
35
README.md
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
# OWL-MAP
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
* clone the project
|
||||||
|
* install geoip and postgis from your local package manager
|
||||||
|
* `$ sudo pacman -S postgis geoip`
|
||||||
|
* setup postgres on your machine, see e.g. https://wiki.archlinux.org/title/PostgreSQL
|
||||||
|
* `$ sudo su postgres`
|
||||||
|
* `$ initdb -D /var/lib/postgres/data`
|
||||||
|
* start postgres
|
||||||
|
* create postgres user
|
||||||
|
* `$ sudo su postgres`
|
||||||
|
* `$ createuser --interactive` -> "owl" role with relevant priviledges
|
||||||
|
* create postgres database "matcher" with hstore and postgis extensions
|
||||||
|
* `$ psql -U postgres`
|
||||||
|
* `> CREATE DATABASE matcher;`
|
||||||
|
* `> ALTER DATABASE matcher OWNER TO owl;`
|
||||||
|
* `> CREATE EXTENSION hstore;`
|
||||||
|
* `> CREATE EXTENSION postgis;`
|
||||||
|
* create the db tables
|
||||||
|
* setup database credentials and name in default.py
|
||||||
|
* `$ python create_db.py`
|
||||||
|
* setup a venv
|
||||||
|
* enter the venv, e.g. in pycharm
|
||||||
|
* `$ pip install -r requirements.txt`
|
||||||
|
* `$ cp config/example.py config/default.py`
|
||||||
|
* download id-tagging-schema
|
||||||
|
* `$ git clone https://github.com/openstreetmap/id-tagging-schema`
|
||||||
|
* adjust paths in default.py
|
||||||
|
* download geoip databases
|
||||||
|
* https://git.io/GeoLite2-City.mmdb
|
||||||
|
* `$ pacman -S geoip-database-extra` in ArchLinux or https://dl.miyuru.lk/geoip/maxmind/city/maxmind4.dat.gz
|
||||||
|
* adjust default.py
|
||||||
|
* run the tests
|
||||||
|
* run 'python web_view.py'
|
|
@ -1,5 +1,8 @@
|
||||||
"""Sample config."""
|
"""Sample config."""
|
||||||
|
|
||||||
|
# POSTGIS
|
||||||
|
DB_USER = "owl"
|
||||||
|
DB_NAME = "matcher"
|
||||||
|
|
||||||
ID_TAGGING_SCHEMA_DIR = "/var/lib/data/id-tagging-schema"
|
ID_TAGGING_SCHEMA_DIR = "/var/lib/data/id-tagging-schema"
|
||||||
ID_PRESET_DIR = "/var/lib/data/id-tagging-schema/data/presets/"
|
ID_PRESET_DIR = "/var/lib/data/id-tagging-schema/data/presets/"
|
||||||
|
|
|
@ -2,9 +2,10 @@
|
||||||
|
|
||||||
from sqlalchemy.schema import CreateIndex, CreateTable
|
from sqlalchemy.schema import CreateIndex, CreateTable
|
||||||
|
|
||||||
|
from config.default import DB_USER, DB_NAME
|
||||||
from matcher import database, model
|
from matcher import database, model
|
||||||
|
|
||||||
DB_URL = "postgresql:///matcher"
|
DB_URL = f"postgresql://{DB_USER}@localhost/{DB_NAME}"
|
||||||
database.init_db(DB_URL)
|
database.init_db(DB_URL)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -11,3 +11,4 @@ simplejson
|
||||||
user_agents
|
user_agents
|
||||||
num2words
|
num2words
|
||||||
psycopg2
|
psycopg2
|
||||||
|
pytest===8.3.2
|
|
@ -1,15 +1,16 @@
|
||||||
"""Test matcher utils."""
|
"""Test matcher utils."""
|
||||||
|
from unittest import TestCase
|
||||||
|
|
||||||
from matcher import utils
|
from matcher import utils
|
||||||
|
|
||||||
|
|
||||||
def test_format_wikibase_time_year() -> None:
|
class TestUtils(TestCase):
|
||||||
|
def test_format_wikibase_time_year(self) -> None:
|
||||||
"""Test passing a year to format_wikibase_time."""
|
"""Test passing a year to format_wikibase_time."""
|
||||||
v = {"time": "+1950-00-00T00:00:00Z", "precision": 9}
|
v = {"time": "+1950-00-00T00:00:00Z", "precision": 9}
|
||||||
assert utils.format_wikibase_time(v) == "1950"
|
assert utils.format_wikibase_time(v) == "1950"
|
||||||
|
|
||||||
|
def test_format_wikibase_time_century(self) -> None:
|
||||||
def test_format_wikibase_time_century() -> None:
|
|
||||||
"""Test passing centuries to format_wikibase_time."""
|
"""Test passing centuries to format_wikibase_time."""
|
||||||
v = {"time": "+0800-00-00T00:00:00Z", "precision": 7}
|
v = {"time": "+0800-00-00T00:00:00Z", "precision": 7}
|
||||||
assert utils.format_wikibase_time(v) == "8th century"
|
assert utils.format_wikibase_time(v) == "8th century"
|
||||||
|
@ -17,14 +18,12 @@ def test_format_wikibase_time_century() -> None:
|
||||||
v = {"time": "+1950-00-00T00:00:00Z", "precision": 7}
|
v = {"time": "+1950-00-00T00:00:00Z", "precision": 7}
|
||||||
assert utils.format_wikibase_time(v) == "20th century"
|
assert utils.format_wikibase_time(v) == "20th century"
|
||||||
|
|
||||||
|
def test_format_wikibase_time_decade(self) -> None:
|
||||||
def test_format_wikibase_time_decade() -> None:
|
|
||||||
"""Test passing a full date to format_wikibase_time."""
|
"""Test passing a full date to format_wikibase_time."""
|
||||||
v = {"time": "+1910-00-00T00:00:00Z", "precision": 8}
|
v = {"time": "+1910-00-00T00:00:00Z", "precision": 8}
|
||||||
assert utils.format_wikibase_time(v) == "1910s"
|
assert utils.format_wikibase_time(v) == "1910s"
|
||||||
|
|
||||||
|
def test_format_wikibase_time_day(self) -> None:
|
||||||
def test_format_wikibase_time_day() -> None:
|
|
||||||
"""Test passing a full date to format_wikibase_time."""
|
"""Test passing a full date to format_wikibase_time."""
|
||||||
v = {"time": "+1868-01-09T00:00:00Z", "precision": 11}
|
v = {"time": "+1868-01-09T00:00:00Z", "precision": 11}
|
||||||
assert utils.format_wikibase_time(v) == "9 January 1868"
|
assert utils.format_wikibase_time(v) == "9 January 1868"
|
||||||
|
|
Loading…
Reference in a new issue