Added select account template

This commit is contained in:
Marc Aymerich 2015-10-05 14:49:15 +00:00
parent 7128db2640
commit fe71ef72d6
4 changed files with 56 additions and 25 deletions

View file

@ -2,7 +2,7 @@ import copy
import re
from urllib.parse import parse_qsl
from django import forms
from django import apps, forms
from django.conf.urls import url
from django.contrib import admin, messages
from django.contrib.admin.utils import unquote
@ -92,7 +92,7 @@ class AccountAdmin(ChangePasswordAdminMixin, auth.UserAdmin, ExtendedModelAdmin)
}
context.update(extra_context or {})
return super(AccountAdmin, self).change_view(
request, object_id, form_url, context)
request, object_id, form_url=form_url, extra_context=context)
def get_fieldsets(self, request, obj=None):
fieldsets = super(AccountAdmin, self).get_fieldsets(request, obj)
@ -125,6 +125,7 @@ class AccountListAdmin(AccountAdmin):
""" Account list to allow account selection when creating new services """
list_display = ('select_account', 'username', 'type', 'username')
actions = None
change_list_template = 'admin/accounts/account/select_account_list.html'
def select_account(self, instance):
# TODO get query string from request.META['QUERY_STRING'] to preserve filters
@ -139,12 +140,13 @@ class AccountListAdmin(AccountAdmin):
select_account.admin_order_field = 'username'
def changelist_view(self, request, extra_context=None):
original_app_label = request.META['PATH_INFO'].split('/')[-5]
original_model = request.META['PATH_INFO'].split('/')[-4]
app_label = request.META['PATH_INFO'].split('/')[-5]
model = request.META['PATH_INFO'].split('/')[-4]
model = apps.get_model(app_label, model)
opts = model._meta
context = {
'title': _("Select account for adding a new %s") % (original_model),
'original_app_label': original_app_label,
'original_model': original_model,
'title': _("Select account for adding a new %s") % (opts.verbose_name),
'original_opts': opts,
}
context.update(extra_context or {})
response = super(AccountListAdmin, self).changelist_view(request, extra_context=context)

View file

@ -0,0 +1,14 @@
{% extends 'admin/change_list.html' %}
{% load i18n admin_urls %}
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
&rsaquo; <a href="{% url 'admin:app_list' app_label=cl.opts.app_label %}">{{ original_opts.app_config.verbose_name }}</a>
&rsaquo; <a href="{% url opts|admin_urlname:'changelist' %}">{{ original_opts.verbose_name_plural|capfirst }}</a>
&rsaquo; {% trans 'Add' %}
&rsaquo; {% trans 'Select contact' %}
</div>
{% endblock %}

View file

@ -47,13 +47,14 @@ class BillLineInline(admin.TabularInline):
order_link = admin_link('order', display='pk')
def display_total(self, line):
total = line.compute_total()
sublines = line.sublines.all()
if sublines:
content = '\n'.join(['%s: %s' % (sub.description, sub.total) for sub in sublines])
img = static('admin/img/icon_alert.gif')
return '<span title="%s">%s <img src="%s"></img></span>' % (content, total, img)
return total
if line.pk:
total = line.compute_total()
sublines = line.sublines.all()
if sublines:
content = '\n'.join(['%s: %s' % (sub.description, sub.total) for sub in sublines])
img = static('admin/img/icon_alert.gif')
return '<span title="%s">%s <img src="%s"></img></span>' % (content, total, img)
return total
display_total.short_description = _("Total")
display_total.allow_tags = True
@ -97,7 +98,8 @@ class ClosedBillLineInline(BillLineInline):
display_subtotal.allow_tags = True
def display_total(self, line):
return line.compute_total()
if line.pk:
return line.compute_total()
display_total.short_description = _("Total")
display_total.allow_tags = True
@ -110,8 +112,8 @@ class ClosedBillLineInline(BillLineInline):
class BillLineAdmin(admin.ModelAdmin):
list_display = (
'description', 'bill_link', 'display_is_open', 'account_link', 'rate', 'quantity', 'tax',
'subtotal', 'display_sublinetotal', 'display_total'
'description', 'bill_link', 'display_is_open', 'account_link', 'rate', 'quantity',
'tax', 'subtotal', 'display_sublinetotal', 'display_total'
)
actions = (
actions.undo_billing, actions.move_lines, actions.copy_lines, actions.service_report
@ -201,7 +203,8 @@ class BillAdmin(AccountAdminMixin, ExtendedModelAdmin):
}),
(_("Dates"), {
'classes': ('collapse',),
'fields': ('created_on_display', 'closed_on_display', 'updated_on_display', 'due_on'),
'fields': ('created_on_display', 'closed_on_display', 'updated_on_display',
'due_on'),
}),
(_("Raw"), {
'classes': ('collapse',),
@ -219,7 +222,9 @@ class BillAdmin(AccountAdminMixin, ExtendedModelAdmin):
actions.amend_bills, actions.bill_report, actions.service_report,
actions.close_send_download_bills, list_accounts,
]
change_readonly_fields = ('account_link', 'type', 'is_open', 'amend_of_link', 'amend_links')
change_readonly_fields = (
'account_link', 'type', 'is_open', 'amend_of_link', 'amend_links'
)
readonly_fields = (
'number', 'display_total', 'is_sent', 'display_payment_state', 'created_on_display',
'closed_on_display', 'updated_on_display'
@ -265,7 +270,8 @@ class BillAdmin(AccountAdminMixin, ExtendedModelAdmin):
transactions = bill.transactions.all()
if len(transactions) == 1:
args = (transactions[0].pk,)
url = reverse('admin:%s_%s_change' % (t_opts.app_label, t_opts.model_name), args=args)
view = 'admin:%s_%s_change' % (t_opts.app_label, t_opts.model_name)
url = reverse(view, args=args)
else:
url = reverse('admin:%s_%s_changelist' % (t_opts.app_label, t_opts.model_name))
url += '?bill=%i' % bill.pk

View file

@ -11,7 +11,7 @@ from orchestra.admin.utils import admin_link, admin_date
class LogEntryAdmin(admin.ModelAdmin):
list_display = (
'id', 'display_message', 'display_action_time', 'user_link',
'display_action_time', 'user_link', 'display_message',
)
list_filter = (
'action_flag',
@ -32,6 +32,10 @@ class LogEntryAdmin(admin.ModelAdmin):
user_link = admin_link('user')
display_action_time = admin_date('action_time', short_description=_("Time"))
def __init__(self, *args, **kwargs):
super(LogEntryAdmin, self).__init__(*args, **kwargs)
self.list_display_links = (None, )
def display_message(self, log):
edit = '<a href="%(url)s"><img src="%(img)s"></img></a>' % {
'url': reverse('admin:admin_logentry_change', args=(log.pk,)),
@ -68,8 +72,9 @@ class LogEntryAdmin(admin.ModelAdmin):
def content_object_link(self, log):
ct = log.content_type
view = 'admin:%s_%s_change' % (ct.app_label, ct.model)
try:
url = reverse('admin:%s_%s_change' % (ct.app_label, ct.model), args=(log.object_id,))
url = reverse(view, args=(log.object_id,))
except NoReverseMatch:
return log.object_repr
return '<a href="%s">%s</a>' % (url, log.object_repr)
@ -87,7 +92,8 @@ class LogEntryAdmin(admin.ModelAdmin):
'object': obj,
}
context.update(extra_context or {})
return super(LogEntryAdmin, self).changeform_view(request, object_id, form_url, extra_context=context)
return super(LogEntryAdmin, self).changeform_view(
request, object_id, form_url, extra_context=context)
def response_change(self, request, obj):
""" save and continue preserve edit query string """
@ -100,9 +106,12 @@ class LogEntryAdmin(admin.ModelAdmin):
""" save redirect to object history """
if 'edit' in request.GET.urlencode():
opts = obj.content_type.model_class()._meta
post_url = reverse('admin:%s_%s_history' % (opts.app_label, opts.model_name), args=(obj.object_id,))
view = 'admin:%s_%s_history' % (opts.app_label, opts.model_name)
post_url = reverse(view, args=(obj.object_id,))
preserved_filters = self.get_preserved_filters(request)
post_url = add_preserved_filters({'preserved_filters': preserved_filters, 'opts': opts}, post_url)
post_url = add_preserved_filters({
'preserved_filters': preserved_filters, 'opts': opts
}, post_url)
return HttpResponseRedirect(post_url)
return super(LogEntryAdmin, self).response_post_save_change(request, obj)