diff --git a/backend/Pipfile.lock b/backend/Pipfile.lock index b8aa7eb..c0ac7c7 100644 --- a/backend/Pipfile.lock +++ b/backend/Pipfile.lock @@ -50,11 +50,11 @@ }, "markdown": { "hashes": [ - "sha256:c00429bd503a47ec88d5e30a751e147dcb4c6889663cd3e2ba0afe858e009baa", - "sha256:d02e0f9b04c500cde6637c11ad7c72671f359b87b9fe924b2383649d8841db7c" + "sha256:fc4a6f69a656b8d858d7503bda633f4dd63c2d70cf80abdc6eafa64c4ae8c250", + "sha256:fe463ff51e679377e3624984c829022e2cfb3be5518726b06f608a07a3aad680" ], "index": "pypi", - "version": "==3.0.1" + "version": "==3.1" }, "psycopg2-binary": { "hashes": [ diff --git a/backend/perks/admin.py b/backend/perks/admin.py index 53ce75a..af0d403 100644 --- a/backend/perks/admin.py +++ b/backend/perks/admin.py @@ -1,7 +1,8 @@ from django.contrib import admin -from .models import Tree, Perk +from .models import Tree, Perk, User admin.site.register(Tree) admin.site.register(Perk) +admin.site.register(User) diff --git a/backend/perks/models.py b/backend/perks/models.py index efbfae0..17608b8 100644 --- a/backend/perks/models.py +++ b/backend/perks/models.py @@ -16,6 +16,9 @@ class Tree(models.Model): def __str__(self): return self.name + def __repr__(self): + return f'' + class Meta: ordering = ('name',) @@ -29,7 +32,10 @@ class Perk(models.Model): trees = models.ManyToManyField('Tree', related_name='perks', symmetrical=False) def __str__(self): - return f'{self.name}' + return f'{self.name} [{self.level}]' + + def __repr__(self): + return f'' class Meta: ordering = ('name',) @@ -39,3 +45,9 @@ class User(models.Model): base_user = models.OneToOneField(AuthUser, on_delete=models.CASCADE) perks = models.ManyToManyField(Perk, related_name='users', symmetrical=False) + def __str__(self): + return f'{self.base_user.username} ({self.id})' + + def __repr__(self): + return f'' + diff --git a/backend/perks/parser.py b/backend/perks/parser.py index be6db8f..c6211b6 100644 --- a/backend/perks/parser.py +++ b/backend/perks/parser.py @@ -8,6 +8,7 @@ import csv import re + from .models import Tree, Perk requirement_pattern = re.compile(r'([\w\s]+) \(([\w\s]+)\)') @@ -94,11 +95,19 @@ class PerkParser(): 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)) - 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, perk_type=base_req.type, trees=[req_tree]) + if 'Greater' in req_base_name: + greater_req_name = req_name[8:] + try: + greater_req = Perk.objects.get(name=greater_req_name) + except Perk.DoesNotExist: + greater_req_base_name = req_base_name[8:] + greater_base_req = Perk.objects.get(name=greater_req_base_name) + greater_req = self.create_perk(name=greater_req_name, effect=greater_base_req.effect, level=greater_base_req.level, perk_type=greater_base_req.type, trees=[req_tree]) + + req.parents.add(greater_req) else: req = self.create_perk(name=req_name, level=0, perk_type=4) perk.parents.add(req) diff --git a/frontend/src/apis/auth.api.js b/frontend/src/apis/auth.api.js index c476f0a..242f574 100644 --- a/frontend/src/apis/auth.api.js +++ b/frontend/src/apis/auth.api.js @@ -23,10 +23,6 @@ export default class AuthApi { return Axios.post(ENDPOINTS.LOGIN, data); } - static signup(data) { - return Axios.post(ENDPOINTS.USER, data); - } - static changePassword(data) { return Axios.patch(ENDPOINTS.USER, data); } diff --git a/frontend/src/apis/user.api.js b/frontend/src/apis/user.api.js index fcd7117..3fbd34e 100644 --- a/frontend/src/apis/user.api.js +++ b/frontend/src/apis/user.api.js @@ -16,6 +16,10 @@ export default class AuthApi { return Axios.get(ENDPOINTS.USER); } + static createUser(data) { + return Axios.post(ENDPOINTS.USER, data); + } + static updatePerks(data) { return Axios.patch(ENDPOINTS.USER, data); } diff --git a/frontend/src/components/app.vue b/frontend/src/components/app.vue index b6217c2..5e1bf4d 100644 --- a/frontend/src/components/app.vue +++ b/frontend/src/components/app.vue @@ -44,7 +44,10 @@ export default { { icon: 'fas fa-code-branch', text: 'Perk trees', to: { name: 'trees' } }, { icon: 'fas fa-sign-out-alt', text: 'Logout', to: { name: 'logout' } }, ], - false: [{ icon: 'fas fa-sign-in-alt', text: 'Login', to: { name: 'login' } }], + false: [ + { icon: 'fas fa-sign-in-alt', text: 'Login', to: { name: 'login' } }, + { icon: 'fas fa-user-plus ', text: 'Sign up', to: { name: 'signup' } }, + ], }, }; }, diff --git a/frontend/src/components/auth/signup.component.vue b/frontend/src/components/auth/signup.component.vue index e7e2fa0..7a1efbe 100644 --- a/frontend/src/components/auth/signup.component.vue +++ b/frontend/src/components/auth/signup.component.vue @@ -68,7 +68,7 @@ email: this.email, password: this.password, }; - AuthController.register(data).then(() => { + AuthController.signup(data).then(() => { this.$router.push({ name: 'index' }); }).catch((error) => { if (error.response) { @@ -83,8 +83,9 @@ diff --git a/frontend/src/components/perks.component.vue b/frontend/src/components/perks.component.vue index edae0e3..b5c71ab 100644 --- a/frontend/src/components/perks.component.vue +++ b/frontend/src/components/perks.component.vue @@ -1,7 +1,7 @@