diff --git a/backend/Pipfile b/backend/Pipfile index c6c73c0..363b7f7 100644 --- a/backend/Pipfile +++ b/backend/Pipfile @@ -11,7 +11,7 @@ djangorestframework = "*" markdown = "*" djangorestframework-simplejwt = "*" gunicorn = "*" -mysqlclient = "*" +psycopg2-binary = "*" [requires] python_version = "3.7" diff --git a/backend/Pipfile.lock b/backend/Pipfile.lock index 8e5ab63..b8aa7eb 100644 --- a/backend/Pipfile.lock +++ b/backend/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "f3b787be7658e88a80f6cb88c212265407e1a63b3d4fb9590f95c84814c74f97" + "sha256": "36966ef1a38c521518aa98ef2bbe6b86a1dbff761eda4272d59682dbb8e8b441" }, "pipfile-spec": 6, "requires": { @@ -56,14 +56,41 @@ "index": "pypi", "version": "==3.0.1" }, - "mysqlclient": { + "psycopg2-binary": { "hashes": [ - "sha256:425e733b05e359a714d6007c0fc44582be66b63e5a3df0a50949274ae16f4bc6", - "sha256:62e4770b6a797b9416bcf70488365b7d6b9c9066878108499c559293bb464380", - "sha256:f257d250f2675d0ef99bd318906f3cfc05cef4a2f385ea695ff32a3f04b9f9a7" + "sha256:19a2d1f3567b30f6c2bb3baea23f74f69d51f0c06c2e2082d0d9c28b0733a4c2", + "sha256:2b69cf4b0fa2716fd977aa4e1fd39af6110eb47b2bb30b4e5a469d8fbecfc102", + "sha256:2e952fa17ba48cbc2dc063ddeec37d7dc4ea0ef7db0ac1eda8906365a8543f31", + "sha256:348b49dd737ff74cfb5e663e18cb069b44c64f77ec0523b5794efafbfa7df0b8", + "sha256:3d72a5fdc5f00ca85160915eb9a973cf9a0ab8148f6eda40708bf672c55ac1d1", + "sha256:4957452f7868f43f32c090dadb4188e9c74a4687323c87a882e943c2bd4780c3", + "sha256:5138cec2ee1e53a671e11cc519505eb08aaaaf390c508f25b09605763d48de4b", + "sha256:587098ca4fc46c95736459d171102336af12f0d415b3b865972a79c03f06259f", + "sha256:5b79368bcdb1da4a05f931b62760bea0955ee2c81531d8e84625df2defd3f709", + "sha256:5cf43807392247d9bc99737160da32d3fa619e0bfd85ba24d1c78db205f472a4", + "sha256:676d1a80b1eebc0cacae8dd09b2fde24213173bf65650d22b038c5ed4039f392", + "sha256:6b0211ecda389101a7d1d3df2eba0cf7ffbdd2480ca6f1d2257c7bd739e84110", + "sha256:79cde4660de6f0bb523c229763bd8ad9a93ac6760b72c369cf1213955c430934", + "sha256:7aba9786ac32c2a6d5fb446002ed936b47d5e1f10c466ef7e48f66eb9f9ebe3b", + "sha256:7c8159352244e11bdd422226aa17651110b600d175220c451a9acf795e7414e0", + "sha256:945f2eedf4fc6b2432697eb90bb98cc467de5147869e57405bfc31fa0b824741", + "sha256:96b4e902cde37a7fc6ab306b3ac089a3949e6ce3d824eeca5b19dc0bedb9f6e2", + "sha256:9a7bccb1212e63f309eb9fab47b6eaef796f59850f169a25695b248ca1bf681b", + "sha256:a3bfcac727538ec11af304b5eccadbac952d4cca1a551a29b8fe554e3ad535dc", + "sha256:b19e9f1b85c5d6136f5a0549abdc55dcbd63aba18b4f10d0d063eb65ef2c68b4", + "sha256:b664011bb14ca1f2287c17185e222f2098f7b4c857961dbcf9badb28786dbbf4", + "sha256:bde7959ef012b628868d69c474ec4920252656d0800835ed999ba5e4f57e3e2e", + "sha256:cb095a0657d792c8de9f7c9a0452385a309dfb1bbbb3357d6b1e216353ade6ca", + "sha256:d16d42a1b9772152c1fe606f679b2316551f7e1a1ce273e7f808e82a136cdb3d", + "sha256:d444b1545430ffc1e7a24ce5a9be122ccd3b135a7b7e695c5862c5aff0b11159", + "sha256:d93ccc7bf409ec0a23f2ac70977507e0b8a8d8c54e5ee46109af2f0ec9e411f3", + "sha256:df6444f952ca849016902662e1a47abf4fa0678d75f92fd9dd27f20525f809cd", + "sha256:e63850d8c52ba2b502662bf3c02603175c2397a9acc756090e444ce49508d41e", + "sha256:ec43358c105794bc2b6fd34c68d27f92bea7102393c01889e93f4b6a70975728", + "sha256:f4c6926d9c03dadce7a3b378b40d2fea912c1344ef9b29869f984fb3d2a2420b" ], "index": "pypi", - "version": "==1.4.2.post1" + "version": "==2.7.7" }, "pyjwt": { "hashes": [ diff --git a/backend/perks/migrations/0003_auto_20190324_2135.py b/backend/perks/migrations/0003_auto_20190324_2135.py new file mode 100644 index 0000000..7c325da --- /dev/null +++ b/backend/perks/migrations/0003_auto_20190324_2135.py @@ -0,0 +1,23 @@ +# Generated by Django 2.1.7 on 2019-03-24 21:35 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('perks', '0002_auto_20190324_2033'), + ] + + operations = [ + migrations.AlterField( + model_name='perk', + name='name', + field=models.CharField(max_length=64), + ), + migrations.AlterField( + model_name='tree', + name='name', + field=models.CharField(max_length=64, unique=True), + ), + ] diff --git a/backend/perks/models.py b/backend/perks/models.py index afd0f4c..b163403 100644 --- a/backend/perks/models.py +++ b/backend/perks/models.py @@ -10,7 +10,7 @@ from django.db import models class Tree(models.Model): - name = models.CharField(max_length=32, unique=True) + name = models.CharField(max_length=64, unique=True) def __str__(self): return self.name @@ -20,7 +20,7 @@ class Tree(models.Model): class Perk(models.Model): - name = models.CharField(max_length=32) + name = models.CharField(max_length=64) effect = models.TextField() level = models.IntegerField() type = models.IntegerField() diff --git a/backend/perks/parser.py b/backend/perks/parser.py index e551a4c..c0da311 100644 --- a/backend/perks/parser.py +++ b/backend/perks/parser.py @@ -49,7 +49,7 @@ class PerkParser(): def parse_perks(self): for p in self.perks: - perk = self.create_perk(name=p['name'].strip(), effect=p['effect'].strip(), level=int(p['level']), type=0) + perk = self.create_perk(name=p['name'].strip(), effect=p['effect'].strip(), level=int(p['level']), perk_type=0) for tree_name in p['tree'].split(','): try: tree = Tree.objects.get(name=tree_name) @@ -59,8 +59,8 @@ class PerkParser(): p['id'] = Perk.objects.latest('id').id - def create_perk(self, name, effect='', level=1, type=4, trees=None): - new_perk = Perk(name=name, effect=effect, level=level, type=type) + def create_perk(self, name, effect='', level=1, perk_type=4, trees=None): + new_perk = Perk(name=name, effect=effect, level=level, type=perk_type) new_perk.save() if trees is not None: new_perk.trees.add(*trees) @@ -85,11 +85,11 @@ class PerkParser(): except Perk.DoesNotExist: if re.match(class_pattern, req_name): - req = self.create_perk(name=req_name, level=0, type=1) + req = self.create_perk(name=req_name, level=0, perk_type=1) elif re.match(race_pattern, req_name): - req = self.create_perk(name=req_name, level=0, type=2) + req = self.create_perk(name=req_name, level=0, perk_type=2) elif re.match(ability_pattern, req_name): - req = self.create_perk(name=req_name, level=0, type=3) + req = self.create_perk(name=req_name, level=0, perk_type=3) elif 'Skill Focus' in req_name or 'Ability Focus' in req_name: req_match = re.match(requirement_pattern, req_name) req_tree = Tree.objects.get(name=req_match.group(2)) @@ -97,9 +97,9 @@ class PerkParser(): req_base_name = req_match.group(1) base_req = Perk.objects.get(name=req_base_name) - req = self.create_perk(name=req_name, effect=base_req.effect, level=base_req.level, type=base_req.type, trees=[req_tree]) + req = self.create_perk(name=req_name, effect=base_req.effect, level=base_req.level, perk_type=base_req.type, trees=[req_tree]) else: - req = self.create_perk(name=req_name, level=0, type=4) + req = self.create_perk(name=req_name, level=0, perk_type=4) perk.parents.add(req) def output_transform(self): diff --git a/backend/perktree/settings.py b/backend/perktree/settings.py index 95b96ea..7dae9c7 100644 --- a/backend/perktree/settings.py +++ b/backend/perktree/settings.py @@ -82,8 +82,9 @@ WSGI_APPLICATION = 'perktree.wsgi.application' DATABASES = { 'default': { 'ENGINE': os.environ.get('DB_ENGINE', 'django.db.backends.sqlite3'), - 'NAME': os.path.join(BASE_DIR, os.environ.get('DB_NAME', 'db.sqlite3')) if ENV == 'dev' else os.environ.get('DB_NAME', ''), - 'USER': os.environ.get('DB_USER', ''), + # 'NAME': os.path.join(BASE_DIR, os.environ.get('DB_NAME', 'db.sqlite3')) if ENV == 'dev' else os.environ.get('DB_NAME', ''), + 'NAME': os.environ.get('DB_NAME', 'perktree'), + 'USER': os.environ.get('DB_USER', 'root'), 'PASSWORD': os.environ.get('DB_PASSWORD', ''), 'HOST': os.environ.get('DB_HOST', ''), 'PORT': os.environ.get('DB_PORT', ''), diff --git a/docker-compose.yml b/docker-compose.yml index b90284b..412daca 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,14 +1,15 @@ version: "3" services: db: - image: mariadb + image: postgres:alpine container_name: perktree-db restart: unless-stopped environment: - MYSQL_ROOT_PASSWORD: ${DB_PASSWORD} - MYSQL_DATABASE: perktree + POSTGRES_USER: root + POSTGRES_PASSWORD: ${DB_PASSWORD} + POSTGRES_DB: perktree volumes: - - /mnt/perktree/db:/var/lib/mysql + - /mnt/perktree/db:/var/lib/postgresql/data frontend: build: @@ -35,12 +36,12 @@ services: DJANGO_ADMIN_MAIL: ${DJANGO_ADMIN_MAIL} DJANGO_ADMIN_PASS: ${DJANGO_ADMIN_PASS} APP_HOST: perktree.theedgeofrage.com - DB_ENGINE: django.db.backends.mysql + DB_ENGINE: django.db.backends.postgresql DB_NAME: perktree DB_USER: root DB_PASSWORD: ${DB_PASSWORD} DB_HOST: db - DB_PORT: 3306 + DB_PORT: 5432 PERKS_DIR: /app/static/perks links: - db