Skip to content

Instantly share code, notes, and snippets.

@zetas
Created August 9, 2013 00:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zetas/6190312 to your computer and use it in GitHub Desktop.
Save zetas/6190312 to your computer and use it in GitHub Desktop.
One class to build them all...
class TransactionAdmin(admin.ModelAdmin):
fields = ['date', 'bitcoin_address', 'payment_method', 'amount', 'email_address', 'completed']
list_display = ['id', 'date', 'bitcoin_address', 'payment_method', 'amount', 'email_address', 'completed']
readonly_fields = ['id', 'date']
search_fields = ['^email_address', '^id', '^payment_method']
list_filter = ['payment_method', 'completed']
list_display_links = ['date']
inlines = [TransactionDetailAdmin]
actions = ['really_delete_selected']
def get_actions(self, request):
actions = super(TransactionAdmin, self).get_actions(request)
del actions['delete_selected']
return actions
def really_delete_selected(self, request, queryset):
for obj in queryset:
free_address(obj.bitcoin_address)
obj.delete()
if queryset.count() == 1:
message_bit = "1 transaction was"
else:
message_bit = "%s transactions were" % queryset.count()
self.message_user(request, "%s successfully deleted." % message_bit)
really_delete_selected.short_description = "Delete selected transactions"
def save_model(self, request, obj, form, change):
if obj.completed:
free_address(obj.bitcoin_address)
else:
obj.bitcoin_address.in_use = True
obj.bitcoin_address.save()
obj.save()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment