mirror of
https://github.com/nottinghamtec/PyRIGS.git
synced 2026-01-17 05:22:16 +00:00
Made it work for other models
This commit is contained in:
@@ -78,6 +78,9 @@ class Person(models.Model, RevisionMixin):
|
||||
def latest_events(self):
|
||||
return self.event_set.order_by('-start_date').select_related('person', 'organisation', 'venue', 'mic')
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse_lazy('person_detail', kwargs={'pk': self.pk})
|
||||
|
||||
class Meta:
|
||||
permissions = (
|
||||
('view_person', 'Can view Persons'),
|
||||
@@ -114,6 +117,9 @@ class Organisation(models.Model, RevisionMixin):
|
||||
def latest_events(self):
|
||||
return self.event_set.order_by('-start_date').select_related('person', 'organisation', 'venue', 'mic')
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse_lazy('organisation_detail', kwargs={'pk': self.pk})
|
||||
|
||||
class Meta:
|
||||
permissions = (
|
||||
('view_organisation', 'Can view Organisations'),
|
||||
@@ -176,6 +182,9 @@ class Venue(models.Model, RevisionMixin):
|
||||
def latest_events(self):
|
||||
return self.event_set.order_by('-start_date').select_related('person', 'organisation', 'venue', 'mic')
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse_lazy('venue_detail', kwargs={'pk': self.pk})
|
||||
|
||||
class Meta:
|
||||
permissions = (
|
||||
('view_venue', 'Can view Venues'),
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{% extends request.is_ajax|yesno:"base_ajax.html,base.html" %}
|
||||
{% load static %}
|
||||
{% load paginator from filters %}
|
||||
{% load to_class_name from filters %}
|
||||
|
||||
{% block title %}Rigboard Activity Stream{% endblock %}
|
||||
|
||||
@@ -54,7 +55,7 @@
|
||||
<thead>
|
||||
<tr>
|
||||
<td>Date</td>
|
||||
<td>Event</td>
|
||||
<td>Object</td>
|
||||
<td>Version ID</td>
|
||||
<td>User</td>
|
||||
<td>Changes</td>
|
||||
@@ -65,14 +66,14 @@
|
||||
|
||||
<tr>
|
||||
<td>{{ version.revision.date_created|date:"RIGS_DATETIME_FORMAT" }}</td>
|
||||
<td><a href="{% url 'event_detail' version.new.pk %}">N{{ version.new.pk|stringformat:"05d" }}</a></td>
|
||||
<td><a href="{{ version.current.get_absolute_url }}">{{version.current|to_class_name}} {{ version.new.pk|stringformat:"05d" }}</a></td>
|
||||
<td>{{ version.version.pk }}|{{ version.revision.pk }}</td>
|
||||
<td>{{ version.revision.user.name }}</td>
|
||||
<td>
|
||||
{% if version.old == None %}
|
||||
Event Created
|
||||
{% else %}
|
||||
{% include 'RIGS/event_version_changes.html' %}
|
||||
{% include 'RIGS/version_changes.html' %}
|
||||
{% endif %} </td>
|
||||
</tr>
|
||||
|
||||
@@ -105,7 +106,7 @@
|
||||
{% if version.old == None %}
|
||||
created
|
||||
{% else %}
|
||||
changed {% include 'RIGS/event_version_changes.html' %} in
|
||||
changed {% include 'RIGS/version_changes.html' %} in
|
||||
{% endif %}
|
||||
{% include 'RIGS/event_button.html' with event=version.current %}
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
{% if version.old == None %}
|
||||
Event Created
|
||||
{% else %}
|
||||
{% include 'RIGS/event_version_changes.html' %}
|
||||
{% include 'RIGS/version_changes.html' %}
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -9,6 +9,10 @@ register = template.Library()
|
||||
def multiply(value, arg):
|
||||
return value*arg
|
||||
|
||||
@register.filter
|
||||
def to_class_name(value):
|
||||
return value.__class__.__name__
|
||||
|
||||
@register.filter
|
||||
def nice_errors(form, non_field_msg='General form errors'):
|
||||
nice_errors = ErrorDict()
|
||||
|
||||
@@ -48,7 +48,8 @@ def model_compare(oldObj, newObj, excluded_keys=[]):
|
||||
continue # if we're excluding this field, skip over it
|
||||
|
||||
try:
|
||||
if oldValue != newValue:
|
||||
bothBlank = (not oldValue) and (not newValue)
|
||||
if oldValue != newValue and not bothBlank:
|
||||
compare = FieldCompare(thisField,oldValue,newValue)
|
||||
changes.append(compare)
|
||||
except TypeError: # logs issues with naive vs tz-aware datetimes
|
||||
@@ -92,19 +93,22 @@ def compare_event_items(old, new):
|
||||
|
||||
return changes
|
||||
|
||||
def get_versions_for_model(model):
|
||||
content_type = ContentType.objects.get_for_model(model)
|
||||
def get_versions_for_model(models):
|
||||
content_types = []
|
||||
for model in models:
|
||||
content_types.append(ContentType.objects.get_for_model(model))
|
||||
|
||||
versions = reversion.models.Version.objects.filter(
|
||||
content_type = content_type,
|
||||
content_type__in = content_types,
|
||||
).select_related("revision","revision.version_set").order_by("-pk")
|
||||
|
||||
return versions
|
||||
|
||||
def get_previous_version(version):
|
||||
thisEventId = version.object_id
|
||||
thisId = version.object_id
|
||||
thisVersionId = version.pk
|
||||
|
||||
versions = reversion.get_for_object_reference(models.Event, thisEventId)
|
||||
versions = reversion.get_for_object_reference(version.content_type.model_class(), thisId)
|
||||
|
||||
try:
|
||||
previousVersions = versions.filter(pk__lt=thisVersionId).latest(field_name='pk') # this is very slow :(
|
||||
@@ -120,10 +124,12 @@ def get_changes_for_version(newVersion, oldVersion=None):
|
||||
if oldVersion == None:
|
||||
oldVersion = get_previous_version(newVersion)
|
||||
|
||||
modelClass = newVersion.content_type.model_class()
|
||||
|
||||
compare = {}
|
||||
compare['revision'] = newVersion.revision
|
||||
compare['new'] = newVersion.object_version.object
|
||||
compare['current'] = models.Event.objects.get(pk=compare['new'].pk)
|
||||
compare['current'] = modelClass.objects.get(pk=compare['new'].pk)
|
||||
compare['version'] = newVersion
|
||||
|
||||
if oldVersion:
|
||||
@@ -162,7 +168,7 @@ class ActivityStream(generic.ListView):
|
||||
paginate_by = 25
|
||||
|
||||
def get_queryset(self):
|
||||
versions = get_versions_for_model(models.Event)
|
||||
versions = get_versions_for_model([models.Event,models.Venue,models.Person,models.Organisation])
|
||||
return versions
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
|
||||
Reference in New Issue
Block a user