[copr] master: Display list of raised legal flags on coprs in admin section (83085ec)

bkabrda at fedoraproject.org bkabrda at fedoraproject.org
Tue Apr 2 10:36:20 UTC 2013


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

On branch  : master

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

commit 83085ec59cd0b7b51a112496e1c76134fa661c31
Author: Bohuslav Kabrda <bkabrda at redhat.com>
Date:   Tue Apr 2 12:35:58 2013 +0200

    Display list of raised legal flags on coprs in admin section


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

 coprs_frontend/coprs/static/copr.css               |   11 ++++++++++
 coprs_frontend/coprs/static/copr.js                |   12 ++++++++++
 coprs_frontend/coprs/templates/admin/layout.html   |    8 ++++++-
 .../coprs/templates/admin/legal-flag.html          |   18 ++++++++++++++++
 .../coprs/views/admin_ns/admin_general.py          |   22 ++++++++++++++++++++
 5 files changed, 70 insertions(+), 1 deletions(-)

diff --git a/coprs_frontend/coprs/static/copr.css b/coprs_frontend/coprs/static/copr.css
index 243b676..a1fa40e 100644
--- a/coprs_frontend/coprs/static/copr.css
+++ b/coprs_frontend/coprs/static/copr.css
@@ -317,6 +317,17 @@ form.legal-flag, form.legal-flag input {
   margin-top: 5px;
 }
 
+div.legal-flag {
+  margin: 10px;
+  font-size: 1.2em;
+}
+
+div.legal-flag div.message {
+  display: none;
+  margin-bottom: 10px;
+  font-size: 1em;
+}
+
 hr {
   margin-top: 25px;
   margin-bottom: 25px;
diff --git a/coprs_frontend/coprs/static/copr.js b/coprs_frontend/coprs/static/copr.js
index 8271b08..8740dc8 100644
--- a/coprs_frontend/coprs/static/copr.js
+++ b/coprs_frontend/coprs/static/copr.js
@@ -18,3 +18,15 @@ $(document).ready(function() {
     }
   );
 });
+
+// admin legal-flag divs rolling
+$(document).ready(function() {
+  $("div.legal-flag").hover(
+    function() {
+      $(this).children(".message").show("fast");
+    },
+    function() {
+      $(this).children(".message").hide("fast");
+    }
+  )
+});
diff --git a/coprs_frontend/coprs/templates/admin/layout.html b/coprs_frontend/coprs/templates/admin/layout.html
index 336e077..c8d48c9 100644
--- a/coprs_frontend/coprs/templates/admin/layout.html
+++ b/coprs_frontend/coprs/templates/admin/layout.html
@@ -3,6 +3,12 @@
 {% block title %}Coprs - Admin{% endblock %}
 
 {% block body %}
-Admin menu
+  <div class="horizontal-menu">
+    <ul>
+      <li class="{% block legal_flag_selected %}unselected{% endblock %}">
+        <a href="{{ url_for('admin_ns.legal_flag') }}">Legal Flags</a>
+      </li>
+    </ul>
+  </div>
 {% block admin_body %}{% endblock %}
 {% endblock %}
diff --git a/coprs_frontend/coprs/templates/admin/legal-flag.html b/coprs_frontend/coprs/templates/admin/legal-flag.html
new file mode 100644
index 0000000..e683c38
--- /dev/null
+++ b/coprs_frontend/coprs/templates/admin/legal-flag.html
@@ -0,0 +1,18 @@
+{% extends "admin/layout.html" %}
+
+{% block legal_flag_selected %}selected{% endblock %}
+
+{% block admin_body %}
+  {% for flag in legal_flags %}
+    <div class="legal-flag">
+      <div>
+        <a href={{ url_for('coprs_ns.copr_detail', username=flag.copr.owner.name, coprname=flag.copr.name) }}>
+          {{ flag.copr.owner.name }}/{{ flag.copr.name }}
+        </a>
+      </div>
+      <div class="message">
+        {{ flag.message }}
+      </div>
+    </div>
+  {% endfor %}
+{% endblock %}
diff --git a/coprs_frontend/coprs/views/admin_ns/admin_general.py b/coprs_frontend/coprs/views/admin_ns/admin_general.py
index 8252c5e..e439809 100644
--- a/coprs_frontend/coprs/views/admin_ns/admin_general.py
+++ b/coprs_frontend/coprs/views/admin_ns/admin_general.py
@@ -1,6 +1,9 @@
 import flask
 
 from coprs import helpers
+from coprs import models
+
+from coprs.logic import coprs_logic
 
 from coprs.views.admin_ns import admin_ns
 from coprs.views.misc import login_required
@@ -9,3 +12,22 @@ from coprs.views.misc import login_required
 @login_required(role=helpers.RoleEnum('admin'))
 def admin_index():
     return flask.render_template('admin/index.html')
+
+ at admin_ns.route('/legal-flag/')
+ at login_required(role=helpers.RoleEnum('admin'))
+def legal_flag():
+    legal_flags = models.Action.query.filter(models.Action.action_type==helpers.ActionTypeEnum('legal-flag')).\
+                                      filter(models.Action.object_type=='copr').\
+                                      filter(models.Action.ended_on==None).\
+                                      order_by(models.Action.created_on.desc()).\
+                                      all()
+
+    ids = map(lambda x: x.object_id, legal_flags)
+    # if there are no ids, we would trigger "IN" query with empty set, which
+    # is not very good (and sqlalchemy complains about it)
+    coprs = coprs_logic.CoprsLogic.get_multiple(flask.g.user, ids=ids).all() if ids else []
+    for flag in legal_flags:
+        flag.copr = filter(lambda x: flag.object_id == x.id, coprs)[0]
+
+    return flask.render_template('admin/legal-flag.html',
+                                 legal_flags=legal_flags)



More information about the copr-devel mailing list