]> git.lizzy.rs Git - cheatdb.git/commitdiff
Allow all users to delete their packages
authorrubenwardy <rw@rubenwardy.com>
Wed, 16 Sep 2020 17:05:37 +0000 (18:05 +0100)
committerrubenwardy <rw@rubenwardy.com>
Wed, 16 Sep 2020 17:12:53 +0000 (18:12 +0100)
app/blueprints/packages/packages.py
app/models.py
app/templates/packages/remove.html
app/templates/todo/list.html

index c7a5c99beb091d149cb20fef9f41299472e2cb3b..c79e931ae13f1020f6c9105a8fe1430e8f016c1f 100644 (file)
@@ -438,7 +438,7 @@ def remove(package):
                        flash("You don't have permission to do that.", "danger")
                        return redirect(package.getDetailsURL())
 
-               package.state = PackageState.READY_FOR_REVIEW
+               package.state = PackageState.WIP
 
                msg = "Unapproved {}".format(package.title)
                addNotification(package.maintainers, current_user, msg, package.getDetailsURL(), package)
index c484f2e3949ea4f1829293f96dd88af90c4b1d34..8a7ab658c18a1f89c54d40609914a492d2a44ecf 100644 (file)
@@ -813,7 +813,7 @@ class Package(db.Model):
                        return isOwner or user.rank.atLeast(UserRank.MODERATOR)
 
                elif perm == Permission.UNAPPROVE_PACKAGE or perm == Permission.DELETE_PACKAGE:
-                       return user.rank.atLeast(UserRank.EDITOR)
+                       return user.rank.atLeast(UserRank.MEMBER if isOwner else UserRank.EDITOR)
 
                elif perm == Permission.CHANGE_RELEASE_URL:
                        return user.rank.atLeast(UserRank.MODERATOR)
index fd20637cf4f7d1c3e0e2f386be93d6ea17cd31a7..a588c34844ab49d5d245b1e04d80f9bb98266970 100644 (file)
@@ -1,19 +1,37 @@
 {% extends "base.html" %}
 
 {% block title %}
-       Delete | {{ package.title }}
+Delete | {{ package.title }}
 {% endblock %}
 
 {% block content %}
-       <form method="POST" action="" class="box box_grey ">
-               <h3>Remove Package</h3>
+<form class="card mb-3" style="max-width: 40rem; margin: auto;" method="POST" action="" >
+       <h3 class="card-header">Remove {{ package.title }}</h3>
 
-               <div class="box-body">
-                       <p>Deleting a package can be undone by the admin, but he'll be very annoyed!</p>
+       <div class="card-body">
+               <p>
+                       In order to avoid data loss, you cannot permanently delete packages.
+                       You can remove them from ContentDB, which will cause them to not be
+                       visible to any users and they may be permanently deleted in the future.
+                       The Admin can restore removed packages, if needed.
+               </p>
 
-                       <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
-                       <input type="submit" name="delete" value="Delete" class="btn btn-danger" />
+               {% if package.approved %}
+                       <p>
+                               Unapproving a package will put it back into Work in Progress, where
+                               it can be submitted for approval again.
+                       </p>
+               {% endif %}
+
+               <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
+
+               <a class="btn btn-secondary float-right" href="{{ package.getDetailsURL() }}">Cancel</a>
+
+               <input type="submit" name="delete" value="Remove" class="btn btn-danger mr-2" />
+
+               {% if package.approved %}
                        <input type="submit" name="unapprove" value="Unapprove" class="btn btn-warning" />
-               </div>
-       </form>
+               {% endif %}
+       </div>
+</form>
 {% endblock %}
index c3b81187463c6b89b17e4414010e7d72612dbe3b..30b90bbea13a63cc3158d1f41d39b6a7010ce0b6 100644 (file)
                                <div class="list-group list-group-flush">
                                        {% for p in wip_packages %}
                                                <a href="{{ p.getDetailsURL() }}" class="list-group-item list-group-item-action">
-                                                       <span class="mr-2 badge badge-warning">{{ p.state.value }}</span>
+                                                       {% if p.state == p.state.WIP %}
+                                                               <span class="mr-2 badge badge-warning">WIP</span>
+                                                       {% else %}
+                                                               <span class="mr-2 badge badge-danger">{{ p.state.value }}</span>
+                                                       {% endif %}
 
                                                        {{ p.title }} by {{ p.author.display_name }}
                                                </a>