Changeset 68453 in webkit
- Timestamp:
- Sep 27, 2010 5:14:21 PM (14 years ago)
- Location:
- trunk/WebKitTools
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebKitTools/ChangeLog
r68451 r68453 1 2010-09-27 Eric Seidel <eric@webkit.org> 2 3 Reviewed by Adam Barth. 4 5 queue-status should report when the patch was last locked to a queue 6 https://bugs.webkit.org/show_bug.cgi?id=46674 7 8 This isn't necessarily the best way to expose this information 9 but having this accessible via the web interface is very 10 useful until we come up with a nicer way to display this. 11 12 I also cleaned up the code in activeworkitems.py a little 13 to use list comprehensions and to have the code work with 14 pairs instead of two lists at once. Eventually I think those 15 item/time pairs need to be their own little helper class. 16 17 * QueueStatusServer/handlers/queuestatus.py: 18 * QueueStatusServer/model/activeworkitems.py: 19 * QueueStatusServer/templates/queuestatus.html: 20 1 21 2010-09-27 Tony Chang <tony@chromium.org> 2 22 -
trunk/WebKitTools/QueueStatusServer/handlers/queuestatus.py
r67584 r68453 32 32 from model.queues import queues, display_name_for_queue 33 33 from model.workitems import WorkItems 34 from model.activeworkitems import ActiveWorkItems 34 35 35 36 from model import queuestatus … … 37 38 38 39 class QueueStatus(webapp.RequestHandler): 39 def _rows_for_work_items(self, work_items):40 if not work_items:40 def _rows_for_work_items(self, queued_items, active_items): 41 if not queued_items: 41 42 return [] 42 43 rows = [] 43 for item_id in work_items.item_ids:44 for item_id in queued_items.item_ids: 44 45 rows.append({ 45 46 "attachment_id": item_id, 46 47 "bug_id": 1, 48 "lock_time": active_items and active_items.time_for_item(item_id), 47 49 }) 48 50 return rows 49 51 50 52 def get(self, queue_name): 51 work_items = WorkItems.all().filter("queue_name =", queue_name).get() 53 queued_items = WorkItems.all().filter("queue_name =", queue_name).get() 54 active_items = ActiveWorkItems.all().filter("queue_name =", queue_name).get() 52 55 statuses = queuestatus.QueueStatus.all().filter("queue_name =", queue_name).order("-date").fetch(15) 53 56 … … 68 71 template_values = { 69 72 "display_queue_name": display_name_for_queue(queue_name), 70 "work_item_rows": self._rows_for_work_items( work_items),73 "work_item_rows": self._rows_for_work_items(queued_items, active_items), 71 74 "status_groups": status_groups, 72 75 } -
trunk/WebKitTools/QueueStatusServer/model/activeworkitems.py
r67893 r68453 29 29 from google.appengine.ext import db 30 30 31 from datetime import timedelta 31 from datetime import timedelta, datetime 32 32 import time 33 33 … … 39 39 date = db.DateTimeProperty(auto_now_add=True) 40 40 41 # The id/date pairs should probably just be their own class. 42 def _item_time_pairs(self): 43 return zip(self.item_ids, self.item_dates) 44 45 def _set_item_time_pairs(self, pairs): 46 if not pairs: 47 self.item_ids = [] 48 self.item_dates = [] 49 return 50 self.item_ids, self.item_dates = zip(*pairs) 51 52 def _append_item_time_pair(self, pair): 53 self.item_ids.append(pair[0]) 54 self.item_dates.append(pair[1]) 55 41 56 def deactivate_expired(self, now): 42 57 one_hour_ago = time.mktime((now - timedelta(minutes=60)).timetuple()) 43 nonexpired_item_ids = [] 44 nonexpired_item_dates = [] 45 for i in range(len(self.item_ids)): 46 if self.item_dates[i] > one_hour_ago: 47 nonexpired_item_ids.append(self.item_ids[i]) 48 nonexpired_item_dates.append(self.item_dates[i]) 49 self.item_ids = nonexpired_item_ids 50 self.item_dates = nonexpired_item_dates 58 nonexpired_pairs = [pair for pair in self._item_time_pairs() if pair[1] > one_hour_ago] 59 self._set_item_time_pairs(nonexpired_pairs) 51 60 52 61 def next_item(self, work_item_ids, now): 53 62 for item_id in work_item_ids: 54 63 if item_id not in self.item_ids: 55 self.item_ids.append(item_id) 56 self.item_dates.append(time.mktime(now.timetuple())) 64 self._append_item_time_pair([item_id, time.mktime(now.timetuple())]) 57 65 return item_id 58 66 return None 67 68 def time_for_item(self, item_id): 69 for active_item_id, time in self._item_time_pairs(): 70 if active_item_id == item_id: 71 return datetime.fromtimestamp(time) 72 return None -
trunk/WebKitTools/QueueStatusServer/templates/queuestatus.html
r67584 r68453 43 43 <h3>Patches in queue</h3> 44 44 <table> 45 <tr><th>Position</th><th>Patch</th>< /tr>45 <tr><th>Position</th><th>Patch</th><th>Last Activity</th></tr> 46 46 {% for row in work_item_rows %} 47 47 <tr> … … 49 49 <td> 50 50 {{ row.attachment_id|force_escape|webkit_attachment_id|safe }} 51 </td> 52 <td> 53 {% if row.lock_time %} 54 {{ row.lock_time|timesince }} ago 55 {% endif %} 51 56 </td> 52 57 </tr>
Note: See TracChangeset
for help on using the changeset viewer.