diff --git a/pagure/templates/issue.html b/pagure/templates/issue.html
index 0e8ac65..17add24 100644
--- a/pagure/templates/issue.html
+++ b/pagure/templates/issue.html
@@ -148,7 +148,7 @@
- {% if authenticated and g.repo_admin %}
+ {% if authenticated and (g.repo_admin or g.fas_user.username == issue.user.user) %}
{{ render_bootstrap_field(form.status,
formclass="issue-metadata-form") }}
{{ render_bootstrap_field(form.close_status,
@@ -309,7 +309,7 @@
Cancel
- {% if authenticated and g.repo_admin %}
+ {% if authenticated and (g.repo_admin or g.fas_user.username == issue.user.user) %}
Edit Metadata
diff --git a/pagure/ui/issues.py b/pagure/ui/issues.py
index 6b104e9..a6e436c 100644
--- a/pagure/ui/issues.py
+++ b/pagure/ui/issues.py
@@ -257,8 +257,9 @@ def update_issue(repo, issueid, username=None, namespace=None):
ticketfolder=APP.config['TICKETS_FOLDER']
)))
- # The meta-data can only be changed by admins, which means they
- # will be missing for non-admin and thus reset if we let them
+ # The meta-data can be changed by admins and issue creator,
+ # where issue creators can only change status of their issue while
+ # other fields will be missing for non-admin and thus reset if we let them
if repo_admin:
# Assign or update assignee of the ticket
message = pagure.lib.add_issue_assignee(
@@ -273,6 +274,7 @@ def update_issue(repo, issueid, username=None, namespace=None):
messages.add(message)
# Update status
+ if repo_admin or flask.g.fas_user.username == issue.user.user:
if new_status in status:
message = pagure.lib.edit_issue(
SESSION,
@@ -288,6 +290,7 @@ def update_issue(repo, issueid, username=None, namespace=None):
messages.add(message)
# Update priority
+ if repo_admin:
if str(new_priority) in repo.priorities:
message = pagure.lib.edit_issue(
SESSION,
@@ -302,6 +305,7 @@ def update_issue(repo, issueid, username=None, namespace=None):
messages.add(message)
# Update milestone and privacy setting
+ if repo_admin:
message = pagure.lib.edit_issue(
SESSION,
issue=issue,
@@ -315,6 +319,7 @@ def update_issue(repo, issueid, username=None, namespace=None):
messages.add(message)
# Update the custom keys/fields
+ if repo_admin:
for key in repo.issue_keys:
value = flask.request.form.get(key.name)
if value:
@@ -334,6 +339,7 @@ def update_issue(repo, issueid, username=None, namespace=None):
)
# Update ticket this one depends on
+ if repo_admin:
messages.union(set(pagure.lib.update_dependency_issue(
SESSION, repo, issue, depends,
username=flask.g.fas_user.username,
@@ -341,6 +347,7 @@ def update_issue(repo, issueid, username=None, namespace=None):
)))
# Update ticket(s) depending on this one
+ if repo_admin:
messages.union(set(pagure.lib.update_blocked_issue(
SESSION, repo, issue, blocks,
username=flask.g.fas_user.username,