Added version history to models with the use of a mixin

This commit is contained in:
Tom Price
2014-11-04 03:27:32 +00:00
parent 31488da8b5
commit a7384c1dd2
5 changed files with 29 additions and 7 deletions

View File

@@ -7,7 +7,9 @@ django.setup()
from django.db import connections
from django.core.exceptions import ObjectDoesNotExist
from django.db.utils import ConnectionDoesNotExist
from django.db import transaction
from RIGS import models
import reversion
def setup_cursor():
try:
@@ -40,6 +42,8 @@ def import_people():
person, created = models.Person.objects.get_or_create(pk=row[0], name=row[1], phone=row[2], email=email, address=row[4], notes=notes)
if created:
print("Created: " + person.__unicode__())
with transaction.atomic(), reversion.create_revision():
person.save()
else:
print("Found: " + person.__unicode__())

View File

@@ -16,8 +16,20 @@ class Profile(AbstractUser):
url = "https://www.gravatar.com/avatar/" + hashlib.md5(self.email).hexdigest() + "?d=identicon&s=500"
return url
class RevisionMixin(object):
@property
def last_edited_at(self):
version = reversion.get_for_object(self)[0]
return version.revision.date_created
@property
def last_edited_by(self):
version = reversion.get_for_object(self)[0]
return version.revision.user
@reversion.register
class Person(models.Model):
class Person(models.Model, RevisionMixin):
name = models.CharField(max_length=50)
phone = models.CharField(max_length=15, blank=True, null=True)
email = models.EmailField(blank=True, null=True)
@@ -30,4 +42,5 @@ class Person(models.Model):
string = self.name
if len(self.notes) > 0:
string += "*"
return string
return string

View File

@@ -7,7 +7,6 @@
<div class="row">
{% if not request.is_ajax %}
<h3>{{ object.name }}</h3>
<div class="pull-right">
<a href="{% url 'person_update' object.pk %}" class="btn btn-primary">Edit <span
class="glyphicon glyphicon-pencil"></span></a>
@@ -38,9 +37,16 @@
{% if request.is_ajax %}
{% block footer %}
<div class="pull-right">
<a href="{% url 'person_update' object.pk %}" class="btn btn-primary">Edit <span
class="glyphicon glyphicon-pencil"></span></a>
<div class="row">
<div class="col-sm-10 align-left">
Lasted edited at {{ object.last_edited_at|date:"SHORT_DATE_FORMAT" }} by {{ user }}
</div>
<div class="col-sm-2">
<div class="pull-right">
<a href="{% url 'person_update' object.pk %}" class="btn btn-primary">Edit <span
class="glyphicon glyphicon-pencil"></span></a>
</div>
</div>
</div>
{% endblock %}
{% endif %}

View File

@@ -59,5 +59,4 @@ def paginator(context, adjacent_pages=3):
dict['previous'] = page.previous_page_number()
return dict
register.inclusion_tag('pagination.html', takes_context=True)(paginator)

Binary file not shown.