Disable edit requests

This commit is contained in:
rubenwardy 2018-05-29 20:51:42 +01:00
parent 002e6828b6
commit fa2f17526f
No known key found for this signature in database
GPG Key ID: A1E29D52FF81513C
8 changed files with 91 additions and 66 deletions

View File

@ -215,18 +215,19 @@ class PackageType(enum.Enum):
class PackagePropertyKey(enum.Enum): class PackagePropertyKey(enum.Enum):
name = "Name" name = "Name"
title = "Title" title = "Title"
shortDesc = "Short Description" shortDesc = "Short Description"
desc = "Description" desc = "Description"
type = "Type" type = "Type"
license = "License" license = "License"
tags = "Tags" media_license = "Media License"
provides = "Provides" tags = "Tags"
repo = "Repository" provides = "Provides"
website = "Website" repo = "Repository"
issueTracker = "Issue Tracker" website = "Website"
forums = "Forum Topic ID" issueTracker = "Issue Tracker"
forums = "Forum Topic ID"
def convert(self, value): def convert(self, value):
if self == PackagePropertyKey.tags: if self == PackagePropertyKey.tags:

View File

@ -20,6 +20,40 @@
<script src="/static/tagselector.js"></script> <script src="/static/tagselector.js"></script>
{% endmacro %} {% endmacro %}
{% macro package_lists() -%}
<script>
meta_packages = [
{% for m in mpackages %}
{# This is safe as name can only contain `[a-z0-9_]` #}
{
id: "{{ m.name }}",
value: "{{ m.name }}",
toString: function() { return "{{ m.name }}"; },
},
{% endfor %}
]
function escape(unsafe) {
return unsafe
.replace(/&/g, "&amp;")
.replace(/</g, "&lt;")
.replace(/>/g, "&gt;")
.replace(/"/g, "&quot;")
.replace(/'/g, "&#039;");
}
all_packages = meta_packages.slice();
{% for p in packages %}
all_packages.push({
id: "{{ p.author.username }}/{{ p.name }}",
value: escape({{ p.title | tojson }} + " by " + {{ p.author.display_name | tojson }}),
toString: function() { return escape({{ p.title | tojson }} + " by " + {{ p.author.display_name | tojson }} + " only"); },
});
{% endfor %}
</script>
{% endmacro %}
{% macro render_multiselect_field(field, label=None, label_visible=true, right_url=None, right_label=None) -%} {% macro render_multiselect_field(field, label=None, label_visible=true, right_url=None, right_label=None) -%}
<div class="form-group {% if field.errors %}has-error{% endif %} {{ kwargs.pop('class_', '') }}"> <div class="form-group {% if field.errors %}has-error{% endif %} {{ kwargs.pop('class_', '') }}">
{% if field.type != 'HiddenField' and label_visible %} {% if field.type != 'HiddenField' and label_visible %}

View File

@ -10,40 +10,10 @@
{% block content %} {% block content %}
<h1>Create Package</h1> <h1>Create Package</h1>
<script>
meta_packages = [
{% for m in mpackages %}
{# This is safe as name can only contain `[a-z0-9_]` #}
{
id: "{{ m.name }}",
value: "{{ m.name }}",
toString: function() { return "{{ m.name }}"; },
},
{% endfor %}
]
function escape(unsafe) { {% from "macros/forms.html" import render_field, render_submit_field, form_includes, render_multiselect_field, render_mpackage_field, render_deps_field, package_lists %}
return unsafe
.replace(/&/g, "&amp;")
.replace(/</g, "&lt;")
.replace(/>/g, "&gt;")
.replace(/"/g, "&quot;")
.replace(/'/g, "&#039;");
}
all_packages = meta_packages.slice();
{% for p in packages %}
all_packages.push({
id: "{{ p.author.username }}/{{ p.name }}",
value: escape({{ p.title | tojson }} + " by " + {{ p.author.display_name | tojson }}),
toString: function() { return escape({{ p.title | tojson }} + " by " + {{ p.author.display_name | tojson }} + " only"); },
});
{% endfor %}
</script>
{% from "macros/forms.html" import render_field, render_submit_field, form_includes, render_multiselect_field, render_mpackage_field, render_deps_field %}
{{ form_includes() }} {{ form_includes() }}
{{ package_lists() }}
<form method="POST" action="" class="tableform"> <form method="POST" action="" class="tableform">
{{ form.hidden_tag() }} {{ form.hidden_tag() }}

View File

@ -5,19 +5,30 @@
{% endblock %} {% endblock %}
{% block content %} {% block content %}
{% from "macros/forms.html" import render_field, render_submit_field, form_includes, render_multiselect_field %} {% from "macros/forms.html" import render_field, render_submit_field, form_includes, render_multiselect_field, render_mpackage_field, render_deps_field, package_lists %}
{{ form_includes() }} {{ form_includes() }}
{{ package_lists() }}
<form method="POST" action=""> <form method="POST" action="">
{{ form.hidden_tag() }} {{ form.hidden_tag() }}
<h2 class="pkg_meta">Package</h2>
{{ render_field(form.type) }}
{{ render_field(form.name) }} {{ render_field(form.name) }}
{{ render_field(form.title) }} {{ render_field(form.title) }}
{{ render_field(form.shortDesc) }} {{ render_field(form.shortDesc) }}
{{ render_field(form.desc) }} {{ render_field(form.desc) }}
{{ render_field(form.type) }}
{{ render_field(form.license) }}
{{ render_multiselect_field(form.tags) }} {{ render_multiselect_field(form.tags) }}
<h2 class="not_txp">Dependency Info</h2>
{{ render_mpackage_field(form.provides_str, class_="not_txp", placeholder="Comma separated list") }}
{{ render_deps_field(form.harddep_str, class_="not_txp not_game", placeholder="Comma separated list") }}
{{ render_deps_field(form.softdep_str, class_="not_txp not_game", placeholder="Comma separated list") }}
{{ render_field(form.license) }}
{{ render_field(form.media_license) }}
{{ render_field(form.repo) }} {{ render_field(form.repo) }}
{{ render_field(form.website) }} {{ render_field(form.website) }}
{{ render_field(form.issueTracker) }} {{ render_field(form.issueTracker) }}
@ -29,4 +40,6 @@
{{ render_field(form.edit_desc) }} {{ render_field(form.edit_desc) }}
{{ render_submit_field(form.submit) }} {{ render_submit_field(form.submit) }}
</form> </form>
<script src="/static/package_edit.js"></script>
{% endblock %} {% endblock %}

View File

@ -117,9 +117,9 @@
<li><a href="{{ package.getEditURL() }}">Edit</a></li> <li><a href="{{ package.getEditURL() }}">Edit</a></li>
<li><a href="{{ package.getNewScreenshotURL() }}">Add screenshot</a></li> <li><a href="{{ package.getNewScreenshotURL() }}">Add screenshot</a></li>
{% endif %} {% endif %}
{% if current_user.is_authenticated %} {# {% if current_user.is_authenticated %}
<li><a href="{{ package.getCreateEditRequestURL() }}">Suggest Changes</a></li> <li><a href="{{ package.getCreateEditRequestURL() }}">Suggest Changes</a></li>
{% endif %} {% endif %} #}
{% if package.checkPerm(current_user, "MAKE_RELEASE") %} {% if package.checkPerm(current_user, "MAKE_RELEASE") %}
<li><a href="{{ package.getCreateReleaseURL() }}">Create Release</a></li> <li><a href="{{ package.getCreateReleaseURL() }}">Create Release</a></li>
{% endif %} {% endif %}
@ -216,19 +216,21 @@
</tr> </tr>
</table> --> </table> -->
{% if current_user.is_authenticated or requests %} {#
<h3>Edit Requests</h3> {% if current_user.is_authenticated or requests %}
<h3>Edit Requests</h3>
<ul> <ul>
{% for r in requests %} {% for r in requests %}
<li> <li>
<a href="{{ r.getURL() }}">{{ r.title }}</a> <a href="{{ r.getURL() }}">{{ r.title }}</a>
by by
<a href="{{ url_for('user_profile_page', username=r.author.username) }}">{{ r.author.display_name }}</a> <a href="{{ url_for('user_profile_page', username=r.author.username) }}">{{ r.author.display_name }}</a>
</li> </li>
{% else %} {% else %}
<li>No edit requests have been made.</li> <li>No edit requests have been made.</li>
{% endfor %} {% endfor %}
</ul> </ul>
{% endif %} {% endif %}
#}
{% endblock %} {% endblock %}

View File

@ -68,7 +68,7 @@ def _do_login_user(user, remember_me=False):
user.active = True user.active = True
if not user.rank.atLeast(UserRank.NEW_MEMBER): if not user.rank.atLeast(UserRank.NEW_MEMBER):
user.rank = UserRank.NEW_MEMBER user.rank = UserRank.MEMBER
db.session.commit() db.session.commit()

View File

@ -272,4 +272,4 @@ def delete_package_page(package):
return redirect(url) return redirect(url)
from . import todo, screenshots, editrequests, releases from . import todo, screenshots, releases

View File

@ -58,8 +58,13 @@ def create_edit_editrequest_page(package, id=None):
edited_package = Package(package) edited_package = Package(package)
erequest.applyAll(edited_package) erequest.applyAll(edited_package)
form = EditRequestForm(request.form, obj=edited_package) form = EditRequestForm(request.form, obj=edited_package)
if request.method == "GET":
deps = edited_package.dependencies
form.harddep_str.data = ",".join([str(x) for x in deps if not x.optional])
form.softdep_str.data = ",".join([str(x) for x in deps if x.optional])
form.provides_str.data = MetaPackage.ListToSpec(edited_package.provides)
if request.method == "POST" and form.validate(): if request.method == "POST" and form.validate():
if erequest is None: if erequest is None:
erequest = EditRequest() erequest = EditRequest()