from django.core.urlresolvers import reverse as django_reverse from django import forms from django.utils.translation import ugettext as _ from misago.admin import site from misago.apps.admin.widgets import * from misago.forms import Form from misago.models import ThemeAdjustment from misago.utils.strings import slugify from misago.apps.admin.clients.forms import ThemeAdjustmentForm def reverse(route, target=None): if target: return django_reverse(route, kwargs={'target': target.pk, 'slug': slugify(target.theme)}) return django_reverse(route) """ Views """ class List(ListWidget): admin = site.get_action('clients') id = 'list' columns = ( ('theme', _("Theme")), ) nothing_checked_message = _('You have to check at least one adjustment.') actions = ( ('delete', _("Delete selected adjustments"), _("Are you sure you want to delete selected theme adjustments?")), ) def get_item_actions(self, item): return ( self.action('pencil', _("Edit Adjustment"), reverse('admin_clients_edit', item)), self.action('remove', _("Delete Adjustment"), reverse('admin_clients_delete', item), post=True, prompt=_("Are you sure you want to delete this adjustment?")), ) def action_delete(self, items, checked): ThemeAdjustment.objects.filter(id__in=checked).delete() return Message(_('Selected adjustment have been deleted successfully.'), 'success'), reverse('admin_clients') class New(FormWidget): admin = site.get_action('clients') id = 'new' fallback = 'admin_clients' form = ThemeAdjustmentForm submit_button = _("Set Adjustment") def get_form_instance(self, form, model, initial, post=False): if post: return form(model, self.request.POST, request=self.request, initial=self.get_initial_data(model)) return form(model, request=self.request, initial=self.get_initial_data(model)) def get_new_url(self, model): return reverse('admin_clients_new') def get_edit_url(self, model): return reverse('admin_clients_edit', model) def submit_form(self, form, target): new_adjustment = ThemeAdjustment.objects.create( theme=form.cleaned_data['theme'], useragents='\r\n'.join(form.cleaned_data['useragents']), ) return new_adjustment, Message(_('New adjustment has been created.'), 'success') class Edit(FormWidget): admin = site.get_action('clients') id = 'edit' name = _("Edit Adjustment") fallback = 'admin_clients' form = ThemeAdjustmentForm target_name = 'theme' notfound_message = _('Requested adjustment could not be found.') submit_fallback = True def get_url(self, model): return reverse('admin_clients_edit', model) def get_edit_url(self, model): return self.get_url(model) def get_form_instance(self, form, model, initial, post=False): if post: return form(model, self.request.POST, request=self.request, initial=self.get_initial_data(model)) return form(model, request=self.request, initial=self.get_initial_data(model)) def get_initial_data(self, model): return { 'theme': model.theme, 'useragents': model.useragents, } def submit_form(self, form, target): target.theme = form.cleaned_data['theme'] target.useragents = '\r\n'.join(form.cleaned_data['useragents']) target.save(force_update=True) return target, Message(_('Adjustment using theme "%(name)s" has been saved.') % {'name': target.theme}, 'success') class Delete(ButtonWidget): admin = site.get_action('clients') id = 'delete' fallback = 'admin_clients' notfound_message = _('Requested adjustment could not be found.') def action(self, target): target.delete() return Message(_('Adjustment using theme "%(name)s" has been deleted.') % {'name': target.theme}, 'success'), False