Skip to content

Commit

Permalink
Merge pull request #3460 from mathesar-foundation/0.1.5
Browse files Browse the repository at this point in the history
Release 0.1.5
seancolsen authored Feb 28, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
2 parents de969c8 + cd71772 commit 2f4a15f
Showing 43 changed files with 542,468 additions and 160 deletions.
4 changes: 3 additions & 1 deletion demo/install/base.py
Original file line number Diff line number Diff line change
@@ -13,7 +13,9 @@
LIBRARY_ONE = os.path.join(RESOURCES, "library_without_checkouts.sql")
LIBRARY_TWO = os.path.join(RESOURCES, "library_add_checkouts.sql")
DEVCON_DATASET = os.path.join(RESOURCES, "devcon_dataset.sql")
MOVIES_SQL_BZ2 = os.path.join(RESOURCES, "movie_collection.sql.bz2")
MOVIES_SQL_TABLES = os.path.join(RESOURCES, "movie_collection_tables.sql")
MOVIES_SQL_FKS = os.path.join(RESOURCES, "movie_collection_fks.sql")
MOVIES_CSV = os.path.join(RESOURCES, 'movies_csv')
ARXIV_SETUP_SQL = os.path.join(RESOURCES, 'arxiv_dataset_setup.sql')
ARXIV_PAPERS_PICKLE = os.path.join(RESOURCES, 'arxiv_papers.pickle')
LIBRARY_MANAGEMENT = 'Library Management'
40 changes: 40 additions & 0 deletions demo/install/dumpcsvs.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
"""
Dump data for all the tables of a provided schema to separate {table_name}.csv files
with header as column names.
Usage: python dumpcsvs.py
"""
import psycopg
import csv

DB_NAME = "mathesar"
DB_USER = "mathesar"
DB_PASSWORD = "mathesar"
DB_HOST = "mathesar_dev_db"
SCHEMA_NAME = "Movie Collection"

conn = psycopg.connect(
dbname=DB_NAME,
user=DB_USER,
password=DB_PASSWORD,
host=DB_HOST,
port=5432
)

# get names of tables.
tables = conn.execute(
f"SELECT table_name FROM information_schema.tables WHERE table_schema = '{SCHEMA_NAME}'"
).fetchall()

for table in tables:
table_name = table[0]
with open(f'{table_name}.csv', 'w', newline="") as csv_file:
csv_writer = csv.writer(csv_file)
columns = conn.execute(
f"""SELECT column_name FROM information_schema.columns WHERE
table_schema = '{SCHEMA_NAME}' AND table_name = '{table_name}';"""
).fetchall()
columns = [column[0] for column in columns]
csv_writer.writerow(columns)
with conn.cursor().copy(f"""COPY "{SCHEMA_NAME}"."{table_name}" TO STDOUT""") as copy:
csv_writer.writerows(copy.rows())
19 changes: 11 additions & 8 deletions demo/install/movies_dataset.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
"""This module contains functions to load the Movie Collection dataset."""
import bz2

import os
from sqlalchemy import text

from demo.install.base import MOVIE_COLLECTION, MOVIES_SQL_BZ2
from demo.install.base import MOVIE_COLLECTION, MOVIES_SQL_TABLES, MOVIES_CSV, MOVIES_SQL_FKS


def load_movies_dataset(engine, safe_mode=False):
@@ -16,11 +15,15 @@ def load_movies_dataset(engine, safe_mode=False):
schema already exists instead of dropping it.
"""
drop_schema_query = text(f"""DROP SCHEMA IF EXISTS "{MOVIE_COLLECTION}" CASCADE;""")
create_schema_query = text(f"""CREATE SCHEMA "{MOVIE_COLLECTION}";""")
set_search_path = text(f"""SET search_path="{MOVIE_COLLECTION}";""")
with engine.begin() as conn, bz2.open(MOVIES_SQL_BZ2, 'rt') as f:
with engine.begin() as conn, open(MOVIES_SQL_TABLES) as f, open(MOVIES_SQL_FKS) as f2:
if safe_mode is False:
conn.execute(drop_schema_query)
conn.execute(create_schema_query)
conn.execute(set_search_path)
conn.execute(text(f.read()))
for file in os.scandir(MOVIES_CSV):
table_name = file.name.split('.csv')[0]
with open(file, 'r') as csv_file:
conn.connection.cursor().copy_expert(
f"""COPY "{MOVIE_COLLECTION}"."{table_name}" FROM STDIN DELIMITER ',' CSV HEADER""",
csv_file
)
conn.execute(text(f2.read()))
Binary file removed demo/install/resources/movie_collection.sql.bz2
Binary file not shown.
105 changes: 105 additions & 0 deletions demo/install/resources/movie_collection_fks.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
SELECT pg_catalog.setval('"Departments_id_seq"', 12, true);
SELECT pg_catalog.setval('"Genres_id_seq"', 10770, true);
SELECT pg_catalog.setval('"Jobs_id_seq"', 419, true);
SELECT pg_catalog.setval('"Movie Cast Map_id_seq"', 159012, true);
SELECT pg_catalog.setval('"Movie Crew Map_id_seq"', 130711, true);
SELECT pg_catalog.setval('"Movie Genre Map_id_seq"', 25886, true);
SELECT pg_catalog.setval('"Movie Production Company Map_id_seq"', 19959, true);
SELECT pg_catalog.setval('"Movie Production Country Map_id_seq"', 14087, true);
SELECT pg_catalog.setval('"Movie Spoken Language Map_id_seq"', 14951, true);
SELECT pg_catalog.setval('"Movies_id_seq"', 469172, true);
SELECT pg_catalog.setval('"People_id_seq"', 1908262, true);
SELECT pg_catalog.setval('"Production Companies_id_seq"', 95940, true);
SELECT pg_catalog.setval('"Production Countries_id_seq"', 122, true);
SELECT pg_catalog.setval('"Spoken Languages_id_seq"', 107, true);
SELECT pg_catalog.setval('"Sub-Collections_id_seq"', 479971, true);

ALTER TABLE ONLY "Departments"
ADD CONSTRAINT "Departments_pkey" PRIMARY KEY (id);

ALTER TABLE ONLY "Genres"
ADD CONSTRAINT "Genres_pkey" PRIMARY KEY (id);

ALTER TABLE ONLY "Jobs"
ADD CONSTRAINT "Jobs_pkey" PRIMARY KEY (id);

ALTER TABLE ONLY "Movie Cast Map"
ADD CONSTRAINT "Movie Cast Map_pkey" PRIMARY KEY (id);

ALTER TABLE ONLY "Movie Crew Map"
ADD CONSTRAINT "Movie Crew Map_pkey" PRIMARY KEY (id);

ALTER TABLE ONLY "Movie Genre Map"
ADD CONSTRAINT "Movie Genre Map_pkey" PRIMARY KEY (id);

ALTER TABLE ONLY "Movie Production Company Map"
ADD CONSTRAINT "Movie Production Company Map_pkey" PRIMARY KEY (id);

ALTER TABLE ONLY "Movie Production Country Map"
ADD CONSTRAINT "Movie Production Country Map_pkey" PRIMARY KEY (id);

ALTER TABLE ONLY "Movie Spoken Language Map"
ADD CONSTRAINT "Movie Spoken Language Map_pkey" PRIMARY KEY (id);

ALTER TABLE ONLY "Movies"
ADD CONSTRAINT "Movies_pkey" PRIMARY KEY (id);

ALTER TABLE ONLY "People"
ADD CONSTRAINT "People_pkey" PRIMARY KEY (id);

ALTER TABLE ONLY "Production Companies"
ADD CONSTRAINT "Production Companies_pkey" PRIMARY KEY (id);

ALTER TABLE ONLY "Production Countries"
ADD CONSTRAINT "Production Countries_pkey" PRIMARY KEY (id);

ALTER TABLE ONLY "Spoken Languages"
ADD CONSTRAINT "Spoken Languages_pkey" PRIMARY KEY (id);

ALTER TABLE ONLY "Sub-Collections"
ADD CONSTRAINT "Sub-Collections_pkey" PRIMARY KEY (id);

ALTER TABLE ONLY "Movie Cast Map"
ADD CONSTRAINT "Movie Cast Map_Cast Member_fkey" FOREIGN KEY ("Cast Member") REFERENCES "People"(id);

ALTER TABLE ONLY "Movie Cast Map"
ADD CONSTRAINT "Movie Cast Map_Movie_fkey" FOREIGN KEY ("Movie") REFERENCES "Movies"(id);

ALTER TABLE ONLY "Movie Crew Map"
ADD CONSTRAINT "Movie Crew Map_Crew Member_fkey" FOREIGN KEY ("Crew Member") REFERENCES "People"(id);

ALTER TABLE ONLY "Movie Crew Map"
ADD CONSTRAINT "Movie Crew Map_Department_fkey" FOREIGN KEY ("Department") REFERENCES "Departments"(id);

ALTER TABLE ONLY "Movie Crew Map"
ADD CONSTRAINT "Movie Crew Map_Job_fkey" FOREIGN KEY ("Job") REFERENCES "Jobs"(id);

ALTER TABLE ONLY "Movie Crew Map"
ADD CONSTRAINT "Movie Crew Map_Movie_fkey" FOREIGN KEY ("Movie") REFERENCES "Movies"(id);

ALTER TABLE ONLY "Movie Genre Map"
ADD CONSTRAINT "Movie Genre Map_Genre_fkey" FOREIGN KEY ("Genre") REFERENCES "Genres"(id);

ALTER TABLE ONLY "Movie Genre Map"
ADD CONSTRAINT "Movie Genre Map_Movie_fkey" FOREIGN KEY ("Movie") REFERENCES "Movies"(id);

ALTER TABLE ONLY "Movie Production Company Map"
ADD CONSTRAINT "Movie Production Company Map_Movie_fkey" FOREIGN KEY ("Movie") REFERENCES "Movies"(id);

ALTER TABLE ONLY "Movie Production Company Map"
ADD CONSTRAINT "Movie Production Company Map_Production Company_fkey" FOREIGN KEY ("Production Company") REFERENCES "Production Companies"(id);

ALTER TABLE ONLY "Movie Production Country Map"
ADD CONSTRAINT "Movie Production Country Map_Movie_fkey" FOREIGN KEY ("Movie") REFERENCES "Movies"(id);

ALTER TABLE ONLY "Movie Production Country Map"
ADD CONSTRAINT "Movie Production Country Map_Production Country_fkey" FOREIGN KEY ("Production Country") REFERENCES "Production Countries"(id);

ALTER TABLE ONLY "Movie Spoken Language Map"
ADD CONSTRAINT "Movie Spoken Language Map_Movie_fkey" FOREIGN KEY ("Movie") REFERENCES "Movies"(id);

ALTER TABLE ONLY "Movie Spoken Language Map"
ADD CONSTRAINT "Movie Spoken Language Map_Spoken Language_fkey" FOREIGN KEY ("Spoken Language") REFERENCES "Spoken Languages"(id);

ALTER TABLE ONLY "Movies"
ADD CONSTRAINT "Movies_Sub-Collection_fkey" FOREIGN KEY ("Sub-Collection") REFERENCES "Sub-Collections"(id);
339 changes: 339 additions & 0 deletions demo/install/resources/movie_collection_tables.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,339 @@
CREATE SCHEMA "Movie Collection";
SET search_path="Movie Collection";
-- Departments

CREATE TABLE "Departments" (
id integer NOT NULL,
"Name" text
);

CREATE SEQUENCE "Departments_id_seq"
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;

ALTER SEQUENCE "Departments_id_seq" OWNED BY "Departments".id;

ALTER TABLE ONLY "Departments"
ALTER COLUMN id SET DEFAULT nextval('"Departments_id_seq"'::regclass);


-- Genres

CREATE TABLE "Genres" (
id integer NOT NULL,
"Name" text
);


CREATE SEQUENCE "Genres_id_seq"
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;

ALTER SEQUENCE "Genres_id_seq" OWNED BY "Genres".id;

ALTER TABLE ONLY "Genres"
ALTER COLUMN id SET DEFAULT nextval('"Genres_id_seq"'::regclass);


-- Jobs

CREATE TABLE "Jobs" (
id integer NOT NULL,
"Name" text
);

CREATE SEQUENCE "Jobs_id_seq"
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;

ALTER SEQUENCE "Jobs_id_seq" OWNED BY "Jobs".id;

ALTER TABLE ONLY "Jobs"
ALTER COLUMN id SET DEFAULT nextval('"Jobs_id_seq"'::regclass);


-- Movie Cast Map

CREATE TABLE "Movie Cast Map" (
id integer NOT NULL,
"Character" text,
"Movie" integer NOT NULL,
"Cast Member" integer NOT NULL,
"Credit Order" integer
);

CREATE SEQUENCE "Movie Cast Map_id_seq"
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;

ALTER SEQUENCE "Movie Cast Map_id_seq" OWNED BY "Movie Cast Map".id;

ALTER TABLE ONLY "Movie Cast Map"
ALTER COLUMN id SET DEFAULT nextval('"Movie Cast Map_id_seq"'::regclass);


-- Movie Crew Map

CREATE TABLE "Movie Crew Map" (
id integer NOT NULL,
"Job" integer,
"Department" integer,
"Movie" integer NOT NULL,
"Crew Member" integer NOT NULL
);

CREATE SEQUENCE "Movie Crew Map_id_seq"
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;

ALTER SEQUENCE "Movie Crew Map_id_seq" OWNED BY "Movie Crew Map".id;

ALTER TABLE ONLY "Movie Crew Map"
ALTER COLUMN id SET DEFAULT nextval('"Movie Crew Map_id_seq"'::regclass);


-- Movie Genre Map

CREATE TABLE "Movie Genre Map" (
id integer NOT NULL,
"Movie" integer,
"Genre" integer
);

CREATE SEQUENCE "Movie Genre Map_id_seq"
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;

ALTER SEQUENCE "Movie Genre Map_id_seq" OWNED BY "Movie Genre Map".id;

ALTER TABLE ONLY "Movie Genre Map"
ALTER COLUMN id SET DEFAULT nextval('"Movie Genre Map_id_seq"'::regclass);


-- Movie Production Company Map

CREATE TABLE "Movie Production Company Map" (
id integer NOT NULL,
"Movie" integer,
"Production Company" integer
);

CREATE SEQUENCE "Movie Production Company Map_id_seq"
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;

ALTER SEQUENCE "Movie Production Company Map_id_seq" OWNED BY "Movie Production Company Map".id;

ALTER TABLE ONLY "Movie Production Company Map"
ALTER COLUMN id SET DEFAULT nextval('"Movie Production Company Map_id_seq"'::regclass);


-- Movie Production Country Map

CREATE TABLE "Movie Production Country Map" (
id integer NOT NULL,
"Movie" integer NOT NULL,
"Production Country" integer NOT NULL
);

CREATE SEQUENCE "Movie Production Country Map_id_seq"
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;

ALTER SEQUENCE "Movie Production Country Map_id_seq" OWNED BY "Movie Production Country Map".id;

ALTER TABLE ONLY "Movie Production Country Map"
ALTER COLUMN id SET DEFAULT nextval('"Movie Production Country Map_id_seq"'::regclass);


-- Movie Spoken Language Map

CREATE TABLE "Movie Spoken Language Map" (
id integer NOT NULL,
"Movie" integer NOT NULL,
"Spoken Language" integer NOT NULL
);

CREATE SEQUENCE "Movie Spoken Language Map_id_seq"
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;

ALTER SEQUENCE "Movie Spoken Language Map_id_seq" OWNED BY "Movie Spoken Language Map".id;

ALTER TABLE ONLY "Movie Spoken Language Map"
ALTER COLUMN id SET DEFAULT nextval('"Movie Spoken Language Map_id_seq"'::regclass);


-- Movies

CREATE TABLE "Movies" (
id integer NOT NULL,
"Title" text,
"Release Date" date,
"Runtime" numeric,
"Homepage" mathesar_types.uri,
"Sub-Collection" integer,
"Imdb ID" text,
"Tagline" text,
"Overview" text,
"Budget" mathesar_types.mathesar_money,
"Revenue" mathesar_types.mathesar_money,
"Original Title" text,
"Original Language" text
);

CREATE SEQUENCE "Movies_id_seq"
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;

ALTER SEQUENCE "Movies_id_seq" OWNED BY "Movies".id;

ALTER TABLE ONLY "Movies"
ALTER COLUMN id SET DEFAULT nextval('"Movies_id_seq"'::regclass);


-- People

CREATE TABLE "People" (
id integer NOT NULL,
"Name" text
);

CREATE SEQUENCE "People_id_seq"
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;

ALTER SEQUENCE "People_id_seq" OWNED BY "People".id;

ALTER TABLE ONLY "People"
ALTER COLUMN id SET DEFAULT nextval('"People_id_seq"'::regclass);


-- Production Companies

CREATE TABLE "Production Companies" (
id integer NOT NULL,
"Name" text
);

CREATE SEQUENCE "Production Companies_id_seq"
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;

ALTER SEQUENCE "Production Companies_id_seq" OWNED BY "Production Companies".id;

ALTER TABLE ONLY "Production Companies"
ALTER COLUMN id SET DEFAULT nextval('"Production Companies_id_seq"'::regclass);


-- Production Countries

CREATE TABLE "Production Countries" (
id integer NOT NULL,
"Name" text NOT NULL,
"ISO 3166-1" character(2) NOT NULL
);

CREATE SEQUENCE "Production Countries_id_seq"
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;

ALTER SEQUENCE "Production Countries_id_seq" OWNED BY "Production Countries".id;

ALTER TABLE ONLY "Production Countries"
ALTER COLUMN id SET DEFAULT nextval('"Production Countries_id_seq"'::regclass);


-- Spoken Languages

CREATE TABLE "Spoken Languages" (
id integer NOT NULL,
"Name" text,
"ISO 639-1" character(2) NOT NULL
);

CREATE SEQUENCE "Spoken Languages_id_seq"
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;

ALTER SEQUENCE "Spoken Languages_id_seq" OWNED BY "Spoken Languages".id;

ALTER TABLE ONLY "Spoken Languages"
ALTER COLUMN id SET DEFAULT nextval('"Spoken Languages_id_seq"'::regclass);


-- Sub-Collections

CREATE TABLE "Sub-Collections" (
id integer NOT NULL,
"Name" text
);

CREATE SEQUENCE "Sub-Collections_id_seq"
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;

ALTER SEQUENCE "Sub-Collections_id_seq" OWNED BY "Sub-Collections".id;

ALTER TABLE ONLY "Sub-Collections"
ALTER COLUMN id SET DEFAULT nextval('"Sub-Collections_id_seq"'::regclass);
13 changes: 13 additions & 0 deletions demo/install/resources/movies_csv/Departments.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
id,Name
1,Directing
2,Costume & Make-Up
3,Crew
4,Actors
5,Camera
6,Visual Effects
7,Sound
8,Lighting
9,Art
10,Writing
11,Editing
12,Production
21 changes: 21 additions & 0 deletions demo/install/resources/movies_csv/Genres.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
id,Name
12,Adventure
14,Fantasy
16,Animation
18,Drama
27,Horror
28,Action
35,Comedy
36,History
37,Western
53,Thriller
80,Crime
99,Documentary
878,Science Fiction
9648,Mystery
10402,Music
10749,Romance
10751,Family
10752,War
10769,Foreign
10770,TV Movie
420 changes: 420 additions & 0 deletions demo/install/resources/movies_csv/Jobs.csv

Large diffs are not rendered by default.

159,013 changes: 159,013 additions & 0 deletions demo/install/resources/movies_csv/Movie Cast Map.csv

Large diffs are not rendered by default.

130,712 changes: 130,712 additions & 0 deletions demo/install/resources/movies_csv/Movie Crew Map.csv

Large diffs are not rendered by default.

25,887 changes: 25,887 additions & 0 deletions demo/install/resources/movies_csv/Movie Genre Map.csv

Large diffs are not rendered by default.

19,960 changes: 19,960 additions & 0 deletions demo/install/resources/movies_csv/Movie Production Company Map.csv

Large diffs are not rendered by default.

14,088 changes: 14,088 additions & 0 deletions demo/install/resources/movies_csv/Movie Production Country Map.csv

Large diffs are not rendered by default.

14,952 changes: 14,952 additions & 0 deletions demo/install/resources/movies_csv/Movie Spoken Language Map.csv

Large diffs are not rendered by default.

13,110 changes: 13,110 additions & 0 deletions demo/install/resources/movies_csv/Movies.csv

Large diffs are not rendered by default.

152,698 changes: 152,698 additions & 0 deletions demo/install/resources/movies_csv/People.csv

Large diffs are not rendered by default.

9,878 changes: 9,878 additions & 0 deletions demo/install/resources/movies_csv/Production Companies.csv

Large diffs are not rendered by default.

123 changes: 123 additions & 0 deletions demo/install/resources/movies_csv/Production Countries.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
id,Name,ISO 3166-1
1,Iran,IR
2,El Salvador,SV
3,Puerto Rico,PR
4,Israel,IL
5,Liberia,LR
6,Serbia,RS
7,Senegal,SN
8,Poland,PL
9,Canada,CA
10,Venezuela,VE
11,Bahamas,BS
12,Ethiopia,ET
13,Zimbabwe,ZW
14,Iceland,IS
15,Slovakia,SK
16,Latvia,LV
17,Indonesia,ID
18,Albania,AL
19,Nigeria,NG
20,Luxembourg,LU
21,Greece,GR
22,Aruba,AW
23,Morocco,MA
24,Montenegro,ME
25,Angola,AO
26,Russia,RU
27,Cambodia,KH
28,Soviet Union,SU
29,Sri Lanka,LK
30,Namibia,NA
31,India,IN
32,Egypt,EG
33,Italy,IT
34,Palestinian Territory,PS
35,United Arab Emirates,AE
36,Netherlands,NL
37,Hungary,HU
38,Bolivia,BO
39,Slovenia,SI
40,Panama,PA
41,French Polynesia,PF
42,Belarus,BY
43,Macao,MO
44,Belgium,BE
45,Mali,ML
46,Pakistan,PK
47,Cyprus,CY
48,Czech Republic,CZ
49,Thailand,TH
50,Sweden,SE
51,Ecuador,EC
52,Kazakhstan,KZ
53,Kyrgyz Republic,KG
54,Singapore,SG
55,Ukraine,UA
56,Netherlands Antilles,AN
57,Norway,NO
58,Afghanistan,AF
59,Georgia,GE
60,Spain,ES
61,Monaco,MC
62,Iraq,IQ
63,Colombia,CO
64,United Kingdom,GB
65,Qatar,QA
66,Bosnia and Herzegovina,BA
67,Hong Kong,HK
68,Turkey,TR
69,Argentina,AR
70,Nicaragua,NI
71,Finland,FI
72,Rwanda,RW
73,Taiwan,TW
74,Kenya,KE
75,Philippines,PH
76,New Zealand,NZ
77,Mauritania,MR
78,Romania,RO
79,Tunisia,TN
80,Uruguay,UY
81,Brazil,BR
82,Austria,AT
83,Vietnam,VN
84,Algeria,DZ
85,Macedonia,MK
86,Uganda,UG
87,Lebanon,LB
88,Malta,MT
89,Trinidad and Tobago,TT
90,Azerbaijan,AZ
91,China,CN
92,Germany,DE
93,Denmark,DK
94,Ireland,IE
95,United States of America,US
96,Lao People's Democratic Republic,LA
97,Peru,PE
98,Croatia,HR
99,Guatemala,GT
100,Jordan,JO
101,Armenia,AM
102,Mexico,MX
103,Dominican Republic,DO
104,Japan,JP
105,Portugal,PT
106,South Korea,KR
107,Switzerland,CH
108,Paraguay,PY
109,Chile,CL
110,Malaysia,MY
111,Syrian Arab Republic,SY
112,Barbados,BB
113,Australia,AU
114,Lithuania,LT
115,Liechtenstein,LI
116,Cuba,CU
117,Jamaica,JM
118,Bulgaria,BG
119,Estonia,EE
120,South Africa,ZA
121,France,FR
122,Burkina Faso,BF
108 changes: 108 additions & 0 deletions demo/install/resources/movies_csv/Spoken Languages.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
id,Name,ISO 639-1
1,,oc
2,ελληνικά,el
3,,cr
4,Tiếng Việt,vi
5,Bahasa indonesia,id
6,Somali,so
7,اردو,ur
8,Dansk,da
9,Latviešu,lv
10,Cymraeg,cy
11,Malti,mt
12,پښتو,ps
13,Magyar,hu
14,Український,uk
15,No Language,xx
16,Nederlands,nl
17,বাংলা,bn
18,suomi,fi
19,,qu
20,,km
21,Gaeilge,ga
22,Lietuviškai,lt
23,қазақ,kk
24,Bahasa melayu,ms
25,,mn
26,Kinyarwanda,rw
27,Íslenska,is
28,,ml
29,Italiano,it
30,,gd
31,한국어/조선말,ko
32,普通话,zh
33,Français,fr
34,,yi
35,Deutsch,de
36,,am
37,,ty
38,,sa
39,,fy
40,български език,bg
41,Español,es
42,ქართული,ka
43,Slovenščina,sl
44,svenska,sv
45,Bosanski,bs
46,فارسی,fa
47,తెలుగు,te
48,Eesti,et
49,,ce
50,,my
51,ਪੰਜਾਬੀ,pa
52,Hausa,ha
53,,hy
54,Català,ca
55,,st
56,Hrvatski,hr
57,Slovenčina,sk
58,,xh
59,,tt
60,Fulfulde,ff
61,isiZulu,zu
62,Wolof,wo
63,Galego,gl
64,हिन्दी,hi
65,English,en
66,עִבְרִית,he
67,Český,cs
68,ozbek,uz
69,euskera,eu
70,??????,ky
71,தமிழ்,ta
72,广州话 / 廣州話,cn
73,,lo
74,,nv
75,Bokmål,nb
76,ภาษาไทย,th
77,shqip,sq
78,Kiswahili,sw
79,Polski,pl
80,Latin,la
81,,kw
82,Pусский,ru
83,,ln
84,العربية,ar
85,Afrikaans,af
86,,ny
87,,ig
88,,mi
89,Azərbaycan,az
90,Türkçe,tr
91,,mr
92,Română,ro
93,Norsk,no
94,,bo
95,,si
96,,lb
97,,sc
98,?????,kn
99,,sh
100,Português,pt
101,日本語,ja
102,,mk
103,Srpski,sr
104,,ku
105,Bamanankan,bm
106,,se
107,,tl
813 changes: 813 additions & 0 deletions demo/install/resources/movies_csv/Sub-Collections.csv

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion demo/management/commands/setup_demo_template_db.py
Original file line number Diff line number Diff line change
@@ -20,7 +20,7 @@ def _setup_demo_template_db():
print("Initializing demo template database...")

template_db_name = settings.MATHESAR_DEMO_TEMPLATE
django_model = Database.current_objects.get(name=settings.DATABASES["default"]["NAME"])
django_model = Database.create_from_settings_key("default")
root_engine = create_mathesar_engine(django_model)
with root_engine.connect() as conn:
conn.execution_options(isolation_level="AUTOCOMMIT")
4 changes: 2 additions & 2 deletions demo/settings.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
from config.settings.production import * # noqa
from config.settings import * # noqa
from config.settings.common_settings import * # noqa
from decouple import config as decouple_config

INSTALLED_APPS += [ # noqa
@@ -10,6 +9,7 @@
"demo.middleware.LiveDemoModeMiddleware",
]

MATHESAR_MODE = 'PRODUCTION'
MATHESAR_LIVE_DEMO = True
MATHESAR_LIVE_DEMO_USERNAME = decouple_config('MATHESAR_LIVE_DEMO_USERNAME', default=None)
MATHESAR_LIVE_DEMO_PASSWORD = decouple_config('MATHESAR_LIVE_DEMO_PASSWORD', default=None)
18 changes: 18 additions & 0 deletions docs/docs/administration/upgrade/0.1.5.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Upgrade Mathesar to 0.1.5

### For installations using Docker Compose

If you have a Docker compose installation (including one from the guided script), run the command below:

```
docker compose -f /etc/mathesar/docker-compose.yml up \
--force-recreate --build service
```

!!! warning "Your installation directory may be different"
You may need to change `/etc/mathesar/` in the command above if you chose to install Mathesar to a different directory.


### For installations done from scratch

If you installed from scratch, the upgrade instructions are the same as [for 0.1.4](../../administration/upgrade/0.1.4/#scratch), but you can skip Step 5 – you do not need to change the environment variables.
90 changes: 0 additions & 90 deletions docs/docs/configuration/connect-to-existing-db.md

This file was deleted.

3 changes: 3 additions & 0 deletions docs/docs/configuration/env-variables.md
Original file line number Diff line number Diff line change
@@ -50,6 +50,9 @@ This page contains all available environment variables supported by Mathesar. Se
## Caddy reverse proxy configuration {: #caddy}
!!!note
These variables are only needed if you're using the Caddy configuration in our [default Docker Compose](../../installation/docker-compose/#steps) file.
### `DOMAIN_NAME`
- **Description**: The public URL that will be used to access Mathesar ([see Caddy docs](https://caddyserver.com/docs/caddyfile/concepts#addresses)).
6 changes: 3 additions & 3 deletions docs/docs/index.md
Original file line number Diff line number Diff line change
@@ -12,7 +12,7 @@ See our [live demo site](https://demo.mathesar.org/) to try Mathesar without ins

### Try locally

This is a quick way to play with Mathesar locally before installing, but will not be appropriate for saving data that you care about.
This is a quick way to play with Mathesar locally, but is not appropriate for saving data that you care about or setting up a long-term installation.

1. With [Docker](https://docs.docker.com/get-docker/) installed, run:

@@ -51,8 +51,8 @@ You can self-host Mathesar by following one of the guides below:
Mathesar should be pretty intuitive to use. More documentation is coming soon, but for now, we've written some documentation for some things that could be tricky.
- [Syncing Database Changes](./user-guide/syncing-db.md)
- [Users & Access Levels](./user-guide/users.md)
- [Syncing database changes](./user-guide/syncing-db.md) if the database's structure is changed outside of Mathesar.
- How to set up [users with different access levels](./user-guide/users.md)
## Contribute to Mathesar
13 changes: 13 additions & 0 deletions docs/docs/installation/docker-compose/index.md
Original file line number Diff line number Diff line change
@@ -104,3 +104,16 @@ Add your domain(s) or sub-domain(s) to the [`DOMAIN_NAME`](../../configuration/e
```
Restart the docker containers for the configuration to take effect.
### Using an external PostgreSQL server for Mathesar's internal database
If you'd like to use an external PostgreSQL server for Mathesar's internal database, you'll need to do the following:
1. On the existing database server, [create a new database](https://www.postgresql.org/docs/current/sql-createdatabase.html) for Mathesar to store its metadata.
```bash
psql -c 'create database mathesar_django;'
```
1. Configure the [internal database environment variables](../../configuration/env-variables.md#db) to point to the database you just created. Ensure that you change the default values for the user, password, and host.
2 changes: 2 additions & 0 deletions docs/docs/releases/0.1.4.md
Original file line number Diff line number Diff line change
@@ -4,6 +4,8 @@

Mathesar 0.1.4 focuses on improving the installation and setup experience.

_This page provides a comprehensive list of all changes in the release._

## Upgrading to 0.1.4

See our guide on [upgrading Mathesar to 0.1.4](../administration/upgrade/0.1.4.md).
37 changes: 37 additions & 0 deletions docs/docs/releases/0.1.5.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Mathesar 0.1.5

## Summary

Mathesar 0.1.5 is a small, bug fix release.

_This page provides a comprehensive list of all changes in the release._

## Upgrading to Mathesar 0.1.5

See our guide on [upgrading Mathesar to 0.1.5](../administration/upgrade/0.1.5.md).

## Improvements

- Improve performance of loading sample data when adding a new connection _[#3448](https://github.com/mathesar-foundation/mathesar/pull/3448 "Efficient data loader")_
- Constrain the width of the connections page _[#3439](https://github.com/mathesar-foundation/mathesar/pull/3439 "Constrain the width of the connections page")_

## Bug fixes

- Fix "Page not found" error when viewing a shared exploration _[#3456](https://github.com/mathesar-foundation/mathesar/pull/3456 "Fix regression where `connections` list is empty in `common_data`")_
- Fix bugs preventing Mathesar from running in demo mode _[#3459](https://github.com/mathesar-foundation/mathesar/pull/3459 "Fix Demo mode issues")_
- Fix timeout when setting up a new database with sample data in installations with higher network latency _[#3448](https://github.com/mathesar-foundation/mathesar/pull/3448 "Efficient data loader")_
- Restore display of column type icons within shared tables _[#3456](https://github.com/mathesar-foundation/mathesar/pull/3456 "Fix regression where `connections` list is empty in `common_data`")_
- Temporarily hide link to missing docs page _[#3451](https://github.com/mathesar-foundation/mathesar/pull/3451 "Temporarily hide link to missing docs page")_
- Fix active cell displaying above row header cell _[#3382](https://github.com/mathesar-foundation/mathesar/pull/3382 "Fix active cell displaying above row header cell")_

## Documentation

- Improve docs on using an external PostgreSQL server for Mathesar's internal database _[#3457](https://github.com/mathesar-foundation/mathesar/pull/3457 "Updates to documentation")_
- Add embedded video walkthrough within installation steps _[#3437](https://github.com/mathesar-foundation/mathesar/pull/3437 "Merge pull request #3436 from mathesar-foundation/video_walkthrough")_ _[#3443](https://github.com/mathesar-foundation/mathesar/pull/3443 "Merge pull request #3442 from mathesar-foundation/update_video_link")_
- 0.1.5 release notes _[#3449](https://github.com/mathesar-foundation/mathesar/pull/3449 "0.1.5 release notes")_

## Maintenance

- Improve our release notes helper script _[#3435](https://github.com/mathesar-foundation/mathesar/pull/3435 "Merge pull request #3434 from mathesar-foundation/release_notes")_
- Post-release cleanup _[#3432](https://github.com/mathesar-foundation/mathesar/pull/3432 "Merge pull request #3429 from mathesar-foundation/0.1.4")_

22 changes: 2 additions & 20 deletions docs/docs/releases/README.md
Original file line number Diff line number Diff line change
@@ -14,25 +14,7 @@ This is developer documentation to help with release notes. It is not published
- If you haven't yet created a release notes file for this release, it will create one for you.
- The script will find PRs which have been merged but not yet included in the release notes file.
1. Open `missing_prs.csv` to see the PRs you need to add. Incorporate them into the release notes as you see fit. Save the release notes and commit them.
1. Open the release notes file and find a new section at the end titled **(TO CATEGORIZE)**. Incorporate PRs listed within this section into the release notes as you see fit. Rewrite the title text that appears directly in the markdown. Leave the titles as-written within the quotes (these will appear within hover text). Save the release notes and commit them.
1. Re-run the script as needed. When more PRs are merged, they will appear in `missing_prs.csv`.
## How to format the release notes content
1. Group changes into sections in the following order
```md
## Security fixes
## Breaking changes
## New features
## Groundwork
## Documentation
## Bug fixes
## Maintenance
```
You can omit sections if there are no applicable changes.
1. Within the "New features" section, further categorize changes by specific features using level 3 headings.
1. Re-run the script as needed.
35 changes: 35 additions & 0 deletions docs/docs/releases/TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Mathesar __VERSION__

## Summary

TODO

_This page provides a comprehensive list of all changes in the release._

## Upgrading to __VERSION__

TODO

<!-- ## Security fixes -->


<!-- ## Breaking changes -->
<!-- (This section lists any breaking changes to publicly exposed and documented machine interfaces to Mathesar such as the API or DB functions) -->


<!-- ## Improvements -->
<!-- (Each feature within this section should have its own level-three heading) -->


<!-- ## Groundwork -->
<!-- (Use this section to list any incremental work done on still-incomplete changes) -->


<!-- ## Bug fixes -->


<!-- ## Documentation -->


<!-- ## Maintenance -->

42 changes: 23 additions & 19 deletions docs/docs/releases/find_missing_prs.sh
Original file line number Diff line number Diff line change
@@ -39,19 +39,21 @@ fi

RELEASE=$1
NOTES_FILE=$RELEASE.md
TEMPLATE_FILE=TEMPLATE.md

# If the notes file doesn't yet exist, create one
if [ ! -f $NOTES_FILE ]; then
echo "# Mathesar $RELEASE" > $NOTES_FILE
cp $TEMPLATE_FILE $NOTES_FILE
sed -i "s/__VERSION__/$RELEASE/g" $NOTES_FILE
fi

PREV_NOTES_FILE=$(ls -1 | sort | grep -B 1 $NOTES_FILE | head -n 1)
PREV_RELEASE=$(echo $PREV_NOTES_FILE | sed s/.md$//)

COMMITS_FILE=cache/commits.txt
ALL_PRS_FILE=cache/all_prs.json
INCLUDED_PRS_FILE=cache/included_prs.txt
MISSING_PRS_FILE=missing_prs.csv
CACHE_DIR=cache
COMMITS_FILE="$CACHE_DIR/commits.txt"
ALL_PRS_FILE="$CACHE_DIR/all_prs.json"
INCLUDED_PRS_FILE="$CACHE_DIR/included_prs.txt"

# Use the latest release notes file
NOTES_FILE=$(ls -1 | grep -e '^[0-9]\.[0-9]\.[0-9]' | sort | tail -n 1)
@@ -72,21 +74,20 @@ RELEASE_BRANCH=$(
fi
)

mkdir -p "$CACHE_DIR"

# Find and cache the hashes for all the PR-merge commits included in the release
# branch but not included in the master branch.
git log --format=%H --first-parent $PREV_RELEASE..$RELEASE_BRANCH > $COMMITS_FILE

# Find and cache details about all the PRs merged within the past year. This
# gets more PRs than we need, but we'll filter it shortly.
gh pr list \
--base $RELEASE_BRANCH \
--limit 1000 \
--json additions,author,deletions,mergeCommit,title,url \
--search "is:closed merged:>$(date -d '1 year ago' '+%Y-%m-%d')" \
--jq 'map({
additions: .additions,
author: .author.login,
deletions: .deletions,
mergeCommit: .mergeCommit.oid,
title: .title,
url: .url
@@ -99,24 +100,27 @@ grep -Po 'https://github\.com/mathesar-foundation/mathesar/pull/\d*' \

# Generate a CSV containing details for PRs that match commits in the release
# but not in the release notes.
echo "
PR_LIST=$(echo "
SELECT
pr.title,
pr.url,
pr.author,
pr.additions,
pr.deletions,
'[#' || regexp_extract(pr.url, '(\d+)$', 1) || '](' || pr.url || ')' AS link
'- ' || pr.title ||
' _[#' || regexp_extract(pr.url, '(\d+)$', 1) || ']' ||
'(' || pr.url || ' \"' || replace(pr.title, '\"', '') || '\")_' AS link
FROM read_json('$ALL_PRS_FILE', auto_detect=true) AS pr
JOIN read_csv('$COMMITS_FILE', columns={'hash': 'text'}) AS commit
ON commit.hash = pr.mergeCommit
LEFT JOIN read_csv('$INCLUDED_PRS_FILE', columns={'url': 'text'}) AS included
ON included.url = pr.url
WHERE included.url IS NULL
ORDER BY pr.additions DESC;" | \
duckdb -csv > $MISSING_PRS_FILE

COUNT=$(tail -n +2 $MISSING_PRS_FILE | wc -l)
duckdb -ascii -noheader -newline $'\n')

echo "$COUNT missing PRs written to $MISSING_PRS_FILE"
if [ -z "$PR_LIST" ]; then
echo "No missing PRs"
exit 0
fi

echo $'\n\n## (TO CATEGORIZE)\n' >> $NOTES_FILE
echo "$PR_LIST" >> $NOTES_FILE
echo $'\n' >> $NOTES_FILE
COUNT=$(wc -l <<< "$PR_LIST")
echo "$COUNT PRs added to $NOTES_FILE. Please categorize them."
3 changes: 2 additions & 1 deletion docs/mkdocs.yml
Original file line number Diff line number Diff line change
@@ -11,9 +11,9 @@ nav:
- Install from scratch: installation/build-from-source/index.md
- Configuration:
- Environment variables: configuration/env-variables.md
- Connect to an existing database server: configuration/connect-to-existing-db.md
- Administration:
- Upgrade:
- To 0.1.5: administration/upgrade/0.1.5.md
- To 0.1.4: administration/upgrade/0.1.4.md
- To older versions: administration/upgrade/older.md
- Uninstall Mathesar: administration/uninstall.md
@@ -24,6 +24,7 @@ nav:
- Users & access levels: user-guide/users.md
- Glossary: user-guide/glossary.md
- Releases:
- '0.1.5': releases/0.1.5.md
- '0.1.4': releases/0.1.4.md
- '0.1.3': releases/0.1.3.md
- '0.1.2': releases/0.1.2.md
2 changes: 1 addition & 1 deletion mathesar/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
default_app_config = 'mathesar.apps.MathesarConfig'

__version__ = "0.1.4"
__version__ = "0.1.5"
8 changes: 8 additions & 0 deletions mathesar/install.py
Original file line number Diff line number Diff line change
@@ -37,6 +37,14 @@ def main(skip_static_collection=False):
install_on_db_with_key(database_key, skip_confirm)
except IntegrityError:
continue
if getattr(settings, 'MATHESAR_LIVE_DEMO', False) is True:
management.call_command(
'createsuperuser',
'--no-input',
'--username', 'demo',
'--email', 'admin@example.com',
)
management.call_command('setup_demo_template_db')


def install_on_db_with_key(database_key, skip_confirm):
2 changes: 1 addition & 1 deletion mathesar/views.py
Original file line number Diff line number Diff line change
@@ -241,7 +241,7 @@ def get_common_data_for_shared_entity(request, schema=None):
return {
**get_base_data_all_routes(request, database, schema),
'schemas': serialized_schemas,
'databases': serialized_databases,
'connections': serialized_databases,
'routing_context': 'anonymous',
}

14 changes: 7 additions & 7 deletions mathesar_ui/src/components/sheet/Sheet.svelte
Original file line number Diff line number Diff line change
@@ -137,12 +137,12 @@
flex-direction: column;
isolation: isolate;
--z-index__sheet__column-resizer: 2;
--z-index__sheet__top-left-cell: 3;
--z-index__sheet_group-header: 3;
--z-index__sheet_new-record-message: 3;
--z-index__sheet__active-cell: 4;
--z-index__sheet__horizontal-scrollbar: 4;
--z-index__sheet__vertical-scrollbar: 5;
--z-index__sheet__active-cell: 3;
--z-index__sheet__row-header-cell: 4;
--z-index__sheet__group-header: 5;
--z-index__sheet__new-record-message: 6;
--z-index__sheet__horizontal-scrollbar: 7;
--z-index__sheet__vertical-scrollbar: 8;
--virtual-list-horizontal-scrollbar-z-index: var(
--z-index__sheet__horizontal-scrollbar
@@ -181,7 +181,7 @@
:global([data-sheet-element='cell'][data-cell-static='true']) {
position: sticky;
z-index: var(--z-index__sheet__top-left-cell);
z-index: var(--z-index__sheet__row-header-cell);
}
:global([data-sheet-element='cell'][data-cell-control='true']) {
8 changes: 7 additions & 1 deletion mathesar_ui/src/pages/connections/ConnectionsPage.svelte
Original file line number Diff line number Diff line change
@@ -48,7 +48,13 @@
<title>{makeSimplePageTitle($_('connections'))}</title>
</svelte:head>

<LayoutWithHeader cssVariables={{ '--page-padding': '0' }}>
<LayoutWithHeader
restrictWidth
cssVariables={{
'--page-padding': '0',
'--max-layout-width': 'var(--max-layout-width-console-pages)',
}}
>
<div data-identifier="connections-header">
<span>
{$_('database_connections')}
Original file line number Diff line number Diff line change
@@ -8,10 +8,10 @@
ModalController,
CancelOrProceedButtonPair,
} from '@mathesar-component-library';
import DocsLink from '@mathesar/components/DocsLink.svelte';

Check warning on line 11 in mathesar_ui/src/systems/connections/DeleteConnectionModal.svelte

GitHub Actions / Run front end linter

'DocsLink' is defined but never used. Allowed unused vars must match /^\$\$(Props|Events|Slots)$/u
import Identifier from '@mathesar/components/Identifier.svelte';
import RichText from '@mathesar/components/rich-text/RichText.svelte';
import WarningBox from '@mathesar/components/message-boxes/WarningBox.svelte';

Check warning on line 14 in mathesar_ui/src/systems/connections/DeleteConnectionModal.svelte

GitHub Actions / Run front end linter

'WarningBox' is defined but never used. Allowed unused vars must match /^\$\$(Props|Events|Slots)$/u
import type { Connection } from '@mathesar/api/connections';
import {
connectionHasUniqueDatabaseReference,
@@ -80,14 +80,18 @@
</LabeledInput>
</p>

<p>
<!--
TODO: Uncomment this when we have a docs page to link to.
See: https://github.com/mathesar-foundation/mathesar/issues/3450
-->
<!-- <p>
<WarningBox>
{$_('using_custom_types')}
<DocsLink path="/">
{$_('learn_implications_deleting_mathesar_schemas')}
</DocsLink>
</WarningBox>
</p>
</p> -->
{/if}

<CancelOrProceedButtonPair
2 changes: 1 addition & 1 deletion mathesar_ui/src/systems/table-view/row/GroupHeader.svelte
Original file line number Diff line number Diff line change
@@ -60,7 +60,7 @@
<style lang="scss">
.group-header {
padding: 0.5rem 1.5rem;
z-index: var(--z-index__sheet_group-header);
z-index: var(--z-index__sheet__group-header);
.groups-data {
align-items: start;
Original file line number Diff line number Diff line change
@@ -23,7 +23,7 @@

<style lang="scss">
.new-record-message {
z-index: var(--z-index__sheet_new-record-message, auto);
z-index: var(--z-index__sheet__new-record-message, auto);
background: var(--sky-200);
display: flex;
align-items: center;
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "Mathesar"
version = "0.1.4"
version = "0.1.5"
[tool.vulture]
exclude = ["mathesar/migrations"]
ignore_names = ["go_to_patents_data_table", "go_to_all_types_table", "go_to_table_with_numbers_in_text", "admin_user"]

0 comments on commit 2f4a15f

Please sign in to comment.