create new ChangeSet API

This commit is contained in:
Laura Klünder 2017-07-06 13:07:05 +02:00
parent 7921f255e2
commit 55d2d6759f
5 changed files with 67 additions and 7 deletions

View file

@ -1,4 +1,5 @@
import typing
from collections import OrderedDict
from itertools import chain
from django.contrib.contenttypes.models import ContentType
@ -284,3 +285,14 @@ class ChangedObject(models.Model):
def __repr__(self):
return '<ChangedObject #%s on ChangeSet #%s>' % (str(self.pk), str(self.changeset_id))
def serialize(self):
return OrderedDict((
('type', self.model_class.__name__.lower()),
('is_created', self.is_created),
('is_deleted', self.deleted),
('pk', self.obj_pk),
('updated_fields', self.updated_fields),
('m2m_added', self.m2m_added),
('m2m_removed', self.m2m_removed),
))

View file

@ -74,6 +74,8 @@ class ChangeSet(models.Model):
"""
if request.user.is_authenticated:
return ChangeSet.objects.filter(author=request.user)
elif 'changeset' in request.session:
return ChangeSet.objects.filter(pk=request.session['changeset'])
return ChangeSet.objects.none()
@classmethod
@ -447,7 +449,18 @@ class ChangeSet(models.Model):
return OrderedDict((
('id', self.pk),
('author', self.author_id),
('state', self.state),
('assigned_to', self.assigned_to_id),
('changed_objects_count', self.changed_objects_count),
('created', None if self.created is None else self.created.isoformat()),
('last_change', None if self.last_change is None else self.last_change.datetime.isoformat()),
('last_update', None if self.last_update is None else self.last_update.datetime.isoformat()),
('last_state_update', (None if self.last_state_update is None else
self.last_state_update.datetime.isoformat())),
('last_state_update_user', (None if self.last_state_update is None else
self.last_state_update.user_id)),
('last_state_update_comment', (None if self.last_state_update is None else
self.last_state_update.comment)),
))
def save(self, *args, **kwargs):

View file

@ -1,3 +1,5 @@
from collections import OrderedDict
from django.conf import settings
from django.db import models
from django.utils.translation import ugettext_lazy as _
@ -25,3 +27,10 @@ class ChangeSetUpdate(models.Model):
def __repr__(self):
return '<Update #%s on ChangeSet #%s>' % (str(self.pk), str(self.changeset_id))
def serialize_tiny(self):
return OrderedDict((
('datetime', self.datetime.isoformat()),
('comment', self.comment),
('user', self.user_id),
))