Django

Code

Ticket #3428: full-history-r4459.diff

File full-history-r4459.diff, 9.6 kB (added by ramiro <rm0 _at_ gmx.net>, 2 years ago)
  • full-history/django/contrib/history/models.py

    old new  
    2222class ChangeLogManager(models.Manager): 
    2323 
    2424    def get_version(self, object, **kwargs): 
    25        """  
    26        Returns 'current-offset' revision of the 'object'  
    27        """ 
    28        if not kwargs or not kwargs['offset']: offset=0 
    29  
    30        ct = ContentType.objects.get_for_model(object) 
    31  
    32        if kwargs and kwargs['revision']: 
    33            return self.get_query_set().filter( 
    34                content_type=ct.id).filter( 
    35                    object_id=object.id).filter( 
    36                        pk=revision)[offset] 
    37        else: 
    38            return self.get_query_set().filter( 
    39                content_type=ct.id).filter( 
    40                    object_id=object.id)[offset] 
     25        """  
     26        Returns 'current-offset' revision of the 'object'  
     27        """ 
     28        if not kwargs or not kwargs['offset']: offset=0 
     29 
     30        ct = ContentType.objects.get_for_model(object) 
     31 
     32        if kwargs and kwargs['revision']: 
     33            return self.get_query_set().filter( 
     34                content_type=ct.id).filter( 
     35                    object_id=object.id).filter( 
     36                        pk=revision)[offset] 
     37        else: 
     38            return self.get_query_set().filter( 
     39                content_type=ct.id).filter( 
     40                    object_id=object.id)[offset] 
    4141 
    4242    def list_history(self, object, **kwargs): 
    43        """  
    44        list_history(object): Returns a list of all revisions for that id. 
    45        list_history(object, offset=X): Returns a list of last X revisions.     
    46        """ 
    47        ct = ContentType.objects.get_for_model(object) 
    48        if kwargs['offset']: 
    49            return self.get_query_set().filter( 
    50                content_type=ct.id).filter( 
    51                    object_id=object.id)[:kwargs['offset']] 
    52        else: 
    53            return ChangeLog.objects.filter(object_id=object.id) 
     43        """  
     44        list_history(object): Returns a list of all revisions for that id. 
     45        list_history(object, offset=X): Returns a list of last X revisions.     
     46        """ 
     47        ct = ContentType.objects.get_for_model(object) 
     48        if kwargs['offset']: 
     49            return self.get_query_set().filter( 
     50                content_type=ct.id).filter( 
     51                    object_id=object.id)[:kwargs['offset']] 
     52        else: 
     53            return ChangeLog.objects.filter(object_id=object.id) 
    5454 
    5555    def version_by_date(self, object, date): 
    56        """  
    57        Returns a list of revisions made at 'date'.  
    58        """ 
    59        ct = ContentType.objects.get_for_model(object) 
    60        return self.get_query_set().filter( 
    61            content_type=ct.id).filter( 
    62                change_time__exact=date) 
     56        """  
     57        Returns a list of revisions made at 'date'.  
     58        """ 
     59        ct = ContentType.objects.get_for_model(object) 
     60        return self.get_query_set().filter( 
     61            content_type=ct.id).filter( 
     62                change_time__exact=date) 
    6363 
    6464######################## 
    6565# Generic change model # 
     
    7878    objects = ChangeLogManager() 
    7979     
    8080    class Meta: 
    81        verbose_name = _('changelog entry') 
    82        verbose_name_plural = _('changelog entries') 
    83        db_table = _('django_history_log') 
    84          
     81        verbose_name = _('changelog entry') 
     82        verbose_name_plural = _('changelog entries') 
     83        db_table = _('django_history_log') 
     84         
    8585    class Admin: 
    86        date_hierarchy = 'change_time' 
    87        list_filter = ['change_time',  'change_type', 'content_type'] 
    88        fields = ( 
    89            ('Meta info', {'fields': ('change_time', 'content_type', 'object_id', 'user', 'comment'),}), 
    90            ('Object', {'fields': ('object',),}), 
    91        
     86        date_hierarchy = 'change_time' 
     87        list_filter = ['change_time',  'change_type', 'content_type'] 
     88        fields = ( 
     89            ('Meta info', {'fields': ('change_time', 'content_type', 'object_id', 'user', 'comment'),}), 
     90            ('Object', {'fields': ('object',),}), 
     91       
    9292 
    93        list_display = ('__str__', 'user', 'change_type','comment', 'content_type', 'change_time', ) 
    94          
     93        list_display = ('__str__', 'user', 'change_type','comment', 'content_type', 'change_time', ) 
     94         
    9595    def __str__(self): 
    96        return str(self.get_object()) 
     96        return str(self.get_object()) 
    9797 
    9898    def get_object(self): 
    99        """ Returns unpickled object. """ 
    100        return Pickle.loads(self.object) 
     99        """ Returns unpickled object. """ 
     100        return Pickle.loads(self.object) 
    101101 
    102102    def get_rev_num(self): 
    103        """ Returns the ID/revision number of ChangeLog entry. """ 
    104         return self.id   
     103        """ Returns the ID/revision number of ChangeLog entry. """ 
     104        return self.id         
    105105 
    106106######################### 
    107107# Pre-save signal catch # 
     
    118118    m = None 
    119119 
    120120    for model in models.get_models(): 
    121        try: 
    122            if model.History: 
    123                model_list.append({'module': model.__module__, 
    124                                   'name': model.__name__}) 
    125        except: 
    126            pass 
     121        try: 
     122            if model.History: 
     123                model_list.append({'module': model.__module__, 
     124                                   'name': model.__name__}) 
     125        except: 
     126            pass 
    127127 
    128128    for model in model_list: 
    129        if model['name'] is instance.__class__.__name__: 
    130            try: 
    131                m = __import__(model['module'], '', '', [model['name']]) 
    132                #print model['module'],": ",model['name'],"- ",m 
    133                print "Model import done: ",m 
    134            except: 
    135                print "Model import error." 
    136                return False 
     129        if model['name'] is instance.__class__.__name__: 
     130            try: 
     131                m = __import__(model['module'], '', '', [model['name']]) 
     132                #print model['module'],": ",model['name'],"- ",m 
     133                print "Model import done: ",m 
     134            except: 
     135                print "Model import error." 
     136                return False 
    137137 
    138138    return m 
    139139 
     
    152152    print "Signal: ",kwargs['signal_name'] 
    153153 
    154154    if instance.__class__.__name__ is 'ChangeLog' or not hasattr(instance, 'History'):  
    155        print "Not history-enabled class." 
    156        return 0 
     155        print "Not history-enabled class." 
     156        return 0 
    157157 
    158158    #instance_name = instance.__class__.__name__ 
    159159    #print instance_name 
     
    162162    log = None 
    163163     
    164164    if im: 
    165        try: 
    166            if kwargs['signal_name'] is 'pre_delete': 
    167                print "Instance was last revision." 
    168                old = instance 
    169                log = ChangeLog(parent=instance, change_type='D', comment="Object deleted. Last revision.") 
    170            elif ((kwargs['signal_name'] is 'pre_save') and instance.id): 
    171                print "Instance has an ID." 
    172                old = getattr(im, instance.__class__.__name__).objects.filter(pk=instance.id)[0] 
    173                log = ChangeLog(parent=instance, change_type='U', comment="Update") 
    174            else: 
    175                print "Instance without an ID." 
    176                old = instance 
    177                instance.id = 0 # FIX: ID cannot be None 
    178                log = ChangeLog(parent=instance, change_type='A', comment="New") 
    179        except: 
    180            return 1 
     165        try: 
     166            if kwargs['signal_name'] is 'pre_delete': 
     167                print "Instance was last revision." 
     168                old = instance 
     169                log = ChangeLog(parent=instance, change_type='D', comment="Object deleted. Last revision.") 
     170            elif ((kwargs['signal_name'] is 'pre_save') and instance.id): 
     171                print "Instance has an ID." 
     172                old = getattr(im, instance.__class__.__name__).objects.filter(pk=instance.id)[0] 
     173                log = ChangeLog(parent=instance, change_type='U', comment="Update") 
     174            else: 
     175                print "Instance without an ID." 
     176                old = instance 
     177                instance.id = 0        # FIX: ID cannot be None 
     178                log = ChangeLog(parent=instance, change_type='A', comment="New") 
     179        except: 
     180            return 1 
    181181    else: 
    182        return 0  # exit wo/ an action 
     182        return 0  # exit wo/ an action 
    183183 
    184184    # DEBUG 
    185185    #print "Old: ",old 
     
    188188    #print "Log: ",log.change_time 
    189189 
    190190    try:  
    191        log.object = Pickle.dumps(old, protocol=0
    192        log.save() 
    193        print "New change saved." 
     191        log.object = Pickle.dumps(old
     192        log.save() 
     193        print "New change saved." 
    194194    except: 
    195        print "ChangeLog faild to save changes." 
     195        print "ChangeLog failed to save changes." 
    196196 
    197197 
    198198dispatcher.connect( save_new_revision, signal=signals.pre_save ) 
  • full-history/django/contrib/history/views/main.py

    old new  
    1111def index(request): 
    1212    changes_list = ChangeLog.objects.all() 
    1313    return render_to_response('history/list.html',  
    14                              {'changes_list': changes_list}) 
     14                              {'changes_list': changes_list}) 
    1515 
    1616def list(request): 
    1717    changes_list = ChangeLog.objects.all() 
    1818    return render_to_response('history/list.html',  
    19                              {'changes_list': changes_list}) 
     19                              {'changes_list': changes_list}) 
    2020 
    2121 
    2222def detail(request, change_id): 
     
    3434    print "Change3: ",ch3 
    3535 
    3636    return render_to_response('history/detail.html', {'change': change, 
    37                                                      'object': object, 
    38                                                      'change_fields': change._meta.fields, 
    39                                                      'object_fields': object._meta.fields,}) 
     37                                                      'object': object, 
     38                                                      'change_fields': change._meta.fields, 
     39                                                      'object_fields': object._meta.fields,}) 
    4040 
    4141def changes(request, parent_id): 
    4242    changes_list = ChangeLog.objects.list_history(parent, offset=3) 
    4343    return render_to_response('history/list.html', 
    44                              {'changes_list': changes_list}) 
     44                              {'changes_list': changes_list})