--- /dev/null
+title: Ranks and Permissions
+
+## Overview
+
+* **New Members** - mostly untrusted, cannot change package meta data or publish releases without approval.
+* **Members** - Trusted to change the meta data of their own packages', but cannot publish releases.
+* **Editors** - Trusted to change the meta data of any package, and also make and publish releases.
+* **Moderators** - Same as above, but can manage users.
+* **Admins** - Full access.
+
+## Breakdown
+
+<table>
+ <thead>
+ <tr>
+ <th>Rank</th>
+ <th colspan=2>New Member</th>
+ <th colspan=2>Member</th>
+ <th colspan=2>Editor</th>
+ <th colspan=2>Moderator</th>
+ <th colspan=2>Admin</th>
+ </tr>
+ <tr>
+ <th>Owner of thing</th>
+ <th>Y</th>
+ <th>N</th>
+ <th>Y</th>
+ <th>N</th>
+ <th>Y</th>
+ <th>N</th>
+ <th>Y</th>
+ <th>N</th>
+ <th>Y</th>
+ <th>N</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>Create Package</td>
+ <th>✓</th> <!-- new -->
+ <th></th>
+ <th>✓</th> <!-- member -->
+ <th></th>
+ <th>✓</th> <!-- editor -->
+ <th>✓</th>
+ <th>✓</th> <!-- moderator -->
+ <th>✓</th>
+ <th>✓</th> <!-- admin -->
+ <th>✓</th>
+ </tr>
+ <tr>
+ <td>Approve Package</td>
+ <th></th> <!-- new -->
+ <th></th>
+ <th></th> <!-- member -->
+ <th></th>
+ <th>✓</th> <!-- editor -->
+ <th>✓</th>
+ <th>✓</th> <!-- moderator -->
+ <th>✓</th>
+ <th>✓</th> <!-- admin -->
+ <th>✓</th>
+ </tr>
+ <tr>
+ <td>Edit Package</td>
+ <th></th> <!-- new -->
+ <th></th>
+ <th>✓</th> <!-- member -->
+ <th></th>
+ <th>✓</th> <!-- editor -->
+ <th>✓</th>
+ <th>✓</th> <!-- moderator -->
+ <th>✓</th>
+ <th>✓</th> <!-- admin -->
+ <th>✓</th>
+ </tr>
+ <tr>
+ <td>Approve EditRequest</td>
+ <th></th> <!-- new -->
+ <th></th>
+ <th>✓</th> <!-- member -->
+ <th></th>
+ <th>✓</th> <!-- editor -->
+ <th>✓</th>
+ <th>✓</th> <!-- moderator -->
+ <th>✓</th>
+ <th>✓</th> <!-- admin -->
+ <th>✓</th>
+ </tr>
+ <tr>
+ <td>Edit EditRequest</td>
+ <th>✓<sup>1</sup></th> <!-- new -->
+ <th></th>
+ <th>✓</th> <!-- member -->
+ <th></th>
+ <th>✓</th> <!-- editor -->
+ <th>✓</th>
+ <th>✓</th> <!-- moderator -->
+ <th>✓</th>
+ <th>✓</th> <!-- admin -->
+ <th>✓</th>
+ </tr>
+ <tr>
+ <td>Make Release</td>
+ <th>✓</th> <!-- new -->
+ <th></th>
+ <th>✓</th> <!-- member -->
+ <th></th>
+ <th>✓</th> <!-- editor -->
+ <th>✓</th>
+ <th>✓</th> <!-- moderator -->
+ <th>✓</th>
+ <th>✓</th> <!-- admin -->
+ <th>✓</th>
+ </tr>
+ <tr>
+ <td>Approve Release</td>
+ <th></th> <!-- new -->
+ <th></th>
+ <th></th> <!-- member -->
+ <th></th>
+ <th>✓</th> <!-- editor -->
+ <th>✓</th>
+ <th>✓</th> <!-- moderator -->
+ <th>✓</th>
+ <th>✓</th> <!-- admin -->
+ <th>✓</th>
+ </tr>
+ <tr>
+ <td>Change Release URL</td>
+ <th></th> <!-- new -->
+ <th></th>
+ <th></th> <!-- member -->
+ <th></th>
+ <th></th> <!-- editor -->
+ <th></th>
+ <th></th> <!-- moderator -->
+ <th></th>
+ <th>✓</th> <!-- admin -->
+ <th>✓</th>
+ </tr>
+ <tr>
+ <td>Set Email</td>
+ <th>✓</th> <!-- new -->
+ <th></th>
+ <th>✓</th> <!-- member -->
+ <th></th>
+ <th>✓</th> <!-- editor -->
+ <th></th>
+ <th>✓</th> <!-- moderator -->
+ <th>✓<sup>2</sup></th>
+ <th>✓</th> <!-- admin -->
+ <th>✓</th>
+ </tr>
+ <tr>
+ <td>Set Rank</td>
+ <th></th> <!-- new -->
+ <th></th>
+ <th></th> <!-- member -->
+ <th></th>
+ <th></th> <!-- editor -->
+ <th></th>
+ <th>✓</th> <!-- moderator -->
+ <th>✓</th>
+ <th>✓</th> <!-- admin -->
+ <th>✓</th>
+ </tr>
+ </tbody>
+</table>
+
+
+1. User must be the author of the EditRequest.
+2. Target user cannot be an admin.
background: #161;
border: 1px solid #393;
}
+
+table {
+ font-family: "Arial Black", Gadget, sans-serif;
+ border: 2px solid #000000;
+ background-color: #4A4A4A;
+ width: 100%;
+ text-align: center;
+ border-collapse: collapse;
+}
+table td, table th {
+ border: 1px solid #4A4A4A;
+ padding: 3px 2px;
+}
+table tbody td {
+ font-size: 13px;
+ color: #E6E6E6;
+}
+table tr:nth-child(even) {
+ background: #888888;
+}
+table thead {
+ background: #000000;
+ border-bottom: 3px solid #000000;
+}
+table thead th {
+ font-size: 15px;
+ font-weight: bold;
+ color: #E6E6E6;
+ text-align: center;
+ border-left: 2px solid #4A4A4A;
+}
+table thead th:first-child {
+ border-left: none;
+}
+
+table tfoot {
+ font-size: 12px;
+ font-weight: bold;
+ color: #E6E6E6;
+ background: #000000;
+ background: -moz-linear-gradient(top, #404040 0%, #191919 66%, #000000 100%);
+ background: -webkit-linear-gradient(top, #404040 0%, #191919 66%, #000000 100%);
+ background: linear-gradient(to bottom, #404040 0%, #191919 66%, #000000 100%);
+ border-top: 1px solid #4A4A4A;
+}
+table tfoot td {
+ font-size: 12px;
+}
-from app import app
+from app import app, pages
from flask import *
from flask_user import *
from flask_login import login_user, logout_user
return render_template("index.html", packages=packages)
from . import users, githublogin, packages, sass, tasks, admin, notifications
+
+@menu.register_menu(app, ".help", "Help", order=19, endpoint_arguments_constructor=lambda: { 'path': 'help' })
+@app.route('/<path:path>/')
+def flatpage(path):
+ page = pages.get_or_404(path)
+ template = page.meta.get('template', 'flatpage.html')
+ return render_template(template, page=page)