[copr] master: And finally adapt the views to new permission system (6868465)

bkabrda at fedoraproject.org bkabrda at fedoraproject.org
Fri Jan 11 10:21:19 UTC 2013


Repository : http://git.fedorahosted.org/cgit/copr.git

On branch  : master

>---------------------------------------------------------------

commit 68684652e277afec942f78b2ee486be838ddea3c
Author: Bohuslav Kabrda <bkabrda at redhat.com>
Date:   Thu Jan 10 14:27:22 2013 +0100

    And finally adapt the views to new permission system


>---------------------------------------------------------------

 .../coprs/templates/coprs/_permissions_table.html  |   85 +++++++++++++++++---
 coprs_frontend/coprs/templates/coprs/detail.html   |    6 +-
 2 files changed, 74 insertions(+), 17 deletions(-)

diff --git a/coprs_frontend/coprs/templates/coprs/_permissions_table.html b/coprs_frontend/coprs/templates/coprs/_permissions_table.html
index fc1ad64..a8675ec 100644
--- a/coprs_frontend/coprs/templates/coprs/_permissions_table.html
+++ b/coprs_frontend/coprs/templates/coprs/_permissions_table.html
@@ -1,25 +1,23 @@
-{% macro permissions_table(permissions, copr, permissions_applier_form) %}
-  {% if permissions or permissions_applier_form %}
+{% macro permissions_table(permissions, current_user_permissions, copr, permissions_applier_form, permissions_form) %}
+  {% if permissions or g.user != copr.owner %} {# display the whole table if there are permissions or user can ask for them #}
     {% if permissions_applier_form and g.user %}
       <form action="{{ url_for('coprs_ns.copr_permissions_applier_change', username = copr.owner.name, coprname = copr.name)}}" method=post>
       {{ permissions_applier_form.csrf_token }}
     {% endif %}
+    {% if permissions_form and g.user %}
+      <form action="{{ url_for('coprs_ns.copr_update_permissions', username = copr.owner.name, coprname = copr.name)}}" method=post>
+      {{ permissions_form.csrf_token }}
+    {% endif %}
     <table class=permissions-table>
       <tr><th>Username</th><th>Is Builder</th><th>Is Admin</th></tr>
       {% for perm in permissions %}
-        {% if perm.user_id != g.user.id %} {# if user is logged in, only display his form, not a row #}
-          <tr><td>{{ perm.user.name }}</td><td>{{ perm.copr_builder|perm_type_from_num }}</td><td>{{ perm.copr_admin|perm_type_from_num }}</tr>
+        {% if perm.user_id != g.user.id %} {# if user is logged in, only display his form below, not a row #}
+          {{ permissions_table_row_other_user(perm, permissions_applier_form, permissions_form) }}
         {% endif %}
       {% endfor %}
-      {% if permissions_applier_form and g.user %}
-          <tr>
-            <td>{{ g.user.name }}</td>
-            <td>{{ permissions_applier_form.copr_builder|safe }}</td>
-            <td>{{ permissions_applier_form.copr_admin|safe }}</td>
-          </tr>
-      {% endif %}
+      {{ permissions_table_row_current_user(current_user_permissions, permissions_applier_form, permissions_form) }}
     </table>
-    {% if permissions_applier_form and g.user %}
+    {% if g.user and (permissions_applier_form or permissions_form) %} {# TODO: when to display? #}
       <input type=submit value=Submit>
       </form>
     {% endif %}
@@ -27,3 +25,66 @@
     No permissions for other users for this Copr.
   {% endif %}
 {% endmacro %}
+
+{% macro permissions_table_row_other_user(perm, permissions_applier_form, permissions_form) %}
+  <tr>
+    <td>{{ perm.user.name }}</td>
+    <td>
+      {% if permissions_form %}
+        {% if perm.copr_builder != 0 %}
+          {{ permissions_form['copr_builder_{0}'.format(perm.user.id)] }}
+        {% endif %}
+      {% else %}
+        {{ perm.copr_builder|perm_type_from_num }}
+      {% endif %}
+    </td>
+    <td>
+      {% if permissions_form %}
+        {% if perm.copr_admin != 0 %}
+          {{ permissions_form['copr_admin_{0}'.format(perm.user.id)] }}
+        {% endif %}
+      {% else %}
+        {{ perm.copr_admin|perm_type_from_num }}
+      {% endif %}
+    </td>
+  </tr>
+{% endmacro %}
+
+{% macro permissions_table_row_current_user(current_user_permissions, permissions_applier_form, permissions_form) %}
+  {# if user is logged in and permissions_applier_form is defined, display it #}
+  {% if g.user and permissions_applier_form %}
+    <tr>
+      <td>{{ g.user.name }}</td>
+      <td>
+        {% if current_user_permissions %}
+          {{ current_user_permissions.copr_builder|perm_type_from_num }}
+        {% else %}
+          Not requested
+        {% endif %}
+        <br>
+        {{ permissions_applier_form.copr_builder|safe }}
+      </td>
+      <td>
+        {% if current_user_permissions %}
+          {{ current_user_permissions.copr_admin|perm_type_from_num }}
+        {% else %}
+          Not requested
+        {% endif %}
+        <br>
+        {{ permissions_applier_form.copr_admin|safe }}
+    </tr>
+  {% endif %}
+
+  {# if user is admin (means current_user_permissions is set), display his own permissions for changing #}
+  {% if g.user and permissions_form and current_user_permissions %}
+    <tr>
+      <td>{{ g.user.name }}</td>
+      <td>
+        {{ permissions_form['copr_builder_{0}'.format(g.user.id)] }}
+      </td>
+      <td>
+        {{ permissions_form['copr_admin_{0}'.format(g.user.id)] }}
+      </td>
+    </tr>
+  {% endif %}
+{% endmacro %}
diff --git a/coprs_frontend/coprs/templates/coprs/detail.html b/coprs_frontend/coprs/templates/coprs/detail.html
index 9f54040..7670e6f 100644
--- a/coprs_frontend/coprs/templates/coprs/detail.html
+++ b/coprs_frontend/coprs/templates/coprs/detail.html
@@ -22,11 +22,7 @@
   </ul>
   {% endif %}
   <h3>Permissions</h3>
-  {% if g.user.id == copr.owner_id or not g.user %}
-    {{ permissions_table(permissions, copr, None) }}
-  {% else %}
-    {{ permissions_table(permissions, copr, permission_applier_form) }}
-  {% endif %}
+  {{ permissions_table(permissions, current_user_permissions, copr, permissions_applier_form, permissions_form) }}
   {% if g.user and g.user.can_build_in(copr) %}
     <h3>Build packages in this repo:</h3>
     {{ copr_build_form(build_form, 'coprs_ns.copr_add_build', copr) }}



More information about the copr-devel mailing list