Moved grouping logic to view, and added time to stream

This commit is contained in:
David Taylor
2015-05-26 04:34:23 +01:00
parent 83a4b414ad
commit d0f3dc4bec
3 changed files with 28 additions and 10 deletions

View File

@@ -25,13 +25,6 @@
// }, 10000); // }, 10000);
moment().twitter(); moment().twitter();
$('.date').each(function (index, dateElem) {
var $dateElem = $(dateElem);
var formatted = moment($dateElem.attr('data-date'),"DD/MM/YYYY HH:mm").twitterLong();
$dateElem.text(formatted);
});
}) })
$(document).ready(function() { $(document).ready(function() {
$(function () { $(function () {
@@ -43,6 +36,11 @@
$('#activity [data-toggle="popover"]').popover(); $('#activity [data-toggle="popover"]').popover();
$('.date').each(function (index, dateElem) {
var $dateElem = $(dateElem);
var formatted = moment($dateElem.attr('data-date'),"DD/MM/YYYY HH:mm").twitterLong();
$dateElem.text(formatted);
});
}); });
}); });

View File

@@ -10,7 +10,7 @@
<div class="media"> <div class="media">
{% for version in object_list %} {% for version in object_list %}
{% ifchanged version.revision.user %} {% if not version.withPrevious %}
{% if not forloop.first %} {% if not forloop.first %}
</div> {#/.media-body#} </div> {#/.media-body#}
</div> {#/.media#} </div> {#/.media#}
@@ -24,8 +24,11 @@
</a> </a>
</div> </div>
<div class="media-body"> <div class="media-body">
<h5>{{ version.revision.user.name }}</h5> <h5>{{ version.revision.user.name }}
{% endifchanged %} <span class="pull-right"><small><span class="date" data-date="{{version.revision.date_created}}"></span></small></span>
</h5>
{% endif %}
<p> <p>
<small> <small>
{% if version.old == None %} {% if version.old == None %}

View File

@@ -217,6 +217,10 @@ class ActivityFeed(generic.ListView):
return versions return versions
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
maxTimeDelta = []
maxTimeDelta.append({ 'maxAge':datetime.timedelta(days=1), 'group':datetime.timedelta(hours=1)})
maxTimeDelta.append({ 'maxAge':None, 'group':datetime.timedelta(days=1)})
# Call the base implementation first to get a context # Call the base implementation first to get a context
context = super(ActivityFeed, self).get_context_data(**kwargs) context = super(ActivityFeed, self).get_context_data(**kwargs)
@@ -226,6 +230,19 @@ class ActivityFeed(generic.ListView):
for thisVersion in context['object_list']: for thisVersion in context['object_list']:
thisItem = get_changes_for_version(thisVersion, None) thisItem = get_changes_for_version(thisVersion, None)
if thisItem['item_changes'] or thisItem['field_changes'] or thisItem['old'] == None: if thisItem['item_changes'] or thisItem['field_changes'] or thisItem['old'] == None:
thisItem['withPrevious'] = False
if len(items)>=1:
timeAgo = datetime.datetime.now(thisItem['revision'].date_created.tzinfo) - thisItem['revision'].date_created
timeDiff = items[-1]['revision'].date_created - thisItem['revision'].date_created
timeTogether = False
for params in maxTimeDelta:
if params['maxAge'] is None or timeAgo <= params['maxAge']:
timeTogether = timeDiff < params['group']
break
sameUser = thisItem['revision'].user == items[-1]['revision'].user
thisItem['withPrevious'] = timeTogether & sameUser
items.append(thisItem) items.append(thisItem)
context ['object_list'] = items context ['object_list'] = items