Merge branch 'hotfixes' into web-calendar

This commit is contained in:
David Taylor
2015-06-29 19:40:01 +01:00
12 changed files with 50 additions and 42 deletions

View File

@@ -224,6 +224,15 @@ class EventManager(models.Manager):
).order_by('start_date', 'end_date', 'start_time', 'end_time', 'meet_at').select_related('person', 'organisation', 'venue', 'mic')
return events
def events_in_bounds(self, start, end):
events = self.filter(
(models.Q(start_date__gte=start.date(), start_date__lte=end.date())) | # Start date in bounds
(models.Q(end_date__gte=start.date(), end_date__lte=end.date())) | # End date in bounds
(models.Q(access_at__gte=start, access_at__lte=end)) | # Access at in bounds
(models.Q(meet_at__gte=start, meet_at__lte=end)) # Meet at in bounds
).order_by('start_date', 'end_date', 'start_time', 'end_time', 'meet_at').select_related('person', 'organisation', 'venue', 'mic')
return events
def rig_count(self):
event_count = self.filter(
(models.Q(start_date__gte=datetime.date.today(), end_date__isnull=True, dry_hire=False,

View File

@@ -171,9 +171,9 @@ class EventArchive(generic.ArchiveIndexView):
filter = Q(start_date__gte=start)
if filter:
qs = self.model.objects.filter(filter)
qs = self.model.objects.filter(filter).order_by('-start_date')
else:
qs = self.model.objects.all()
qs = self.model.objects.all().order_by('-start_date')
# Preselect related for efficiency
qs.select_related('person', 'organisation', 'venue', 'mic')

View File

@@ -38,7 +38,7 @@
$('.date').each(function (index, dateElem) {
var $dateElem = $(dateElem);
var formatted = moment($dateElem.attr('data-date'),"DD/MM/YYYY HH:mm").twitterLong();
var formatted = moment($dateElem.attr('data-date')).twitterLong();
$dateElem.text(formatted);
});

View File

@@ -27,7 +27,7 @@
</div>
<div class="media-body">
<h5>{{ version.revision.user.name }}
<span class="pull-right"><small><span class="date" data-date="{{version.revision.date_created}}"></span></small></span>
<span class="pull-right"><small><span class="date" data-date="{{version.revision.date_created|date:"c"}}"></span></small></span>
</h5>
{% endif %}

View File

@@ -5,12 +5,10 @@
<div class="row">
{% if not request.is_ajax %}
<div class="col-sm-12">
<div class="col-sm-8">
<h1>
{% if object.is_rig %}N{{ object.pk|stringformat:"05d" }}{% else %}{{ object.pk }}{% endif %}
| {{ object.name }}
| {{ object.name }} {% if event.dry_hire %}<span class="badge">Dry Hire</span>{% endif %}
</h1>
</div>
</div>
<div class="col-sm-12 text-right">
<div class="btn-group btn-page">

View File

@@ -241,7 +241,7 @@
</td>
</tr>
<tr>
<td>24 Hour Emergency Contacts: 07825 065681 or 07825 065678</td>
<td>24 Hour Emergency Contacts: 07825 065681 and 07825 065678</td>
</tr>
</blockTable>
</keepTogether>

View File

@@ -38,7 +38,7 @@
<small>at {{ event.venue }}</small>
{% endif %}
{% if event.dry_hire %}
<span class="label label-default">Dry Hire</span>
<span class="badge">Dry Hire</span>
{% endif %}
</h4>
{% if event.is_rig and not event.cancelled %}

View File

@@ -2,8 +2,25 @@
<button title="Changes to {{ change.field.verbose_name }}" type="button" class="btn btn-default btn-xs" data-container="body" data-html="true" data-trigger='hover' data-toggle="popover" data-content='
{% if change.new %}<div class="alert alert-success {% if change.long %}overflow-ellipsis{% endif %}">{{change.new|linebreaksbr}}</div>{% endif %}
{% if change.old %}<div class="alert alert-danger {% if change.long %}overflow-ellipsis{% endif %}">{{change.old|linebreaksbr}}</div>{% endif %}
{% if change.new %}
<div class="alert alert-success {% if change.long %}overflow-ellipsis{% endif %}">
{% if change.linebreaks %}
{{change.new|linebreaksbr}}
{% else %}
{{change.new}}
{% endif %}
</div>
{% endif %}
{% if change.old %}
<div class="alert alert-danger {% if change.long %}overflow-ellipsis{% endif %}">
{% if change.linebreaks %}
{{change.old|linebreaksbr}}
{% else %}
{{change.old}}
{% endif %}
</div>
{% endif %}
'>{{ change.field.verbose_name }}</button>

View File

@@ -145,8 +145,8 @@ urlpatterns = patterns('',
url(r'^ical/(?P<api_pk>\d+)/(?P<api_key>\w+)/rigs.ics$', api_key_required(ical.CalendarICS()), name="ics_calendar"),
# API
url(r'^api/(?P<model>\w+)/$', (views.SecureAPIRequest.as_view()), name="api_secure"),
url(r'^api/(?P<model>\w+)/(?P<pk>\d+)/$', (views.SecureAPIRequest.as_view()), name="api_secure"),
url(r'^api/(?P<model>\w+)/$', login_required(views.SecureAPIRequest.as_view()), name="api_secure"),
url(r'^api/(?P<model>\w+)/(?P<pk>\d+)/$', login_required(views.SecureAPIRequest.as_view()), name="api_secure"),
# Legacy URL's
url(r'^rig/show/(?P<pk>\d+)/$', RedirectView.as_view(permanent=True,pattern_name='event_detail')),

View File

@@ -16,7 +16,7 @@ import simplejson
from reversion.models import Version
from django.contrib.contenttypes.models import ContentType # Used to lookup the content_type
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.db.models import ForeignKey, IntegerField, EmailField
from django.db.models import ForeignKey, IntegerField, EmailField, TextField
from RIGS import models, forms
import datetime
@@ -56,7 +56,13 @@ def model_compare(oldObj, newObj, excluded_keys=[]):
def long(self):
if isinstance(self.field, EmailField):
return True
return False
return False
@property
def linebreaks(self):
if isinstance(self.field, TextField):
return True
return False
changes = []

View File

@@ -221,8 +221,8 @@ class SecureAPIRequest(generic.View):
'venue': 'RIGS.view_venue',
'person': 'RIGS.view_person',
'organisation': 'RIGS.view_organisation',
'profile': None,
'event': 'RIGS.view_event',
'profile': 'RIGS.view_profile',
'event': None,
}
'''
@@ -300,10 +300,9 @@ class SecureAPIRequest(generic.View):
# Probably a calendar request
start_datetime = datetime.datetime.strptime( start, "%Y-%m-%dT%H:%M:%SZ" )
end_datetime = datetime.datetime.strptime( end, "%Y-%m-%dT%H:%M:%SZ" )
all_objects = self.models[model].objects
objects = self.models[model].objects.events_in_bounds(start_datetime,end_datetime)
results = []
filter = Q(start_date__lte=end_datetime) & Q(start_date__gte=start_datetime)
objects = all_objects.filter(filter).select_related('person', 'organisation', 'venue', 'mic').order_by('-start_date')
for item in objects:
data = {
'pk': item.pk,
@@ -331,27 +330,6 @@ class SecureAPIRequest(generic.View):
if item.access_at:
data['access_at'] = item.access_at.strftime('%Y-%m-%dT%H:%M:%SZ')
if item.venue:
data['venue'] = item.venue.name
if item.person:
data['person'] = item.person.name
if item.organisation:
data['organisation'] = item.organisation.name
if item.mic:
data['mic'] = {
'name':item.mic.get_full_name(),
'initials':item.mic.initials
}
if item.description:
data['description'] = item.description
if item.notes:
data['notes'] = item.notes
data['url'] = str(reverse_lazy('event_detail',kwargs={'pk':item.pk}))
results.append(data)

View File

@@ -112,7 +112,7 @@
</li>
</ul>
{% else %}
<a href="{% url "login" %}?next={{ request.path }}">
<a href="{% url "login" %}">
<span class="icon-user"></span>
Login
</a>