Django-logicaldelete v.1.0

Advertisement
Advertisement

Developer commentsdjango-logicaldelete is a small and simple app that I threw together to get some reuse out of something I do in nearly every project and every model I create. It's too easy for good data to get deleted and it be unrecoverable. It's also too easy to fix this by overriding the model's delete() method and just flagging records as deleted and then leveraging Django's Managers to override default behavior so that logically deleted items are not returned in querysets.There are two exceptions however, that I have found useful to this rule. 1. In the admin I like to see everything with an indicator of whether or not it has been deleted, with the ability to filter down to just active records, (or deleted for that matter). 2. I still think it is a valid request when an item is fetched for by it's primary key value, that the object should return, even if it is marked as deleted.Using django-logicaldeleteUsing the app is pretty simple: 1. Put the logicaldelete sub-folder in your Python Path. 2. Inherit from logicaldelete.models.Model for all models that you wish to share in this functionality. 3. Create and/or Register admins for each of these models using logicaldelete.admin.ModelAdminAdditionalLogical deletes are handled by date stamping a date_removed column. In addition, a date_created and date_modified columns will be populated as a convenience.Possible ExtensionsYou can easily subclass these two classes to provide generic and useful functionality to your models.UUID Primary KeyI typically using UUID fields for my primary keys because they enable me to shard my tables if and when I need to, in addition, they provide an obfuscated id to my data (people can't determine how many of a certain object I have in my database, if I don't want them to know, but simply looking an an integer id in the URL).Sequence FieldMany times I find it useful to have an integer field on my models that allow for and explicitly controlled sequencing. I normally implement this as a sort descending implementation where the data is sorted from high to low by sequence value.In order to to implement this you'd subclass both the Model and ModelAdmin, where the Model would be an obvious simple addition of an IntegerField, the ModelAdmin, would override get_query_set, to do something like:class SequencedModel(logicaldelete.models.Model): sequence = models.IntegerField()class MyLogicalDeletedManager(logicaldelete.models.LogicalDeletedManager): def get_query_set(self): if self.model: qs = super(MyLogicalDeletedManager, self).get_query_set().filter(date_removed__isnull=True) if SequencedModel in inspect.getmro(self.model): qs = qs.order_by('-sequence') return qs

Developer commentsdjango-logicaldelete is a ... A base model that provides some extras for your models ...

 
  • Django-logicaldelete
  • 1.0
  • Patrick Altman
  • Linux
  • Freeware
  • 10 Kb
  • 226
  • Free
 
 

Review Django-logicaldelete

  • captcha
 

Other software of Patrick Altman
  • django-pdf  v.1.0.2A Django app for managing and processing PDF documents ...
  • nashvegas  v.0.7The purpose of this app is to enable a plug and play method for managing database changes.

New Misc software
  • NetSpot  v.2.11.967NetSpot 2 is the only professional app for wireless site survey, Wi-Fi analysis and troubleshooting on Mac OS X. It's FREE and very simple, no need to be a network expert to start using NetSpot today!
  • NetLimiter  v.4.0.53NetLimiter gives you full network control over your computer. You will decide where your applications are allowed to connect and how fast these connections should be.
  • NetSpot for Windows  v.2.11.705.0NetSpot is an application for Windows 7/8/10 that is used for wireless analysis, troubleshooting and wireless site survey.
  • NetSpot - WiFi Analyzer  v.1.1.21NetSpot for Android is the best way to discover WiFi networks around you, see the network name, band, channel, signal level, security, etc. Compare, filter and analyze WiFi networks, using the obtained data to resolve possible issues with WiFi.
  • Django-faces  v.0.2.1django-faces is a Django application for nonintrusive avatar support.
  • Django-model-utils  v.1.1.0Django model mixins and utilities ...