txukunketa

This commit is contained in:
aitzol 2022-04-16 23:13:00 +02:00
parent c6a4c118ab
commit d9e3661071
16 changed files with 322 additions and 285 deletions

166
app.py
View File

@ -31,10 +31,10 @@ from ldap3.core.exceptions import LDAPBindError, LDAPConstraintViolationResult,
import logging
from os import getenv, environ, path
import re
import sqlite3
from data import flist, slist
from libs import flist, slist
from libs.localization import *
from libs.helper import *
import random
import gettext
BASE_DIR = path.dirname(__file__)
LOG = logging.getLogger(__name__)
@ -134,6 +134,9 @@ def post_signup():
form = request.forms.getunicode
isFake = False
manage_codes = Tools()
db = 'data/invite-codes.db'
def username_validation(e):
regex = r'^\w+$'
return(bool(re.fullmatch(regex, e)))
@ -142,23 +145,6 @@ def post_signup():
regex = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
return(bool(re.fullmatch(regex, e)))
def code_is_valid(code):
con = sqlite3.connect('data/invite-codes.db')
cur = con.cursor()
codes=[]
for row in cur.execute('SELECT * FROM codes WHERE valid = 1'):
codes.append(row[0])
return(bool(code in codes))
def mark_code_as_used(code):
con = sqlite3.connect('data/invite-codes.db')
cur = con.cursor()
cur.execute('''UPDATE codes SET valid=? WHERE code==?''',(0, code))
con.commit()
def auto_complete(arg):
if arg == 'firstname':
result = random.choice(flist.firstname)
@ -169,7 +155,7 @@ def post_signup():
def error(msg):
return signup_tpl(alerts=[('error', msg, 'fadeOut')], str=i18n.str)
if not code_is_valid(form('invite_code')):
if not manage_codes.code_is_valid(form('invite_code'), db):
return(error(i18n.msg[4]))
if len(form('username')) < 3:
@ -206,7 +192,7 @@ def post_signup():
return error(str(e))
try:
mark_code_as_used(form('invite_code'))
manage_codes.mark_code_as_used(form('invite_code'), db)
except Error as e:
LOG.warning("There was a problem verifying the invitation code, please try again later.", e)
return error(str(e))
@ -230,10 +216,10 @@ def post_edit_fullname():
return edit_fullname_tpl(alerts=[('error', msg, 'fadeOut')], data=newSession().get(), str=i18n.str)
if len(form('firstname')) < 3:
return error(i18n.msg[10])
return error(i18n.msg[11])
if len(form('surname')) < 3:
return error(i18n.msg[11])
return error(i18n.msg[12])
try:
edit_fullname(username, old_firstname, old_surname, form('firstname').lower(), form('surname').lower())
@ -241,7 +227,7 @@ def post_edit_fullname():
LOG.warning("Unsuccessful attempt to edit fullname for %s: %s" % (username, e))
return error(str(e))
return user_tpl(alerts=[('success', i18n.msg[12], 'fadeOut' )], data=newSession().get(), str=i18n.str)
return user_tpl(alerts=[('success', i18n.msg[13], 'fadeOut' )], data=newSession().get(), str=i18n.str)
@post('/edit_email')
def post_edit_email():
@ -261,7 +247,7 @@ def post_edit_email():
return edit_email_tpl(alerts=[('error', msg, 'fadeOut')], data=newSession().get(), str=i18n.str)
if not email_is_valid(form('email')):
return(error(i18n.msg[13]))
return(error(i18n.msg[14]))
try:
edit_email(username, old_email, form('email').lower())
@ -269,7 +255,7 @@ def post_edit_email():
LOG.warning("Unsuccessful attempt to change email addres for %s: %s" % (username, e))
return error(str(e))
return user_tpl(alerts=[('success', i18n.msg[14], 'fadeOut' )], data=newSession().get(), str=i18n.str)
return user_tpl(alerts=[('success', i18n.msg[16], 'fadeOut' )], data=newSession().get(), str=i18n.str)
@post('/change_pwd')
def post_change_pwd():
@ -289,7 +275,7 @@ def post_change_pwd():
return error(i18n.msg[8])
if form('old-password') == form('confirm-password'):
return error(i18n.msg[15])
return error(i18n.msg[17])
try:
change_passwords(username, form('old-password'), form('new-password'))
@ -300,7 +286,7 @@ def post_change_pwd():
LOG.info("Password successfully changed for: %s" % username)
return index_tpl(alerts=[('success', i18n.msg[16], 'fadeOut')], username=username, str=i18n.str)
return index_tpl(alerts=[('success', i18n.msg[18], 'fadeOut')], username=username, str=i18n.str)
@post('/delete')
def post_delete():
@ -314,14 +300,14 @@ def post_delete():
if(form('username').lower() == username):
del_user(username)
else:
return(error(i18n.msg[17]))
return(error(i18n.msg[19]))
except Error as e:
LOG.warning("Unsuccessful attempt to delete the account: %s" % e)
return error(str(e))
LOG.info("Account successfully deleted")
return index_tpl(alerts=[('success', i18n.msg[18], 'fadeOut')], str=i18n.str)
return index_tpl(alerts=[('success', i18n.msg[20], 'fadeOut')], str=i18n.str)
@route('/static/<filename>', name='static')
def serve_static(filename):
@ -380,15 +366,15 @@ def login_user(conf, *args):
login_user_ldap(conf, *args)
except (LDAPBindError, LDAPInvalidCredentialsResult, LDAPUserNameIsMandatoryError):
raise Error(i18n.msg[19])
raise Error(i18n.msg[21])
except LDAPSocketOpenError as e:
LOG.error('{}: {!s}'.format(e.__class__.__name__, e))
raise Error(i18n.msg[20])
raise Error(i18n.msg[22])
except LDAPExceptionError as e:
LOG.error('{}: {!s}'.format(e.__class__.__name__, e))
raise Error(i18n.msg[21])
raise Error(i18n.msg[23])
def login_user_ldap(conf, username, password):
#set current LDAP
@ -428,15 +414,15 @@ def logout_user(conf, *args):
logout_user_ldap(conf, *args)
except (LDAPBindError, LDAPInvalidCredentialsResult, LDAPUserNameIsMandatoryError):
raise Error(i18n.msg[19])
raise Error(i18n.msg[21])
except LDAPSocketOpenError as e:
LOG.error('{}: {!s}'.format(e.__class__.__name__, e))
raise Error(i18n.msg[20])
raise Error(i18n.msg[22])
except LDAPExceptionError as e:
LOG.error('{}: {!s}'.format(e.__class__.__name__, e))
raise Error(i18n.msg[21])
raise Error(i18n.msg[23])
def logout_user_ldap(conf, username):
#set current LDAP
@ -475,15 +461,15 @@ def new_user_account(conf, *args):
register(conf, *args)
except (LDAPBindError, LDAPInvalidCredentialsResult, LDAPUserNameIsMandatoryError):
raise Error(i18n.msg[19])
raise Error(i18n.msg[21])
except LDAPSocketOpenError as e:
LOG.error('{}: {!s}'.format(e.__class__.__name__, e))
raise Error(i18n.msg[20])
raise Error(i18n.msg[22])
except LDAPExceptionError as e:
LOG.error('{}: {!s}'.format(e.__class__.__name__, e))
raise Error(i18n.msg[21])
raise Error(i18n.msg[23])
def register(conf, username, firstname, surname, password, email, isFake):
@ -503,10 +489,10 @@ def register(conf, username, firstname, surname, password, email, isFake):
try:
if (find_user_dn(conf,c,username) is not None):
raise Error(i18n.msg[22])
raise Error(i18n.msg[24])
if (find_email(conf,c,email)):
raise Error(i18n.msg[23])
raise Error(i18n.msg[25])
except Error as e:
raise e
@ -549,7 +535,7 @@ def new_fullname(conf, *args):
update_fullname(conf, *args)
except (LDAPBindError, LDAPInvalidCredentialsResult, LDAPUserNameIsMandatoryError):
raise Error(i18n.msg[24])
raise Error(i18n.msg[26])
except LDAPConstraintViolationResult as e:
# Extract useful part of the error message (for Samba 4 / AD).
@ -558,11 +544,11 @@ def new_fullname(conf, *args):
except LDAPSocketOpenError as e:
LOG.error('{}: {!s}'.format(e.__class__.__name__, e))
raise Error(i18n.msg[20])
raise Error(i18n.msg[22])
except LDAPExceptionError as e:
LOG.error('{}: {!s}'.format(e.__class__.__name__, e))
raise Error(i18n.msg[21])
raise Error(i18n.msg[23])
def update_fullname(conf, username, firstname, surname):
#set current LDAP
@ -581,7 +567,7 @@ def update_fullname(conf, username, firstname, surname):
fakeFullName = user_dn[3:-len(base)].split(" ")
if(user_dn == new_user_dn):
raise Error('Izen-abizenak ez dira aldatu.')
raise Error(i18n.msg[10])
c.modify(new_user_dn, {'fakeCn': [(MODIFY_REPLACE, 'false' )]})
newSession().set(get_user_data(new_user_dn, c))
@ -612,7 +598,7 @@ def new_email_address(conf, *args):
update_email_address(conf, *args)
except (LDAPBindError, LDAPInvalidCredentialsResult, LDAPUserNameIsMandatoryError):
raise Error(i18n.msg[24])
raise Error(i18n.msg[26])
except LDAPConstraintViolationResult as e:
# Extract useful part of the error message (for Samba 4 / AD).
@ -621,16 +607,16 @@ def new_email_address(conf, *args):
except LDAPSocketOpenError as e:
LOG.error('{}: {!s}'.format(e.__class__.__name__, e))
raise Error(i18n.msg[20])
raise Error(i18n.msg[22])
except LDAPExceptionError as e:
LOG.error('{}: {!s}'.format(e.__class__.__name__, e))
raise Error(i18n.msg[21])
raise Error(i18n.msg[23])
def update_email_address(conf, username, old_email, new_email):
if(old_email == new_email):
raise Error('Email helbidea ez da aldatu.')
raise Error(i18n.msg[15])
#set current LDAP
superUser = SuperUsers(conf)
@ -670,7 +656,7 @@ def change_password(conf, *args):
change_password_ldap(conf, *args)
except (LDAPBindError, LDAPInvalidCredentialsResult, LDAPUserNameIsMandatoryError):
raise Error(i18n.msg[24])
raise Error(i18n.msg[26])
except LDAPConstraintViolationResult as e:
# Extract useful part of the error message (for Samba 4 / AD).
@ -679,11 +665,11 @@ def change_password(conf, *args):
except LDAPSocketOpenError as e:
LOG.error('{}: {!s}'.format(e.__class__.__name__, e))
raise Error(i18n.msg[20])
raise Error(i18n.msg[22])
except LDAPExceptionError as e:
LOG.error('{}: {!s}'.format(e.__class__.__name__, e))
raise Error(i18n.msg[21])
raise Error(i18n.msg[23])
def change_password_ldap(conf, username, old_pass, new_pass):
@ -729,11 +715,11 @@ def del_account(conf, *args):
except LDAPSocketOpenError as e:
LOG.error('{}: {!s}'.format(e.__class__.__name__, e))
raise Error(i18n.msg[20])
raise Error(i18n.msg[22])
except LDAPExceptionError as e:
LOG.error('{}: {!s}'.format(e.__class__.__name__, e))
raise Error(i18n.msg[21])
raise Error(i18n.msg[23])
def delete(conf, username):
#set current LDAP
@ -831,8 +817,9 @@ def newSession():
self.data = bottle.request.environ.get('beaker.session')
self.lang = self.get_lang()
#localization
self.lang = self.get_lang()
global i18n
i18n = LocalizeTo(self.lang)
i18n = LocalizeTo(self.lang, CONF)
def get_lang(self):
if 'HTTP_ACCEPT_LANGUAGE' in bottle.request.environ:
@ -845,7 +832,7 @@ def newSession():
if 'username' in self.data:
return(self.data)
else:
raise Error(i18n.msg[25])
raise Error(i18n.msg[27])
def set(self, data):
self.active = data[0]
@ -871,71 +858,6 @@ def newSession():
s=Session()
return s
class LocalizeTo(object):
"""docstring for Session"""
def __init__(self, lang):
super(LocalizeTo, self).__init__()
translate = gettext.translation('base', localedir=CONF['locale']['dir'], languages=[lang])
translate.install()
_ = translate.gettext
#generic strings
str_00 = _("User")
str_01 = _("Username")
str_02 = _("Firstname")
str_03 = _("Surname")
str_04 = _("Password")
str_05 = _("Old password")
str_06 = _("New password")
str_07 = _("Confirm password")
str_08 = _("Email")
str_09 = _("edit")
str_10 = _("Login")
str_11 = _("Logout")
str_12 = _("Delete")
str_13 = _("Sign Up")
str_14 = _("Back")
str_15 = _("Update")
str_16 = _("Or Sign In")
str_17 = _("Or Sign Up")
str_18 = _("Invite code")
str_19 = _("Edit your fullname")
str_20 = _("Edit your email")
str_21 = _("Change your password")
str_22 = _("Delete your account")
str_23 = _("Welcome")
#messages
msg_00 = _("The session was closed.")
msg_01 = _("Username must be at least 3 characters long!")
msg_02 = _("Please enter your password!")
msg_03 = _("Welcome")
msg_04 = _("The code is invalid or has expired.")
msg_05 = _("A bit short, don't you think?!")
msg_06 = _("Not allowed characters for the username field.")
msg_07 = _("Passwords do not match!")
msg_08 = _("Password must be at least 8 characters long!")
msg_09 = _("Congratulations, your account has been created!")
msg_10 = _("Your firstname is a bit short, don't you think?")
msg_11 = _("Your surname is a bit short, don't you think?")
msg_12 = _("Your first and last name have been successfully updated.")
msg_13 = _("Invalid email address. Please try again.")
msg_14 = _("Your email has been successfully updated.")
msg_15 = _("The password entered is the same as the current password.")
msg_16 = _("Password has been changed!")
msg_17 = _("Please, type your username for account deletion.")
msg_18 = _("Account successfully deleted!")
msg_19 = _("Username or password is incorrect!")
msg_20 = _("Unable to connect to the remote server.")
msg_21 = _("Encountered an unexpected error while communicating with the remote server.")
msg_22 = _("User already exists.")
msg_23 = _("Email already exists.")
msg_24 = _("Forgot your password? Please try again.")
msg_25 = _("The session has expired.")
self.str = {'usr':str_00, 'usrn':str_01, 'fn':str_02, 'sn':str_03, 'pwd':str_04, 'old-pwd':str_05, 'new-pwd':str_06, 'conf-pwd':str_07, 'email':str_08, 'edit':str_09, 'login':str_10, 'log-out':str_11, 'del':str_12, 'sign-up':str_13, 'back':str_14, 'update':str_15, 'or-sign-in':str_16, 'or-sign-up':str_17, 'inv-code':str_18, 'edit-fn':str_19, 'edit-email':str_20, 'ch-pwd':str_21, 'del-account':str_22, 'welcome':str_23}
self.msg = (msg_00, msg_01, msg_02, msg_03, msg_04, msg_05, msg_06, msg_07, msg_08, msg_09, msg_10, msg_11, msg_12, msg_13, msg_14, msg_15, msg_16, msg_17, msg_18, msg_19, msg_20, msg_21, msg_22, msg_23, msg_24, msg_25)
if environ.get('DEBUG'):
bottle.debug(True)

Binary file not shown.

Binary file not shown.

Binary file not shown.

25
libs/helper.py Normal file
View File

@ -0,0 +1,25 @@
#!/usr/bin/python3
import sqlite3
class Tools():
def __init__(self):
self.username = ''
#check code
def code_is_valid(self, code, db):
con = sqlite3.connect(db)
cur = con.cursor()
codes=[]
for row in cur.execute('SELECT * FROM codes WHERE valid = 1'):
codes.append(row[0])
return(bool(code in codes))
def mark_code_as_used(self, code, db):
con = sqlite3.connect(db)
cur = con.cursor()
cur.execute('''UPDATE codes SET valid=? WHERE code==?''',(0, code))
con.commit()

68
libs/localization.py Normal file
View File

@ -0,0 +1,68 @@
import gettext
class LocalizeTo(object):
"""docstring for Session"""
def __init__(self, lang, conf):
super(LocalizeTo, self).__init__()
translate = gettext.translation('base', localedir=conf['locale']['dir'], languages=[lang])
translate.install()
_ = translate.gettext
#generic strings
str_00 = _("User")
str_01 = _("Username")
str_02 = _("Firstname")
str_03 = _("Surname")
str_04 = _("Password")
str_05 = _("Old password")
str_06 = _("New password")
str_07 = _("Confirm password")
str_08 = _("Email")
str_09 = _("edit")
str_10 = _("Login")
str_11 = _("Logout")
str_12 = _("Delete")
str_13 = _("Sign Up")
str_14 = _("Back")
str_15 = _("Update")
str_16 = _("Or Sign In")
str_17 = _("Or Sign Up")
str_18 = _("Invite code")
str_19 = _("Edit your fullname")
str_20 = _("Edit your email")
str_21 = _("Change your password")
str_22 = _("Delete your account")
str_23 = _("Welcome")
#messages
msg_00 = _("The session was closed.")
msg_01 = _("Username must be at least 3 characters long!")
msg_02 = _("Please enter your password!")
msg_03 = _("Welcome")
msg_04 = _("The code is invalid or has expired.")
msg_05 = _("A bit short, don't you think?!")
msg_06 = _("Not allowed characters for the username field.")
msg_07 = _("Passwords do not match!")
msg_08 = _("Password must be at least 8 characters long!")
msg_09 = _("Congratulations, your account has been created!")
msg_10 = _("Your first and last name have not been changed.")
msg_11 = _("Your firstname is a bit short, don't you think?")
msg_12 = _("Your surname is a bit short, don't you think?")
msg_13 = _("Your first and last name have been successfully updated.")
msg_14 = _("Invalid email address. Please try again.")
msg_15 = _("Email address has not been changed.")
msg_16 = _("Your email has been successfully updated.")
msg_17 = _("The password entered is the same as the current password.")
msg_18 = _("Password has been changed!")
msg_19 = _("Please, type your username for account deletion.")
msg_20 = _("Account successfully deleted!")
msg_21 = _("Username or password is incorrect!")
msg_22 = _("Unable to connect to the remote server.")
msg_23 = _("Encountered an unexpected error while communicating with the remote server.")
msg_24 = _("User already exists.")
msg_25 = _("Email already exists.")
msg_26 = _("Forgot your password? Please try again.")
msg_27 = _("The session has expired.")
self.str = {'usr':str_00, 'usrn':str_01, 'fn':str_02, 'sn':str_03, 'pwd':str_04, 'old-pwd':str_05, 'new-pwd':str_06, 'conf-pwd':str_07, 'email':str_08, 'edit':str_09, 'login':str_10, 'log-out':str_11, 'del':str_12, 'sign-up':str_13, 'back':str_14, 'update':str_15, 'or-sign-in':str_16, 'or-sign-up':str_17, 'inv-code':str_18, 'edit-fn':str_19, 'edit-email':str_20, 'ch-pwd':str_21, 'del-account':str_22, 'welcome':str_23}
self.msg = (msg_00, msg_01, msg_02, msg_03, msg_04, msg_05, msg_06, msg_07, msg_08, msg_09, msg_10, msg_11, msg_12, msg_13, msg_14, msg_15, msg_16, msg_17, msg_18, msg_19, msg_20, msg_21, msg_22, msg_23, msg_24, msg_25, msg_26, msg_27)

View File

@ -17,199 +17,207 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: app.py:880
#: libs/localization.py:12
msgid "User"
msgstr ""
#: app.py:881
#: libs/localization.py:13
msgid "Username"
msgstr ""
#: app.py:882
#: libs/localization.py:14
msgid "Firstname"
msgstr ""
#: app.py:883
#: libs/localization.py:15
msgid "Surname"
msgstr ""
#: app.py:884
#: libs/localization.py:16
msgid "Password"
msgstr ""
#: app.py:885
#: libs/localization.py:17
msgid "Old password"
msgstr ""
#: app.py:886
#: libs/localization.py:18
msgid "New password"
msgstr ""
#: app.py:887
#: libs/localization.py:19
msgid "Confirm password"
msgstr ""
#: app.py:888
#: libs/localization.py:20
msgid "Email"
msgstr ""
#: app.py:889
#: libs/localization.py:21
msgid "edit"
msgstr ""
#: app.py:890
#: libs/localization.py:22
msgid "Login"
msgstr ""
#: app.py:891
#: libs/localization.py:23
msgid "Logout"
msgstr ""
#: app.py:892
#: libs/localization.py:24
msgid "Delete"
msgstr ""
#: app.py:893
#: libs/localization.py:25
msgid "Sign Up"
msgstr ""
#: app.py:894
#: libs/localization.py:26
msgid "Back"
msgstr ""
#: app.py:895
#: libs/localization.py:27
msgid "Update"
msgstr ""
#: app.py:896
#: libs/localization.py:28
msgid "Or Sign In"
msgstr ""
#: app.py:897
#: libs/localization.py:29
msgid "Or Sign Up"
msgstr ""
#: app.py:898
#: libs/localization.py:30
msgid "Invite code"
msgstr ""
#: app.py:899
#: libs/localization.py:31
msgid "Edit your fullname"
msgstr ""
#: app.py:900
#: libs/localization.py:32
msgid "Edit your email"
msgstr ""
#: app.py:901
#: libs/localization.py:33
msgid "Change your password"
msgstr ""
#: app.py:902
#: libs/localization.py:34
msgid "Delete your account"
msgstr ""
#: app.py:903 app.py:909
#: libs/localization.py:35 libs/localization.py:41
msgid "Welcome"
msgstr ""
#: app.py:906
#: libs/localization.py:38
msgid "The session was closed."
msgstr ""
#: app.py:907
#: libs/localization.py:39
msgid "Username must be at least 3 characters long!"
msgstr ""
#: app.py:908
#: libs/localization.py:40
msgid "Please enter your password!"
msgstr ""
#: app.py:910
#: libs/localization.py:42
msgid "The code is invalid or has expired."
msgstr ""
#: app.py:911
#: libs/localization.py:43
msgid "A bit short, don't you think?!"
msgstr ""
#: app.py:912
#: libs/localization.py:44
msgid "Not allowed characters for the username field."
msgstr ""
#: app.py:913
#: libs/localization.py:45
msgid "Passwords do not match!"
msgstr ""
#: app.py:914
#: libs/localization.py:46
msgid "Password must be at least 8 characters long!"
msgstr ""
#: app.py:915
#: libs/localization.py:47
msgid "Congratulations, your account has been created!"
msgstr ""
#: app.py:916
#: libs/localization.py:48
msgid "Your first and last name have not been changed."
msgstr ""
#: libs/localization.py:49
msgid "Your firstname is a bit short, don't you think?"
msgstr ""
#: app.py:917
#: libs/localization.py:50
msgid "Your surname is a bit short, don't you think?"
msgstr ""
#: app.py:918
#: libs/localization.py:51
msgid "Your first and last name have been successfully updated."
msgstr ""
#: app.py:919
#: libs/localization.py:52
msgid "Invalid email address. Please try again."
msgstr ""
#: app.py:920
#: libs/localization.py:53
msgid "Email address has not been changed."
msgstr ""
#: libs/localization.py:54
msgid "Your email has been successfully updated."
msgstr ""
#: app.py:921
#: libs/localization.py:55
msgid "The password entered is the same as the current password."
msgstr ""
#: app.py:922
#: libs/localization.py:56
msgid "Password has been changed!"
msgstr ""
#: app.py:923
#: libs/localization.py:57
msgid "Please, type your username for account deletion."
msgstr ""
#: app.py:924
#: libs/localization.py:58
msgid "Account successfully deleted!"
msgstr ""
#: app.py:925
#: libs/localization.py:59
msgid "Username or password is incorrect!"
msgstr ""
#: app.py:926
#: libs/localization.py:60
msgid "Unable to connect to the remote server."
msgstr ""
#: app.py:927
#: libs/localization.py:61
msgid ""
"Encountered an unexpected error while communicating with the remote server."
msgstr ""
#: app.py:928
#: libs/localization.py:62
msgid "User already exists."
msgstr ""
#: app.py:929
#: libs/localization.py:63
msgid "Email already exists."
msgstr ""
#: app.py:930
#: libs/localization.py:64
msgid "Forgot your password? Please try again."
msgstr ""
#: app.py:931
#: libs/localization.py:65
msgid "The session has expired."
msgstr ""

Binary file not shown.

View File

@ -3,213 +3,220 @@
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <aitzol@lainoa.eus>, 2022.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: 0.0.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-04-07 17:23+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"PO-Revision-Date: 2022-04-16 17:11+0200\n"
"Last-Translator: Aitzol Berasategi <aitzol@lainoa.eus>\n"
"Language-Team: LANGUAGE <EU@eu.org>\n"
"Language: \n"
"Language: en\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.3\n"
#: app.py:880
#: libs/localization.py:12
msgid "User"
msgstr "User"
#: app.py:881
#: libs/localization.py:13
msgid "Username"
msgstr "Username"
#: app.py:882
#: libs/localization.py:14
msgid "Firstname"
msgstr "Firstname"
#: app.py:883
#: libs/localization.py:15
msgid "Surname"
msgstr "Surname"
#: app.py:884
#: libs/localization.py:16
msgid "Password"
msgstr "Password"
#: app.py:885
#: libs/localization.py:17
msgid "Old password"
msgstr "Old password"
#: app.py:886
#: libs/localization.py:18
msgid "New password"
msgstr "New password"
#: app.py:887
#: libs/localization.py:19
msgid "Confirm password"
msgstr "Confirm password"
#: app.py:888
#: libs/localization.py:20
msgid "Email"
msgstr "Email"
#: app.py:889
#: libs/localization.py:21
msgid "edit"
msgstr "edit"
#: app.py:890
#: libs/localization.py:22
msgid "Login"
msgstr "Login"
#: app.py:891
#: libs/localization.py:23
msgid "Logout"
msgstr "Logout"
#: app.py:892
#: libs/localization.py:24
msgid "Delete"
msgstr "Delete"
#: app.py:893
#: libs/localization.py:25
msgid "Sign Up"
msgstr "Sign Up"
#: app.py:894
#: libs/localization.py:26
msgid "Back"
msgstr "Back"
#: app.py:895
#: libs/localization.py:27
msgid "Update"
msgstr "Update"
#: app.py:896
#: libs/localization.py:28
msgid "Or Sign In"
msgstr "Or Sign In"
#: app.py:897
#: libs/localization.py:29
msgid "Or Sign Up"
msgstr "Or Sign Up"
#: app.py:898
#: libs/localization.py:30
msgid "Invite code"
msgstr "Invite code"
#: app.py:899
#: libs/localization.py:31
msgid "Edit your fullname"
msgstr "Edit your fullname"
#: app.py:900
#: libs/localization.py:32
msgid "Edit your email"
msgstr "Edit your email"
#: app.py:901
#: libs/localization.py:33
msgid "Change your password"
msgstr "Change your password"
#: app.py:902
#: libs/localization.py:34
msgid "Delete your account"
msgstr "Delete your account"
#: app.py:903 app.py:909
#: libs/localization.py:35 libs/localization.py:41
msgid "Welcome"
msgstr "Welcome"
#: app.py:906
#: libs/localization.py:38
msgid "The session was closed."
msgstr "The session was closed."
#: app.py:907
#: libs/localization.py:39
msgid "Username must be at least 3 characters long!"
msgstr "Username must be at least 3 characters long!"
#: app.py:908
#: libs/localization.py:40
msgid "Please enter your password!"
msgstr "Please enter your password!"
#: app.py:910
#: libs/localization.py:42
msgid "The code is invalid or has expired."
msgstr "The code is invalid or has expired."
#: app.py:911
#: libs/localization.py:43
msgid "A bit short, don't you think?!"
msgstr "A bit short, don't you think?!"
#: app.py:912
#: libs/localization.py:44
msgid "Not allowed characters for the username field."
msgstr "Not allowed characters for the username field."
#: app.py:913
#: libs/localization.py:45
msgid "Passwords do not match!"
msgstr "Passwords do not match!"
#: app.py:914
#: libs/localization.py:46
msgid "Password must be at least 8 characters long!"
msgstr "Password must be at least 8 characters long!"
#: app.py:915
#: libs/localization.py:47
msgid "Congratulations, your account has been created!"
msgstr "Congratulations, your account has been created!"
#: app.py:916
#: libs/localization.py:48
msgid "Your first and last name have not been changed."
msgstr "Your first and last name have not been changed."
#: libs/localization.py:49
msgid "Your firstname is a bit short, don't you think?"
msgstr "Your firstname is a bit short, don't you think?"
#: app.py:917
#: libs/localization.py:50
msgid "Your surname is a bit short, don't you think?"
msgstr "Your surname is a bit short, don't you think?"
#: app.py:918
#: libs/localization.py:51
msgid "Your first and last name have been successfully updated."
msgstr "Your first and last name have been successfully updated."
#: app.py:919
#: libs/localization.py:52
msgid "Invalid email address. Please try again."
msgstr "Invalid email address. Please try again."
#: app.py:920
#: libs/localization.py:53
msgid "Email address has not been changed."
msgstr "Email address has not been changed."
#: libs/localization.py:54
msgid "Your email has been successfully updated."
msgstr "Your email has been successfully updated."
#: app.py:921
#: libs/localization.py:55
msgid "The password entered is the same as the current password."
msgstr "The password entered is the same as the current password."
#: app.py:922
#: libs/localization.py:56
msgid "Password has been changed!"
msgstr "Password has been changed!"
#: app.py:923
#: libs/localization.py:57
msgid "Please, type your username for account deletion."
msgstr "Please, type your username for account deletion."
#: app.py:924
#: libs/localization.py:58
msgid "Account successfully deleted!"
msgstr "Account successfully deleted!"
#: app.py:925
#: libs/localization.py:59
msgid "Username or password is incorrect!"
msgstr "Username or password is incorrect!"
#: app.py:926
#: libs/localization.py:60
msgid "Unable to connect to the remote server."
msgstr "Unable to connect to the remote server."
#: app.py:927
msgid ""
"Encountered an unexpected error while communicating with the remote server."
#: libs/localization.py:61
msgid "Encountered an unexpected error while communicating with the remote server."
msgstr "Encountered an unexpected error while communicating with the remote server."
#: app.py:928
#: libs/localization.py:62
msgid "User already exists."
msgstr "User already exists."
#: app.py:929
#: libs/localization.py:63
msgid "Email already exists."
msgstr "Email already exists."
#: app.py:930
#: libs/localization.py:64
msgid "Forgot your password? Please try again."
msgstr "Forgot your password? Please try again."
#: app.py:931
#: libs/localization.py:65
msgid "The session has expired."
msgstr "The session has expired."

Binary file not shown.

View File

@ -3,213 +3,220 @@
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <aitzol@lainoa.eus>, 2022.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: 0.0.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-04-07 17:23+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"PO-Revision-Date: 2022-04-16 17:13+0200\n"
"Last-Translator: Aitzol Berasategi <aitzol@lainoa.eus>\n"
"Language-Team: LANGUAGE <EU@eu.org>\n"
"Language: \n"
"Language: eu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.3\n"
#: app.py:880
#: libs/localization.py:12
msgid "User"
msgstr "Erabiltzailea"
#: app.py:881
#: libs/localization.py:13
msgid "Username"
msgstr "Erabiltzaile izena"
msgstr "Erabiltzailea"
#: app.py:882
#: libs/localization.py:14
msgid "Firstname"
msgstr "Izena"
#: app.py:883
#: libs/localization.py:15
msgid "Surname"
msgstr "Abizena"
#: app.py:884
#: libs/localization.py:16
msgid "Password"
msgstr "Pasahitza"
#: app.py:885
#: libs/localization.py:17
msgid "Old password"
msgstr "Pasahitz zaharra"
#: app.py:886
#: libs/localization.py:18
msgid "New password"
msgstr "Pasahitz berria"
#: app.py:887
#: libs/localization.py:19
msgid "Confirm password"
msgstr "Pasahitza berretsi"
#: app.py:888
#: libs/localization.py:20
msgid "Email"
msgstr "Emaila"
#: app.py:889
#: libs/localization.py:21
msgid "edit"
msgstr "editatu"
#: app.py:890
#: libs/localization.py:22
msgid "Login"
msgstr "Saioa hasi"
#: app.py:891
#: libs/localization.py:23
msgid "Logout"
msgstr "Saioa itxi"
#: app.py:892
#: libs/localization.py:24
msgid "Delete"
msgstr "Ezabatu"
#: app.py:893
#: libs/localization.py:25
msgid "Sign Up"
msgstr "Kontua sortu"
#: app.py:894
#: libs/localization.py:26
msgid "Back"
msgstr "Itzuli"
#: app.py:895
#: libs/localization.py:27
msgid "Update"
msgstr "Eguneratu"
#: app.py:896
#: libs/localization.py:28
msgid "Or Sign In"
msgstr "Edo Saioa hasi"
#: app.py:897
#: libs/localization.py:29
msgid "Or Sign Up"
msgstr "Edo Kontua sortu"
#: app.py:898
#: libs/localization.py:30
msgid "Invite code"
msgstr "Gonbidapen kodea"
#: app.py:899
#: libs/localization.py:31
msgid "Edit your fullname"
msgstr "Izen-abizenak editatu"
#: app.py:900
#: libs/localization.py:32
msgid "Edit your email"
msgstr "Email helbidea editatu"
#: app.py:901
#: libs/localization.py:33
msgid "Change your password"
msgstr "Pasahitza eguneratu"
#: app.py:902
#: libs/localization.py:34
msgid "Delete your account"
msgstr "Kontua ezabatu"
#: app.py:903 app.py:909
#: libs/localization.py:35 libs/localization.py:41
msgid "Welcome"
msgstr "Ongi etorri"
#: app.py:906
#: libs/localization.py:38
msgid "The session was closed."
msgstr "Saioa itxi da."
#: app.py:907
#: libs/localization.py:39
msgid "Username must be at least 3 characters long!"
msgstr "Erabiltzaile izenak gutxienez 3 karaktere izan behar ditu!"
#: app.py:908
#: libs/localization.py:40
msgid "Please enter your password!"
msgstr "Sartu zure pasahitza, mesedez!"
#: app.py:910
#: libs/localization.py:42
msgid "The code is invalid or has expired."
msgstr "Kodea baliogabea da edo iraungi egin da."
#: app.py:911
#: libs/localization.py:43
msgid "A bit short, don't you think?!"
msgstr "Labur-xamarra, ez duzu uste?"
msgstr "Labur-xamarra, ez duzu uste?!"
#: app.py:912
#: libs/localization.py:44
msgid "Not allowed characters for the username field."
msgstr "Erabiltzaile izenerako onartzen ez diren karaktereak."
#: app.py:913
#: libs/localization.py:45
msgid "Passwords do not match!"
msgstr "Pasahitzak ez datoz bat!"
#: app.py:914
#: libs/localization.py:46
msgid "Password must be at least 8 characters long!"
msgstr "Pasahitzak gutxienez 8 karaktereko luzera izan behar du!"
#: app.py:915
#: libs/localization.py:47
msgid "Congratulations, your account has been created!"
msgstr "Zorionak, zure kontua sortu da!"
#: app.py:916
#: libs/localization.py:48
msgid "Your first and last name have not been changed."
msgstr "Zure izen-abizenak ez dira aldatu."
#: libs/localization.py:49
msgid "Your firstname is a bit short, don't you think?"
msgstr "Zure izena labur-xamarra da, ez duzu uste?"
#: app.py:917
#: libs/localization.py:50
msgid "Your surname is a bit short, don't you think?"
msgstr "Zure abizena labur-xamarra da, ez duzu uste?"
#: app.py:918
#: libs/localization.py:51
msgid "Your first and last name have been successfully updated."
msgstr "Zure izen-abizenak ongi eguneratu dira."
#: app.py:919
#: libs/localization.py:52
msgid "Invalid email address. Please try again."
msgstr "Baliogabeko email helbidea. Saia zaitez berriz, mesedez. "
msgstr "Baliogabeko email helbidea. Saia zaitez berriz, mesedez."
#: app.py:920
#: libs/localization.py:53
msgid "Email address has not been changed."
msgstr "Email helbidea ez da aldatu."
#: libs/localization.py:54
msgid "Your email has been successfully updated."
msgstr "Zure emaila ongi eguneratu da."
#: app.py:921
#: libs/localization.py:55
msgid "The password entered is the same as the current password."
msgstr "Sartutako pasahitza egungo pasahitzaren berdina da."
#: app.py:922
#: libs/localization.py:56
msgid "Password has been changed!"
msgstr "Pasahitza eguneratua izan da!"
#: app.py:923
#: libs/localization.py:57
msgid "Please, type your username for account deletion."
msgstr "Kontua ezabatzeko idatzi zure erabiltzaile izena, mesedez."
#: app.py:924
#: libs/localization.py:58
msgid "Account successfully deleted!"
msgstr "Kontua ongi ezabatu da!"
#: app.py:925
#: libs/localization.py:59
msgid "Username or password is incorrect!"
msgstr "Erabiltzaile izena edo pasahitza okerrak dira!"
#: app.py:926
#: libs/localization.py:60
msgid "Unable to connect to the remote server."
msgstr "Ezinezkoa urruneko zerbitzara konektatzea."
#: app.py:927
msgid ""
"Encountered an unexpected error while communicating with the remote server."
#: libs/localization.py:61
msgid "Encountered an unexpected error while communicating with the remote server."
msgstr "Ezusteko errore bat gertatu da urruneko zerbitzariarekin komunikatzean."
#: app.py:928
#: libs/localization.py:62
msgid "User already exists."
msgstr "Erabiltzaile hori existitzen da."
#: app.py:929
msgid "Email already exists"
#: libs/localization.py:63
msgid "Email already exists."
msgstr "Email hori existitzen da."
#: app.py:930
#: libs/localization.py:64
msgid "Forgot your password? Please try again."
msgstr "Zure pasahitza ahaztu duzu? Saia zeitez berriz, mesedez."
#: app.py:931
#: libs/localization.py:65
msgid "The session has expired."
msgstr "Saioa iraungi egin da."