Skip to content

Commit

Permalink
Merge 68644bf into 7ebbac3
Browse files Browse the repository at this point in the history
  • Loading branch information
rafalp committed May 19, 2019
2 parents 7ebbac3 + 68644bf commit 3c81142
Show file tree
Hide file tree
Showing 14 changed files with 87 additions and 167 deletions.
10 changes: 5 additions & 5 deletions misago/admin/views/generic/base.py
Expand Up @@ -4,8 +4,8 @@


class AdminView(View):
def final_template(self):
return "%s/%s" % (self.templates_dir, self.template)
def get_template_name(self):
return "%s/%s" % (self.templates_dir, self.template_name)

def current_link(self, request):
matched_url = request.resolver_match.url_name
Expand All @@ -15,13 +15,13 @@ def process_context(self, request, context):
"""simple hook for extending and manipulating template context."""
return context

def render(self, request, context=None, template=None):
def render(self, request, context=None, template_name=None):
context = context or {}

context["root_link"] = self.root_link
context["current_link"] = self.current_link(request)

context = self.process_context(request, context)

template = template or self.final_template()
return render(request, template, context)
template_name = template_name or self.get_template_name()
return render(request, template_name, context)
32 changes: 16 additions & 16 deletions misago/admin/views/generic/formsbuttons.py
Expand Up @@ -55,25 +55,25 @@ def real_dispatch(self, request, target):


class FormView(TargetedView):
form = None
template = "form.html"
form_class = None
template_name = "form.html"

def create_form_type(self, request):
return self.form
def get_form_class(self, request):
return self.form_class

def initialize_form(self, form, request):
def get_form(self, form_class, request):
if request.method == "POST":
return form(request.POST, request.FILES)
return form()
return form_class(request.POST, request.FILES)
return form_class()

def handle_form(self, form, request):
raise NotImplementedError(
"You have to define your own handle_form method to handle form submissions."
)

def real_dispatch(self, request, target):
FormType = self.create_form_type(request)
form = self.initialize_form(FormType, request)
FormType = self.get_form_class(request)
form = self.get_form(FormType, request)

if request.method == "POST" and form.is_valid():
response = self.handle_form(form, request)
Expand All @@ -90,22 +90,22 @@ def real_dispatch(self, request, target):
class ModelFormView(FormView):
message_submit = None

def create_form_type(self, request, target):
return self.form
def get_form_class(self, request, target):
return self.form_class

def initialize_form(self, form, request, target):
def get_form(self, form_class, request, target):
if request.method == "POST":
return form(request.POST, request.FILES, instance=target)
return form(instance=target)
return form_class(request.POST, request.FILES, instance=target)
return form_class(instance=target)

def handle_form(self, form, request, target):
form.instance.save()
if self.message_submit:
messages.success(request, self.message_submit % {"name": target.name})

def real_dispatch(self, request, target):
FormType = self.create_form_type(request, target)
form = self.initialize_form(FormType, request, target)
form_class = self.get_form_class(request, target)
form = self.get_form(form_class, request, target)

if request.method == "POST" and form.is_valid():
response = self.handle_form( # pylint: disable=assignment-from-no-return
Expand Down
2 changes: 1 addition & 1 deletion misago/admin/views/generic/list.py
Expand Up @@ -28,7 +28,7 @@ class ListView(AdminView):
typles should follow this format: (name, order_by)
"""

template = "list.html"
template_name = "list.html"

items_per_page = 0
ordering = None
Expand Down
6 changes: 3 additions & 3 deletions misago/categories/admin/views/categories.py
Expand Up @@ -53,7 +53,7 @@ def process_context(self, request, context):


class CategoryFormMixin:
def create_form_type(self, request, target):
def get_form_class(self, request, target):
return CategoryFormFactory(target)

def handle_form(self, form, request, target):
Expand Down Expand Up @@ -102,9 +102,9 @@ class EditCategory(CategoryFormMixin, CategoryAdmin, generic.ModelFormView):

class DeleteCategory(CategoryAdmin, generic.ModelFormView):
message_submit = _('Category "%(name)s" has been deleted.')
template = "delete.html"
template_name = "delete.html"

def create_form_type(self, request, target):
def get_form_class(self, request, target):
return DeleteFormFactory(target)

def handle_form(self, form, request, target):
Expand Down
4 changes: 2 additions & 2 deletions misago/categories/admin/views/perms.py
Expand Up @@ -88,7 +88,7 @@ def button_action(self, request, target):

class CategoryPermissions(CategoryAdmin, generic.ModelFormView):
templates_dir = "misago/admin/categoryroles"
template = "categoryroles.html"
template_name = "categoryroles.html"

def real_dispatch(self, request, target):
category_roles = CategoryRole.objects.order_by("name")
Expand Down Expand Up @@ -144,7 +144,7 @@ def real_dispatch(self, request, target):

class RoleCategoriesACL(RoleAdmin, generic.ModelFormView):
templates_dir = "misago/admin/categoryroles"
template = "rolecategories.html"
template_name = "rolecategories.html"

def real_dispatch(self, request, target):
categories = Category.objects.all_categories()
Expand Down
2 changes: 1 addition & 1 deletion misago/conf/admin/tests/test_change_settings_view.py
Expand Up @@ -20,7 +20,7 @@ class Form(ChangeSettingsForm):


class View(ChangeSettingsView):
form = Form
form_class = Form

def render(self, request, context):
return True
Expand Down
18 changes: 9 additions & 9 deletions misago/conf/admin/views.py
Expand Up @@ -20,17 +20,17 @@ def index(request):
class ChangeSettingsView(AdminView):
root_link = None # Unused by change config views
template_name = None
form = None
form_class = None

def final_template(self):
def get_template_name(self):
return self.template_name

def dispatch(self, request, *args, **kwargs):
settings = self.get_settings(self.form.settings)
settings = self.get_settings(self.form_class.settings)
initial = self.get_initial_form_data(settings)
form = self.form(initial=initial)
form = self.form_class(initial=initial)
if request.method == "POST":
form = self.form(request.POST, request.FILES, initial=initial)
form = self.form_class(request.POST, request.FILES, initial=initial)
if form.is_valid():
form.save(settings)
messages.success(request, _("Changes in settings have been saved!"))
Expand All @@ -56,20 +56,20 @@ def get_initial_form_data(self, settings):


class ChangeCaptchaSettingsView(ChangeSettingsView):
form = ChangeCaptchaSettingsForm
form_class = ChangeCaptchaSettingsForm
template_name = "misago/admin/conf/captcha_settings.html"


class ChangeGeneralSettingsView(ChangeSettingsView):
form = ChangeGeneralSettingsForm
form_class = ChangeGeneralSettingsForm
template_name = "misago/admin/conf/general_settings.html"


class ChangeThreadsSettingsView(ChangeSettingsView):
form = ChangeThreadsSettingsForm
form_class = ChangeThreadsSettingsForm
template_name = "misago/admin/conf/threads_settings.html"


class ChangeUsersSettingsView(ChangeSettingsView):
form = ChangeUsersSettingsForm
form_class = ChangeUsersSettingsForm
template_name = "misago/admin/conf/users_settings.html"
2 changes: 1 addition & 1 deletion misago/legal/admin/views.py
Expand Up @@ -11,7 +11,7 @@
class AgreementAdmin(generic.AdminBaseMixin):
root_link = "misago:admin:settings:agreements:index"
model = Agreement
form = AgreementForm
form_class = AgreementForm
templates_dir = "misago/admin/agreements"
message_404 = _("Requested agreement does not exist.")

Expand Down
54 changes: 27 additions & 27 deletions misago/themes/admin/views.py
Expand Up @@ -23,7 +23,7 @@
class ThemeAdmin(generic.AdminBaseMixin):
root_link = "misago:admin:themes:index"
model = Theme
form = ThemeForm
form_class = ThemeForm
templates_dir = "misago/admin/themes"
message_404 = _("Requested theme does not exist.")

Expand All @@ -35,16 +35,16 @@ class ThemesList(ThemeAdmin, generic.ListView):
class NewTheme(ThemeAdmin, generic.ModelFormView):
message_submit = _('New theme "%(name)s" has been saved.')

def initialize_form(self, form, request, _):
def get_form(self, form_class, request, _):
if request.method == "POST":
return form(request.POST, request.FILES)
return form_class(request.POST, request.FILES)

try:
initial = {"parent": int(request.GET.get("parent"))}
except (TypeError, ValueError):
initial = {}

return form(initial=initial)
return form_class(initial=initial)


class EditTheme(ThemeAdmin, generic.ModelFormView):
Expand Down Expand Up @@ -107,8 +107,8 @@ def button_action(self, request, target):


class ImportTheme(ThemeAdmin, generic.FormView):
form = ImportForm
template = "import.html"
form_class = ImportForm
template_name = "import.html"

def handle_form(self, form, request):
try:
Expand All @@ -134,7 +134,7 @@ def redirect_to_theme_assets(self, theme):


class ThemeAssets(ThemeAssetsAdmin, generic.TargetedView):
template = "assets/list.html"
template_name = "assets/list.html"

def real_dispatch(self, request, theme):
return self.render(request, {"theme": theme})
Expand All @@ -159,10 +159,10 @@ class UploadThemeAssets(ThemeAssetsActionAdmin, generic.TargetedView):
)

message_submit = None
form = None
form_class = None

def action(self, request, theme):
form = self.form( # pylint: disable=not-callable
form = self.form_class( # pylint: disable=not-callable
request.POST, request.FILES, instance=theme
)

Expand All @@ -180,12 +180,12 @@ def action(self, request, theme):

class UploadThemeCss(UploadThemeAssets):
message_success = _("New CSS files have been added to the theme.")
form = UploadCssForm
form_class = UploadCssForm


class UploadThemeMedia(UploadThemeAssets):
message_success = _("New media files have been added to the theme.")
form = UploadMediaForm
form_class = UploadMediaForm


class DeleteThemeAssets(ThemeAssetsActionAdmin, generic.TargetedView):
Expand Down Expand Up @@ -288,7 +288,7 @@ class ThemeCssFormAdmin(ThemeCssAdmin, generic.ModelFormView):
is_atomic = False # atomic updates cause race condition with celery tasks

def real_dispatch(self, request, theme, css=None):
form = self.initialize_form(self.form, request, theme, css)
form = self.get_form(self.form_class, request, theme, css)

if request.method == "POST" and form.is_valid():
response = self.handle_form( # pylint: disable=assignment-from-no-return
Expand All @@ -302,10 +302,10 @@ def real_dispatch(self, request, theme, css=None):

return self.render(request, {"form": form, "theme": theme, "target": css})

def initialize_form(self, form, request, theme, css):
def get_form(self, form_class, request, theme, css):
raise NotImplementedError(
"Admin views extending the ThemeCssFormAdmin "
"should define the initialize_form(form, request, theme, css)"
"should define the get_form(form_class, request, theme, css)"
)

def handle_form(self, form, request, theme, css):
Expand All @@ -319,16 +319,16 @@ def handle_form(self, form, request, theme, css):

class NewThemeCss(ThemeCssFormAdmin):
message_submit = _('New CSS "%(name)s" has been saved.')
form = CssEditorForm
template = "assets/css-editor-form.html"
form_class = CssEditorForm
template_name = "assets/css-editor-form.html"

def get_theme_css_or_none(self, theme, _):
return Css(theme=theme)

def initialize_form(self, form, request, theme, css):
def get_form(self, form_class, request, theme, css):
if request.method == "POST":
return form(request.POST, instance=css)
return form(instance=css)
return form_class(request.POST, instance=css)
return form_class(instance=css)

def redirect_to_edit_form(self, theme, css):
return redirect("misago:admin:themes:edit-css-file", pk=theme.pk, css_pk=css.pk)
Expand All @@ -343,11 +343,11 @@ def get_theme_css_or_none(self, theme, css_pk):
except ObjectDoesNotExist:
return None

def initialize_form(self, form, request, theme, css):
def get_form(self, form_class, request, theme, css):
if request.method == "POST":
return form(request.POST, instance=css)
return form_class(request.POST, instance=css)
initial_data = {"source": css.source_file.read()}
return form(instance=css, initial=initial_data)
return form_class(instance=css, initial=initial_data)

def handle_form(self, form, request, theme, css):
if "source" in form.changed_data:
Expand All @@ -364,16 +364,16 @@ def handle_form(self, form, request, theme, css):

class NewThemeCssLink(ThemeCssFormAdmin):
message_submit = _('New CSS link "%(name)s" has been saved.')
form = CssLinkForm
template = "assets/css-link-form.html"
form_class = CssLinkForm
template_name = "assets/css-link-form.html"

def get_theme_css_or_none(self, theme, _):
return Css(theme=theme)

def initialize_form(self, form, request, theme, css):
def get_form(self, form_class, request, theme, css):
if request.method == "POST":
return form(request.POST, instance=css)
return form(instance=css)
return form_class(request.POST, instance=css)
return form_class(instance=css)

def handle_form(self, form, request, theme, css):
super().handle_form(form, request, theme, css)
Expand Down
2 changes: 1 addition & 1 deletion misago/threads/admin/views/attachmenttypes.py
Expand Up @@ -10,7 +10,7 @@
class AttachmentTypeAdmin(generic.AdminBaseMixin):
root_link = "misago:admin:settings:attachment-types:index"
model = AttachmentType
form = AttachmentTypeForm
form_class = AttachmentTypeForm
templates_dir = "misago/admin/attachmenttypes"
message_404 = _("Requested attachment type could not be found.")

Expand Down
2 changes: 1 addition & 1 deletion misago/users/admin/views/bans.py
Expand Up @@ -9,7 +9,7 @@
class BanAdmin(generic.AdminBaseMixin):
root_link = "misago:admin:users:bans:index"
model = Ban
form = BanForm
form_class = BanForm
templates_dir = "misago/admin/bans"
message_404 = _("Requested ban does not exist.")

Expand Down
2 changes: 1 addition & 1 deletion misago/users/admin/views/datadownloads.py
Expand Up @@ -60,7 +60,7 @@ def action_delete(self, request, data_downloads):


class RequestDataDownloads(DataDownloadAdmin, generic.FormView):
form = RequestDataDownloadsForm
form_class = RequestDataDownloadsForm

def handle_form(self, form, request):
for user in form.cleaned_data["users"]:
Expand Down

0 comments on commit 3c81142

Please sign in to comment.