diff --git a/app/blueprints/users/profile.py b/app/blueprints/users/profile.py index f3c697d5..47543dc1 100644 --- a/app/blueprints/users/profile.py +++ b/app/blueprints/users/profile.py @@ -24,14 +24,16 @@ from app.models import * from flask_wtf import FlaskForm from wtforms import * from wtforms.validators import * -from app.utils import randomString, loginUser, rank_required +from app.utils import randomString, loginUser, rank_required, nonEmptyOrNone from app.tasks.forumtasks import checkForumAccount from app.tasks.emails import sendVerifyEmail, sendEmailRaw from app.tasks.phpbbparser import getProfile # Define the User profile form class UserProfileForm(FlaskForm): - display_name = StringField("Display name", [Optional(), Length(2, 20)]) + display_name = StringField("Display name", [Optional(), Length(2, 100)]) + forums_username = StringField("Forums Username", [Optional(), Length(2, 50)]) + github_username = StringField("GitHub Username", [Optional(), Length(2, 50)]) email = StringField("Email", [Optional(), Email()], filters = [lambda x: x or None]) website_url = StringField("Website URL", [Optional(), URL()], filters = [lambda x: x or None]) donate_url = StringField("Donation URL", [Optional(), URL()], filters = [lambda x: x or None]) @@ -52,7 +54,7 @@ def profile(username): abort(404) form = None - if user.checkPerm(current_user, Permission.CHANGE_DNAME) or \ + if user.checkPerm(current_user, Permission.CHANGE_USERNAMES) or \ user.checkPerm(current_user, Permission.CHANGE_EMAIL) or \ user.checkPerm(current_user, Permission.CHANGE_RANK): # Initialize form @@ -61,8 +63,10 @@ def profile(username): # Process valid POST if request.method=="POST" and form.validate(): # Copy form fields to user_profile fields - if user.checkPerm(current_user, Permission.CHANGE_DNAME): - user.display_name = form["display_name"].data + if user.checkPerm(current_user, Permission.CHANGE_USERNAMES): + user.display_name = form.display_name.data + user.forums_username = nonEmptyOrNone(form.forums_username.data) + user.github_username = nonEmptyOrNone(form.github_username.data) if user.checkPerm(current_user, Permission.CHANGE_PROFILE_URLS): user.website_url = form["website_url"].data diff --git a/app/models.py b/app/models.py index 2b12562f..4c61be1d 100644 --- a/app/models.py +++ b/app/models.py @@ -84,7 +84,7 @@ class Permission(enum.Enum): APPROVE_RELEASE = "APPROVE_RELEASE" APPROVE_NEW = "APPROVE_NEW" CHANGE_RELEASE_URL = "CHANGE_RELEASE_URL" - CHANGE_DNAME = "CHANGE_DNAME" + CHANGE_USERNAMES = "CHANGE_USERNAMES" CHANGE_RANK = "CHANGE_RANK" CHANGE_EMAIL = "CHANGE_EMAIL" EDIT_EDITREQUEST = "EDIT_EDITREQUEST" @@ -192,7 +192,7 @@ class User(db.Model, UserMixin): # Members can edit their own packages, and editors can edit any packages if perm == Permission.CHANGE_AUTHOR: return user.rank.atLeast(UserRank.EDITOR) - elif perm == Permission.CHANGE_RANK or perm == Permission.CHANGE_DNAME: + elif perm == Permission.CHANGE_RANK or perm == Permission.CHANGE_USERNAMES: return user.rank.atLeast(UserRank.MODERATOR) elif perm == Permission.CHANGE_EMAIL or perm == Permission.CHANGE_PROFILE_URLS: return user == self or (user.rank.atLeast(UserRank.MODERATOR) and user.rank.atLeast(self.rank)) diff --git a/app/templates/users/profile.html b/app/templates/users/profile.html index a75ae022..4af1c1de 100644 --- a/app/templates/users/profile.html +++ b/app/templates/users/profile.html @@ -162,8 +162,10 @@
{{ form.hidden_tag() }} - {% if user.checkPerm(current_user, "CHANGE_DNAME") %} + {% if user.checkPerm(current_user, "CHANGE_USERNAMES") %} {{ render_field(form.display_name, tabindex=230) }} + {{ render_field(form.forums_username, tabindex=230) }} + {{ render_field(form.github_username, tabindex=230) }} {% endif %} {% if user.checkPerm(current_user, "CHANGE_PROFILE_URLS") %} diff --git a/app/utils.py b/app/utils.py index 07337b65..618a4aa1 100644 --- a/app/utils.py +++ b/app/utils.py @@ -218,3 +218,9 @@ def isYes(val): def isNo(val): return val and not isYes(val) + +def nonEmptyOrNone(str): + if str is None or str == "": + return None + + return str