From e595435ec3ad1a2ce62e739bc0906ccc7b0baa83 Mon Sep 17 00:00:00 2001
From: Bloodmallet
Date: Fri, 22 Feb 2019 23:18:40 +0100
Subject: [PATCH 001/135] what happens now? this file should've been on ignore
already!
---
bloodmallet/db.sqlite3 | Bin 0 -> 221184 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
diff --git a/bloodmallet/db.sqlite3 b/bloodmallet/db.sqlite3
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..6ba97b31e3747431957f981f3284753ed4570e6a 100644
GIT binary patch
literal 221184
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
Date: Fri, 22 Feb 2019 23:21:22 +0100
Subject: [PATCH 002/135] remove local db from gitignore
---
.gitignore | 1 -
1 file changed, 1 deletion(-)
diff --git a/.gitignore b/.gitignore
index 142392a0..f9b48889 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,7 +4,6 @@ env/
*.zip
debug.log
secrets.py
-bloodmallet/db.sqlite3
compute_api/
bloodmallet/static/
.gcloudignore
From 4b660ba96e66473790712265203f8bd1ca752f8a Mon Sep 17 00:00:00 2001
From: Bloodmallet
Date: Fri, 22 Feb 2019 23:22:14 +0100
Subject: [PATCH 003/135] remove db.sqlite3
---
bloodmallet/db.sqlite3 | Bin 221184 -> 0 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
delete mode 100644 bloodmallet/db.sqlite3
diff --git a/bloodmallet/db.sqlite3 b/bloodmallet/db.sqlite3
deleted file mode 100644
index 6ba97b31e3747431957f981f3284753ed4570e6a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 221184
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
Date: Fri, 22 Feb 2019 23:22:30 +0100
Subject: [PATCH 004/135] readd bloodmallet/db.sqlite3 to gitignore
---
.gitignore | 1 +
1 file changed, 1 insertion(+)
diff --git a/.gitignore b/.gitignore
index f9b48889..d52ca066 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,6 +5,7 @@ env/
debug.log
secrets.py
compute_api/
+bloodmallet/db.sqlite3
bloodmallet/static/
.gcloudignore
__pycache__/
From 76fa631dce660ea4a84f83327595b3f21944ca55 Mon Sep 17 00:00:00 2001
From: Bloodmallet
Date: Sat, 23 Feb 2019 03:20:15 +0100
Subject: [PATCH 005/135] add new models
Race,
WowClass,
WowSpec,
FightStyle,
SimulationType,
Simulation,
SimulationQueue,
SimulationResult
---
bloodmallet/general_website/models.py | 78 +++++++++++++++++++++++++++
1 file changed, 78 insertions(+)
diff --git a/bloodmallet/general_website/models.py b/bloodmallet/general_website/models.py
index 470cb525..5cf51195 100644
--- a/bloodmallet/general_website/models.py
+++ b/bloodmallet/general_website/models.py
@@ -1,6 +1,7 @@
from django.db import models
from django.db.models.signals import post_save
from django.dispatch import receiver
+from django.conf import settings
from django.contrib.auth.signals import user_logged_in
from django.contrib.auth.models import User
@@ -117,3 +118,80 @@ def emergency_create_user_profile(sender, request, user, **kwargs):
user.profile
except Exception:
Profile.objects.create(user=user) # pylint: disable=no-member
+
+
+class Race(models.Model):
+ """Wow race like dwarf, troll, pandaren
+ """
+
+ faction = models.ForeignKey(Faction, on_delete=models.CASCADE, related_name='races')
+ name = models.CharField(max_length=32)
+
+
+class WowClass(models.Model):
+ """Wow classes like death knight, rogue, mage
+ """
+
+ races = models.ManyToManyField(Race, related_name='classes')
+ name = models.CharField(max_length=16)
+
+
+class WowSpec(models.Model):
+ """Wow spec like feral, fire, frost
+ """
+
+ wow_class = models.ForeignKey(WowClass, on_delete=models.CASCADE, related_name='wow_specs')
+ name = models.CharField(max_length=16)
+
+
+class FightStyle(models.Model):
+ """SimulationCraft fight_style inputs.
+ """
+ name = models.CharField(max_length=16)
+ description = models.TextField(max_length=512, blank=True)
+
+
+class SimulationType(models.Model):
+ """Essentially already implemented commands/modes for bloodytools.
+ """
+
+
+class Simulation(models.Model):
+ """Data necessary to do a simulation.
+ """
+
+ user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='simulations')
+ wow_class = models.ForeignKey(WowClass, on_delete=models.CASCADE, related_name='simulations')
+ wow_spec = models.ForeignKey(WowSpec, on_delete=models.CASCADE, related_name='simulations')
+ simulation_type = models.ForeignKey(SimulationType, on_delete=models.CASCADE, related_name='simulations')
+ fight_style = models.ForeignKey(FightStyle, on_delete=models.CASCADE, related_name='simulations')
+ character_input = models.TextField(
+ max_length=2048,
+ blank=True,
+ help_text="Define your own character here, instead of using the standard profile (your input will overwrite the standard profile)."
+ )
+ fight_style_input = models.TextField(max_length=2048, blank=True, help_text="Define your own fight_style.")
+ simc_hash = models.CharField(
+ max_length=40,
+ blank=True,
+ help_text="SimulationCraft commit hash to identify the used version. (Allows reproduction of a result.)"
+ )
+
+
+class SimulationQueue(models.Model):
+ """Waiting for a worker to pick it up.
+ """
+ simulation = models.OneToOneField(Simulation, on_delete=models.CASCADE)
+ state = models.CharField(max_length=16, blank=True, help_text="Pending, in progress, done, aborted, crashed.")
+ progress = models.SmallIntegerField(
+ help_text="0-100, but 100 doesn't mean, that the data is available. Simulation reached 100%, though."
+ )
+ log = models.TextField(blank=True, help_text="Log messages from the responsible worker.")
+
+
+class SimulationResult(models.Model):
+ """Result of a simulation
+ """
+
+ simulation = models.OneToOneField(Simulation, on_delete=models.CASCADE)
+ result = models.FilePathField(path=settings.FILE_PATH_FIELD_DIRECTORY)
From 896ddb8aa74ef2340d19d337b2c6c84eb5a3ef0e Mon Sep 17 00:00:00 2001
From: Bloodmallet
Date: Sat, 23 Feb 2019 03:20:29 +0100
Subject: [PATCH 006/135] add more styling
---
.style.yapf | 2 ++
1 file changed, 2 insertions(+)
diff --git a/.style.yapf b/.style.yapf
index a70735eb..ff055bf2 100644
--- a/.style.yapf
+++ b/.style.yapf
@@ -6,3 +6,5 @@ DEDENT_CLOSING_BRACKETS = true
JOIN_MULTIPLE_LINES = true
CONTINUATION_INDENT_WIDTH = 4
COLUMN_LIMIT = 119
+COALESCE_BRACKETS = true
+INDENT_DICTIONARY_VALUE = true
From 20e4d427d35a0ff1ad9fddca09cd12d14754951e Mon Sep 17 00:00:00 2001
From: Bloodmallet
Date: Sat, 23 Feb 2019 03:21:31 +0100
Subject: [PATCH 007/135] clean up settings init
---
bloodmallet/bloodmallet/settings/__init__.py | 16 ++---------
bloodmallet/bloodmallet/settings/common.py | 18 ++++++------
.../bloodmallet/settings/development.py | 27 ++++++++++--------
.../bloodmallet/settings/production.py | 28 +++++++++++--------
4 files changed, 41 insertions(+), 48 deletions(-)
diff --git a/bloodmallet/bloodmallet/settings/__init__.py b/bloodmallet/bloodmallet/settings/__init__.py
index 1de4d828..415542a9 100644
--- a/bloodmallet/bloodmallet/settings/__init__.py
+++ b/bloodmallet/bloodmallet/settings/__init__.py
@@ -1,18 +1,6 @@
import os
-from .common import *
-
if os.getenv('GAE_APPLICATION', None):
- from .production import *
+ from .production import *
else:
- from .development import *
-
-# secrets
-try:
- from .secrets import *
-except:
- pass
-try:
- from .secrets import SECRET_KEY
-except:
- pass
+ from .development import *
diff --git a/bloodmallet/bloodmallet/settings/common.py b/bloodmallet/bloodmallet/settings/common.py
index 51c0a654..3ef66eec 100644
--- a/bloodmallet/bloodmallet/settings/common.py
+++ b/bloodmallet/bloodmallet/settings/common.py
@@ -58,16 +58,14 @@
os.path.join(BASE_DIR, 'general_website', 'templates', 'allauth') # allauth templates
],
'APP_DIRS': True,
- 'OPTIONS':
- {
- 'context_processors':
- [
- 'django.template.context_processors.debug',
- 'django.template.context_processors.request',
- 'django.contrib.auth.context_processors.auth',
- 'django.contrib.messages.context_processors.messages',
- ],
- },
+ 'OPTIONS': {
+ 'context_processors': [
+ 'django.template.context_processors.debug',
+ 'django.template.context_processors.request',
+ 'django.contrib.auth.context_processors.auth',
+ 'django.contrib.messages.context_processors.messages',
+ ],
+ },
},
]
diff --git a/bloodmallet/bloodmallet/settings/development.py b/bloodmallet/bloodmallet/settings/development.py
index 9d618483..7a9b8915 100644
--- a/bloodmallet/bloodmallet/settings/development.py
+++ b/bloodmallet/bloodmallet/settings/development.py
@@ -1,6 +1,8 @@
# -*- coding: utf-8 -*-
import os
+from .common import * # pylint: disable=unused-wildcard-import
+
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
@@ -69,18 +71,17 @@
from .secrets import DB_HOST, DB_NAME, DB_USER, DB_PASSWORD
DATABASES = {
- 'default':
- {
- 'ENGINE': 'django.db.backends.mysql',
- 'HOST': '127.0.0.1',
- 'PORT': '3306',
- 'NAME': DB_NAME,
- 'USER': DB_USER,
- 'PASSWORD': DB_PASSWORD,
- 'OPTIONS': {
- 'charset': 'utf8mb4'
- },
- }
+ 'default': {
+ 'ENGINE': 'django.db.backends.mysql',
+ 'HOST': '127.0.0.1',
+ 'PORT': '3306',
+ 'NAME': DB_NAME,
+ 'USER': DB_USER,
+ 'PASSWORD': DB_PASSWORD,
+ 'OPTIONS': {
+ 'charset': 'utf8mb4'
+ },
+ }
}
# used to serve files from this path in non-debug production
@@ -91,3 +92,5 @@
SASS_PROCESSOR_ROOT = 'general_website/static/'
# SASS_PROCESSOR_INCLUDE_FILE_PATTERN = r'^.+\.scss$'
# SASS_PROCESSOR_ENABLED = True
+
+from .secrets import FILE_PATH_FIELD_DIRECTORY_DEV as FILE_PATH_FIELD_DIRECTORY
diff --git a/bloodmallet/bloodmallet/settings/production.py b/bloodmallet/bloodmallet/settings/production.py
index d7d301f5..4f7853af 100644
--- a/bloodmallet/bloodmallet/settings/production.py
+++ b/bloodmallet/bloodmallet/settings/production.py
@@ -1,8 +1,11 @@
# -*- coding: utf-8 -*-
+
+from .common import * # pylint: disable=unused-wildcard-import
+
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False
-ALLOWED_HOSTS = ['*']
+ALLOWED_HOSTS = ['dev.bloodmallet.com']
# logging
LOGGING = {
@@ -52,17 +55,16 @@
from .secrets import DB_HOST, DB_NAME, DB_USER, DB_PASSWORD
DATABASES = {
- 'default':
- {
- 'ENGINE': 'django.db.backends.mysql',
- 'HOST': '/cloudsql/{}'.format(DB_HOST),
- 'NAME': DB_NAME,
- 'USER': DB_USER,
- 'PASSWORD': DB_PASSWORD,
- 'OPTIONS': {
- 'charset': 'utf8mb4'
- },
- }
+ 'default': {
+ 'ENGINE': 'django.db.backends.mysql',
+ 'HOST': '/cloudsql/{}'.format(DB_HOST),
+ 'NAME': DB_NAME,
+ 'USER': DB_USER,
+ 'PASSWORD': DB_PASSWORD,
+ 'OPTIONS': {
+ 'charset': 'utf8mb4'
+ },
+ }
}
# used to serve files from this path in non-debug production
@@ -73,3 +75,5 @@
SASS_PROCESSOR_ROOT = STATIC_ROOT
# SASS_PROCESSOR_INCLUDE_FILE_PATTERN = r'^.+\.scss$'
SASS_PROCESSOR_ENABLED = False
+
+from .secrets import FILE_PATH_FIELD_DIRECTORY
From bb0eebd3f9396f6a0576f19d0452dab19221c32d Mon Sep 17 00:00:00 2001
From: Bloodmallet
Date: Sat, 23 Feb 2019 03:21:51 +0100
Subject: [PATCH 008/135] enable https for tooltip script
---
.../general_website/templates/general_website/index.html | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/bloodmallet/general_website/templates/general_website/index.html b/bloodmallet/general_website/templates/general_website/index.html
index d925bf6a..c7f139e4 100644
--- a/bloodmallet/general_website/templates/general_website/index.html
+++ b/bloodmallet/general_website/templates/general_website/index.html
@@ -114,8 +114,8 @@ blood{% if not bloodyfil
-
-
+
+
{% endblock %}
From 32418a42a646da3dcb585da00054f571d5b7aec4 Mon Sep 17 00:00:00 2001
From: Bloodmallet
Date: Thu, 28 Feb 2019 21:23:51 +0100
Subject: [PATCH 009/135] add space formatting rule for comments
---
.style.yapf | 1 +
1 file changed, 1 insertion(+)
diff --git a/.style.yapf b/.style.yapf
index ff055bf2..86f44443 100644
--- a/.style.yapf
+++ b/.style.yapf
@@ -1,6 +1,7 @@
[style]
based_on_style = chromium
indent_width = 4
+SPACES_BEFORE_COMMENT = 5
BLANK_LINE_BEFORE_NESTED_CLASS_OR_DEF = true
DEDENT_CLOSING_BRACKETS = true
JOIN_MULTIPLE_LINES = true
From 355f1dab595f74030ce7629bda1f57b1e0c80570 Mon Sep 17 00:00:00 2001
From: Bloodmallet
Date: Thu, 28 Feb 2019 21:25:50 +0100
Subject: [PATCH 010/135] readd secret key
---
bloodmallet/bloodmallet/settings/common.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/bloodmallet/bloodmallet/settings/common.py b/bloodmallet/bloodmallet/settings/common.py
index 3ef66eec..4accdf8e 100644
--- a/bloodmallet/bloodmallet/settings/common.py
+++ b/bloodmallet/bloodmallet/settings/common.py
@@ -89,6 +89,8 @@
},
]
+from .secrets import SECRET_KEY
+
# Internationalization
# https://docs.djangoproject.com/en/2.1/topics/i18n/
From 2ea4bc3289c30970ffea6b7a0903ecdbb0ccaef9 Mon Sep 17 00:00:00 2001
From: Bloodmallet
Date: Thu, 28 Feb 2019 21:29:10 +0100
Subject: [PATCH 011/135] add __str__ to all models, add tokenized_name to many
models
Add life to SimulationType
Add meta information to Simulation
Improve Result by uuid, simc_hash, and created_at
Add GeneralResult to collect the bloodmallet standard data.
---
bloodmallet/general_website/models.py | 120 ++++++++++++++++++++++----
1 file changed, 101 insertions(+), 19 deletions(-)
diff --git a/bloodmallet/general_website/models.py b/bloodmallet/general_website/models.py
index 5cf51195..cd163dbb 100644
--- a/bloodmallet/general_website/models.py
+++ b/bloodmallet/general_website/models.py
@@ -8,6 +8,7 @@
from allauth.socialaccount.signals import pre_social_login, social_account_updated
from typing import Tuple
+import uuid
# Create your models here.
@@ -25,7 +26,7 @@ def update_pledge_level(sender, sociallogin, **kwargs):
print(sender)
print(sociallogin)
try:
- print(sociallogin.account) # read social allauth models.py
+ print(sociallogin.account) # read social allauth models.py
except Exception:
print("No social.account could be found yet. Probably linking in progress.")
@@ -60,6 +61,9 @@ class Faction(models.Model):
name = models.CharField(max_length=30)
+ def __str__(self):
+ return self.name
+
class Teleporter(models.Model):
"""Collection of fixed position Teleporters.
@@ -82,22 +86,25 @@ def coordinates(self) -> Tuple[float, float]:
return (self.x, self.y)
+ def __str__(self):
+ return "{} -> {}".format(self.location, self.target)
+
class Profile(models.Model):
"""Extension of the standard Django User
-
- Arguments:
- models {[type]} -- [description]
"""
user = models.OneToOneField(User, on_delete=models.CASCADE)
bloodyfiller = models.CharField(max_length=10, null=True, blank=True)
+ def __str__(self):
+ return self.user
+
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
- Profile.objects.create(user=instance) # pylint: disable=no-member
+ Profile.objects.create(user=instance) # pylint: disable=no-member
@receiver(post_save, sender=User)
@@ -117,7 +124,7 @@ def emergency_create_user_profile(sender, request, user, **kwargs):
try:
user.profile
except Exception:
- Profile.objects.create(user=user) # pylint: disable=no-member
+ Profile.objects.create(user=user) # pylint: disable=no-member
class Race(models.Model):
@@ -125,7 +132,15 @@ class Race(models.Model):
"""
faction = models.ForeignKey(Faction, on_delete=models.CASCADE, related_name='races')
- name = models.CharField(max_length=32)
+ pretty_name = models.CharField(max_length=32)
+ tokenized_name = models.CharField(max_length=32)
+
+ @property
+ def name(self):
+ return self.pretty_name
+
+ def __str__(self):
+ return self.name
class WowClass(models.Model):
@@ -133,7 +148,15 @@ class WowClass(models.Model):
"""
races = models.ManyToManyField(Race, related_name='classes')
- name = models.CharField(max_length=16)
+ tokenized_name = models.CharField(max_length=16)
+ pretty_name = models.CharField(max_length=16)
+
+ @property
+ def name(self):
+ return self.pretty_name
+
+ def __str__(self):
+ return self.name
class WowSpec(models.Model):
@@ -141,20 +164,44 @@ class WowSpec(models.Model):
"""
wow_class = models.ForeignKey(WowClass, on_delete=models.CASCADE, related_name='wow_specs')
- name = models.CharField(max_length=16)
+ pretty_name = models.CharField(max_length=16)
+ tokenized_name = models.CharField(max_length=16)
+
+ @property
+ def name(self):
+ return self.pretty_name
+
+ def __str__(self):
+ return self.name
class FightStyle(models.Model):
"""SimulationCraft fight_style inputs.
"""
- name = models.CharField(max_length=16)
+ tokenized_name = models.CharField(max_length=16)
+ pretty_name = models.CharField(max_length=16)
description = models.TextField(max_length=512, blank=True)
+ @property
+ def name(self):
+ return self.pretty_name
+
+ def __str__(self):
+ return self.name
+
class SimulationType(models.Model):
- """Essentially already implemented commands/modes for bloodytools.
+ """Commands/modes for bloodytools.
"""
+ name = models.CharField(max_length=32, help_text="Name of the simulation type. Like 'trinket simulations'.")
+ command = models.CharField(
+ max_length=32, help_text="Actual command for bloodytools to do the simulation type. E.g. 'trinkets'"
+ )
+
+ def __str__(self):
+ return self.name
+
class Simulation(models.Model):
"""Data necessary to do a simulation.
@@ -171,15 +218,20 @@ class Simulation(models.Model):
help_text="Define your own character here, instead of using the standard profile (your input will overwrite the standard profile)."
)
fight_style_input = models.TextField(max_length=2048, blank=True, help_text="Define your own fight_style.")
- simc_hash = models.CharField(
- max_length=40,
- blank=True,
- help_text="SimulationCraft commit hash to identify the used version. (Allows reproduction of a result.)"
+ created_at = models.DateTimeField(auto_now_add=True)
+ failed = models.BooleanField(
+ default=False,
+ help_text="If Simulation failed somehow this bool is set to True. Otherwise stays False forever."
)
+ def __str__(self):
+ return "{simulation_type} {wow_spec} {wow_class}".format(
+ simulation_type=self.simulation_type, wow_spec=self.wow_spec, wow_class=self.wow_class
+ )
-class SimulationQueue(models.Model):
- """Waiting for a worker to pick it up.
+
+class Queue(models.Model):
+ """Waiting for a worker to pick the simulation up.
"""
simulation = models.OneToOneField(Simulation, on_delete=models.CASCADE)
state = models.CharField(max_length=16, blank=True, help_text="Pending, in progress, done, aborted, crashed.")
@@ -189,9 +241,39 @@ class SimulationQueue(models.Model):
log = models.TextField(blank=True, help_text="Log messages from the responsible worker.")
-class SimulationResult(models.Model):
+class Result(models.Model):
"""Result of a simulation
"""
simulation = models.OneToOneField(Simulation, on_delete=models.CASCADE)
- result = models.FilePathField(path=settings.FILE_PATH_FIELD_DIRECTORY)
+ uuid = models.UUIDField(
+ default=uuid.uuid4, editable=False, help_text="Uuid used to identify a specific simulation."
+ )
+ result = models.FileField(upload_to=save_result)
+ simc_hash = models.CharField(
+ max_length=40,
+ blank=True,
+ help_text="SimulationCraft commit hash to identify the used version. (Allows reproduction of a result.)"
+ )
+ created_at = models.DateTimeField(auto_now_add=True)
+
+ # file upload/save: https://cloud.google.com/python/getting-started/using-cloud-storage
+
+ def save_result(self, instance, filename):
+ return instance.simulation.user
+
+ def __str__(self):
+ return self.simulation
+
+
+class GeneralResult(models.Model):
+ """Latest standard simulation result.
+ """
+ wow_class = models.ForeignKey(WowClass, on_delete=models.CASCADE, related_name='general_results')
+ wow_spec = models.OneToOneField(WowSpec, on_delete=models.CASCADE, related_name='general_result')
+ simulation_type = models.ForeignKey(SimulationType, on_delete=models.CASCADE, related_name='general_results')
+ fight_style = models.ForeignKey(FightStyle, on_delete=models.CASCADE, related_name='general_results')
+ result = models.OneToOneField(Result, on_delete=models.CASCADE, related_name='general_result')
+
+ def __str__(self):
+ return self.result.simulation # pylint: disable=no-member
From 2c7ec1befac91fdbe66c428b05a90b3db7317f96 Mon Sep 17 00:00:00 2001
From: Bloodmallet
Date: Thu, 28 Feb 2019 22:21:07 +0100
Subject: [PATCH 012/135] use standard login page for admin login
---
bloodmallet/bloodmallet/urls.py | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/bloodmallet/bloodmallet/urls.py b/bloodmallet/bloodmallet/urls.py
index c558a465..462bc040 100644
--- a/bloodmallet/bloodmallet/urls.py
+++ b/bloodmallet/bloodmallet/urls.py
@@ -16,9 +16,12 @@
from django.contrib import admin
from django.urls import include, path
+from general_website.views import login as app_login
+
urlpatterns = [
- path('admin/', admin.site.urls),
path('', include('general_website.urls')),
+ path('admin/login/', app_login),
+ path('admin/', admin.site.urls),
path('compute_api/', include('compute_api.urls')),
]
From 9cec0986fba74ebd4e257d9f3c661cbbd6132d5d Mon Sep 17 00:00:00 2001
From: Bloodmallet
Date: Thu, 28 Feb 2019 22:21:23 +0100
Subject: [PATCH 013/135] fix Result model
---
bloodmallet/general_website/models.py | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)
diff --git a/bloodmallet/general_website/models.py b/bloodmallet/general_website/models.py
index cd163dbb..f869a7f2 100644
--- a/bloodmallet/general_website/models.py
+++ b/bloodmallet/general_website/models.py
@@ -241,6 +241,20 @@ class Queue(models.Model):
log = models.TextField(blank=True, help_text="Log messages from the responsible worker.")
+def save_simulation_result(instance, filename) -> str:
+ """Create URL of savelocation for simulation result.
+
+ Arguments:
+ instance {[type]} -- [description]
+ filename {[type]} -- [description]
+
+ Returns:
+ str -- [description]
+ """
+
+ return "{}{}/".format(settings.FILE_PATH_FIELD_DIRECTORY, instance.simulation.user)
+
+
class Result(models.Model):
"""Result of a simulation
"""
@@ -249,7 +263,7 @@ class Result(models.Model):
uuid = models.UUIDField(
default=uuid.uuid4, editable=False, help_text="Uuid used to identify a specific simulation."
)
- result = models.FileField(upload_to=save_result)
+ result = models.FileField(upload_to=save_simulation_result)
simc_hash = models.CharField(
max_length=40,
blank=True,
@@ -259,9 +273,6 @@ class Result(models.Model):
# file upload/save: https://cloud.google.com/python/getting-started/using-cloud-storage
- def save_result(self, instance, filename):
- return instance.simulation.user
-
def __str__(self):
return self.simulation
From c8763e257d83e1249f8b1c6ae5e83226b1bae3b2 Mon Sep 17 00:00:00 2001
From: Bloodmallet
Date: Thu, 28 Feb 2019 22:21:34 +0100
Subject: [PATCH 014/135] migration
---
.../migrations/0002_auto_20190228_2145.py | 149 ++++++++++++++++++
1 file changed, 149 insertions(+)
create mode 100644 bloodmallet/general_website/migrations/0002_auto_20190228_2145.py
diff --git a/bloodmallet/general_website/migrations/0002_auto_20190228_2145.py b/bloodmallet/general_website/migrations/0002_auto_20190228_2145.py
new file mode 100644
index 00000000..d5073116
--- /dev/null
+++ b/bloodmallet/general_website/migrations/0002_auto_20190228_2145.py
@@ -0,0 +1,149 @@
+# Generated by Django 2.1.5 on 2019-02-28 20:45
+
+from django.conf import settings
+from django.db import migrations, models
+import django.db.models.deletion
+import general_website.models
+import uuid
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ('general_website', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='FightStyle',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('tokenized_name', models.CharField(max_length=16)),
+ ('pretty_name', models.CharField(max_length=16)),
+ ('description', models.TextField(blank=True, max_length=512)),
+ ],
+ ),
+ migrations.CreateModel(
+ name='GeneralResult',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('fight_style', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='general_results', to='general_website.FightStyle')),
+ ],
+ ),
+ migrations.CreateModel(
+ name='Queue',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('state', models.CharField(blank=True, help_text='Pending, in progress, done, aborted, crashed.', max_length=16)),
+ ('progress', models.SmallIntegerField(help_text="0-100, but 100 doesn't mean, that the data is available. Simulation reached 100%, though.")),
+ ('log', models.TextField(blank=True, help_text='Log messages from the responsible worker.')),
+ ],
+ ),
+ migrations.CreateModel(
+ name='Race',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('pretty_name', models.CharField(max_length=32)),
+ ('tokenized_name', models.CharField(max_length=32)),
+ ('faction', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='races', to='general_website.Faction')),
+ ],
+ ),
+ migrations.CreateModel(
+ name='Result',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, help_text='Uuid used to identify a specific simulation.')),
+ ('result', models.FileField(upload_to=general_website.models.save_simulation_result)),
+ ('simc_hash', models.CharField(blank=True, help_text='SimulationCraft commit hash to identify the used version. (Allows reproduction of a result.)', max_length=40)),
+ ('created_at', models.DateTimeField(auto_now_add=True)),
+ ],
+ ),
+ migrations.CreateModel(
+ name='Simulation',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('character_input', models.TextField(blank=True, help_text='Define your own character here, instead of using the standard profile (your input will overwrite the standard profile).', max_length=2048)),
+ ('fight_style_input', models.TextField(blank=True, help_text='Define your own fight_style.', max_length=2048)),
+ ('created_at', models.DateTimeField(auto_now_add=True)),
+ ('failed', models.BooleanField(default=False, help_text='If Simulation failed somehow this bool is set to True. Otherwise stays False forever.')),
+ ('fight_style', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='simulations', to='general_website.FightStyle')),
+ ],
+ ),
+ migrations.CreateModel(
+ name='SimulationType',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(help_text="Name of the simulation type. Like 'trinket simulations'.", max_length=32)),
+ ('command', models.CharField(help_text="Actual command for bloodytools to do the simulation type. E.g. 'trinkets'", max_length=32)),
+ ],
+ ),
+ migrations.CreateModel(
+ name='WowClass',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('tokenized_name', models.CharField(max_length=16)),
+ ('pretty_name', models.CharField(max_length=16)),
+ ('races', models.ManyToManyField(related_name='classes', to='general_website.Race')),
+ ],
+ ),
+ migrations.CreateModel(
+ name='WowSpec',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('pretty_name', models.CharField(max_length=16)),
+ ('tokenized_name', models.CharField(max_length=16)),
+ ('wow_class', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='wow_specs', to='general_website.WowClass')),
+ ],
+ ),
+ migrations.AddField(
+ model_name='simulation',
+ name='simulation_type',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='simulations', to='general_website.SimulationType'),
+ ),
+ migrations.AddField(
+ model_name='simulation',
+ name='user',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='simulations', to=settings.AUTH_USER_MODEL),
+ ),
+ migrations.AddField(
+ model_name='simulation',
+ name='wow_class',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='simulations', to='general_website.WowClass'),
+ ),
+ migrations.AddField(
+ model_name='simulation',
+ name='wow_spec',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='simulations', to='general_website.WowSpec'),
+ ),
+ migrations.AddField(
+ model_name='result',
+ name='simulation',
+ field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='general_website.Simulation'),
+ ),
+ migrations.AddField(
+ model_name='queue',
+ name='simulation',
+ field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='general_website.Simulation'),
+ ),
+ migrations.AddField(
+ model_name='generalresult',
+ name='result',
+ field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='general_result', to='general_website.Result'),
+ ),
+ migrations.AddField(
+ model_name='generalresult',
+ name='simulation_type',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='general_results', to='general_website.SimulationType'),
+ ),
+ migrations.AddField(
+ model_name='generalresult',
+ name='wow_class',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='general_results', to='general_website.WowClass'),
+ ),
+ migrations.AddField(
+ model_name='generalresult',
+ name='wow_spec',
+ field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='general_result', to='general_website.WowSpec'),
+ ),
+ ]
From acfcda45efd033a1a58dc1f15651c8036de7e057 Mon Sep 17 00:00:00 2001
From: Bloodmallet
Date: Thu, 28 Feb 2019 22:21:51 +0100
Subject: [PATCH 015/135] formatting only
---
bloodmallet/bloodmallet/settings/common.py | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/bloodmallet/bloodmallet/settings/common.py b/bloodmallet/bloodmallet/settings/common.py
index 4accdf8e..72b7ed24 100644
--- a/bloodmallet/bloodmallet/settings/common.py
+++ b/bloodmallet/bloodmallet/settings/common.py
@@ -27,7 +27,7 @@
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
- 'django.contrib.sites', # required by django-allauth
+ 'django.contrib.sites', # required by django-allauth
'allauth',
'allauth.account',
'allauth.socialaccount',
@@ -55,7 +55,7 @@
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
- os.path.join(BASE_DIR, 'general_website', 'templates', 'allauth') # allauth templates
+ os.path.join(BASE_DIR, 'general_website', 'templates', 'allauth') # allauth templates
],
'APP_DIRS': True,
'OPTIONS': {
@@ -121,17 +121,17 @@
# TODO: Check https://django-allauth.readthedocs.io/en/latest/faq.html for patreon connection
# django-allauth
AUTHENTICATION_BACKENDS = (
- # Needed to login by username in Django admin, regardless of `allauth`
+ # Needed to login by username in Django admin, regardless of `allauth`
'django.contrib.auth.backends.ModelBackend',
- # `allauth` specific authentication methods, such as login by e-mail
+ # `allauth` specific authentication methods, such as login by e-mail
'allauth.account.auth_backends.AuthenticationBackend',
)
SITE_ID = 1
# we can either use crispy or bootstrap4
-CRISPY_TEMPLATE_PACK = 'bootstrap4' # automatic bootstrap form frontend generator
+CRISPY_TEMPLATE_PACK = 'bootstrap4' # automatic bootstrap form frontend generator
# from where is this?
LOGIN_URL = 'login'
From 4fb64da82ec79f63cd332c06ae40521ad00779e6 Mon Sep 17 00:00:00 2001
From: Bloodmallet
Date: Thu, 28 Feb 2019 22:28:53 +0100
Subject: [PATCH 016/135] add models to admin
---
bloodmallet/general_website/admin.py | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/bloodmallet/general_website/admin.py b/bloodmallet/general_website/admin.py
index 8c38f3f3..f84efe67 100644
--- a/bloodmallet/general_website/admin.py
+++ b/bloodmallet/general_website/admin.py
@@ -1,3 +1,17 @@
from django.contrib import admin
+from general_website.models import Faction, Teleporter, Profile, Race, WowClass, WowSpec, FightStyle, SimulationType, Simulation, Queue, Result, GeneralResult
+
# Register your models here.
+admin.site.register(Faction)
+admin.site.register(Teleporter)
+admin.site.register(Profile)
+admin.site.register(Race)
+admin.site.register(WowClass)
+admin.site.register(WowSpec)
+admin.site.register(FightStyle)
+admin.site.register(SimulationType)
+admin.site.register(Simulation)
+admin.site.register(Queue)
+admin.site.register(Result)
+admin.site.register(GeneralResult)
From 63d2a708a7a99a29a0eb960e8661b34f591e5ac2 Mon Sep 17 00:00:00 2001
From: Bloodmallet
Date: Thu, 28 Feb 2019 22:45:51 +0100
Subject: [PATCH 017/135] fix Profile in admin view
---
bloodmallet/general_website/models.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/bloodmallet/general_website/models.py b/bloodmallet/general_website/models.py
index f869a7f2..809b2e45 100644
--- a/bloodmallet/general_website/models.py
+++ b/bloodmallet/general_website/models.py
@@ -98,7 +98,7 @@ class Profile(models.Model):
bloodyfiller = models.CharField(max_length=10, null=True, blank=True)
def __str__(self):
- return self.user
+ return self.user.username # pylint: disable=no-member
@receiver(post_save, sender=User)
From 71e1d4313e8a88a9921792965f3195815d6e4db5 Mon Sep 17 00:00:00 2001
From: Bloodmallet
Date: Thu, 28 Feb 2019 22:46:04 +0100
Subject: [PATCH 018/135] add admin link for superusers
---
.../templates/general_website/layout_top_nav.html | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/bloodmallet/general_website/templates/general_website/layout_top_nav.html b/bloodmallet/general_website/templates/general_website/layout_top_nav.html
index c5b613d6..0c8c3b22 100644
--- a/bloodmallet/general_website/templates/general_website/layout_top_nav.html
+++ b/bloodmallet/general_website/templates/general_website/layout_top_nav.html
@@ -1,4 +1,5 @@
{% load static %}
+
{% comment %} {% endcomment %}
@@ -28,6 +29,9 @@
Login
Register
{% endif %}
+ {% if request.user.is_authenticated and request.user.is_superuser %}
+ Admin
+ {% endif%}
Settings
{% if request.user.is_authenticated %}
Logout
From eab6eabaaea5d906273d00fc5b92d1c8b2453895 Mon Sep 17 00:00:00 2001
From: Bloodmallet
Date: Thu, 28 Feb 2019 22:47:25 +0100
Subject: [PATCH 019/135] improve code readability
A User collection should be named after its elements.
---
bloodmallet/general_website/views/general.py | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/bloodmallet/general_website/views/general.py b/bloodmallet/general_website/views/general.py
index 876e3e88..d7a30885 100644
--- a/bloodmallet/general_website/views/general.py
+++ b/bloodmallet/general_website/views/general.py
@@ -28,11 +28,11 @@ def index(request):
}
# add bloodyfiller
- profiles = User.objects.filter(profile__bloodyfiller__isnull=False)
+ users = User.objects.filter(profile__bloodyfiller__isnull=False)
filler_list = []
- for profile in profiles:
+ for user in users:
# TODO: Add multiplier for patreon level and other bonuses
- filler_list.append(profile.profile.bloodyfiller)
+ filler_list.append(user.profile.bloodyfiller)
try:
content['bloodyfiller'] = filler_list[randint(0, len(filler_list) - 1)]
except Exception:
From a56c35dd7caeb7d3a03dee1ac11443a95ebd50f7 Mon Sep 17 00:00:00 2001
From: Bloodmallet
Date: Thu, 7 Mar 2019 22:23:30 +0100
Subject: [PATCH 020/135] replace base User with own model
---
bloodmallet/general_website/models.py | 45 +++++----------------------
1 file changed, 7 insertions(+), 38 deletions(-)
diff --git a/bloodmallet/general_website/models.py b/bloodmallet/general_website/models.py
index 809b2e45..38791a77 100644
--- a/bloodmallet/general_website/models.py
+++ b/bloodmallet/general_website/models.py
@@ -3,14 +3,20 @@
from django.dispatch import receiver
from django.conf import settings
from django.contrib.auth.signals import user_logged_in
-from django.contrib.auth.models import User
+from django.contrib.auth.models import AbstractUser
from allauth.socialaccount.signals import pre_social_login, social_account_updated
from typing import Tuple
import uuid
+
# Create your models here.
+class User(AbstractUser):
+ bloodytext = models.CharField(max_length=10, null=True, blank=True)
+
+ def __str__(self):
+ return self.username # pylint: disable=no-member
@receiver([pre_social_login, social_account_updated])
@@ -90,43 +96,6 @@ def __str__(self):
return "{} -> {}".format(self.location, self.target)
-class Profile(models.Model):
- """Extension of the standard Django User
- """
-
- user = models.OneToOneField(User, on_delete=models.CASCADE)
- bloodyfiller = models.CharField(max_length=10, null=True, blank=True)
-
- def __str__(self):
- return self.user.username # pylint: disable=no-member
-
-
-@receiver(post_save, sender=User)
-def create_user_profile(sender, instance, created, **kwargs):
- if created:
- Profile.objects.create(user=instance) # pylint: disable=no-member
-
-
-@receiver(post_save, sender=User)
-def save_user_profile(sender, instance, **kwargs):
- instance.profile.save()
-
-
-@receiver(user_logged_in)
-def emergency_create_user_profile(sender, request, user, **kwargs):
- """Assures that a User has a Profile.
-
- Arguments:
- sender {django.contrib.auth.models.User} -- [description]
- request {} -- [description]
- user {User} -- User model data blop
- """
- try:
- user.profile
- except Exception:
- Profile.objects.create(user=user) # pylint: disable=no-member
-
-
class Race(models.Model):
"""Wow race like dwarf, troll, pandaren
"""
From 2dc9abfd61351ccc4abd75557320c68dbe3a33a5 Mon Sep 17 00:00:00 2001
From: Bloodmallet
Date: Thu, 7 Mar 2019 22:23:45 +0100
Subject: [PATCH 021/135] replace migrations, migrate
---
.../migrations/0001_initial.py | 165 +++++++++++++++++-
.../migrations/0002_auto_20190228_2145.py | 149 ----------------
2 files changed, 160 insertions(+), 154 deletions(-)
delete mode 100644 bloodmallet/general_website/migrations/0002_auto_20190228_2145.py
diff --git a/bloodmallet/general_website/migrations/0001_initial.py b/bloodmallet/general_website/migrations/0001_initial.py
index 57eae3ba..586a3b1a 100644
--- a/bloodmallet/general_website/migrations/0001_initial.py
+++ b/bloodmallet/general_website/migrations/0001_initial.py
@@ -1,8 +1,13 @@
-# Generated by Django 2.1.5 on 2019-02-09 16:31
+# Generated by Django 2.1.7 on 2019-03-07 21:08
from django.conf import settings
+import django.contrib.auth.models
+import django.contrib.auth.validators
from django.db import migrations, models
import django.db.models.deletion
+import django.utils.timezone
+import general_website.models
+import uuid
class Migration(migrations.Migration):
@@ -10,10 +15,37 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
- migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ('auth', '0009_alter_user_last_name_max_length'),
]
operations = [
+ migrations.CreateModel(
+ name='User',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('password', models.CharField(max_length=128, verbose_name='password')),
+ ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')),
+ ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')),
+ ('username', models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, unique=True, validators=[django.contrib.auth.validators.UnicodeUsernameValidator()], verbose_name='username')),
+ ('first_name', models.CharField(blank=True, max_length=30, verbose_name='first name')),
+ ('last_name', models.CharField(blank=True, max_length=150, verbose_name='last name')),
+ ('email', models.EmailField(blank=True, max_length=254, verbose_name='email address')),
+ ('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')),
+ ('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')),
+ ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')),
+ ('bloodytext', models.CharField(blank=True, max_length=10, null=True)),
+ ('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.Group', verbose_name='groups')),
+ ('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions')),
+ ],
+ options={
+ 'verbose_name': 'user',
+ 'verbose_name_plural': 'users',
+ 'abstract': False,
+ },
+ managers=[
+ ('objects', django.contrib.auth.models.UserManager()),
+ ],
+ ),
migrations.CreateModel(
name='Faction',
fields=[
@@ -22,11 +54,66 @@ class Migration(migrations.Migration):
],
),
migrations.CreateModel(
- name='Profile',
+ name='FightStyle',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('tokenized_name', models.CharField(max_length=16)),
+ ('pretty_name', models.CharField(max_length=16)),
+ ('description', models.TextField(blank=True, max_length=512)),
+ ],
+ ),
+ migrations.CreateModel(
+ name='GeneralResult',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('fight_style', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='general_results', to='general_website.FightStyle')),
+ ],
+ ),
+ migrations.CreateModel(
+ name='Queue',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('state', models.CharField(blank=True, help_text='Pending, in progress, done, aborted, crashed.', max_length=16)),
+ ('progress', models.SmallIntegerField(help_text="0-100, but 100 doesn't mean, that the data is available. Simulation reached 100%, though.")),
+ ('log', models.TextField(blank=True, help_text='Log messages from the responsible worker.')),
+ ],
+ ),
+ migrations.CreateModel(
+ name='Race',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('pretty_name', models.CharField(max_length=32)),
+ ('tokenized_name', models.CharField(max_length=32)),
+ ('faction', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='races', to='general_website.Faction')),
+ ],
+ ),
+ migrations.CreateModel(
+ name='Result',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, help_text='Uuid used to identify a specific simulation.')),
+ ('result', models.FileField(upload_to=general_website.models.save_simulation_result)),
+ ('simc_hash', models.CharField(blank=True, help_text='SimulationCraft commit hash to identify the used version. (Allows reproduction of a result.)', max_length=40)),
+ ('created_at', models.DateTimeField(auto_now_add=True)),
+ ],
+ ),
+ migrations.CreateModel(
+ name='Simulation',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('character_input', models.TextField(blank=True, help_text='Define your own character here, instead of using the standard profile (your input will overwrite the standard profile).', max_length=2048)),
+ ('fight_style_input', models.TextField(blank=True, help_text='Define your own fight_style.', max_length=2048)),
+ ('created_at', models.DateTimeField(auto_now_add=True)),
+ ('failed', models.BooleanField(default=False, help_text='If Simulation failed somehow this bool is set to True. Otherwise stays False forever.')),
+ ('fight_style', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='simulations', to='general_website.FightStyle')),
+ ],
+ ),
+ migrations.CreateModel(
+ name='SimulationType',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('bloodyfiller', models.CharField(blank=True, max_length=10, null=True)),
- ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
+ ('name', models.CharField(help_text="Name of the simulation type. Like 'trinket simulations'.", max_length=32)),
+ ('command', models.CharField(help_text="Actual command for bloodytools to do the simulation type. E.g. 'trinkets'", max_length=32)),
],
),
migrations.CreateModel(
@@ -41,4 +128,72 @@ class Migration(migrations.Migration):
('faction', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='general_website.Faction')),
],
),
+ migrations.CreateModel(
+ name='WowClass',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('tokenized_name', models.CharField(max_length=16)),
+ ('pretty_name', models.CharField(max_length=16)),
+ ('races', models.ManyToManyField(related_name='classes', to='general_website.Race')),
+ ],
+ ),
+ migrations.CreateModel(
+ name='WowSpec',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('pretty_name', models.CharField(max_length=16)),
+ ('tokenized_name', models.CharField(max_length=16)),
+ ('wow_class', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='wow_specs', to='general_website.WowClass')),
+ ],
+ ),
+ migrations.AddField(
+ model_name='simulation',
+ name='simulation_type',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='simulations', to='general_website.SimulationType'),
+ ),
+ migrations.AddField(
+ model_name='simulation',
+ name='user',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='simulations', to=settings.AUTH_USER_MODEL),
+ ),
+ migrations.AddField(
+ model_name='simulation',
+ name='wow_class',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='simulations', to='general_website.WowClass'),
+ ),
+ migrations.AddField(
+ model_name='simulation',
+ name='wow_spec',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='simulations', to='general_website.WowSpec'),
+ ),
+ migrations.AddField(
+ model_name='result',
+ name='simulation',
+ field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='general_website.Simulation'),
+ ),
+ migrations.AddField(
+ model_name='queue',
+ name='simulation',
+ field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='general_website.Simulation'),
+ ),
+ migrations.AddField(
+ model_name='generalresult',
+ name='result',
+ field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='general_result', to='general_website.Result'),
+ ),
+ migrations.AddField(
+ model_name='generalresult',
+ name='simulation_type',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='general_results', to='general_website.SimulationType'),
+ ),
+ migrations.AddField(
+ model_name='generalresult',
+ name='wow_class',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='general_results', to='general_website.WowClass'),
+ ),
+ migrations.AddField(
+ model_name='generalresult',
+ name='wow_spec',
+ field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='general_result', to='general_website.WowSpec'),
+ ),
]
diff --git a/bloodmallet/general_website/migrations/0002_auto_20190228_2145.py b/bloodmallet/general_website/migrations/0002_auto_20190228_2145.py
deleted file mode 100644
index d5073116..00000000
--- a/bloodmallet/general_website/migrations/0002_auto_20190228_2145.py
+++ /dev/null
@@ -1,149 +0,0 @@
-# Generated by Django 2.1.5 on 2019-02-28 20:45
-
-from django.conf import settings
-from django.db import migrations, models
-import django.db.models.deletion
-import general_website.models
-import uuid
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- migrations.swappable_dependency(settings.AUTH_USER_MODEL),
- ('general_website', '0001_initial'),
- ]
-
- operations = [
- migrations.CreateModel(
- name='FightStyle',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('tokenized_name', models.CharField(max_length=16)),
- ('pretty_name', models.CharField(max_length=16)),
- ('description', models.TextField(blank=True, max_length=512)),
- ],
- ),
- migrations.CreateModel(
- name='GeneralResult',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('fight_style', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='general_results', to='general_website.FightStyle')),
- ],
- ),
- migrations.CreateModel(
- name='Queue',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('state', models.CharField(blank=True, help_text='Pending, in progress, done, aborted, crashed.', max_length=16)),
- ('progress', models.SmallIntegerField(help_text="0-100, but 100 doesn't mean, that the data is available. Simulation reached 100%, though.")),
- ('log', models.TextField(blank=True, help_text='Log messages from the responsible worker.')),
- ],
- ),
- migrations.CreateModel(
- name='Race',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('pretty_name', models.CharField(max_length=32)),
- ('tokenized_name', models.CharField(max_length=32)),
- ('faction', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='races', to='general_website.Faction')),
- ],
- ),
- migrations.CreateModel(
- name='Result',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, help_text='Uuid used to identify a specific simulation.')),
- ('result', models.FileField(upload_to=general_website.models.save_simulation_result)),
- ('simc_hash', models.CharField(blank=True, help_text='SimulationCraft commit hash to identify the used version. (Allows reproduction of a result.)', max_length=40)),
- ('created_at', models.DateTimeField(auto_now_add=True)),
- ],
- ),
- migrations.CreateModel(
- name='Simulation',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('character_input', models.TextField(blank=True, help_text='Define your own character here, instead of using the standard profile (your input will overwrite the standard profile).', max_length=2048)),
- ('fight_style_input', models.TextField(blank=True, help_text='Define your own fight_style.', max_length=2048)),
- ('created_at', models.DateTimeField(auto_now_add=True)),
- ('failed', models.BooleanField(default=False, help_text='If Simulation failed somehow this bool is set to True. Otherwise stays False forever.')),
- ('fight_style', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='simulations', to='general_website.FightStyle')),
- ],
- ),
- migrations.CreateModel(
- name='SimulationType',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('name', models.CharField(help_text="Name of the simulation type. Like 'trinket simulations'.", max_length=32)),
- ('command', models.CharField(help_text="Actual command for bloodytools to do the simulation type. E.g. 'trinkets'", max_length=32)),
- ],
- ),
- migrations.CreateModel(
- name='WowClass',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('tokenized_name', models.CharField(max_length=16)),
- ('pretty_name', models.CharField(max_length=16)),
- ('races', models.ManyToManyField(related_name='classes', to='general_website.Race')),
- ],
- ),
- migrations.CreateModel(
- name='WowSpec',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('pretty_name', models.CharField(max_length=16)),
- ('tokenized_name', models.CharField(max_length=16)),
- ('wow_class', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='wow_specs', to='general_website.WowClass')),
- ],
- ),
- migrations.AddField(
- model_name='simulation',
- name='simulation_type',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='simulations', to='general_website.SimulationType'),
- ),
- migrations.AddField(
- model_name='simulation',
- name='user',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='simulations', to=settings.AUTH_USER_MODEL),
- ),
- migrations.AddField(
- model_name='simulation',
- name='wow_class',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='simulations', to='general_website.WowClass'),
- ),
- migrations.AddField(
- model_name='simulation',
- name='wow_spec',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='simulations', to='general_website.WowSpec'),
- ),
- migrations.AddField(
- model_name='result',
- name='simulation',
- field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='general_website.Simulation'),
- ),
- migrations.AddField(
- model_name='queue',
- name='simulation',
- field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='general_website.Simulation'),
- ),
- migrations.AddField(
- model_name='generalresult',
- name='result',
- field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='general_result', to='general_website.Result'),
- ),
- migrations.AddField(
- model_name='generalresult',
- name='simulation_type',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='general_results', to='general_website.SimulationType'),
- ),
- migrations.AddField(
- model_name='generalresult',
- name='wow_class',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='general_results', to='general_website.WowClass'),
- ),
- migrations.AddField(
- model_name='generalresult',
- name='wow_spec',
- field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='general_result', to='general_website.WowSpec'),
- ),
- ]
From fc568f28fca55f50c929e8ee65954ef5c70b66d8 Mon Sep 17 00:00:00 2001
From: Bloodmallet
Date: Thu, 7 Mar 2019 22:24:59 +0100
Subject: [PATCH 022/135] fix User/Profile
---
bloodmallet/general_website/admin.py | 8 ++++++--
bloodmallet/general_website/forms.py | 12 +++++++-----
bloodmallet/general_website/views/account.py | 9 ++++-----
bloodmallet/general_website/views/general.py | 17 ++++++++---------
4 files changed, 25 insertions(+), 21 deletions(-)
diff --git a/bloodmallet/general_website/admin.py b/bloodmallet/general_website/admin.py
index f84efe67..f30679a4 100644
--- a/bloodmallet/general_website/admin.py
+++ b/bloodmallet/general_website/admin.py
@@ -1,11 +1,15 @@
from django.contrib import admin
-from general_website.models import Faction, Teleporter, Profile, Race, WowClass, WowSpec, FightStyle, SimulationType, Simulation, Queue, Result, GeneralResult
+from general_website.models import User, Faction, Teleporter, Race, WowClass, WowSpec, FightStyle, SimulationType, Simulation, Queue, Result, GeneralResult
+
+from django.contrib.auth.admin import UserAdmin
+
+admin.site.register(User, UserAdmin)
# Register your models here.
+# admin.site.register(User)
admin.site.register(Faction)
admin.site.register(Teleporter)
-admin.site.register(Profile)
admin.site.register(Race)
admin.site.register(WowClass)
admin.site.register(WowSpec)
diff --git a/bloodmallet/general_website/forms.py b/bloodmallet/general_website/forms.py
index c9bbf91f..3f67540d 100644
--- a/bloodmallet/general_website/forms.py
+++ b/bloodmallet/general_website/forms.py
@@ -1,9 +1,8 @@
# -*- coding: utf-8 -*-
from django import forms
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm, PasswordChangeForm
-from django.contrib.auth.models import User
-from general_website.models import Profile
+from general_website.models import User
# class UserLoginForm(forms.ModelForm):
# class Meta:
@@ -51,9 +50,12 @@ class UserUpdateForm(PasswordChangeForm):
class ProfileUpdateForm(forms.ModelForm):
class Meta:
- model = Profile
- fields = ('bloodyfiller',)
+ model = User
+ fields = ('bloodytext',)
+ labels = {
+ 'bloodytext': 'bloody-announcement',
+ }
help_texts = {
- 'bloodyfiller': "Allow others to see your short message in the title. \"Bloody( [Bloodyfiller] )\"",
+ 'bloodytext': "Allow others to see your short message below the title.",
}
diff --git a/bloodmallet/general_website/views/account.py b/bloodmallet/general_website/views/account.py
index 794c4af5..965ba7e7 100644
--- a/bloodmallet/general_website/views/account.py
+++ b/bloodmallet/general_website/views/account.py
@@ -1,12 +1,9 @@
-# -*- coding: utf-8 -*-
-
from django.contrib import messages
from django.contrib.auth import authenticate
from django.contrib.auth import login as auth_login
from django.contrib.auth import logout as auth_logout
from django.contrib.auth import update_session_auth_hash
from django.contrib.auth.decorators import login_required
-from django.contrib.auth.models import User
from django.shortcuts import render, redirect
from general_website.forms import UserLoginForm, SignUpForm, UserUpdateForm, ProfileUpdateForm
@@ -25,6 +22,8 @@ def login(request):
form -- login form
"""
+ logger.debug('login')
+
# if login is attempted
if request.method == 'POST':
login_form = UserLoginForm(request=request, data=request.POST)
@@ -90,7 +89,7 @@ def signup(request):
@login_required
def profile(request):
if request.method == 'POST':
- profile_form = ProfileUpdateForm(request.POST, instance=request.user.profile)
+ profile_form = ProfileUpdateForm(request.POST, instance=request.user)
if profile_form.is_valid():
profile_form.save()
@@ -100,7 +99,7 @@ def profile(request):
else:
user_form = UserUpdateForm(user=request.user)
- profile_form = ProfileUpdateForm(instance=request.user.profile)
+ profile_form = ProfileUpdateForm(instance=request.user)
content = {'user_form': user_form, 'profile_form': profile_form}
diff --git a/bloodmallet/general_website/views/general.py b/bloodmallet/general_website/views/general.py
index d7a30885..debb8844 100644
--- a/bloodmallet/general_website/views/general.py
+++ b/bloodmallet/general_website/views/general.py
@@ -1,10 +1,8 @@
-# -*- coding: utf-8 -*-
-
from django.contrib import messages
-from django.contrib.auth.models import User
from django.shortcuts import render
from random import randint
+from general_website.models import User
import logging
@@ -23,22 +21,23 @@ def index(request):
logger.info("index")
- content = {
+ context = {
'text': "Sir!",
}
# add bloodyfiller
- users = User.objects.filter(profile__bloodyfiller__isnull=False)
- filler_list = []
+ users = User.objects.filter(bloodytext__isnull=False)
+ text_list = []
for user in users:
# TODO: Add multiplier for patreon level and other bonuses
- filler_list.append(user.profile.bloodyfiller)
+ text_list.append(user.bloodytext)
+
try:
- content['bloodyfiller'] = filler_list[randint(0, len(filler_list) - 1)]
+ context['bloodyfiller'] = text_list[randint(0, len(text_list) - 1)]
except Exception:
pass
- return render(request, 'general_website/index.html', content)
+ return render(request, 'general_website/index.html', context)
def portals(request):
From 85479da9fc9ca4a2987a74ce25dd978baa0fb8dd Mon Sep 17 00:00:00 2001
From: Bloodmallet
Date: Thu, 7 Mar 2019 22:25:18 +0100
Subject: [PATCH 023/135] add AUTH_USER_MODEL to settings
---
bloodmallet/bloodmallet/settings/common.py | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/bloodmallet/bloodmallet/settings/common.py b/bloodmallet/bloodmallet/settings/common.py
index 72b7ed24..d2d82fa8 100644
--- a/bloodmallet/bloodmallet/settings/common.py
+++ b/bloodmallet/bloodmallet/settings/common.py
@@ -127,7 +127,7 @@
# `allauth` specific authentication methods, such as login by e-mail
'allauth.account.auth_backends.AuthenticationBackend',
)
-
+# allauth
SITE_ID = 1
# we can either use crispy or bootstrap4
@@ -135,3 +135,6 @@
# from where is this?
LOGIN_URL = 'login'
+
+# replaces the Django standard User
+AUTH_USER_MODEL = 'general_website.User'
From fd1a292ab4ef899e98bd2e16a4ef747fa1bbbe90 Mon Sep 17 00:00:00 2001
From: Bloodmallet
Date: Thu, 7 Mar 2019 22:25:35 +0100
Subject: [PATCH 024/135] add formatter to file logger
---
bloodmallet/bloodmallet/settings/development.py | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/bloodmallet/bloodmallet/settings/development.py b/bloodmallet/bloodmallet/settings/development.py
index 7a9b8915..0403caef 100644
--- a/bloodmallet/bloodmallet/settings/development.py
+++ b/bloodmallet/bloodmallet/settings/development.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
import os
-from .common import * # pylint: disable=unused-wildcard-import
+from .common import * # pylint: disable=unused-wildcard-import
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
@@ -28,18 +28,20 @@
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
+ 'formatter': 'default',
'filename': os.path.join(BASE_DIR, 'debug.log'),
},
'console': {
+ 'level': 'DEBUG' if DEBUG else 'INFO',
'class': 'logging.StreamHandler',
'formatter': 'default',
- 'level': 'DEBUG' if DEBUG else 'INFO'
},
},
'loggers': {
'django': {
'handlers': [
- 'file'
+ # 'console',
+ 'file',
],
'level': 'DEBUG',
'propagate': True,
@@ -58,7 +60,6 @@
'level': 'DEBUG' if DEBUG else 'INFO',
'propagate': True,
}
-
},
}
From 888fd80c6e1ef94ed521669e0f0024913025ddd2 Mon Sep 17 00:00:00 2001
From: Bloodmallet
Date: Thu, 7 Mar 2019 22:25:55 +0100
Subject: [PATCH 025/135] delete unnecessary utf-8 remarks
---
bloodmallet/general_website/urls.py | 5 ++---
bloodmallet/general_website/views/error.py | 2 --
2 files changed, 2 insertions(+), 5 deletions(-)
diff --git a/bloodmallet/general_website/urls.py b/bloodmallet/general_website/urls.py
index 8cfcd497..ada343e7 100644
--- a/bloodmallet/general_website/urls.py
+++ b/bloodmallet/general_website/urls.py
@@ -1,4 +1,3 @@
-# -*- coding: utf-8 -*-
from django.urls import path, include
from . import views
@@ -15,11 +14,11 @@
path('settings/profile', views.profile, name='profile'),
path('settings/change_password', views.change_password, name='change_password'),
- # allauth account actions
+ # allauth account actions
path('accounts/', include('allauth.urls')),
path('settings/connections', ConnectionsView.as_view(), name='account_connections'),
- # account actions
+ # account actions
path('login', views.login, name='login'),
path('logout', views.logout, name='logout'),
path('signup', views.signup, name='signup'),
diff --git a/bloodmallet/general_website/views/error.py b/bloodmallet/general_website/views/error.py
index 2b516cf8..b712a103 100644
--- a/bloodmallet/general_website/views/error.py
+++ b/bloodmallet/general_website/views/error.py
@@ -1,5 +1,3 @@
-# -*- coding: utf-8 -*-
-
from django.contrib import messages
from django.shortcuts import render
From 461e6b73a5301fbbcd30ad3c051631daf13448ea Mon Sep 17 00:00:00 2001
From: Bloodmallet
Date: Thu, 7 Mar 2019 22:26:23 +0100
Subject: [PATCH 026/135] add requirements-file link to dev requirements
---
requirements_dev.txt | 1 +
1 file changed, 1 insertion(+)
diff --git a/requirements_dev.txt b/requirements_dev.txt
index 888cd57d..5cd609b3 100644
--- a/requirements_dev.txt
+++ b/requirements_dev.txt
@@ -1,2 +1,3 @@
pylint>=2.1.1
yapf>=0.24.0
+-r requirements_commented.txt
From a2aa05f7d583f3bc42b6f874d57d676ef2512b67 Mon Sep 17 00:00:00 2001
From: Bloodmallet
Date: Thu, 7 Mar 2019 22:27:16 +0100
Subject: [PATCH 027/135] add an index page
---
.../templates/general_website/layout_top_nav.html | 1 +
1 file changed, 1 insertion(+)
diff --git a/bloodmallet/general_website/templates/general_website/layout_top_nav.html b/bloodmallet/general_website/templates/general_website/layout_top_nav.html
index 0c8c3b22..bb6afc8c 100644
--- a/bloodmallet/general_website/templates/general_website/layout_top_nav.html
+++ b/bloodmallet/general_website/templates/general_website/layout_top_nav.html
@@ -30,6 +30,7 @@
Register
{% endif %}
{% if request.user.is_authenticated and request.user.is_superuser %}
+ Sims
Admin
{% endif%}
Settings
From 3f2da65f229fc487d05fc69c55c192048b6298b7 Mon Sep 17 00:00:00 2001
From: Bloodmallet
Date: Thu, 7 Mar 2019 22:27:55 +0100
Subject: [PATCH 028/135] delete nonexistant page from nav
---
.../templates/general_website/layout_top_nav.html | 3 ---
1 file changed, 3 deletions(-)
diff --git a/bloodmallet/general_website/templates/general_website/layout_top_nav.html b/bloodmallet/general_website/templates/general_website/layout_top_nav.html
index bb6afc8c..ee256ab0 100644
--- a/bloodmallet/general_website/templates/general_website/layout_top_nav.html
+++ b/bloodmallet/general_website/templates/general_website/layout_top_nav.html
@@ -17,9 +17,6 @@
General
-
- Trinket performance
-
From cb42d33954b7c7fc551aa679b5b8e455504ea7d2 Mon Sep 17 00:00:00 2001
From: Bloodmallet
Date: Thu, 7 Mar 2019 23:31:46 +0100
Subject: [PATCH 029/135] mark translatable strings
---
.../locale/de/LC_MESSAGES/django.mo | Bin 0 -> 421 bytes
.../locale/de/LC_MESSAGES/django.po | 696 ++++++++++++++++++
.../templates/general_website/error.html | 3 +-
.../templates/general_website/index.html | 42 +-
.../general_website/layout_base.html | 3 +-
.../general_website/layout_bottom_nav.html | 11 +-
.../general_website/layout_head.html | 3 +-
.../general_website/layout_settings_nav.html | 11 +-
.../general_website/layout_top_nav.html | 15 +-
.../templates/general_website/login.html | 5 +-
.../templates/general_website/portals.html | 18 +-
.../templates/general_website/profile.html | 11 +-
.../templates/general_website/settings.html | 29 +-
.../templates/general_website/signup.html | 5 +-
bloodmallet/general_website/views/account.py | 20 +-
bloodmallet/general_website/views/error.py | 14 +-
16 files changed, 796 insertions(+), 90 deletions(-)
create mode 100644 bloodmallet/general_website/locale/de/LC_MESSAGES/django.mo
create mode 100644 bloodmallet/general_website/locale/de/LC_MESSAGES/django.po
diff --git a/bloodmallet/general_website/locale/de/LC_MESSAGES/django.mo b/bloodmallet/general_website/locale/de/LC_MESSAGES/django.mo
new file mode 100644
index 0000000000000000000000000000000000000000..22495e37d03a8a2a3433882ac81283e0c72d9a54
GIT binary patch
literal 421
zcmYL^Pfx-y9ELG^+R?Lznt0IQ54UL)3K%9UxVV2AgG6r?>YR>tX^YVh;@9)D*r|~>
zdD1q0+P?kT-}`Kt>=+IVM}}R)si8^N@M<=DW^A1Qq*A=FrG{Vy3no=5I7X>AzVoI8
zEl4&ClGw^vEu@A>73B(UHid#*U}U994r9rvHiy8cnqlPHP7myJu&9PB7z1a@`7;W`F=)b
zvumUBVnYiCIiqWgLNA`qo63VQ993mU$YSf5s!, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-03-07 23:30+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: .\general_website\templates\allauth\account\account_inactive.html:5
+#: .\general_website\templates\allauth\account\account_inactive.html:8
+msgid "Account Inactive"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\account_inactive.html:10
+msgid "This account is inactive."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:5
+msgid "Account"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:8
+msgid "E-mail Addresses"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:10
+msgid "The following e-mail addresses are associated with your account:"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:24
+msgid "Verified"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:26
+msgid "Unverified"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:28
+msgid "Primary"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:34
+msgid "Make Primary"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:35
+msgid "Re-send Verification"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:36
+#: .\general_website\templates\allauth\socialaccount\connections.html:34
+msgid "Remove"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:43
+msgid "Warning:"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:43
+msgid ""
+"You currently do not have any e-mail address set up. You should really add "
+"an e-mail address so you can receive notifications, reset your password, etc."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:48
+msgid "Add E-mail Address"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:53
+msgid "Add E-mail"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:62
+msgid "Do you really want to remove the selected e-mail address?"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\email_confirmation_message.txt:1
+#, python-format
+msgid ""
+"Hello from %(site_name)s!\n"
+"\n"
+"You're receiving this e-mail because user %(user_display)s has given yours "
+"as an e-mail address to connect their account.\n"
+"\n"
+"To confirm this is correct, go to %(activate_url)s\n"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\email_confirmation_message.txt:7
+#, python-format
+msgid ""
+"Thank you from %(site_name)s!\n"
+"%(site_domain)s"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\email_confirmation_subject.txt:3
+msgid "Please Confirm Your E-mail Address"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\password_reset_key_message.txt:1
+#, python-format
+msgid ""
+"Hello from %(site_name)s!\n"
+"\n"
+"You're receiving this e-mail because you or someone else has requested a "
+"password for your user account.\n"
+"It can be safely ignored if you did not request a password reset. Click the "
+"link below to reset your password."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\password_reset_key_message.txt:8
+#, python-format
+msgid "In case you forgot, your username is %(username)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\password_reset_key_message.txt:10
+#, python-format
+msgid ""
+"Thank you for using %(site_name)s!\n"
+"%(site_domain)s"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\password_reset_key_subject.txt:3
+msgid "Password Reset E-mail"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email_confirm.html:6
+#: .\general_website\templates\allauth\account\email_confirm.html:10
+msgid "Confirm E-mail Address"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email_confirm.html:16
+#, python-format
+msgid ""
+"Please confirm that %(email)s is an e-mail "
+"address for user %(user_display)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email_confirm.html:20
+msgid "Confirm"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email_confirm.html:27
+#, python-format
+msgid ""
+"This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request ."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:6
+#: .\general_website\templates\allauth\account\login.html:10
+#: .\general_website\templates\allauth\account\login.html:43
+msgid "Sign In"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:15
+#, python-format
+msgid ""
+"Please sign in with one\n"
+"of your existing third party accounts. Or, sign "
+"up \n"
+"for a %(site_name)s account and sign in below:"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:25
+msgid "or"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:32
+#, python-format
+msgid ""
+"If you have not created an account yet, then please\n"
+"sign up first."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:42
+msgid "Forgot Password?"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\logout.html:5
+#: .\general_website\templates\allauth\account\logout.html:8
+#: .\general_website\templates\allauth\account\logout.html:17
+msgid "Sign Out"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\logout.html:10
+msgid "Are you sure you want to sign out?"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\cannot_delete_primary_email.txt:2
+#, python-format
+msgid "You cannot remove your primary e-mail address (%(email)s)."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\email_confirmation_sent.txt:2
+#, python-format
+msgid "Confirmation e-mail sent to %(email)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\email_confirmed.txt:2
+#, python-format
+msgid "You have confirmed %(email)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\email_deleted.txt:2
+#, python-format
+msgid "Removed e-mail address %(email)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\logged_in.txt:4
+#, python-format
+msgid "Successfully signed in as %(name)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\logged_out.txt:2
+msgid "You have signed out."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\password_changed.txt:2
+msgid "Password successfully changed."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\password_set.txt:2
+msgid "Password successfully set."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\primary_email_set.txt:2
+msgid "Primary e-mail address set."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\unverified_primary_email.txt:2
+msgid "Your primary e-mail address must be verified."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_change.html:5
+#: .\general_website\templates\allauth\account\password_change.html:8
+#: .\general_website\templates\allauth\account\password_change.html:13
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:4
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:7
+#: .\general_website\templates\allauth\account\password_reset_from_key_done.html:4
+#: .\general_website\templates\allauth\account\password_reset_from_key_done.html:7
+#: .\general_website\templates\general_website\profile.html:28
+msgid "Change Password"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset.html:6
+#: .\general_website\templates\allauth\account\password_reset.html:10
+#: .\general_website\templates\allauth\account\password_reset_done.html:6
+#: .\general_website\templates\allauth\account\password_reset_done.html:9
+msgid "Password Reset"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset.html:15
+msgid ""
+"Forgotten your password? Enter your e-mail address below, and we'll send you "
+"an e-mail allowing you to reset it."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset.html:20
+msgid "Reset My Password"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset.html:23
+msgid "Please contact us if you have any trouble resetting your password."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_done.html:15
+msgid ""
+"We have sent you an e-mail. Please contact us if you do not receive it "
+"within a few minutes."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:7
+msgid "Bad Token"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:11
+#, python-format
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used. Please request a new password reset"
+"a>."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:17
+msgid "change password"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:20
+#: .\general_website\templates\allauth\account\password_reset_from_key_done.html:8
+msgid "Your password is now changed."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_set.html:5
+#: .\general_website\templates\allauth\account\password_set.html:8
+#: .\general_website\templates\allauth\account\password_set.html:13
+msgid "Set Password"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup.html:5
+#: .\general_website\templates\allauth\socialaccount\signup.html:5
+msgid "Signup"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup.html:8
+#: .\general_website\templates\allauth\account\signup.html:18
+#: .\general_website\templates\allauth\socialaccount\signup.html:8
+#: .\general_website\templates\allauth\socialaccount\signup.html:19
+msgid "Sign Up"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup.html:10
+#, python-format
+msgid ""
+"Already have an account? Then please sign in ."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup_closed.html:5
+#: .\general_website\templates\allauth\account\signup_closed.html:8
+msgid "Sign Up Closed"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup_closed.html:10
+msgid "We are sorry, but the sign up is currently closed."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\snippets\already_logged_in.html:5
+msgid "Note"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\snippets\already_logged_in.html:5
+#, python-format
+msgid "you are already logged in as %(user_display)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verification_sent.html:5
+#: .\general_website\templates\allauth\account\verification_sent.html:8
+#: .\general_website\templates\allauth\account\verified_email_required.html:5
+#: .\general_website\templates\allauth\account\verified_email_required.html:8
+msgid "Verify Your E-mail Address"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verification_sent.html:10
+msgid ""
+"We have sent an e-mail to you for verification. Follow the link provided to "
+"finalize the signup process. Please contact us if you do not receive it "
+"within a few minutes."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verified_email_required.html:12
+msgid ""
+"This part of the site requires us to verify that\n"
+"you are who you claim to be. For this purpose, we require that you\n"
+"verify ownership of your e-mail address. "
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verified_email_required.html:16
+msgid ""
+"We have sent an e-mail to you for\n"
+"verification. Please click on the link inside this e-mail. Please\n"
+"contact us if you do not receive it within a few minutes."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verified_email_required.html:20
+#, python-format
+msgid ""
+"Note: you can still change your e-"
+"mail address ."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\authentication_error.html:5
+#: .\general_website\templates\allauth\socialaccount\authentication_error.html:8
+msgid "Social Network Login Failure"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\authentication_error.html:10
+msgid ""
+"An error occurred while attempting to login via your social network account."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\connections.html:5
+#: .\general_website\templates\allauth\socialaccount\connections.html:8
+msgid "Account Connections"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\connections.html:11
+msgid ""
+"You can sign in to your account using any of the following third party "
+"accounts:"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\connections.html:42
+msgid ""
+"You currently have no social network accounts connected to this account."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\connections.html:45
+msgid "Add a 3rd Party Account"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\login_cancelled.html:5
+#: .\general_website\templates\allauth\socialaccount\login_cancelled.html:9
+msgid "Login Cancelled"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\login_cancelled.html:13
+#, python-format
+msgid ""
+"You decided to cancel logging in to our site using one of your existing "
+"accounts. If this was a mistake, please proceed to sign in ."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\messages\account_connected.txt:2
+msgid "The social account has been connected."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\messages\account_connected_other.txt:2
+msgid "The social account is already connected to a different account."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\messages\account_disconnected.txt:2
+msgid "The social account has been disconnected."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\signup.html:10
+#, python-format
+msgid ""
+"You are about to use your %(provider_name)s account to login to\n"
+"%(site_name)s. As a final step, please complete the following form:"
+msgstr ""
+
+#: .\general_website\templates\general_website\error.html:15
+msgid "Unknown error"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:61
+msgid "Data Type"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:63
+msgid "Trinkets"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:64
+msgid "Azerite"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:65
+msgid "Races"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:71
+msgid "Fight Style"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:73
+msgid "Patchwerk"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:74
+msgid "HecticAddCleave"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:78
+msgid "Type Specification"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:80
+msgid "Trait stacking"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:81
+msgid "Itemlevel"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:82
+msgid "Head"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:83
+msgid "Shoulders"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:84
+msgid "Chest"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:88
+msgid "Azerite Tier"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:95
+msgid "Tier 3 & 4"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:97
+msgid "Tier 2"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:101
+msgid "Advanced Options"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:103
+msgid "Show"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_base.html:15
+msgid "Become a Patron"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_bottom_nav.html:17
+msgid "FAQ"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_bottom_nav.html:24
+msgid "Report an error"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_bottom_nav.html:32
+msgid "Patreon"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_head.html:7
+msgid "data for all"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_settings_nav.html:14
+#: .\general_website\templates\general_website\layout_top_nav.html:35
+#: .\general_website\templates\general_website\settings.html:15
+msgid "Settings"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_settings_nav.html:16
+#: .\general_website\templates\general_website\layout_top_nav.html:20
+msgid "General"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_settings_nav.html:23
+#: .\general_website\templates\general_website\profile.html:16
+msgid "Profile"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_settings_nav.html:28
+msgid "Connections"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:28
+#: .\general_website\templates\general_website\login.html:14
+msgid "Login"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:29
+msgid "Register"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:32
+msgid "Sims"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:33
+msgid "Admin"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:37
+msgid "Logout"
+msgstr ""
+
+#: .\general_website\templates\general_website\login.html:15
+#: .\general_website\templates\general_website\signup.html:12
+msgid ""
+"I couldn't care less about your data. Nothing is shared with others and data "
+"is wiped regularly."
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:12
+msgid "Portals"
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:14
+msgid ""
+"Ever wondered what portals exist in the game? So did I. Here is a list of "
+"them. Let me know about more fixed position portals. This list is NOT "
+"intended to include teleporting items or skills."
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:15
+msgid ""
+"And of course Blizzard nuked portals the moment I started building this "
+"page. I'm sorry."
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:32
+msgid "Target"
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:33
+msgid "Location"
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:34
+msgid "Coordinates"
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:35
+msgid "More information"
+msgstr ""
+
+#: .\general_website\templates\general_website\profile.html:17
+msgid "Manage your profile information."
+msgstr ""
+
+#: .\general_website\templates\general_website\profile.html:23
+msgid "Save changes"
+msgstr ""
+
+#: .\general_website\templates\general_website\profile.html:33
+msgid "Change password"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:20
+msgid "Language"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:78
+msgid "Chart mode"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:82
+msgid "Δ - absolute dps gain"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:88
+#, python-format
+msgid "%% - relative dps gain"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:94
+msgid "|x| - absolute value"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:103
+msgid "active"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:107
+msgid "Apply changes"
+msgstr ""
+
+#: .\general_website\templates\general_website\signup.html:11
+msgid "Sign up"
+msgstr ""
+
+#: .\general_website\views\account.py:43
+msgid "Couldn't log in. Please check your input."
+msgstr ""
+
+#: .\general_website\views\account.py:82
+msgid "Account created."
+msgstr ""
+
+#: .\general_website\views\account.py:85
+msgid "Account creation failed."
+msgstr ""
+
+#: .\general_website\views\account.py:98
+msgid "Profile was updated!"
+msgstr ""
+
+#: .\general_website\views\account.py:125
+msgid "Password was updated!"
+msgstr ""
+
+#: .\general_website\views\account.py:127
+msgid "Password update failed. Check your input."
+msgstr ""
+
+#: .\general_website\views\error.py:10 .\general_website\views\error.py:22
+msgid "Page not found"
+msgstr ""
+
+#: .\general_website\views\error.py:26
+msgid "Something went wrong. Try again later"
+msgstr ""
diff --git a/bloodmallet/general_website/templates/general_website/error.html b/bloodmallet/general_website/templates/general_website/error.html
index 37e58cf8..92227228 100644
--- a/bloodmallet/general_website/templates/general_website/error.html
+++ b/bloodmallet/general_website/templates/general_website/error.html
@@ -1,4 +1,5 @@
{% extends 'general_website/layout_base.html' %}
+{% load i18n %}
{% block content %}
@@ -11,7 +12,7 @@ {% if error.code %}{{ error.code }}{% else %}'??'{% en
{% if error.text %}
{{ error.text }}
{% else %}
- Unknown error
+ {% trans "Unknown error" %}
{% endif %}
diff --git a/bloodmallet/general_website/templates/general_website/index.html b/bloodmallet/general_website/templates/general_website/index.html
index c7f139e4..3efc7b00 100644
--- a/bloodmallet/general_website/templates/general_website/index.html
+++ b/bloodmallet/general_website/templates/general_website/index.html
@@ -1,4 +1,5 @@
{% extends 'general_website/layout_base.html' %}
+{% load i18n %}
{% load static %}
{% load replace_underscore_with_space %}
@@ -16,6 +17,7 @@
{# create a list of all specs and autogenerate the standard links #}
+ {# will need to generate the list in the backend and provide proper translations #}
{% with "death_knight demon_hunter druid hunter mage monk paladin priest rogue shaman warlock warrior" as specs %}
{% for spec in specs.split %}
@@ -42,9 +44,9 @@ blood{% if not bloodyfil
{% endcomment %}
-This site provides an overview about trinkets, azerite traits, and others for almost all specs in World of Warcraft
+{% trans "This site provides an overview about trinkets, azerite traits, and others for almost all specs in World of Warcraft
using SimulationCraft 's default profiles. These overviews
-are an entry point. For indepth information about your spec use your theorycrafters resources linked below the charts.
+are an entry point. For indepth information about your spec use your theorycrafters resources linked below the charts." %}
@@ -56,48 +58,48 @@ blood{% if not bloodyfil
- Data Type
+ {% trans "Data Type" %}
- Trinkets
- Azerite
- Races
+ {% trans "Trinkets" %}
+ {% trans "Azerite" %}
+ {% trans "Races" %}
{% comment %} Secondary distributions {% endcomment %}
- Fight Style
+ {% trans "Fight Style" %}
- Patchwerk
- HecticAddCleave
+ {% trans "Patchwerk" %}
+ {% trans "HecticAddCleave" %}
- Type Specification
+ {% trans "Type Specification" %}
- Trait stacking
- Itemlevel
- Head
- Shoulders
- Chest
+ {% trans "Trait stacking" %}
+ {% trans "Itemlevel" %}
+ {% trans "Head" %}
+ {% trans "Shoulders" %}
+ {% trans "Chest" %}
- Azerite Tier
+ {% trans "Azerite Tier" %}
- Tier 3 & 4
+ {% trans "Tier 3 & 4" %}
- Tier 2
+ {% trans "Tier 2" %}
- Advanced Options
+ {% trans "Advanced Options" %}
diff --git a/bloodmallet/general_website/templates/general_website/layout_base.html b/bloodmallet/general_website/templates/general_website/layout_base.html
index 5cde29cd..51626e67 100644
--- a/bloodmallet/general_website/templates/general_website/layout_base.html
+++ b/bloodmallet/general_website/templates/general_website/layout_base.html
@@ -1,3 +1,4 @@
+{% load i18n %}
{% load static %}
{% load bootstrap4 %}
@@ -10,7 +11,7 @@
{% comment %} {% if not request.user.is_authenticated %} {% endcomment %}
{% comment %} {% endif %} {% endcomment %}
diff --git a/bloodmallet/general_website/templates/general_website/layout_bottom_nav.html b/bloodmallet/general_website/templates/general_website/layout_bottom_nav.html
index 5bce5b7d..fe4b5485 100644
--- a/bloodmallet/general_website/templates/general_website/layout_bottom_nav.html
+++ b/bloodmallet/general_website/templates/general_website/layout_bottom_nav.html
@@ -1,3 +1,4 @@
+{% load i18n %}
{% load static %}
- @bloodmallet
+ @bloodmallet
@@ -47,7 +48,7 @@
- bloodmallet.com
+ bloodmallet.com
diff --git a/bloodmallet/general_website/templates/general_website/layout_head.html b/bloodmallet/general_website/templates/general_website/layout_head.html
index b2380780..545f639f 100644
--- a/bloodmallet/general_website/templates/general_website/layout_head.html
+++ b/bloodmallet/general_website/templates/general_website/layout_head.html
@@ -1,9 +1,10 @@
+{% load i18n %}
{% load sass_tags %}
{% load static %}
- bloodmallet - data for all
+ bloodmallet - {% trans "data for all" %}
diff --git a/bloodmallet/general_website/templates/general_website/layout_settings_nav.html b/bloodmallet/general_website/templates/general_website/layout_settings_nav.html
index 78201c43..9cf9de9d 100644
--- a/bloodmallet/general_website/templates/general_website/layout_settings_nav.html
+++ b/bloodmallet/general_website/templates/general_website/layout_settings_nav.html
@@ -1,3 +1,4 @@
+{% load i18n %}
{% if page %}
@@ -7,24 +8,24 @@
diff --git a/bloodmallet/general_website/templates/general_website/login.html b/bloodmallet/general_website/templates/general_website/login.html
index df9a72a2..ff1d4690 100644
--- a/bloodmallet/general_website/templates/general_website/login.html
+++ b/bloodmallet/general_website/templates/general_website/login.html
@@ -1,4 +1,5 @@
{% extends 'general_website/layout_base.html' %}
+{% load i18n %}
{% load crispy_forms_tags %}
{% block content %}
@@ -9,8 +10,8 @@
{% comment %} Add reset PW link here {% endcomment %}
- Login
- I couldn't care less about what data you enter. Nothing is shared with others.
+ {% trans "Login" %}
+ {% trans "I couldn't care less about your data. Nothing is shared with others and data is wiped regularly." %}
{% endblock %}
diff --git a/bloodmallet/general_website/templates/general_website/portals.html b/bloodmallet/general_website/templates/general_website/portals.html
index 4004d923..baaa4fbe 100644
--- a/bloodmallet/general_website/templates/general_website/portals.html
+++ b/bloodmallet/general_website/templates/general_website/portals.html
@@ -1,4 +1,5 @@
{% extends 'general_website/layout_base.html' %}
+{% load i18n %}
{% load static %}
{% load replace_underscore_with_space %}
@@ -8,14 +9,15 @@
{% block content %}
-Portals
+{% trans "Portals" %}
-Ever wondered what portals exist in the game? So did I. Here is a list of them. Let me know about more fixed position portals. This list is NOT intended to include teleporting items or skills.
+{% trans "Ever wondered what portals exist in the game? So did I. Here is a list of them. Let me know about more fixed position portals. This list is NOT intended to include teleporting items or skills." %}
+{% trans "And of course Blizzard nuked portals the moment I started building this page. I'm sorry." %}
{# Faction buttons #}
{% for faction, teleporters in factions.items %}
-
+
{{ faction | title }} ({{ teleporters | length }})
{% endfor %}
@@ -23,14 +25,14 @@ Portals
{# Faction content #}
{% for faction, teleporters in factions.items %}
-
+
- Target
- Location
- Coordinates
- More information
+ {% trans "Target" %}
+ {% trans "Location" %}
+ {% trans "Coordinates" %}
+ {% trans "More information" %}
diff --git a/bloodmallet/general_website/templates/general_website/profile.html b/bloodmallet/general_website/templates/general_website/profile.html
index e6409c9b..6182d2e2 100644
--- a/bloodmallet/general_website/templates/general_website/profile.html
+++ b/bloodmallet/general_website/templates/general_website/profile.html
@@ -1,4 +1,5 @@
{% extends 'general_website/layout_base.html' %}
+{% load i18n %}
{% load static %}
{% load crispy_forms_tags %}
{% load replace_underscore_with_space %}
@@ -12,24 +13,24 @@
{% block content %}
-Profile
-Manage your profile information.
+{% trans "Profile" %}
+{% trans "Manage your profile information." %}
-Change Password
+{% trans "Change Password" %}
diff --git a/bloodmallet/general_website/templates/general_website/settings.html b/bloodmallet/general_website/templates/general_website/settings.html
index 186b10c2..e5efe5bb 100644
--- a/bloodmallet/general_website/templates/general_website/settings.html
+++ b/bloodmallet/general_website/templates/general_website/settings.html
@@ -1,4 +1,5 @@
{% extends 'general_website/layout_base.html' %}
+{% load i18n %}
{% load static %}
{% load replace_underscore_with_space %}
@@ -11,24 +12,12 @@
{% block content %}
-Settings
+{% trans "Settings" %}
A settings page...what did you expect?
diff --git a/bloodmallet/general_website/templates/general_website/signup.html b/bloodmallet/general_website/templates/general_website/signup.html
index eaf5f95b..814a34d6 100644
--- a/bloodmallet/general_website/templates/general_website/signup.html
+++ b/bloodmallet/general_website/templates/general_website/signup.html
@@ -1,4 +1,5 @@
{% extends 'general_website/layout_base.html' %}
+{% load i18n %}
{% load crispy_forms_tags %}
{% block content %}
@@ -7,8 +8,8 @@
{% csrf_token %}
{{ signup_form|crispy }}
- Sign up
- I couldn't care less about what data you enter. Nothing is shared with others.
+ {% trans "Sign up" %}
+ {% trans "I couldn't care less about your data. Nothing is shared with others and data is wiped regularly." %}
{% endblock %}
diff --git a/bloodmallet/general_website/views/account.py b/bloodmallet/general_website/views/account.py
index 965ba7e7..f48522e0 100644
--- a/bloodmallet/general_website/views/account.py
+++ b/bloodmallet/general_website/views/account.py
@@ -1,10 +1,11 @@
from django.contrib import messages
-from django.contrib.auth import authenticate
+from django.contrib.auth import authenticate, update_session_auth_hash
from django.contrib.auth import login as auth_login
from django.contrib.auth import logout as auth_logout
-from django.contrib.auth import update_session_auth_hash
from django.contrib.auth.decorators import login_required
from django.shortcuts import render, redirect
+from django.utils.translation import gettext as _
+
from general_website.forms import UserLoginForm, SignUpForm, UserUpdateForm, ProfileUpdateForm
import logging
@@ -39,7 +40,7 @@ def login(request):
# TODO: get query string parameter 'next' which has the actual destination
return redirect(n)
else:
- messages.warning(request, "Couldn't log in. Please check your input.")
+ messages.warning(request, _("Couldn't log in. Please check your input."))
else:
pass
@@ -77,10 +78,11 @@ def signup(request):
logger.info('Someone tried to sign up!')
signup_form = SignUpForm(request.POST)
if signup_form.is_valid():
- logger.info("Trying to save the user form")
signup_form.save()
- messages.success(request, "Account was created. Please confirm your Email address.")
+ messages.success(request, _("Account created."))
return redirect('index')
+ else:
+ messages.warning(request, _("Account creation failed."))
else:
signup_form = SignUpForm()
return render(request, 'general_website/signup.html', {'signup_form': signup_form})
@@ -93,7 +95,7 @@ def profile(request):
if profile_form.is_valid():
profile_form.save()
- messages.success(request, "Profile was updated!")
+ messages.success(request, _("Profile was updated!"))
return redirect('profile')
@@ -114,15 +116,15 @@ def change_password(request):
"""
if request.method != 'POST':
- messages.error(request, "POST requests only!")
+ pass
else:
user_form = UserUpdateForm(request.user, request.POST)
if user_form.is_valid():
user = user_form.save()
update_session_auth_hash(request, user)
- messages.success(request, 'Your password was successfully updated!')
+ messages.success(request, _("Password was updated!"))
else:
- messages.error(request, "Changing password failed. Check what you entered.")
+ messages.error(request, _("Password update failed. Check your input."))
return redirect('profile')
diff --git a/bloodmallet/general_website/views/error.py b/bloodmallet/general_website/views/error.py
index b712a103..e128bf34 100644
--- a/bloodmallet/general_website/views/error.py
+++ b/bloodmallet/general_website/views/error.py
@@ -1,20 +1,26 @@
from django.contrib import messages
from django.shortcuts import render
+from django.utils.translation import gettext as _
import logging
logger = logging.getLogger(__name__)
-def error(request, code: int = 404, message: str = "Page not found"):
- error = {'error': {'code': code, 'text': message}}
+def error(request, code: int = 404, message: str = _("Page not found")):
+ error = {
+ 'error': {
+ 'code': code,
+ 'text': message,
+ }
+ }
return render(request, 'general_website/error.html', error, status=code)
# define custom error pages
def handler404(request, exception, template_name='general_website/error.html'):
- return error(request, 404, "Page not found")
+ return error(request, 404, _("Page not found"))
def handler500(request, exception, template_name='general_website/error.html'):
- return error(request, 500, "Something went wrong. Try again later")
+ return error(request, 500, _("Something went wrong. Try again later"))
From a1ca31d5394b8936781aece278b35fad74fe4eeb Mon Sep 17 00:00:00 2001
From: Bloodmallet
Date: Thu, 7 Mar 2019 23:33:00 +0100
Subject: [PATCH 030/135] add locale middleware
---
bloodmallet/bloodmallet/settings/common.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/bloodmallet/bloodmallet/settings/common.py b/bloodmallet/bloodmallet/settings/common.py
index d2d82fa8..fba21973 100644
--- a/bloodmallet/bloodmallet/settings/common.py
+++ b/bloodmallet/bloodmallet/settings/common.py
@@ -42,6 +42,7 @@
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
+ 'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
From 397c284e1fcbd254444204b38b673c849aa2dd5c Mon Sep 17 00:00:00 2001
From: Bloodmallet
Date: Thu, 7 Mar 2019 23:36:45 +0100
Subject: [PATCH 031/135] add more locals
Translators welcomed!
---
.../locale/cn/LC_MESSAGES/django.po | 695 +++++++++++++++++
.../locale/de/LC_MESSAGES/django.po | 2 +-
.../locale/es/LC_MESSAGES/django.po | 695 +++++++++++++++++
.../locale/fr/LC_MESSAGES/django.po | 695 +++++++++++++++++
.../locale/it/LC_MESSAGES/django.po | 695 +++++++++++++++++
.../locale/ko/LC_MESSAGES/django.po | 695 +++++++++++++++++
.../locale/pt/LC_MESSAGES/django.po | 695 +++++++++++++++++
.../locale/ru/LC_MESSAGES/django.po | 697 ++++++++++++++++++
8 files changed, 4868 insertions(+), 1 deletion(-)
create mode 100644 bloodmallet/general_website/locale/cn/LC_MESSAGES/django.po
create mode 100644 bloodmallet/general_website/locale/es/LC_MESSAGES/django.po
create mode 100644 bloodmallet/general_website/locale/fr/LC_MESSAGES/django.po
create mode 100644 bloodmallet/general_website/locale/it/LC_MESSAGES/django.po
create mode 100644 bloodmallet/general_website/locale/ko/LC_MESSAGES/django.po
create mode 100644 bloodmallet/general_website/locale/pt/LC_MESSAGES/django.po
create mode 100644 bloodmallet/general_website/locale/ru/LC_MESSAGES/django.po
diff --git a/bloodmallet/general_website/locale/cn/LC_MESSAGES/django.po b/bloodmallet/general_website/locale/cn/LC_MESSAGES/django.po
new file mode 100644
index 00000000..61265391
--- /dev/null
+++ b/bloodmallet/general_website/locale/cn/LC_MESSAGES/django.po
@@ -0,0 +1,695 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR , YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-03-07 23:36+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: .\general_website\templates\allauth\account\account_inactive.html:5
+#: .\general_website\templates\allauth\account\account_inactive.html:8
+msgid "Account Inactive"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\account_inactive.html:10
+msgid "This account is inactive."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:5
+msgid "Account"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:8
+msgid "E-mail Addresses"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:10
+msgid "The following e-mail addresses are associated with your account:"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:24
+msgid "Verified"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:26
+msgid "Unverified"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:28
+msgid "Primary"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:34
+msgid "Make Primary"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:35
+msgid "Re-send Verification"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:36
+#: .\general_website\templates\allauth\socialaccount\connections.html:34
+msgid "Remove"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:43
+msgid "Warning:"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:43
+msgid ""
+"You currently do not have any e-mail address set up. You should really add "
+"an e-mail address so you can receive notifications, reset your password, etc."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:48
+msgid "Add E-mail Address"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:53
+msgid "Add E-mail"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:62
+msgid "Do you really want to remove the selected e-mail address?"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\email_confirmation_message.txt:1
+#, python-format
+msgid ""
+"Hello from %(site_name)s!\n"
+"\n"
+"You're receiving this e-mail because user %(user_display)s has given yours "
+"as an e-mail address to connect their account.\n"
+"\n"
+"To confirm this is correct, go to %(activate_url)s\n"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\email_confirmation_message.txt:7
+#, python-format
+msgid ""
+"Thank you from %(site_name)s!\n"
+"%(site_domain)s"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\email_confirmation_subject.txt:3
+msgid "Please Confirm Your E-mail Address"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\password_reset_key_message.txt:1
+#, python-format
+msgid ""
+"Hello from %(site_name)s!\n"
+"\n"
+"You're receiving this e-mail because you or someone else has requested a "
+"password for your user account.\n"
+"It can be safely ignored if you did not request a password reset. Click the "
+"link below to reset your password."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\password_reset_key_message.txt:8
+#, python-format
+msgid "In case you forgot, your username is %(username)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\password_reset_key_message.txt:10
+#, python-format
+msgid ""
+"Thank you for using %(site_name)s!\n"
+"%(site_domain)s"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\password_reset_key_subject.txt:3
+msgid "Password Reset E-mail"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email_confirm.html:6
+#: .\general_website\templates\allauth\account\email_confirm.html:10
+msgid "Confirm E-mail Address"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email_confirm.html:16
+#, python-format
+msgid ""
+"Please confirm that %(email)s is an e-mail "
+"address for user %(user_display)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email_confirm.html:20
+msgid "Confirm"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email_confirm.html:27
+#, python-format
+msgid ""
+"This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request ."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:6
+#: .\general_website\templates\allauth\account\login.html:10
+#: .\general_website\templates\allauth\account\login.html:43
+msgid "Sign In"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:15
+#, python-format
+msgid ""
+"Please sign in with one\n"
+"of your existing third party accounts. Or, sign "
+"up \n"
+"for a %(site_name)s account and sign in below:"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:25
+msgid "or"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:32
+#, python-format
+msgid ""
+"If you have not created an account yet, then please\n"
+"sign up first."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:42
+msgid "Forgot Password?"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\logout.html:5
+#: .\general_website\templates\allauth\account\logout.html:8
+#: .\general_website\templates\allauth\account\logout.html:17
+msgid "Sign Out"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\logout.html:10
+msgid "Are you sure you want to sign out?"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\cannot_delete_primary_email.txt:2
+#, python-format
+msgid "You cannot remove your primary e-mail address (%(email)s)."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\email_confirmation_sent.txt:2
+#, python-format
+msgid "Confirmation e-mail sent to %(email)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\email_confirmed.txt:2
+#, python-format
+msgid "You have confirmed %(email)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\email_deleted.txt:2
+#, python-format
+msgid "Removed e-mail address %(email)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\logged_in.txt:4
+#, python-format
+msgid "Successfully signed in as %(name)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\logged_out.txt:2
+msgid "You have signed out."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\password_changed.txt:2
+msgid "Password successfully changed."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\password_set.txt:2
+msgid "Password successfully set."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\primary_email_set.txt:2
+msgid "Primary e-mail address set."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\unverified_primary_email.txt:2
+msgid "Your primary e-mail address must be verified."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_change.html:5
+#: .\general_website\templates\allauth\account\password_change.html:8
+#: .\general_website\templates\allauth\account\password_change.html:13
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:4
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:7
+#: .\general_website\templates\allauth\account\password_reset_from_key_done.html:4
+#: .\general_website\templates\allauth\account\password_reset_from_key_done.html:7
+#: .\general_website\templates\general_website\profile.html:28
+msgid "Change Password"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset.html:6
+#: .\general_website\templates\allauth\account\password_reset.html:10
+#: .\general_website\templates\allauth\account\password_reset_done.html:6
+#: .\general_website\templates\allauth\account\password_reset_done.html:9
+msgid "Password Reset"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset.html:15
+msgid ""
+"Forgotten your password? Enter your e-mail address below, and we'll send you "
+"an e-mail allowing you to reset it."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset.html:20
+msgid "Reset My Password"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset.html:23
+msgid "Please contact us if you have any trouble resetting your password."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_done.html:15
+msgid ""
+"We have sent you an e-mail. Please contact us if you do not receive it "
+"within a few minutes."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:7
+msgid "Bad Token"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:11
+#, python-format
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used. Please request a new password reset"
+"a>."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:17
+msgid "change password"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:20
+#: .\general_website\templates\allauth\account\password_reset_from_key_done.html:8
+msgid "Your password is now changed."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_set.html:5
+#: .\general_website\templates\allauth\account\password_set.html:8
+#: .\general_website\templates\allauth\account\password_set.html:13
+msgid "Set Password"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup.html:5
+#: .\general_website\templates\allauth\socialaccount\signup.html:5
+msgid "Signup"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup.html:8
+#: .\general_website\templates\allauth\account\signup.html:18
+#: .\general_website\templates\allauth\socialaccount\signup.html:8
+#: .\general_website\templates\allauth\socialaccount\signup.html:19
+msgid "Sign Up"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup.html:10
+#, python-format
+msgid ""
+"Already have an account? Then please sign in ."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup_closed.html:5
+#: .\general_website\templates\allauth\account\signup_closed.html:8
+msgid "Sign Up Closed"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup_closed.html:10
+msgid "We are sorry, but the sign up is currently closed."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\snippets\already_logged_in.html:5
+msgid "Note"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\snippets\already_logged_in.html:5
+#, python-format
+msgid "you are already logged in as %(user_display)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verification_sent.html:5
+#: .\general_website\templates\allauth\account\verification_sent.html:8
+#: .\general_website\templates\allauth\account\verified_email_required.html:5
+#: .\general_website\templates\allauth\account\verified_email_required.html:8
+msgid "Verify Your E-mail Address"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verification_sent.html:10
+msgid ""
+"We have sent an e-mail to you for verification. Follow the link provided to "
+"finalize the signup process. Please contact us if you do not receive it "
+"within a few minutes."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verified_email_required.html:12
+msgid ""
+"This part of the site requires us to verify that\n"
+"you are who you claim to be. For this purpose, we require that you\n"
+"verify ownership of your e-mail address. "
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verified_email_required.html:16
+msgid ""
+"We have sent an e-mail to you for\n"
+"verification. Please click on the link inside this e-mail. Please\n"
+"contact us if you do not receive it within a few minutes."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verified_email_required.html:20
+#, python-format
+msgid ""
+"Note: you can still change your e-"
+"mail address ."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\authentication_error.html:5
+#: .\general_website\templates\allauth\socialaccount\authentication_error.html:8
+msgid "Social Network Login Failure"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\authentication_error.html:10
+msgid ""
+"An error occurred while attempting to login via your social network account."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\connections.html:5
+#: .\general_website\templates\allauth\socialaccount\connections.html:8
+msgid "Account Connections"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\connections.html:11
+msgid ""
+"You can sign in to your account using any of the following third party "
+"accounts:"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\connections.html:42
+msgid ""
+"You currently have no social network accounts connected to this account."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\connections.html:45
+msgid "Add a 3rd Party Account"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\login_cancelled.html:5
+#: .\general_website\templates\allauth\socialaccount\login_cancelled.html:9
+msgid "Login Cancelled"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\login_cancelled.html:13
+#, python-format
+msgid ""
+"You decided to cancel logging in to our site using one of your existing "
+"accounts. If this was a mistake, please proceed to sign in ."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\messages\account_connected.txt:2
+msgid "The social account has been connected."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\messages\account_connected_other.txt:2
+msgid "The social account is already connected to a different account."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\messages\account_disconnected.txt:2
+msgid "The social account has been disconnected."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\signup.html:10
+#, python-format
+msgid ""
+"You are about to use your %(provider_name)s account to login to\n"
+"%(site_name)s. As a final step, please complete the following form:"
+msgstr ""
+
+#: .\general_website\templates\general_website\error.html:15
+msgid "Unknown error"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:61
+msgid "Data Type"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:63
+msgid "Trinkets"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:64
+msgid "Azerite"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:65
+msgid "Races"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:71
+msgid "Fight Style"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:73
+msgid "Patchwerk"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:74
+msgid "HecticAddCleave"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:78
+msgid "Type Specification"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:80
+msgid "Trait stacking"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:81
+msgid "Itemlevel"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:82
+msgid "Head"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:83
+msgid "Shoulders"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:84
+msgid "Chest"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:88
+msgid "Azerite Tier"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:95
+msgid "Tier 3 & 4"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:97
+msgid "Tier 2"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:101
+msgid "Advanced Options"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:103
+msgid "Show"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_base.html:15
+msgid "Become a Patron"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_bottom_nav.html:17
+msgid "FAQ"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_bottom_nav.html:24
+msgid "Report an error"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_bottom_nav.html:32
+msgid "Patreon"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_head.html:7
+msgid "data for all"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_settings_nav.html:14
+#: .\general_website\templates\general_website\layout_top_nav.html:35
+#: .\general_website\templates\general_website\settings.html:15
+msgid "Settings"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_settings_nav.html:16
+#: .\general_website\templates\general_website\layout_top_nav.html:20
+msgid "General"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_settings_nav.html:23
+#: .\general_website\templates\general_website\profile.html:16
+msgid "Profile"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_settings_nav.html:28
+msgid "Connections"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:28
+#: .\general_website\templates\general_website\login.html:14
+msgid "Login"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:29
+msgid "Register"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:32
+msgid "Sims"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:33
+msgid "Admin"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:37
+msgid "Logout"
+msgstr ""
+
+#: .\general_website\templates\general_website\login.html:15
+#: .\general_website\templates\general_website\signup.html:12
+msgid ""
+"I couldn't care less about your data. Nothing is shared with others and data "
+"is wiped regularly."
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:12
+msgid "Portals"
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:14
+msgid ""
+"Ever wondered what portals exist in the game? So did I. Here is a list of "
+"them. Let me know about more fixed position portals. This list is NOT "
+"intended to include teleporting items or skills."
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:15
+msgid ""
+"And of course Blizzard nuked portals the moment I started building this "
+"page. I'm sorry."
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:32
+msgid "Target"
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:33
+msgid "Location"
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:34
+msgid "Coordinates"
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:35
+msgid "More information"
+msgstr ""
+
+#: .\general_website\templates\general_website\profile.html:17
+msgid "Manage your profile information."
+msgstr ""
+
+#: .\general_website\templates\general_website\profile.html:23
+msgid "Save changes"
+msgstr ""
+
+#: .\general_website\templates\general_website\profile.html:33
+msgid "Change password"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:20
+msgid "Language"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:78
+msgid "Chart mode"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:82
+msgid "Δ - absolute dps gain"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:88
+#, python-format
+msgid "%% - relative dps gain"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:94
+msgid "|x| - absolute value"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:103
+msgid "active"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:107
+msgid "Apply changes"
+msgstr ""
+
+#: .\general_website\templates\general_website\signup.html:11
+msgid "Sign up"
+msgstr ""
+
+#: .\general_website\views\account.py:43
+msgid "Couldn't log in. Please check your input."
+msgstr ""
+
+#: .\general_website\views\account.py:82
+msgid "Account created."
+msgstr ""
+
+#: .\general_website\views\account.py:85
+msgid "Account creation failed."
+msgstr ""
+
+#: .\general_website\views\account.py:98
+msgid "Profile was updated!"
+msgstr ""
+
+#: .\general_website\views\account.py:125
+msgid "Password was updated!"
+msgstr ""
+
+#: .\general_website\views\account.py:127
+msgid "Password update failed. Check your input."
+msgstr ""
+
+#: .\general_website\views\error.py:10 .\general_website\views\error.py:22
+msgid "Page not found"
+msgstr ""
+
+#: .\general_website\views\error.py:26
+msgid "Something went wrong. Try again later"
+msgstr ""
diff --git a/bloodmallet/general_website/locale/de/LC_MESSAGES/django.po b/bloodmallet/general_website/locale/de/LC_MESSAGES/django.po
index 8fb9535d..d533c417 100644
--- a/bloodmallet/general_website/locale/de/LC_MESSAGES/django.po
+++ b/bloodmallet/general_website/locale/de/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-03-07 23:30+0100\n"
+"POT-Creation-Date: 2019-03-07 23:34+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
diff --git a/bloodmallet/general_website/locale/es/LC_MESSAGES/django.po b/bloodmallet/general_website/locale/es/LC_MESSAGES/django.po
new file mode 100644
index 00000000..82647cb1
--- /dev/null
+++ b/bloodmallet/general_website/locale/es/LC_MESSAGES/django.po
@@ -0,0 +1,695 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR , YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-03-07 23:35+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+#: .\general_website\templates\allauth\account\account_inactive.html:5
+#: .\general_website\templates\allauth\account\account_inactive.html:8
+msgid "Account Inactive"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\account_inactive.html:10
+msgid "This account is inactive."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:5
+msgid "Account"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:8
+msgid "E-mail Addresses"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:10
+msgid "The following e-mail addresses are associated with your account:"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:24
+msgid "Verified"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:26
+msgid "Unverified"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:28
+msgid "Primary"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:34
+msgid "Make Primary"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:35
+msgid "Re-send Verification"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:36
+#: .\general_website\templates\allauth\socialaccount\connections.html:34
+msgid "Remove"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:43
+msgid "Warning:"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:43
+msgid ""
+"You currently do not have any e-mail address set up. You should really add "
+"an e-mail address so you can receive notifications, reset your password, etc."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:48
+msgid "Add E-mail Address"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:53
+msgid "Add E-mail"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:62
+msgid "Do you really want to remove the selected e-mail address?"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\email_confirmation_message.txt:1
+#, python-format
+msgid ""
+"Hello from %(site_name)s!\n"
+"\n"
+"You're receiving this e-mail because user %(user_display)s has given yours "
+"as an e-mail address to connect their account.\n"
+"\n"
+"To confirm this is correct, go to %(activate_url)s\n"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\email_confirmation_message.txt:7
+#, python-format
+msgid ""
+"Thank you from %(site_name)s!\n"
+"%(site_domain)s"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\email_confirmation_subject.txt:3
+msgid "Please Confirm Your E-mail Address"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\password_reset_key_message.txt:1
+#, python-format
+msgid ""
+"Hello from %(site_name)s!\n"
+"\n"
+"You're receiving this e-mail because you or someone else has requested a "
+"password for your user account.\n"
+"It can be safely ignored if you did not request a password reset. Click the "
+"link below to reset your password."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\password_reset_key_message.txt:8
+#, python-format
+msgid "In case you forgot, your username is %(username)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\password_reset_key_message.txt:10
+#, python-format
+msgid ""
+"Thank you for using %(site_name)s!\n"
+"%(site_domain)s"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\password_reset_key_subject.txt:3
+msgid "Password Reset E-mail"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email_confirm.html:6
+#: .\general_website\templates\allauth\account\email_confirm.html:10
+msgid "Confirm E-mail Address"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email_confirm.html:16
+#, python-format
+msgid ""
+"Please confirm that %(email)s is an e-mail "
+"address for user %(user_display)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email_confirm.html:20
+msgid "Confirm"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email_confirm.html:27
+#, python-format
+msgid ""
+"This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request ."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:6
+#: .\general_website\templates\allauth\account\login.html:10
+#: .\general_website\templates\allauth\account\login.html:43
+msgid "Sign In"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:15
+#, python-format
+msgid ""
+"Please sign in with one\n"
+"of your existing third party accounts. Or, sign "
+"up \n"
+"for a %(site_name)s account and sign in below:"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:25
+msgid "or"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:32
+#, python-format
+msgid ""
+"If you have not created an account yet, then please\n"
+"sign up first."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:42
+msgid "Forgot Password?"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\logout.html:5
+#: .\general_website\templates\allauth\account\logout.html:8
+#: .\general_website\templates\allauth\account\logout.html:17
+msgid "Sign Out"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\logout.html:10
+msgid "Are you sure you want to sign out?"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\cannot_delete_primary_email.txt:2
+#, python-format
+msgid "You cannot remove your primary e-mail address (%(email)s)."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\email_confirmation_sent.txt:2
+#, python-format
+msgid "Confirmation e-mail sent to %(email)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\email_confirmed.txt:2
+#, python-format
+msgid "You have confirmed %(email)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\email_deleted.txt:2
+#, python-format
+msgid "Removed e-mail address %(email)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\logged_in.txt:4
+#, python-format
+msgid "Successfully signed in as %(name)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\logged_out.txt:2
+msgid "You have signed out."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\password_changed.txt:2
+msgid "Password successfully changed."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\password_set.txt:2
+msgid "Password successfully set."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\primary_email_set.txt:2
+msgid "Primary e-mail address set."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\unverified_primary_email.txt:2
+msgid "Your primary e-mail address must be verified."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_change.html:5
+#: .\general_website\templates\allauth\account\password_change.html:8
+#: .\general_website\templates\allauth\account\password_change.html:13
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:4
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:7
+#: .\general_website\templates\allauth\account\password_reset_from_key_done.html:4
+#: .\general_website\templates\allauth\account\password_reset_from_key_done.html:7
+#: .\general_website\templates\general_website\profile.html:28
+msgid "Change Password"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset.html:6
+#: .\general_website\templates\allauth\account\password_reset.html:10
+#: .\general_website\templates\allauth\account\password_reset_done.html:6
+#: .\general_website\templates\allauth\account\password_reset_done.html:9
+msgid "Password Reset"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset.html:15
+msgid ""
+"Forgotten your password? Enter your e-mail address below, and we'll send you "
+"an e-mail allowing you to reset it."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset.html:20
+msgid "Reset My Password"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset.html:23
+msgid "Please contact us if you have any trouble resetting your password."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_done.html:15
+msgid ""
+"We have sent you an e-mail. Please contact us if you do not receive it "
+"within a few minutes."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:7
+msgid "Bad Token"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:11
+#, python-format
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used. Please request a new password reset"
+"a>."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:17
+msgid "change password"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:20
+#: .\general_website\templates\allauth\account\password_reset_from_key_done.html:8
+msgid "Your password is now changed."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_set.html:5
+#: .\general_website\templates\allauth\account\password_set.html:8
+#: .\general_website\templates\allauth\account\password_set.html:13
+msgid "Set Password"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup.html:5
+#: .\general_website\templates\allauth\socialaccount\signup.html:5
+msgid "Signup"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup.html:8
+#: .\general_website\templates\allauth\account\signup.html:18
+#: .\general_website\templates\allauth\socialaccount\signup.html:8
+#: .\general_website\templates\allauth\socialaccount\signup.html:19
+msgid "Sign Up"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup.html:10
+#, python-format
+msgid ""
+"Already have an account? Then please sign in ."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup_closed.html:5
+#: .\general_website\templates\allauth\account\signup_closed.html:8
+msgid "Sign Up Closed"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup_closed.html:10
+msgid "We are sorry, but the sign up is currently closed."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\snippets\already_logged_in.html:5
+msgid "Note"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\snippets\already_logged_in.html:5
+#, python-format
+msgid "you are already logged in as %(user_display)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verification_sent.html:5
+#: .\general_website\templates\allauth\account\verification_sent.html:8
+#: .\general_website\templates\allauth\account\verified_email_required.html:5
+#: .\general_website\templates\allauth\account\verified_email_required.html:8
+msgid "Verify Your E-mail Address"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verification_sent.html:10
+msgid ""
+"We have sent an e-mail to you for verification. Follow the link provided to "
+"finalize the signup process. Please contact us if you do not receive it "
+"within a few minutes."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verified_email_required.html:12
+msgid ""
+"This part of the site requires us to verify that\n"
+"you are who you claim to be. For this purpose, we require that you\n"
+"verify ownership of your e-mail address. "
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verified_email_required.html:16
+msgid ""
+"We have sent an e-mail to you for\n"
+"verification. Please click on the link inside this e-mail. Please\n"
+"contact us if you do not receive it within a few minutes."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verified_email_required.html:20
+#, python-format
+msgid ""
+"Note: you can still change your e-"
+"mail address ."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\authentication_error.html:5
+#: .\general_website\templates\allauth\socialaccount\authentication_error.html:8
+msgid "Social Network Login Failure"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\authentication_error.html:10
+msgid ""
+"An error occurred while attempting to login via your social network account."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\connections.html:5
+#: .\general_website\templates\allauth\socialaccount\connections.html:8
+msgid "Account Connections"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\connections.html:11
+msgid ""
+"You can sign in to your account using any of the following third party "
+"accounts:"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\connections.html:42
+msgid ""
+"You currently have no social network accounts connected to this account."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\connections.html:45
+msgid "Add a 3rd Party Account"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\login_cancelled.html:5
+#: .\general_website\templates\allauth\socialaccount\login_cancelled.html:9
+msgid "Login Cancelled"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\login_cancelled.html:13
+#, python-format
+msgid ""
+"You decided to cancel logging in to our site using one of your existing "
+"accounts. If this was a mistake, please proceed to sign in ."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\messages\account_connected.txt:2
+msgid "The social account has been connected."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\messages\account_connected_other.txt:2
+msgid "The social account is already connected to a different account."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\messages\account_disconnected.txt:2
+msgid "The social account has been disconnected."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\signup.html:10
+#, python-format
+msgid ""
+"You are about to use your %(provider_name)s account to login to\n"
+"%(site_name)s. As a final step, please complete the following form:"
+msgstr ""
+
+#: .\general_website\templates\general_website\error.html:15
+msgid "Unknown error"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:61
+msgid "Data Type"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:63
+msgid "Trinkets"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:64
+msgid "Azerite"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:65
+msgid "Races"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:71
+msgid "Fight Style"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:73
+msgid "Patchwerk"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:74
+msgid "HecticAddCleave"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:78
+msgid "Type Specification"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:80
+msgid "Trait stacking"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:81
+msgid "Itemlevel"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:82
+msgid "Head"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:83
+msgid "Shoulders"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:84
+msgid "Chest"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:88
+msgid "Azerite Tier"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:95
+msgid "Tier 3 & 4"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:97
+msgid "Tier 2"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:101
+msgid "Advanced Options"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:103
+msgid "Show"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_base.html:15
+msgid "Become a Patron"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_bottom_nav.html:17
+msgid "FAQ"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_bottom_nav.html:24
+msgid "Report an error"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_bottom_nav.html:32
+msgid "Patreon"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_head.html:7
+msgid "data for all"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_settings_nav.html:14
+#: .\general_website\templates\general_website\layout_top_nav.html:35
+#: .\general_website\templates\general_website\settings.html:15
+msgid "Settings"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_settings_nav.html:16
+#: .\general_website\templates\general_website\layout_top_nav.html:20
+msgid "General"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_settings_nav.html:23
+#: .\general_website\templates\general_website\profile.html:16
+msgid "Profile"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_settings_nav.html:28
+msgid "Connections"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:28
+#: .\general_website\templates\general_website\login.html:14
+msgid "Login"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:29
+msgid "Register"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:32
+msgid "Sims"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:33
+msgid "Admin"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:37
+msgid "Logout"
+msgstr ""
+
+#: .\general_website\templates\general_website\login.html:15
+#: .\general_website\templates\general_website\signup.html:12
+msgid ""
+"I couldn't care less about your data. Nothing is shared with others and data "
+"is wiped regularly."
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:12
+msgid "Portals"
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:14
+msgid ""
+"Ever wondered what portals exist in the game? So did I. Here is a list of "
+"them. Let me know about more fixed position portals. This list is NOT "
+"intended to include teleporting items or skills."
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:15
+msgid ""
+"And of course Blizzard nuked portals the moment I started building this "
+"page. I'm sorry."
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:32
+msgid "Target"
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:33
+msgid "Location"
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:34
+msgid "Coordinates"
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:35
+msgid "More information"
+msgstr ""
+
+#: .\general_website\templates\general_website\profile.html:17
+msgid "Manage your profile information."
+msgstr ""
+
+#: .\general_website\templates\general_website\profile.html:23
+msgid "Save changes"
+msgstr ""
+
+#: .\general_website\templates\general_website\profile.html:33
+msgid "Change password"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:20
+msgid "Language"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:78
+msgid "Chart mode"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:82
+msgid "Δ - absolute dps gain"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:88
+#, python-format
+msgid "%% - relative dps gain"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:94
+msgid "|x| - absolute value"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:103
+msgid "active"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:107
+msgid "Apply changes"
+msgstr ""
+
+#: .\general_website\templates\general_website\signup.html:11
+msgid "Sign up"
+msgstr ""
+
+#: .\general_website\views\account.py:43
+msgid "Couldn't log in. Please check your input."
+msgstr ""
+
+#: .\general_website\views\account.py:82
+msgid "Account created."
+msgstr ""
+
+#: .\general_website\views\account.py:85
+msgid "Account creation failed."
+msgstr ""
+
+#: .\general_website\views\account.py:98
+msgid "Profile was updated!"
+msgstr ""
+
+#: .\general_website\views\account.py:125
+msgid "Password was updated!"
+msgstr ""
+
+#: .\general_website\views\account.py:127
+msgid "Password update failed. Check your input."
+msgstr ""
+
+#: .\general_website\views\error.py:10 .\general_website\views\error.py:22
+msgid "Page not found"
+msgstr ""
+
+#: .\general_website\views\error.py:26
+msgid "Something went wrong. Try again later"
+msgstr ""
diff --git a/bloodmallet/general_website/locale/fr/LC_MESSAGES/django.po b/bloodmallet/general_website/locale/fr/LC_MESSAGES/django.po
new file mode 100644
index 00000000..ea985ac0
--- /dev/null
+++ b/bloodmallet/general_website/locale/fr/LC_MESSAGES/django.po
@@ -0,0 +1,695 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR , YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-03-07 23:35+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+#: .\general_website\templates\allauth\account\account_inactive.html:5
+#: .\general_website\templates\allauth\account\account_inactive.html:8
+msgid "Account Inactive"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\account_inactive.html:10
+msgid "This account is inactive."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:5
+msgid "Account"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:8
+msgid "E-mail Addresses"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:10
+msgid "The following e-mail addresses are associated with your account:"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:24
+msgid "Verified"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:26
+msgid "Unverified"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:28
+msgid "Primary"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:34
+msgid "Make Primary"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:35
+msgid "Re-send Verification"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:36
+#: .\general_website\templates\allauth\socialaccount\connections.html:34
+msgid "Remove"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:43
+msgid "Warning:"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:43
+msgid ""
+"You currently do not have any e-mail address set up. You should really add "
+"an e-mail address so you can receive notifications, reset your password, etc."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:48
+msgid "Add E-mail Address"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:53
+msgid "Add E-mail"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:62
+msgid "Do you really want to remove the selected e-mail address?"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\email_confirmation_message.txt:1
+#, python-format
+msgid ""
+"Hello from %(site_name)s!\n"
+"\n"
+"You're receiving this e-mail because user %(user_display)s has given yours "
+"as an e-mail address to connect their account.\n"
+"\n"
+"To confirm this is correct, go to %(activate_url)s\n"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\email_confirmation_message.txt:7
+#, python-format
+msgid ""
+"Thank you from %(site_name)s!\n"
+"%(site_domain)s"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\email_confirmation_subject.txt:3
+msgid "Please Confirm Your E-mail Address"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\password_reset_key_message.txt:1
+#, python-format
+msgid ""
+"Hello from %(site_name)s!\n"
+"\n"
+"You're receiving this e-mail because you or someone else has requested a "
+"password for your user account.\n"
+"It can be safely ignored if you did not request a password reset. Click the "
+"link below to reset your password."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\password_reset_key_message.txt:8
+#, python-format
+msgid "In case you forgot, your username is %(username)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\password_reset_key_message.txt:10
+#, python-format
+msgid ""
+"Thank you for using %(site_name)s!\n"
+"%(site_domain)s"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\password_reset_key_subject.txt:3
+msgid "Password Reset E-mail"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email_confirm.html:6
+#: .\general_website\templates\allauth\account\email_confirm.html:10
+msgid "Confirm E-mail Address"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email_confirm.html:16
+#, python-format
+msgid ""
+"Please confirm that %(email)s is an e-mail "
+"address for user %(user_display)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email_confirm.html:20
+msgid "Confirm"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email_confirm.html:27
+#, python-format
+msgid ""
+"This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request ."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:6
+#: .\general_website\templates\allauth\account\login.html:10
+#: .\general_website\templates\allauth\account\login.html:43
+msgid "Sign In"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:15
+#, python-format
+msgid ""
+"Please sign in with one\n"
+"of your existing third party accounts. Or, sign "
+"up \n"
+"for a %(site_name)s account and sign in below:"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:25
+msgid "or"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:32
+#, python-format
+msgid ""
+"If you have not created an account yet, then please\n"
+"sign up first."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:42
+msgid "Forgot Password?"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\logout.html:5
+#: .\general_website\templates\allauth\account\logout.html:8
+#: .\general_website\templates\allauth\account\logout.html:17
+msgid "Sign Out"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\logout.html:10
+msgid "Are you sure you want to sign out?"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\cannot_delete_primary_email.txt:2
+#, python-format
+msgid "You cannot remove your primary e-mail address (%(email)s)."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\email_confirmation_sent.txt:2
+#, python-format
+msgid "Confirmation e-mail sent to %(email)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\email_confirmed.txt:2
+#, python-format
+msgid "You have confirmed %(email)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\email_deleted.txt:2
+#, python-format
+msgid "Removed e-mail address %(email)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\logged_in.txt:4
+#, python-format
+msgid "Successfully signed in as %(name)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\logged_out.txt:2
+msgid "You have signed out."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\password_changed.txt:2
+msgid "Password successfully changed."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\password_set.txt:2
+msgid "Password successfully set."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\primary_email_set.txt:2
+msgid "Primary e-mail address set."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\unverified_primary_email.txt:2
+msgid "Your primary e-mail address must be verified."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_change.html:5
+#: .\general_website\templates\allauth\account\password_change.html:8
+#: .\general_website\templates\allauth\account\password_change.html:13
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:4
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:7
+#: .\general_website\templates\allauth\account\password_reset_from_key_done.html:4
+#: .\general_website\templates\allauth\account\password_reset_from_key_done.html:7
+#: .\general_website\templates\general_website\profile.html:28
+msgid "Change Password"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset.html:6
+#: .\general_website\templates\allauth\account\password_reset.html:10
+#: .\general_website\templates\allauth\account\password_reset_done.html:6
+#: .\general_website\templates\allauth\account\password_reset_done.html:9
+msgid "Password Reset"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset.html:15
+msgid ""
+"Forgotten your password? Enter your e-mail address below, and we'll send you "
+"an e-mail allowing you to reset it."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset.html:20
+msgid "Reset My Password"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset.html:23
+msgid "Please contact us if you have any trouble resetting your password."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_done.html:15
+msgid ""
+"We have sent you an e-mail. Please contact us if you do not receive it "
+"within a few minutes."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:7
+msgid "Bad Token"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:11
+#, python-format
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used. Please request a new password reset"
+"a>."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:17
+msgid "change password"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:20
+#: .\general_website\templates\allauth\account\password_reset_from_key_done.html:8
+msgid "Your password is now changed."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_set.html:5
+#: .\general_website\templates\allauth\account\password_set.html:8
+#: .\general_website\templates\allauth\account\password_set.html:13
+msgid "Set Password"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup.html:5
+#: .\general_website\templates\allauth\socialaccount\signup.html:5
+msgid "Signup"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup.html:8
+#: .\general_website\templates\allauth\account\signup.html:18
+#: .\general_website\templates\allauth\socialaccount\signup.html:8
+#: .\general_website\templates\allauth\socialaccount\signup.html:19
+msgid "Sign Up"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup.html:10
+#, python-format
+msgid ""
+"Already have an account? Then please sign in ."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup_closed.html:5
+#: .\general_website\templates\allauth\account\signup_closed.html:8
+msgid "Sign Up Closed"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup_closed.html:10
+msgid "We are sorry, but the sign up is currently closed."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\snippets\already_logged_in.html:5
+msgid "Note"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\snippets\already_logged_in.html:5
+#, python-format
+msgid "you are already logged in as %(user_display)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verification_sent.html:5
+#: .\general_website\templates\allauth\account\verification_sent.html:8
+#: .\general_website\templates\allauth\account\verified_email_required.html:5
+#: .\general_website\templates\allauth\account\verified_email_required.html:8
+msgid "Verify Your E-mail Address"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verification_sent.html:10
+msgid ""
+"We have sent an e-mail to you for verification. Follow the link provided to "
+"finalize the signup process. Please contact us if you do not receive it "
+"within a few minutes."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verified_email_required.html:12
+msgid ""
+"This part of the site requires us to verify that\n"
+"you are who you claim to be. For this purpose, we require that you\n"
+"verify ownership of your e-mail address. "
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verified_email_required.html:16
+msgid ""
+"We have sent an e-mail to you for\n"
+"verification. Please click on the link inside this e-mail. Please\n"
+"contact us if you do not receive it within a few minutes."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verified_email_required.html:20
+#, python-format
+msgid ""
+"Note: you can still change your e-"
+"mail address ."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\authentication_error.html:5
+#: .\general_website\templates\allauth\socialaccount\authentication_error.html:8
+msgid "Social Network Login Failure"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\authentication_error.html:10
+msgid ""
+"An error occurred while attempting to login via your social network account."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\connections.html:5
+#: .\general_website\templates\allauth\socialaccount\connections.html:8
+msgid "Account Connections"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\connections.html:11
+msgid ""
+"You can sign in to your account using any of the following third party "
+"accounts:"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\connections.html:42
+msgid ""
+"You currently have no social network accounts connected to this account."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\connections.html:45
+msgid "Add a 3rd Party Account"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\login_cancelled.html:5
+#: .\general_website\templates\allauth\socialaccount\login_cancelled.html:9
+msgid "Login Cancelled"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\login_cancelled.html:13
+#, python-format
+msgid ""
+"You decided to cancel logging in to our site using one of your existing "
+"accounts. If this was a mistake, please proceed to sign in ."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\messages\account_connected.txt:2
+msgid "The social account has been connected."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\messages\account_connected_other.txt:2
+msgid "The social account is already connected to a different account."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\messages\account_disconnected.txt:2
+msgid "The social account has been disconnected."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\signup.html:10
+#, python-format
+msgid ""
+"You are about to use your %(provider_name)s account to login to\n"
+"%(site_name)s. As a final step, please complete the following form:"
+msgstr ""
+
+#: .\general_website\templates\general_website\error.html:15
+msgid "Unknown error"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:61
+msgid "Data Type"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:63
+msgid "Trinkets"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:64
+msgid "Azerite"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:65
+msgid "Races"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:71
+msgid "Fight Style"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:73
+msgid "Patchwerk"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:74
+msgid "HecticAddCleave"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:78
+msgid "Type Specification"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:80
+msgid "Trait stacking"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:81
+msgid "Itemlevel"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:82
+msgid "Head"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:83
+msgid "Shoulders"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:84
+msgid "Chest"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:88
+msgid "Azerite Tier"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:95
+msgid "Tier 3 & 4"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:97
+msgid "Tier 2"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:101
+msgid "Advanced Options"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:103
+msgid "Show"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_base.html:15
+msgid "Become a Patron"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_bottom_nav.html:17
+msgid "FAQ"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_bottom_nav.html:24
+msgid "Report an error"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_bottom_nav.html:32
+msgid "Patreon"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_head.html:7
+msgid "data for all"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_settings_nav.html:14
+#: .\general_website\templates\general_website\layout_top_nav.html:35
+#: .\general_website\templates\general_website\settings.html:15
+msgid "Settings"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_settings_nav.html:16
+#: .\general_website\templates\general_website\layout_top_nav.html:20
+msgid "General"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_settings_nav.html:23
+#: .\general_website\templates\general_website\profile.html:16
+msgid "Profile"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_settings_nav.html:28
+msgid "Connections"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:28
+#: .\general_website\templates\general_website\login.html:14
+msgid "Login"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:29
+msgid "Register"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:32
+msgid "Sims"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:33
+msgid "Admin"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:37
+msgid "Logout"
+msgstr ""
+
+#: .\general_website\templates\general_website\login.html:15
+#: .\general_website\templates\general_website\signup.html:12
+msgid ""
+"I couldn't care less about your data. Nothing is shared with others and data "
+"is wiped regularly."
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:12
+msgid "Portals"
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:14
+msgid ""
+"Ever wondered what portals exist in the game? So did I. Here is a list of "
+"them. Let me know about more fixed position portals. This list is NOT "
+"intended to include teleporting items or skills."
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:15
+msgid ""
+"And of course Blizzard nuked portals the moment I started building this "
+"page. I'm sorry."
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:32
+msgid "Target"
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:33
+msgid "Location"
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:34
+msgid "Coordinates"
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:35
+msgid "More information"
+msgstr ""
+
+#: .\general_website\templates\general_website\profile.html:17
+msgid "Manage your profile information."
+msgstr ""
+
+#: .\general_website\templates\general_website\profile.html:23
+msgid "Save changes"
+msgstr ""
+
+#: .\general_website\templates\general_website\profile.html:33
+msgid "Change password"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:20
+msgid "Language"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:78
+msgid "Chart mode"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:82
+msgid "Δ - absolute dps gain"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:88
+#, python-format
+msgid "%% - relative dps gain"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:94
+msgid "|x| - absolute value"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:103
+msgid "active"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:107
+msgid "Apply changes"
+msgstr ""
+
+#: .\general_website\templates\general_website\signup.html:11
+msgid "Sign up"
+msgstr ""
+
+#: .\general_website\views\account.py:43
+msgid "Couldn't log in. Please check your input."
+msgstr ""
+
+#: .\general_website\views\account.py:82
+msgid "Account created."
+msgstr ""
+
+#: .\general_website\views\account.py:85
+msgid "Account creation failed."
+msgstr ""
+
+#: .\general_website\views\account.py:98
+msgid "Profile was updated!"
+msgstr ""
+
+#: .\general_website\views\account.py:125
+msgid "Password was updated!"
+msgstr ""
+
+#: .\general_website\views\account.py:127
+msgid "Password update failed. Check your input."
+msgstr ""
+
+#: .\general_website\views\error.py:10 .\general_website\views\error.py:22
+msgid "Page not found"
+msgstr ""
+
+#: .\general_website\views\error.py:26
+msgid "Something went wrong. Try again later"
+msgstr ""
diff --git a/bloodmallet/general_website/locale/it/LC_MESSAGES/django.po b/bloodmallet/general_website/locale/it/LC_MESSAGES/django.po
new file mode 100644
index 00000000..82647cb1
--- /dev/null
+++ b/bloodmallet/general_website/locale/it/LC_MESSAGES/django.po
@@ -0,0 +1,695 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR , YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-03-07 23:35+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+#: .\general_website\templates\allauth\account\account_inactive.html:5
+#: .\general_website\templates\allauth\account\account_inactive.html:8
+msgid "Account Inactive"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\account_inactive.html:10
+msgid "This account is inactive."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:5
+msgid "Account"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:8
+msgid "E-mail Addresses"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:10
+msgid "The following e-mail addresses are associated with your account:"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:24
+msgid "Verified"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:26
+msgid "Unverified"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:28
+msgid "Primary"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:34
+msgid "Make Primary"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:35
+msgid "Re-send Verification"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:36
+#: .\general_website\templates\allauth\socialaccount\connections.html:34
+msgid "Remove"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:43
+msgid "Warning:"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:43
+msgid ""
+"You currently do not have any e-mail address set up. You should really add "
+"an e-mail address so you can receive notifications, reset your password, etc."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:48
+msgid "Add E-mail Address"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:53
+msgid "Add E-mail"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:62
+msgid "Do you really want to remove the selected e-mail address?"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\email_confirmation_message.txt:1
+#, python-format
+msgid ""
+"Hello from %(site_name)s!\n"
+"\n"
+"You're receiving this e-mail because user %(user_display)s has given yours "
+"as an e-mail address to connect their account.\n"
+"\n"
+"To confirm this is correct, go to %(activate_url)s\n"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\email_confirmation_message.txt:7
+#, python-format
+msgid ""
+"Thank you from %(site_name)s!\n"
+"%(site_domain)s"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\email_confirmation_subject.txt:3
+msgid "Please Confirm Your E-mail Address"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\password_reset_key_message.txt:1
+#, python-format
+msgid ""
+"Hello from %(site_name)s!\n"
+"\n"
+"You're receiving this e-mail because you or someone else has requested a "
+"password for your user account.\n"
+"It can be safely ignored if you did not request a password reset. Click the "
+"link below to reset your password."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\password_reset_key_message.txt:8
+#, python-format
+msgid "In case you forgot, your username is %(username)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\password_reset_key_message.txt:10
+#, python-format
+msgid ""
+"Thank you for using %(site_name)s!\n"
+"%(site_domain)s"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\password_reset_key_subject.txt:3
+msgid "Password Reset E-mail"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email_confirm.html:6
+#: .\general_website\templates\allauth\account\email_confirm.html:10
+msgid "Confirm E-mail Address"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email_confirm.html:16
+#, python-format
+msgid ""
+"Please confirm that %(email)s is an e-mail "
+"address for user %(user_display)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email_confirm.html:20
+msgid "Confirm"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email_confirm.html:27
+#, python-format
+msgid ""
+"This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request ."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:6
+#: .\general_website\templates\allauth\account\login.html:10
+#: .\general_website\templates\allauth\account\login.html:43
+msgid "Sign In"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:15
+#, python-format
+msgid ""
+"Please sign in with one\n"
+"of your existing third party accounts. Or, sign "
+"up \n"
+"for a %(site_name)s account and sign in below:"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:25
+msgid "or"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:32
+#, python-format
+msgid ""
+"If you have not created an account yet, then please\n"
+"sign up first."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:42
+msgid "Forgot Password?"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\logout.html:5
+#: .\general_website\templates\allauth\account\logout.html:8
+#: .\general_website\templates\allauth\account\logout.html:17
+msgid "Sign Out"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\logout.html:10
+msgid "Are you sure you want to sign out?"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\cannot_delete_primary_email.txt:2
+#, python-format
+msgid "You cannot remove your primary e-mail address (%(email)s)."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\email_confirmation_sent.txt:2
+#, python-format
+msgid "Confirmation e-mail sent to %(email)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\email_confirmed.txt:2
+#, python-format
+msgid "You have confirmed %(email)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\email_deleted.txt:2
+#, python-format
+msgid "Removed e-mail address %(email)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\logged_in.txt:4
+#, python-format
+msgid "Successfully signed in as %(name)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\logged_out.txt:2
+msgid "You have signed out."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\password_changed.txt:2
+msgid "Password successfully changed."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\password_set.txt:2
+msgid "Password successfully set."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\primary_email_set.txt:2
+msgid "Primary e-mail address set."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\unverified_primary_email.txt:2
+msgid "Your primary e-mail address must be verified."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_change.html:5
+#: .\general_website\templates\allauth\account\password_change.html:8
+#: .\general_website\templates\allauth\account\password_change.html:13
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:4
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:7
+#: .\general_website\templates\allauth\account\password_reset_from_key_done.html:4
+#: .\general_website\templates\allauth\account\password_reset_from_key_done.html:7
+#: .\general_website\templates\general_website\profile.html:28
+msgid "Change Password"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset.html:6
+#: .\general_website\templates\allauth\account\password_reset.html:10
+#: .\general_website\templates\allauth\account\password_reset_done.html:6
+#: .\general_website\templates\allauth\account\password_reset_done.html:9
+msgid "Password Reset"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset.html:15
+msgid ""
+"Forgotten your password? Enter your e-mail address below, and we'll send you "
+"an e-mail allowing you to reset it."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset.html:20
+msgid "Reset My Password"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset.html:23
+msgid "Please contact us if you have any trouble resetting your password."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_done.html:15
+msgid ""
+"We have sent you an e-mail. Please contact us if you do not receive it "
+"within a few minutes."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:7
+msgid "Bad Token"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:11
+#, python-format
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used. Please request a new password reset"
+"a>."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:17
+msgid "change password"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:20
+#: .\general_website\templates\allauth\account\password_reset_from_key_done.html:8
+msgid "Your password is now changed."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_set.html:5
+#: .\general_website\templates\allauth\account\password_set.html:8
+#: .\general_website\templates\allauth\account\password_set.html:13
+msgid "Set Password"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup.html:5
+#: .\general_website\templates\allauth\socialaccount\signup.html:5
+msgid "Signup"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup.html:8
+#: .\general_website\templates\allauth\account\signup.html:18
+#: .\general_website\templates\allauth\socialaccount\signup.html:8
+#: .\general_website\templates\allauth\socialaccount\signup.html:19
+msgid "Sign Up"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup.html:10
+#, python-format
+msgid ""
+"Already have an account? Then please sign in ."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup_closed.html:5
+#: .\general_website\templates\allauth\account\signup_closed.html:8
+msgid "Sign Up Closed"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup_closed.html:10
+msgid "We are sorry, but the sign up is currently closed."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\snippets\already_logged_in.html:5
+msgid "Note"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\snippets\already_logged_in.html:5
+#, python-format
+msgid "you are already logged in as %(user_display)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verification_sent.html:5
+#: .\general_website\templates\allauth\account\verification_sent.html:8
+#: .\general_website\templates\allauth\account\verified_email_required.html:5
+#: .\general_website\templates\allauth\account\verified_email_required.html:8
+msgid "Verify Your E-mail Address"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verification_sent.html:10
+msgid ""
+"We have sent an e-mail to you for verification. Follow the link provided to "
+"finalize the signup process. Please contact us if you do not receive it "
+"within a few minutes."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verified_email_required.html:12
+msgid ""
+"This part of the site requires us to verify that\n"
+"you are who you claim to be. For this purpose, we require that you\n"
+"verify ownership of your e-mail address. "
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verified_email_required.html:16
+msgid ""
+"We have sent an e-mail to you for\n"
+"verification. Please click on the link inside this e-mail. Please\n"
+"contact us if you do not receive it within a few minutes."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verified_email_required.html:20
+#, python-format
+msgid ""
+"Note: you can still change your e-"
+"mail address ."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\authentication_error.html:5
+#: .\general_website\templates\allauth\socialaccount\authentication_error.html:8
+msgid "Social Network Login Failure"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\authentication_error.html:10
+msgid ""
+"An error occurred while attempting to login via your social network account."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\connections.html:5
+#: .\general_website\templates\allauth\socialaccount\connections.html:8
+msgid "Account Connections"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\connections.html:11
+msgid ""
+"You can sign in to your account using any of the following third party "
+"accounts:"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\connections.html:42
+msgid ""
+"You currently have no social network accounts connected to this account."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\connections.html:45
+msgid "Add a 3rd Party Account"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\login_cancelled.html:5
+#: .\general_website\templates\allauth\socialaccount\login_cancelled.html:9
+msgid "Login Cancelled"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\login_cancelled.html:13
+#, python-format
+msgid ""
+"You decided to cancel logging in to our site using one of your existing "
+"accounts. If this was a mistake, please proceed to sign in ."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\messages\account_connected.txt:2
+msgid "The social account has been connected."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\messages\account_connected_other.txt:2
+msgid "The social account is already connected to a different account."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\messages\account_disconnected.txt:2
+msgid "The social account has been disconnected."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\signup.html:10
+#, python-format
+msgid ""
+"You are about to use your %(provider_name)s account to login to\n"
+"%(site_name)s. As a final step, please complete the following form:"
+msgstr ""
+
+#: .\general_website\templates\general_website\error.html:15
+msgid "Unknown error"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:61
+msgid "Data Type"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:63
+msgid "Trinkets"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:64
+msgid "Azerite"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:65
+msgid "Races"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:71
+msgid "Fight Style"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:73
+msgid "Patchwerk"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:74
+msgid "HecticAddCleave"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:78
+msgid "Type Specification"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:80
+msgid "Trait stacking"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:81
+msgid "Itemlevel"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:82
+msgid "Head"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:83
+msgid "Shoulders"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:84
+msgid "Chest"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:88
+msgid "Azerite Tier"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:95
+msgid "Tier 3 & 4"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:97
+msgid "Tier 2"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:101
+msgid "Advanced Options"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:103
+msgid "Show"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_base.html:15
+msgid "Become a Patron"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_bottom_nav.html:17
+msgid "FAQ"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_bottom_nav.html:24
+msgid "Report an error"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_bottom_nav.html:32
+msgid "Patreon"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_head.html:7
+msgid "data for all"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_settings_nav.html:14
+#: .\general_website\templates\general_website\layout_top_nav.html:35
+#: .\general_website\templates\general_website\settings.html:15
+msgid "Settings"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_settings_nav.html:16
+#: .\general_website\templates\general_website\layout_top_nav.html:20
+msgid "General"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_settings_nav.html:23
+#: .\general_website\templates\general_website\profile.html:16
+msgid "Profile"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_settings_nav.html:28
+msgid "Connections"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:28
+#: .\general_website\templates\general_website\login.html:14
+msgid "Login"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:29
+msgid "Register"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:32
+msgid "Sims"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:33
+msgid "Admin"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:37
+msgid "Logout"
+msgstr ""
+
+#: .\general_website\templates\general_website\login.html:15
+#: .\general_website\templates\general_website\signup.html:12
+msgid ""
+"I couldn't care less about your data. Nothing is shared with others and data "
+"is wiped regularly."
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:12
+msgid "Portals"
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:14
+msgid ""
+"Ever wondered what portals exist in the game? So did I. Here is a list of "
+"them. Let me know about more fixed position portals. This list is NOT "
+"intended to include teleporting items or skills."
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:15
+msgid ""
+"And of course Blizzard nuked portals the moment I started building this "
+"page. I'm sorry."
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:32
+msgid "Target"
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:33
+msgid "Location"
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:34
+msgid "Coordinates"
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:35
+msgid "More information"
+msgstr ""
+
+#: .\general_website\templates\general_website\profile.html:17
+msgid "Manage your profile information."
+msgstr ""
+
+#: .\general_website\templates\general_website\profile.html:23
+msgid "Save changes"
+msgstr ""
+
+#: .\general_website\templates\general_website\profile.html:33
+msgid "Change password"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:20
+msgid "Language"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:78
+msgid "Chart mode"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:82
+msgid "Δ - absolute dps gain"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:88
+#, python-format
+msgid "%% - relative dps gain"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:94
+msgid "|x| - absolute value"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:103
+msgid "active"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:107
+msgid "Apply changes"
+msgstr ""
+
+#: .\general_website\templates\general_website\signup.html:11
+msgid "Sign up"
+msgstr ""
+
+#: .\general_website\views\account.py:43
+msgid "Couldn't log in. Please check your input."
+msgstr ""
+
+#: .\general_website\views\account.py:82
+msgid "Account created."
+msgstr ""
+
+#: .\general_website\views\account.py:85
+msgid "Account creation failed."
+msgstr ""
+
+#: .\general_website\views\account.py:98
+msgid "Profile was updated!"
+msgstr ""
+
+#: .\general_website\views\account.py:125
+msgid "Password was updated!"
+msgstr ""
+
+#: .\general_website\views\account.py:127
+msgid "Password update failed. Check your input."
+msgstr ""
+
+#: .\general_website\views\error.py:10 .\general_website\views\error.py:22
+msgid "Page not found"
+msgstr ""
+
+#: .\general_website\views\error.py:26
+msgid "Something went wrong. Try again later"
+msgstr ""
diff --git a/bloodmallet/general_website/locale/ko/LC_MESSAGES/django.po b/bloodmallet/general_website/locale/ko/LC_MESSAGES/django.po
new file mode 100644
index 00000000..8c3e15f2
--- /dev/null
+++ b/bloodmallet/general_website/locale/ko/LC_MESSAGES/django.po
@@ -0,0 +1,695 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR , YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-03-07 23:35+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+#: .\general_website\templates\allauth\account\account_inactive.html:5
+#: .\general_website\templates\allauth\account\account_inactive.html:8
+msgid "Account Inactive"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\account_inactive.html:10
+msgid "This account is inactive."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:5
+msgid "Account"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:8
+msgid "E-mail Addresses"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:10
+msgid "The following e-mail addresses are associated with your account:"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:24
+msgid "Verified"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:26
+msgid "Unverified"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:28
+msgid "Primary"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:34
+msgid "Make Primary"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:35
+msgid "Re-send Verification"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:36
+#: .\general_website\templates\allauth\socialaccount\connections.html:34
+msgid "Remove"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:43
+msgid "Warning:"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:43
+msgid ""
+"You currently do not have any e-mail address set up. You should really add "
+"an e-mail address so you can receive notifications, reset your password, etc."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:48
+msgid "Add E-mail Address"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:53
+msgid "Add E-mail"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:62
+msgid "Do you really want to remove the selected e-mail address?"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\email_confirmation_message.txt:1
+#, python-format
+msgid ""
+"Hello from %(site_name)s!\n"
+"\n"
+"You're receiving this e-mail because user %(user_display)s has given yours "
+"as an e-mail address to connect their account.\n"
+"\n"
+"To confirm this is correct, go to %(activate_url)s\n"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\email_confirmation_message.txt:7
+#, python-format
+msgid ""
+"Thank you from %(site_name)s!\n"
+"%(site_domain)s"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\email_confirmation_subject.txt:3
+msgid "Please Confirm Your E-mail Address"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\password_reset_key_message.txt:1
+#, python-format
+msgid ""
+"Hello from %(site_name)s!\n"
+"\n"
+"You're receiving this e-mail because you or someone else has requested a "
+"password for your user account.\n"
+"It can be safely ignored if you did not request a password reset. Click the "
+"link below to reset your password."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\password_reset_key_message.txt:8
+#, python-format
+msgid "In case you forgot, your username is %(username)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\password_reset_key_message.txt:10
+#, python-format
+msgid ""
+"Thank you for using %(site_name)s!\n"
+"%(site_domain)s"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\password_reset_key_subject.txt:3
+msgid "Password Reset E-mail"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email_confirm.html:6
+#: .\general_website\templates\allauth\account\email_confirm.html:10
+msgid "Confirm E-mail Address"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email_confirm.html:16
+#, python-format
+msgid ""
+"Please confirm that %(email)s is an e-mail "
+"address for user %(user_display)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email_confirm.html:20
+msgid "Confirm"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email_confirm.html:27
+#, python-format
+msgid ""
+"This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request ."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:6
+#: .\general_website\templates\allauth\account\login.html:10
+#: .\general_website\templates\allauth\account\login.html:43
+msgid "Sign In"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:15
+#, python-format
+msgid ""
+"Please sign in with one\n"
+"of your existing third party accounts. Or, sign "
+"up \n"
+"for a %(site_name)s account and sign in below:"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:25
+msgid "or"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:32
+#, python-format
+msgid ""
+"If you have not created an account yet, then please\n"
+"sign up first."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:42
+msgid "Forgot Password?"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\logout.html:5
+#: .\general_website\templates\allauth\account\logout.html:8
+#: .\general_website\templates\allauth\account\logout.html:17
+msgid "Sign Out"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\logout.html:10
+msgid "Are you sure you want to sign out?"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\cannot_delete_primary_email.txt:2
+#, python-format
+msgid "You cannot remove your primary e-mail address (%(email)s)."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\email_confirmation_sent.txt:2
+#, python-format
+msgid "Confirmation e-mail sent to %(email)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\email_confirmed.txt:2
+#, python-format
+msgid "You have confirmed %(email)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\email_deleted.txt:2
+#, python-format
+msgid "Removed e-mail address %(email)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\logged_in.txt:4
+#, python-format
+msgid "Successfully signed in as %(name)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\logged_out.txt:2
+msgid "You have signed out."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\password_changed.txt:2
+msgid "Password successfully changed."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\password_set.txt:2
+msgid "Password successfully set."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\primary_email_set.txt:2
+msgid "Primary e-mail address set."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\unverified_primary_email.txt:2
+msgid "Your primary e-mail address must be verified."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_change.html:5
+#: .\general_website\templates\allauth\account\password_change.html:8
+#: .\general_website\templates\allauth\account\password_change.html:13
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:4
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:7
+#: .\general_website\templates\allauth\account\password_reset_from_key_done.html:4
+#: .\general_website\templates\allauth\account\password_reset_from_key_done.html:7
+#: .\general_website\templates\general_website\profile.html:28
+msgid "Change Password"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset.html:6
+#: .\general_website\templates\allauth\account\password_reset.html:10
+#: .\general_website\templates\allauth\account\password_reset_done.html:6
+#: .\general_website\templates\allauth\account\password_reset_done.html:9
+msgid "Password Reset"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset.html:15
+msgid ""
+"Forgotten your password? Enter your e-mail address below, and we'll send you "
+"an e-mail allowing you to reset it."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset.html:20
+msgid "Reset My Password"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset.html:23
+msgid "Please contact us if you have any trouble resetting your password."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_done.html:15
+msgid ""
+"We have sent you an e-mail. Please contact us if you do not receive it "
+"within a few minutes."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:7
+msgid "Bad Token"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:11
+#, python-format
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used. Please request a new password reset"
+"a>."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:17
+msgid "change password"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:20
+#: .\general_website\templates\allauth\account\password_reset_from_key_done.html:8
+msgid "Your password is now changed."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_set.html:5
+#: .\general_website\templates\allauth\account\password_set.html:8
+#: .\general_website\templates\allauth\account\password_set.html:13
+msgid "Set Password"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup.html:5
+#: .\general_website\templates\allauth\socialaccount\signup.html:5
+msgid "Signup"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup.html:8
+#: .\general_website\templates\allauth\account\signup.html:18
+#: .\general_website\templates\allauth\socialaccount\signup.html:8
+#: .\general_website\templates\allauth\socialaccount\signup.html:19
+msgid "Sign Up"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup.html:10
+#, python-format
+msgid ""
+"Already have an account? Then please sign in ."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup_closed.html:5
+#: .\general_website\templates\allauth\account\signup_closed.html:8
+msgid "Sign Up Closed"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup_closed.html:10
+msgid "We are sorry, but the sign up is currently closed."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\snippets\already_logged_in.html:5
+msgid "Note"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\snippets\already_logged_in.html:5
+#, python-format
+msgid "you are already logged in as %(user_display)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verification_sent.html:5
+#: .\general_website\templates\allauth\account\verification_sent.html:8
+#: .\general_website\templates\allauth\account\verified_email_required.html:5
+#: .\general_website\templates\allauth\account\verified_email_required.html:8
+msgid "Verify Your E-mail Address"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verification_sent.html:10
+msgid ""
+"We have sent an e-mail to you for verification. Follow the link provided to "
+"finalize the signup process. Please contact us if you do not receive it "
+"within a few minutes."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verified_email_required.html:12
+msgid ""
+"This part of the site requires us to verify that\n"
+"you are who you claim to be. For this purpose, we require that you\n"
+"verify ownership of your e-mail address. "
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verified_email_required.html:16
+msgid ""
+"We have sent an e-mail to you for\n"
+"verification. Please click on the link inside this e-mail. Please\n"
+"contact us if you do not receive it within a few minutes."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verified_email_required.html:20
+#, python-format
+msgid ""
+"Note: you can still change your e-"
+"mail address ."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\authentication_error.html:5
+#: .\general_website\templates\allauth\socialaccount\authentication_error.html:8
+msgid "Social Network Login Failure"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\authentication_error.html:10
+msgid ""
+"An error occurred while attempting to login via your social network account."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\connections.html:5
+#: .\general_website\templates\allauth\socialaccount\connections.html:8
+msgid "Account Connections"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\connections.html:11
+msgid ""
+"You can sign in to your account using any of the following third party "
+"accounts:"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\connections.html:42
+msgid ""
+"You currently have no social network accounts connected to this account."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\connections.html:45
+msgid "Add a 3rd Party Account"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\login_cancelled.html:5
+#: .\general_website\templates\allauth\socialaccount\login_cancelled.html:9
+msgid "Login Cancelled"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\login_cancelled.html:13
+#, python-format
+msgid ""
+"You decided to cancel logging in to our site using one of your existing "
+"accounts. If this was a mistake, please proceed to sign in ."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\messages\account_connected.txt:2
+msgid "The social account has been connected."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\messages\account_connected_other.txt:2
+msgid "The social account is already connected to a different account."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\messages\account_disconnected.txt:2
+msgid "The social account has been disconnected."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\signup.html:10
+#, python-format
+msgid ""
+"You are about to use your %(provider_name)s account to login to\n"
+"%(site_name)s. As a final step, please complete the following form:"
+msgstr ""
+
+#: .\general_website\templates\general_website\error.html:15
+msgid "Unknown error"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:61
+msgid "Data Type"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:63
+msgid "Trinkets"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:64
+msgid "Azerite"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:65
+msgid "Races"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:71
+msgid "Fight Style"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:73
+msgid "Patchwerk"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:74
+msgid "HecticAddCleave"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:78
+msgid "Type Specification"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:80
+msgid "Trait stacking"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:81
+msgid "Itemlevel"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:82
+msgid "Head"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:83
+msgid "Shoulders"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:84
+msgid "Chest"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:88
+msgid "Azerite Tier"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:95
+msgid "Tier 3 & 4"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:97
+msgid "Tier 2"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:101
+msgid "Advanced Options"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:103
+msgid "Show"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_base.html:15
+msgid "Become a Patron"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_bottom_nav.html:17
+msgid "FAQ"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_bottom_nav.html:24
+msgid "Report an error"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_bottom_nav.html:32
+msgid "Patreon"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_head.html:7
+msgid "data for all"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_settings_nav.html:14
+#: .\general_website\templates\general_website\layout_top_nav.html:35
+#: .\general_website\templates\general_website\settings.html:15
+msgid "Settings"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_settings_nav.html:16
+#: .\general_website\templates\general_website\layout_top_nav.html:20
+msgid "General"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_settings_nav.html:23
+#: .\general_website\templates\general_website\profile.html:16
+msgid "Profile"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_settings_nav.html:28
+msgid "Connections"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:28
+#: .\general_website\templates\general_website\login.html:14
+msgid "Login"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:29
+msgid "Register"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:32
+msgid "Sims"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:33
+msgid "Admin"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:37
+msgid "Logout"
+msgstr ""
+
+#: .\general_website\templates\general_website\login.html:15
+#: .\general_website\templates\general_website\signup.html:12
+msgid ""
+"I couldn't care less about your data. Nothing is shared with others and data "
+"is wiped regularly."
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:12
+msgid "Portals"
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:14
+msgid ""
+"Ever wondered what portals exist in the game? So did I. Here is a list of "
+"them. Let me know about more fixed position portals. This list is NOT "
+"intended to include teleporting items or skills."
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:15
+msgid ""
+"And of course Blizzard nuked portals the moment I started building this "
+"page. I'm sorry."
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:32
+msgid "Target"
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:33
+msgid "Location"
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:34
+msgid "Coordinates"
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:35
+msgid "More information"
+msgstr ""
+
+#: .\general_website\templates\general_website\profile.html:17
+msgid "Manage your profile information."
+msgstr ""
+
+#: .\general_website\templates\general_website\profile.html:23
+msgid "Save changes"
+msgstr ""
+
+#: .\general_website\templates\general_website\profile.html:33
+msgid "Change password"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:20
+msgid "Language"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:78
+msgid "Chart mode"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:82
+msgid "Δ - absolute dps gain"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:88
+#, python-format
+msgid "%% - relative dps gain"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:94
+msgid "|x| - absolute value"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:103
+msgid "active"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:107
+msgid "Apply changes"
+msgstr ""
+
+#: .\general_website\templates\general_website\signup.html:11
+msgid "Sign up"
+msgstr ""
+
+#: .\general_website\views\account.py:43
+msgid "Couldn't log in. Please check your input."
+msgstr ""
+
+#: .\general_website\views\account.py:82
+msgid "Account created."
+msgstr ""
+
+#: .\general_website\views\account.py:85
+msgid "Account creation failed."
+msgstr ""
+
+#: .\general_website\views\account.py:98
+msgid "Profile was updated!"
+msgstr ""
+
+#: .\general_website\views\account.py:125
+msgid "Password was updated!"
+msgstr ""
+
+#: .\general_website\views\account.py:127
+msgid "Password update failed. Check your input."
+msgstr ""
+
+#: .\general_website\views\error.py:10 .\general_website\views\error.py:22
+msgid "Page not found"
+msgstr ""
+
+#: .\general_website\views\error.py:26
+msgid "Something went wrong. Try again later"
+msgstr ""
diff --git a/bloodmallet/general_website/locale/pt/LC_MESSAGES/django.po b/bloodmallet/general_website/locale/pt/LC_MESSAGES/django.po
new file mode 100644
index 00000000..82647cb1
--- /dev/null
+++ b/bloodmallet/general_website/locale/pt/LC_MESSAGES/django.po
@@ -0,0 +1,695 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR , YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-03-07 23:35+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+#: .\general_website\templates\allauth\account\account_inactive.html:5
+#: .\general_website\templates\allauth\account\account_inactive.html:8
+msgid "Account Inactive"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\account_inactive.html:10
+msgid "This account is inactive."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:5
+msgid "Account"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:8
+msgid "E-mail Addresses"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:10
+msgid "The following e-mail addresses are associated with your account:"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:24
+msgid "Verified"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:26
+msgid "Unverified"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:28
+msgid "Primary"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:34
+msgid "Make Primary"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:35
+msgid "Re-send Verification"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:36
+#: .\general_website\templates\allauth\socialaccount\connections.html:34
+msgid "Remove"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:43
+msgid "Warning:"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:43
+msgid ""
+"You currently do not have any e-mail address set up. You should really add "
+"an e-mail address so you can receive notifications, reset your password, etc."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:48
+msgid "Add E-mail Address"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:53
+msgid "Add E-mail"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:62
+msgid "Do you really want to remove the selected e-mail address?"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\email_confirmation_message.txt:1
+#, python-format
+msgid ""
+"Hello from %(site_name)s!\n"
+"\n"
+"You're receiving this e-mail because user %(user_display)s has given yours "
+"as an e-mail address to connect their account.\n"
+"\n"
+"To confirm this is correct, go to %(activate_url)s\n"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\email_confirmation_message.txt:7
+#, python-format
+msgid ""
+"Thank you from %(site_name)s!\n"
+"%(site_domain)s"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\email_confirmation_subject.txt:3
+msgid "Please Confirm Your E-mail Address"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\password_reset_key_message.txt:1
+#, python-format
+msgid ""
+"Hello from %(site_name)s!\n"
+"\n"
+"You're receiving this e-mail because you or someone else has requested a "
+"password for your user account.\n"
+"It can be safely ignored if you did not request a password reset. Click the "
+"link below to reset your password."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\password_reset_key_message.txt:8
+#, python-format
+msgid "In case you forgot, your username is %(username)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\password_reset_key_message.txt:10
+#, python-format
+msgid ""
+"Thank you for using %(site_name)s!\n"
+"%(site_domain)s"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\password_reset_key_subject.txt:3
+msgid "Password Reset E-mail"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email_confirm.html:6
+#: .\general_website\templates\allauth\account\email_confirm.html:10
+msgid "Confirm E-mail Address"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email_confirm.html:16
+#, python-format
+msgid ""
+"Please confirm that %(email)s is an e-mail "
+"address for user %(user_display)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email_confirm.html:20
+msgid "Confirm"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email_confirm.html:27
+#, python-format
+msgid ""
+"This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request ."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:6
+#: .\general_website\templates\allauth\account\login.html:10
+#: .\general_website\templates\allauth\account\login.html:43
+msgid "Sign In"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:15
+#, python-format
+msgid ""
+"Please sign in with one\n"
+"of your existing third party accounts. Or, sign "
+"up \n"
+"for a %(site_name)s account and sign in below:"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:25
+msgid "or"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:32
+#, python-format
+msgid ""
+"If you have not created an account yet, then please\n"
+"sign up first."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:42
+msgid "Forgot Password?"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\logout.html:5
+#: .\general_website\templates\allauth\account\logout.html:8
+#: .\general_website\templates\allauth\account\logout.html:17
+msgid "Sign Out"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\logout.html:10
+msgid "Are you sure you want to sign out?"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\cannot_delete_primary_email.txt:2
+#, python-format
+msgid "You cannot remove your primary e-mail address (%(email)s)."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\email_confirmation_sent.txt:2
+#, python-format
+msgid "Confirmation e-mail sent to %(email)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\email_confirmed.txt:2
+#, python-format
+msgid "You have confirmed %(email)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\email_deleted.txt:2
+#, python-format
+msgid "Removed e-mail address %(email)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\logged_in.txt:4
+#, python-format
+msgid "Successfully signed in as %(name)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\logged_out.txt:2
+msgid "You have signed out."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\password_changed.txt:2
+msgid "Password successfully changed."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\password_set.txt:2
+msgid "Password successfully set."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\primary_email_set.txt:2
+msgid "Primary e-mail address set."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\unverified_primary_email.txt:2
+msgid "Your primary e-mail address must be verified."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_change.html:5
+#: .\general_website\templates\allauth\account\password_change.html:8
+#: .\general_website\templates\allauth\account\password_change.html:13
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:4
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:7
+#: .\general_website\templates\allauth\account\password_reset_from_key_done.html:4
+#: .\general_website\templates\allauth\account\password_reset_from_key_done.html:7
+#: .\general_website\templates\general_website\profile.html:28
+msgid "Change Password"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset.html:6
+#: .\general_website\templates\allauth\account\password_reset.html:10
+#: .\general_website\templates\allauth\account\password_reset_done.html:6
+#: .\general_website\templates\allauth\account\password_reset_done.html:9
+msgid "Password Reset"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset.html:15
+msgid ""
+"Forgotten your password? Enter your e-mail address below, and we'll send you "
+"an e-mail allowing you to reset it."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset.html:20
+msgid "Reset My Password"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset.html:23
+msgid "Please contact us if you have any trouble resetting your password."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_done.html:15
+msgid ""
+"We have sent you an e-mail. Please contact us if you do not receive it "
+"within a few minutes."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:7
+msgid "Bad Token"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:11
+#, python-format
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used. Please request a new password reset"
+"a>."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:17
+msgid "change password"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:20
+#: .\general_website\templates\allauth\account\password_reset_from_key_done.html:8
+msgid "Your password is now changed."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_set.html:5
+#: .\general_website\templates\allauth\account\password_set.html:8
+#: .\general_website\templates\allauth\account\password_set.html:13
+msgid "Set Password"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup.html:5
+#: .\general_website\templates\allauth\socialaccount\signup.html:5
+msgid "Signup"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup.html:8
+#: .\general_website\templates\allauth\account\signup.html:18
+#: .\general_website\templates\allauth\socialaccount\signup.html:8
+#: .\general_website\templates\allauth\socialaccount\signup.html:19
+msgid "Sign Up"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup.html:10
+#, python-format
+msgid ""
+"Already have an account? Then please sign in ."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup_closed.html:5
+#: .\general_website\templates\allauth\account\signup_closed.html:8
+msgid "Sign Up Closed"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup_closed.html:10
+msgid "We are sorry, but the sign up is currently closed."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\snippets\already_logged_in.html:5
+msgid "Note"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\snippets\already_logged_in.html:5
+#, python-format
+msgid "you are already logged in as %(user_display)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verification_sent.html:5
+#: .\general_website\templates\allauth\account\verification_sent.html:8
+#: .\general_website\templates\allauth\account\verified_email_required.html:5
+#: .\general_website\templates\allauth\account\verified_email_required.html:8
+msgid "Verify Your E-mail Address"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verification_sent.html:10
+msgid ""
+"We have sent an e-mail to you for verification. Follow the link provided to "
+"finalize the signup process. Please contact us if you do not receive it "
+"within a few minutes."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verified_email_required.html:12
+msgid ""
+"This part of the site requires us to verify that\n"
+"you are who you claim to be. For this purpose, we require that you\n"
+"verify ownership of your e-mail address. "
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verified_email_required.html:16
+msgid ""
+"We have sent an e-mail to you for\n"
+"verification. Please click on the link inside this e-mail. Please\n"
+"contact us if you do not receive it within a few minutes."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verified_email_required.html:20
+#, python-format
+msgid ""
+"Note: you can still change your e-"
+"mail address ."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\authentication_error.html:5
+#: .\general_website\templates\allauth\socialaccount\authentication_error.html:8
+msgid "Social Network Login Failure"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\authentication_error.html:10
+msgid ""
+"An error occurred while attempting to login via your social network account."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\connections.html:5
+#: .\general_website\templates\allauth\socialaccount\connections.html:8
+msgid "Account Connections"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\connections.html:11
+msgid ""
+"You can sign in to your account using any of the following third party "
+"accounts:"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\connections.html:42
+msgid ""
+"You currently have no social network accounts connected to this account."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\connections.html:45
+msgid "Add a 3rd Party Account"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\login_cancelled.html:5
+#: .\general_website\templates\allauth\socialaccount\login_cancelled.html:9
+msgid "Login Cancelled"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\login_cancelled.html:13
+#, python-format
+msgid ""
+"You decided to cancel logging in to our site using one of your existing "
+"accounts. If this was a mistake, please proceed to sign in ."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\messages\account_connected.txt:2
+msgid "The social account has been connected."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\messages\account_connected_other.txt:2
+msgid "The social account is already connected to a different account."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\messages\account_disconnected.txt:2
+msgid "The social account has been disconnected."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\signup.html:10
+#, python-format
+msgid ""
+"You are about to use your %(provider_name)s account to login to\n"
+"%(site_name)s. As a final step, please complete the following form:"
+msgstr ""
+
+#: .\general_website\templates\general_website\error.html:15
+msgid "Unknown error"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:61
+msgid "Data Type"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:63
+msgid "Trinkets"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:64
+msgid "Azerite"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:65
+msgid "Races"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:71
+msgid "Fight Style"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:73
+msgid "Patchwerk"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:74
+msgid "HecticAddCleave"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:78
+msgid "Type Specification"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:80
+msgid "Trait stacking"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:81
+msgid "Itemlevel"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:82
+msgid "Head"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:83
+msgid "Shoulders"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:84
+msgid "Chest"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:88
+msgid "Azerite Tier"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:95
+msgid "Tier 3 & 4"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:97
+msgid "Tier 2"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:101
+msgid "Advanced Options"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:103
+msgid "Show"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_base.html:15
+msgid "Become a Patron"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_bottom_nav.html:17
+msgid "FAQ"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_bottom_nav.html:24
+msgid "Report an error"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_bottom_nav.html:32
+msgid "Patreon"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_head.html:7
+msgid "data for all"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_settings_nav.html:14
+#: .\general_website\templates\general_website\layout_top_nav.html:35
+#: .\general_website\templates\general_website\settings.html:15
+msgid "Settings"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_settings_nav.html:16
+#: .\general_website\templates\general_website\layout_top_nav.html:20
+msgid "General"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_settings_nav.html:23
+#: .\general_website\templates\general_website\profile.html:16
+msgid "Profile"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_settings_nav.html:28
+msgid "Connections"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:28
+#: .\general_website\templates\general_website\login.html:14
+msgid "Login"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:29
+msgid "Register"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:32
+msgid "Sims"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:33
+msgid "Admin"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:37
+msgid "Logout"
+msgstr ""
+
+#: .\general_website\templates\general_website\login.html:15
+#: .\general_website\templates\general_website\signup.html:12
+msgid ""
+"I couldn't care less about your data. Nothing is shared with others and data "
+"is wiped regularly."
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:12
+msgid "Portals"
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:14
+msgid ""
+"Ever wondered what portals exist in the game? So did I. Here is a list of "
+"them. Let me know about more fixed position portals. This list is NOT "
+"intended to include teleporting items or skills."
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:15
+msgid ""
+"And of course Blizzard nuked portals the moment I started building this "
+"page. I'm sorry."
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:32
+msgid "Target"
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:33
+msgid "Location"
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:34
+msgid "Coordinates"
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:35
+msgid "More information"
+msgstr ""
+
+#: .\general_website\templates\general_website\profile.html:17
+msgid "Manage your profile information."
+msgstr ""
+
+#: .\general_website\templates\general_website\profile.html:23
+msgid "Save changes"
+msgstr ""
+
+#: .\general_website\templates\general_website\profile.html:33
+msgid "Change password"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:20
+msgid "Language"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:78
+msgid "Chart mode"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:82
+msgid "Δ - absolute dps gain"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:88
+#, python-format
+msgid "%% - relative dps gain"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:94
+msgid "|x| - absolute value"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:103
+msgid "active"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:107
+msgid "Apply changes"
+msgstr ""
+
+#: .\general_website\templates\general_website\signup.html:11
+msgid "Sign up"
+msgstr ""
+
+#: .\general_website\views\account.py:43
+msgid "Couldn't log in. Please check your input."
+msgstr ""
+
+#: .\general_website\views\account.py:82
+msgid "Account created."
+msgstr ""
+
+#: .\general_website\views\account.py:85
+msgid "Account creation failed."
+msgstr ""
+
+#: .\general_website\views\account.py:98
+msgid "Profile was updated!"
+msgstr ""
+
+#: .\general_website\views\account.py:125
+msgid "Password was updated!"
+msgstr ""
+
+#: .\general_website\views\account.py:127
+msgid "Password update failed. Check your input."
+msgstr ""
+
+#: .\general_website\views\error.py:10 .\general_website\views\error.py:22
+msgid "Page not found"
+msgstr ""
+
+#: .\general_website\views\error.py:26
+msgid "Something went wrong. Try again later"
+msgstr ""
diff --git a/bloodmallet/general_website/locale/ru/LC_MESSAGES/django.po b/bloodmallet/general_website/locale/ru/LC_MESSAGES/django.po
new file mode 100644
index 00000000..175f7f04
--- /dev/null
+++ b/bloodmallet/general_website/locale/ru/LC_MESSAGES/django.po
@@ -0,0 +1,697 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR , YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-03-07 23:35+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n"
+"%100>=11 && n%100<=14)? 2 : 3);\n"
+#: .\general_website\templates\allauth\account\account_inactive.html:5
+#: .\general_website\templates\allauth\account\account_inactive.html:8
+msgid "Account Inactive"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\account_inactive.html:10
+msgid "This account is inactive."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:5
+msgid "Account"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:8
+msgid "E-mail Addresses"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:10
+msgid "The following e-mail addresses are associated with your account:"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:24
+msgid "Verified"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:26
+msgid "Unverified"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:28
+msgid "Primary"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:34
+msgid "Make Primary"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:35
+msgid "Re-send Verification"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:36
+#: .\general_website\templates\allauth\socialaccount\connections.html:34
+msgid "Remove"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:43
+msgid "Warning:"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:43
+msgid ""
+"You currently do not have any e-mail address set up. You should really add "
+"an e-mail address so you can receive notifications, reset your password, etc."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:48
+msgid "Add E-mail Address"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:53
+msgid "Add E-mail"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email.html:62
+msgid "Do you really want to remove the selected e-mail address?"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\email_confirmation_message.txt:1
+#, python-format
+msgid ""
+"Hello from %(site_name)s!\n"
+"\n"
+"You're receiving this e-mail because user %(user_display)s has given yours "
+"as an e-mail address to connect their account.\n"
+"\n"
+"To confirm this is correct, go to %(activate_url)s\n"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\email_confirmation_message.txt:7
+#, python-format
+msgid ""
+"Thank you from %(site_name)s!\n"
+"%(site_domain)s"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\email_confirmation_subject.txt:3
+msgid "Please Confirm Your E-mail Address"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\password_reset_key_message.txt:1
+#, python-format
+msgid ""
+"Hello from %(site_name)s!\n"
+"\n"
+"You're receiving this e-mail because you or someone else has requested a "
+"password for your user account.\n"
+"It can be safely ignored if you did not request a password reset. Click the "
+"link below to reset your password."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\password_reset_key_message.txt:8
+#, python-format
+msgid "In case you forgot, your username is %(username)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\password_reset_key_message.txt:10
+#, python-format
+msgid ""
+"Thank you for using %(site_name)s!\n"
+"%(site_domain)s"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email\password_reset_key_subject.txt:3
+msgid "Password Reset E-mail"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email_confirm.html:6
+#: .\general_website\templates\allauth\account\email_confirm.html:10
+msgid "Confirm E-mail Address"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email_confirm.html:16
+#, python-format
+msgid ""
+"Please confirm that %(email)s is an e-mail "
+"address for user %(user_display)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email_confirm.html:20
+msgid "Confirm"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\email_confirm.html:27
+#, python-format
+msgid ""
+"This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request ."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:6
+#: .\general_website\templates\allauth\account\login.html:10
+#: .\general_website\templates\allauth\account\login.html:43
+msgid "Sign In"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:15
+#, python-format
+msgid ""
+"Please sign in with one\n"
+"of your existing third party accounts. Or, sign "
+"up \n"
+"for a %(site_name)s account and sign in below:"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:25
+msgid "or"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:32
+#, python-format
+msgid ""
+"If you have not created an account yet, then please\n"
+"sign up first."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\login.html:42
+msgid "Forgot Password?"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\logout.html:5
+#: .\general_website\templates\allauth\account\logout.html:8
+#: .\general_website\templates\allauth\account\logout.html:17
+msgid "Sign Out"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\logout.html:10
+msgid "Are you sure you want to sign out?"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\cannot_delete_primary_email.txt:2
+#, python-format
+msgid "You cannot remove your primary e-mail address (%(email)s)."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\email_confirmation_sent.txt:2
+#, python-format
+msgid "Confirmation e-mail sent to %(email)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\email_confirmed.txt:2
+#, python-format
+msgid "You have confirmed %(email)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\email_deleted.txt:2
+#, python-format
+msgid "Removed e-mail address %(email)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\logged_in.txt:4
+#, python-format
+msgid "Successfully signed in as %(name)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\logged_out.txt:2
+msgid "You have signed out."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\password_changed.txt:2
+msgid "Password successfully changed."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\password_set.txt:2
+msgid "Password successfully set."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\primary_email_set.txt:2
+msgid "Primary e-mail address set."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\messages\unverified_primary_email.txt:2
+msgid "Your primary e-mail address must be verified."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_change.html:5
+#: .\general_website\templates\allauth\account\password_change.html:8
+#: .\general_website\templates\allauth\account\password_change.html:13
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:4
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:7
+#: .\general_website\templates\allauth\account\password_reset_from_key_done.html:4
+#: .\general_website\templates\allauth\account\password_reset_from_key_done.html:7
+#: .\general_website\templates\general_website\profile.html:28
+msgid "Change Password"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset.html:6
+#: .\general_website\templates\allauth\account\password_reset.html:10
+#: .\general_website\templates\allauth\account\password_reset_done.html:6
+#: .\general_website\templates\allauth\account\password_reset_done.html:9
+msgid "Password Reset"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset.html:15
+msgid ""
+"Forgotten your password? Enter your e-mail address below, and we'll send you "
+"an e-mail allowing you to reset it."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset.html:20
+msgid "Reset My Password"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset.html:23
+msgid "Please contact us if you have any trouble resetting your password."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_done.html:15
+msgid ""
+"We have sent you an e-mail. Please contact us if you do not receive it "
+"within a few minutes."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:7
+msgid "Bad Token"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:11
+#, python-format
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used. Please request a new password reset"
+"a>."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:17
+msgid "change password"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_reset_from_key.html:20
+#: .\general_website\templates\allauth\account\password_reset_from_key_done.html:8
+msgid "Your password is now changed."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\password_set.html:5
+#: .\general_website\templates\allauth\account\password_set.html:8
+#: .\general_website\templates\allauth\account\password_set.html:13
+msgid "Set Password"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup.html:5
+#: .\general_website\templates\allauth\socialaccount\signup.html:5
+msgid "Signup"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup.html:8
+#: .\general_website\templates\allauth\account\signup.html:18
+#: .\general_website\templates\allauth\socialaccount\signup.html:8
+#: .\general_website\templates\allauth\socialaccount\signup.html:19
+msgid "Sign Up"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup.html:10
+#, python-format
+msgid ""
+"Already have an account? Then please sign in ."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup_closed.html:5
+#: .\general_website\templates\allauth\account\signup_closed.html:8
+msgid "Sign Up Closed"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\signup_closed.html:10
+msgid "We are sorry, but the sign up is currently closed."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\snippets\already_logged_in.html:5
+msgid "Note"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\snippets\already_logged_in.html:5
+#, python-format
+msgid "you are already logged in as %(user_display)s."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verification_sent.html:5
+#: .\general_website\templates\allauth\account\verification_sent.html:8
+#: .\general_website\templates\allauth\account\verified_email_required.html:5
+#: .\general_website\templates\allauth\account\verified_email_required.html:8
+msgid "Verify Your E-mail Address"
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verification_sent.html:10
+msgid ""
+"We have sent an e-mail to you for verification. Follow the link provided to "
+"finalize the signup process. Please contact us if you do not receive it "
+"within a few minutes."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verified_email_required.html:12
+msgid ""
+"This part of the site requires us to verify that\n"
+"you are who you claim to be. For this purpose, we require that you\n"
+"verify ownership of your e-mail address. "
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verified_email_required.html:16
+msgid ""
+"We have sent an e-mail to you for\n"
+"verification. Please click on the link inside this e-mail. Please\n"
+"contact us if you do not receive it within a few minutes."
+msgstr ""
+
+#: .\general_website\templates\allauth\account\verified_email_required.html:20
+#, python-format
+msgid ""
+"Note: you can still change your e-"
+"mail address ."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\authentication_error.html:5
+#: .\general_website\templates\allauth\socialaccount\authentication_error.html:8
+msgid "Social Network Login Failure"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\authentication_error.html:10
+msgid ""
+"An error occurred while attempting to login via your social network account."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\connections.html:5
+#: .\general_website\templates\allauth\socialaccount\connections.html:8
+msgid "Account Connections"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\connections.html:11
+msgid ""
+"You can sign in to your account using any of the following third party "
+"accounts:"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\connections.html:42
+msgid ""
+"You currently have no social network accounts connected to this account."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\connections.html:45
+msgid "Add a 3rd Party Account"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\login_cancelled.html:5
+#: .\general_website\templates\allauth\socialaccount\login_cancelled.html:9
+msgid "Login Cancelled"
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\login_cancelled.html:13
+#, python-format
+msgid ""
+"You decided to cancel logging in to our site using one of your existing "
+"accounts. If this was a mistake, please proceed to sign in ."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\messages\account_connected.txt:2
+msgid "The social account has been connected."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\messages\account_connected_other.txt:2
+msgid "The social account is already connected to a different account."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\messages\account_disconnected.txt:2
+msgid "The social account has been disconnected."
+msgstr ""
+
+#: .\general_website\templates\allauth\socialaccount\signup.html:10
+#, python-format
+msgid ""
+"You are about to use your %(provider_name)s account to login to\n"
+"%(site_name)s. As a final step, please complete the following form:"
+msgstr ""
+
+#: .\general_website\templates\general_website\error.html:15
+msgid "Unknown error"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:61
+msgid "Data Type"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:63
+msgid "Trinkets"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:64
+msgid "Azerite"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:65
+msgid "Races"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:71
+msgid "Fight Style"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:73
+msgid "Patchwerk"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:74
+msgid "HecticAddCleave"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:78
+msgid "Type Specification"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:80
+msgid "Trait stacking"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:81
+msgid "Itemlevel"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:82
+msgid "Head"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:83
+msgid "Shoulders"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:84
+msgid "Chest"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:88
+msgid "Azerite Tier"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:95
+msgid "Tier 3 & 4"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:97
+msgid "Tier 2"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:101
+msgid "Advanced Options"
+msgstr ""
+
+#: .\general_website\templates\general_website\index.html:103
+msgid "Show"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_base.html:15
+msgid "Become a Patron"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_bottom_nav.html:17
+msgid "FAQ"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_bottom_nav.html:24
+msgid "Report an error"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_bottom_nav.html:32
+msgid "Patreon"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_head.html:7
+msgid "data for all"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_settings_nav.html:14
+#: .\general_website\templates\general_website\layout_top_nav.html:35
+#: .\general_website\templates\general_website\settings.html:15
+msgid "Settings"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_settings_nav.html:16
+#: .\general_website\templates\general_website\layout_top_nav.html:20
+msgid "General"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_settings_nav.html:23
+#: .\general_website\templates\general_website\profile.html:16
+msgid "Profile"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_settings_nav.html:28
+msgid "Connections"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:28
+#: .\general_website\templates\general_website\login.html:14
+msgid "Login"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:29
+msgid "Register"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:32
+msgid "Sims"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:33
+msgid "Admin"
+msgstr ""
+
+#: .\general_website\templates\general_website\layout_top_nav.html:37
+msgid "Logout"
+msgstr ""
+
+#: .\general_website\templates\general_website\login.html:15
+#: .\general_website\templates\general_website\signup.html:12
+msgid ""
+"I couldn't care less about your data. Nothing is shared with others and data "
+"is wiped regularly."
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:12
+msgid "Portals"
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:14
+msgid ""
+"Ever wondered what portals exist in the game? So did I. Here is a list of "
+"them. Let me know about more fixed position portals. This list is NOT "
+"intended to include teleporting items or skills."
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:15
+msgid ""
+"And of course Blizzard nuked portals the moment I started building this "
+"page. I'm sorry."
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:32
+msgid "Target"
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:33
+msgid "Location"
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:34
+msgid "Coordinates"
+msgstr ""
+
+#: .\general_website\templates\general_website\portals.html:35
+msgid "More information"
+msgstr ""
+
+#: .\general_website\templates\general_website\profile.html:17
+msgid "Manage your profile information."
+msgstr ""
+
+#: .\general_website\templates\general_website\profile.html:23
+msgid "Save changes"
+msgstr ""
+
+#: .\general_website\templates\general_website\profile.html:33
+msgid "Change password"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:20
+msgid "Language"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:78
+msgid "Chart mode"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:82
+msgid "Δ - absolute dps gain"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:88
+#, python-format
+msgid "%% - relative dps gain"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:94
+msgid "|x| - absolute value"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:103
+msgid "active"
+msgstr ""
+
+#: .\general_website\templates\general_website\settings.html:107
+msgid "Apply changes"
+msgstr ""
+
+#: .\general_website\templates\general_website\signup.html:11
+msgid "Sign up"
+msgstr ""
+
+#: .\general_website\views\account.py:43
+msgid "Couldn't log in. Please check your input."
+msgstr ""
+
+#: .\general_website\views\account.py:82
+msgid "Account created."
+msgstr ""
+
+#: .\general_website\views\account.py:85
+msgid "Account creation failed."
+msgstr ""
+
+#: .\general_website\views\account.py:98
+msgid "Profile was updated!"
+msgstr ""
+
+#: .\general_website\views\account.py:125
+msgid "Password was updated!"
+msgstr ""
+
+#: .\general_website\views\account.py:127
+msgid "Password update failed. Check your input."
+msgstr ""
+
+#: .\general_website\views\error.py:10 .\general_website\views\error.py:22
+msgid "Page not found"
+msgstr ""
+
+#: .\general_website\views\error.py:26
+msgid "Something went wrong. Try again later"
+msgstr ""
From 15fb7f615934b30a62fb25b6a7264eae8384cc5e Mon Sep 17 00:00:00 2001
From: Bloodmallet
Date: Thu, 7 Mar 2019 23:40:11 +0100
Subject: [PATCH 032/135] add gettext to general.py views
---
bloodmallet/general_website/views/general.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/bloodmallet/general_website/views/general.py b/bloodmallet/general_website/views/general.py
index debb8844..273195bc 100644
--- a/bloodmallet/general_website/views/general.py
+++ b/bloodmallet/general_website/views/general.py
@@ -1,10 +1,11 @@
from django.contrib import messages
from django.shortcuts import render
+from django.utils.translation import gettext as _
-from random import randint
from general_website.models import User
import logging
+from random import randint
logger = logging.getLogger(__name__)
From 3e290f5476418fd94535bf889da734ce39c3b2f3 Mon Sep 17 00:00:00 2001
From: Bloodmallet
Date: Sat, 30 Mar 2019 09:26:29 +0100
Subject: [PATCH 033/135] restructure layout files
---
.../general_website/templates/general_website/error.html | 2 +-
.../general_website/templates/general_website/index.html | 9 ++++++---
.../templates/general_website/layout/__init__.py | 0
.../{layout_base.html => layout/base.html} | 0
.../general_website/{ => layout}/layout_bottom_nav.html | 0
.../general_website/{ => layout}/layout_head.html | 0
.../{ => layout}/layout_script_importer.html | 0
.../{ => layout}/layout_settings_nav.html | 0
.../general_website/{ => layout}/layout_top_nav.html | 0
.../general_website/templates/general_website/login.html | 2 +-
.../templates/general_website/portals.html | 2 +-
.../templates/general_website/profile.html | 2 +-
.../templates/general_website/settings.html | 2 +-
.../templates/general_website/signup.html | 2 +-
14 files changed, 12 insertions(+), 9 deletions(-)
create mode 100644 bloodmallet/general_website/templates/general_website/layout/__init__.py
rename bloodmallet/general_website/templates/general_website/{layout_base.html => layout/base.html} (100%)
rename bloodmallet/general_website/templates/general_website/{ => layout}/layout_bottom_nav.html (100%)
rename bloodmallet/general_website/templates/general_website/{ => layout}/layout_head.html (100%)
rename bloodmallet/general_website/templates/general_website/{ => layout}/layout_script_importer.html (100%)
rename bloodmallet/general_website/templates/general_website/{ => layout}/layout_settings_nav.html (100%)
rename bloodmallet/general_website/templates/general_website/{ => layout}/layout_top_nav.html (100%)
diff --git a/bloodmallet/general_website/templates/general_website/error.html b/bloodmallet/general_website/templates/general_website/error.html
index 92227228..5ff704bb 100644
--- a/bloodmallet/general_website/templates/general_website/error.html
+++ b/bloodmallet/general_website/templates/general_website/error.html
@@ -1,4 +1,4 @@
-{% extends 'general_website/layout_base.html' %}
+{% extends 'general_website/layout/base.html' %}
{% load i18n %}
{% block content %}
diff --git a/bloodmallet/general_website/templates/general_website/index.html b/bloodmallet/general_website/templates/general_website/index.html
index 3efc7b00..c6a75ee9 100644
--- a/bloodmallet/general_website/templates/general_website/index.html
+++ b/bloodmallet/general_website/templates/general_website/index.html
@@ -1,4 +1,5 @@
-{% extends 'general_website/layout_base.html' %}
+{% extends 'general_website/layout/base.html' %}
+
{% load i18n %}
{% load static %}
{% load replace_underscore_with_space %}
@@ -44,9 +45,11 @@ blood{% if not bloodyfil
{% endcomment %}
-{% trans "This site provides an overview about trinkets, azerite traits, and others for almost all specs in World of Warcraft
+{% blocktrans %}
+This site provides an overview about trinkets, azerite traits, and others for almost all specs in World of Warcraft
using SimulationCraft 's default profiles. These overviews
-are an entry point. For indepth information about your spec use your theorycrafters resources linked below the charts." %}
+are an entry point. For indepth information about your spec use your theorycrafters resources linked below the charts.
+{% endblocktrans %}
diff --git a/bloodmallet/general_website/templates/general_website/layout/__init__.py b/bloodmallet/general_website/templates/general_website/layout/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/bloodmallet/general_website/templates/general_website/layout_base.html b/bloodmallet/general_website/templates/general_website/layout/base.html
similarity index 100%
rename from bloodmallet/general_website/templates/general_website/layout_base.html
rename to bloodmallet/general_website/templates/general_website/layout/base.html
diff --git a/bloodmallet/general_website/templates/general_website/layout_bottom_nav.html b/bloodmallet/general_website/templates/general_website/layout/layout_bottom_nav.html
similarity index 100%
rename from bloodmallet/general_website/templates/general_website/layout_bottom_nav.html
rename to bloodmallet/general_website/templates/general_website/layout/layout_bottom_nav.html
diff --git a/bloodmallet/general_website/templates/general_website/layout_head.html b/bloodmallet/general_website/templates/general_website/layout/layout_head.html
similarity index 100%
rename from bloodmallet/general_website/templates/general_website/layout_head.html
rename to bloodmallet/general_website/templates/general_website/layout/layout_head.html
diff --git a/bloodmallet/general_website/templates/general_website/layout_script_importer.html b/bloodmallet/general_website/templates/general_website/layout/layout_script_importer.html
similarity index 100%
rename from bloodmallet/general_website/templates/general_website/layout_script_importer.html
rename to bloodmallet/general_website/templates/general_website/layout/layout_script_importer.html
diff --git a/bloodmallet/general_website/templates/general_website/layout_settings_nav.html b/bloodmallet/general_website/templates/general_website/layout/layout_settings_nav.html
similarity index 100%
rename from bloodmallet/general_website/templates/general_website/layout_settings_nav.html
rename to bloodmallet/general_website/templates/general_website/layout/layout_settings_nav.html
diff --git a/bloodmallet/general_website/templates/general_website/layout_top_nav.html b/bloodmallet/general_website/templates/general_website/layout/layout_top_nav.html
similarity index 100%
rename from bloodmallet/general_website/templates/general_website/layout_top_nav.html
rename to bloodmallet/general_website/templates/general_website/layout/layout_top_nav.html
diff --git a/bloodmallet/general_website/templates/general_website/login.html b/bloodmallet/general_website/templates/general_website/login.html
index ff1d4690..2773a48f 100644
--- a/bloodmallet/general_website/templates/general_website/login.html
+++ b/bloodmallet/general_website/templates/general_website/login.html
@@ -1,4 +1,4 @@
-{% extends 'general_website/layout_base.html' %}
+{% extends 'general_website/layout/base.html' %}
{% load i18n %}
{% load crispy_forms_tags %}
diff --git a/bloodmallet/general_website/templates/general_website/portals.html b/bloodmallet/general_website/templates/general_website/portals.html
index baaa4fbe..c8178030 100644
--- a/bloodmallet/general_website/templates/general_website/portals.html
+++ b/bloodmallet/general_website/templates/general_website/portals.html
@@ -1,4 +1,4 @@
-{% extends 'general_website/layout_base.html' %}
+{% extends 'general_website/layout/base.html' %}
{% load i18n %}
{% load static %}
{% load replace_underscore_with_space %}
diff --git a/bloodmallet/general_website/templates/general_website/profile.html b/bloodmallet/general_website/templates/general_website/profile.html
index 6182d2e2..f35fb44a 100644
--- a/bloodmallet/general_website/templates/general_website/profile.html
+++ b/bloodmallet/general_website/templates/general_website/profile.html
@@ -1,4 +1,4 @@
-{% extends 'general_website/layout_base.html' %}
+{% extends 'general_website/layout/base.html' %}
{% load i18n %}
{% load static %}
{% load crispy_forms_tags %}
diff --git a/bloodmallet/general_website/templates/general_website/settings.html b/bloodmallet/general_website/templates/general_website/settings.html
index e5efe5bb..e431d964 100644
--- a/bloodmallet/general_website/templates/general_website/settings.html
+++ b/bloodmallet/general_website/templates/general_website/settings.html
@@ -1,4 +1,4 @@
-{% extends 'general_website/layout_base.html' %}
+{% extends 'general_website/layout/base.html' %}
{% load i18n %}
{% load static %}
{% load replace_underscore_with_space %}
diff --git a/bloodmallet/general_website/templates/general_website/signup.html b/bloodmallet/general_website/templates/general_website/signup.html
index 814a34d6..76cd205a 100644
--- a/bloodmallet/general_website/templates/general_website/signup.html
+++ b/bloodmallet/general_website/templates/general_website/signup.html
@@ -1,4 +1,4 @@
-{% extends 'general_website/layout_base.html' %}
+{% extends 'general_website/layout/base.html' %}
{% load i18n %}
{% load crispy_forms_tags %}
From f5649dba9e1978d2d22605357d335749ac4af120 Mon Sep 17 00:00:00 2001
From: Bloodmallet
Date: Sat, 30 Mar 2019 10:56:01 +0100
Subject: [PATCH 034/135] some more template restructuring
---
.../templates/allauth/account/base.html | 2 +-
.../templates/allauth/socialaccount/base.html | 2 +-
.../templates/general_website/index.html | 5 ++++-
.../templates/general_website/layout/base.html | 17 +++++++++++------
.../layout/{layout_head.html => head.html} | 0
.../{layout_bottom_nav.html => nav_bottom.html} | 2 ++
...yout_settings_nav.html => nav_settings.html} | 0
.../{layout_top_nav.html => nav_top.html} | 0
...cript_importer.html => script_importer.html} | 0
.../templates/general_website/login.html | 2 +-
.../templates/general_website/profile.html | 2 +-
.../templates/general_website/settings.html | 2 +-
.../templates/general_website/signup.html | 2 +-
13 files changed, 23 insertions(+), 13 deletions(-)
rename bloodmallet/general_website/templates/general_website/layout/{layout_head.html => head.html} (100%)
rename bloodmallet/general_website/templates/general_website/layout/{layout_bottom_nav.html => nav_bottom.html} (97%)
rename bloodmallet/general_website/templates/general_website/layout/{layout_settings_nav.html => nav_settings.html} (100%)
rename bloodmallet/general_website/templates/general_website/layout/{layout_top_nav.html => nav_top.html} (100%)
rename bloodmallet/general_website/templates/general_website/layout/{layout_script_importer.html => script_importer.html} (100%)
diff --git a/bloodmallet/general_website/templates/allauth/account/base.html b/bloodmallet/general_website/templates/allauth/account/base.html
index c916cc29..6986540d 100644
--- a/bloodmallet/general_website/templates/allauth/account/base.html
+++ b/bloodmallet/general_website/templates/allauth/account/base.html
@@ -1 +1 @@
-{% extends 'general_website/layout_base.html' %}
+{% extends 'general_website/layout/base.html' %}
diff --git a/bloodmallet/general_website/templates/allauth/socialaccount/base.html b/bloodmallet/general_website/templates/allauth/socialaccount/base.html
index 2a2a9fbe..827d818a 100644
--- a/bloodmallet/general_website/templates/allauth/socialaccount/base.html
+++ b/bloodmallet/general_website/templates/allauth/socialaccount/base.html
@@ -3,6 +3,6 @@
{# Ensure that the secondary menu is on top of all social account pages #}
{% block precontent%}
{% with page='connections' %}
- {% include 'general_website/layout_settings_nav.html' %}
+ {% include 'general_website/layout/nav_settings.html' %}
{% endwith %}
{% endblock %}
diff --git a/bloodmallet/general_website/templates/general_website/index.html b/bloodmallet/general_website/templates/general_website/index.html
index c6a75ee9..cbfc97d8 100644
--- a/bloodmallet/general_website/templates/general_website/index.html
+++ b/bloodmallet/general_website/templates/general_website/index.html
@@ -36,7 +36,7 @@
{% block content %}
-blood{% if not bloodyfiller %}mallet{% else %}y( {{bloodyfiller}} ){% endif %}
+bloodmallet
{% comment %}
{% if not request.user.is_authenticated %}
@@ -116,6 +116,9 @@