Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

import django.dispatch 

from reversion.models import Version 

 

 

def squash_revision_by_user(sender, obj, **kwargs): 

""" 

It should also work with moderation as obj will be a versioned object 

""" 

versions = ( 

Version.objects.get_for_object(obj) 

.select_related("revision") 

.order_by("-revision__date_created") 

) 

 

last_edit = versions[0] 

user_made_last_edit = last_edit.revision.user 

 

if user_made_last_edit is not None: 

for v in versions[1:]: 

if v.revision.user == user_made_last_edit: 

v.delete() 

else: 

break 

 

# We update the number of versions directly here 

# So that it doesn't have to be recomputed every time 

obj.nb_versions = len(Version.objects.get_for_object(obj)) 

obj.save() 

 

 

new_revision_saved = django.dispatch.Signal(providing_args=["obj"]) 

 

 

def enable_squash_revisions(): 

new_revision_saved.connect( 

squash_revision_by_user, dispatch_uid="receiver_concat_revisions" 

)