Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #6 from wagtail/import-button-support
Import button on available snippet views
- Loading branch information
Showing
5 changed files
with
97 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
from django.test import TestCase | ||
|
||
from wagtail_airtable.templatetags.wagtail_airtable_tags import can_import_model | ||
|
||
|
||
class TestTemplateTags(TestCase): | ||
|
||
def test_can_import_model(self): | ||
allowed_to_import = can_import_model("tests.Advert") | ||
self.assertTrue(allowed_to_import) | ||
|
||
def test_cannot_import_model(self): | ||
allowed_to_import = can_import_model("tests.MissingModel") | ||
self.assertFalse(allowed_to_import) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
51 changes: 51 additions & 0 deletions
51
wagtail_airtable/templates/wagtailsnippets/snippets/type_index.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
{% extends "wagtailsnippets/snippets/type_index.html" %} | ||
{% load i18n wagtailadmin_tags wagtail_airtable_tags %} | ||
|
||
|
||
{% block content %} | ||
{% can_import_model model_opts.label as can_import_model %} | ||
<header class="nice-padding"> | ||
<div class="row row-flush"> | ||
<div class="left col6 header-title"> | ||
<h1 class="icon icon-snippet"> | ||
{% blocktrans with snippet_type_name_plural=model_opts.verbose_name_plural|capfirst %}Snippets <span>{{ snippet_type_name_plural }}</span>{% endblocktrans %}</h1> | ||
|
||
{% if is_searchable %} | ||
<form class="col search-form" action="{% url 'wagtailsnippets:list' model_opts.app_label model_opts.model_name %}" method="get" novalidate> | ||
<ul class="fields"> | ||
{% for field in search_form %} | ||
{% include "wagtailadmin/shared/field_as_li.html" with field=field field_classes="field-small iconfield" input_classes="icon-search" %} | ||
{% endfor %} | ||
<li class="submit visuallyhidden"><input type="submit" value="Search" class="button" /></li> | ||
</ul> | ||
</form> | ||
{% endif %} | ||
</div> | ||
<div class="right col6"> | ||
{% if can_delete_snippets %} | ||
<a class="button bicolor icon icon-bin serious delete-button visuallyhidden" data-url="{% url 'wagtailsnippets:delete-multiple' model_opts.app_label model_opts.model_name %}?">{% blocktrans with snippet_type_name=model_opts.verbose_name_plural %}Delete {{ snippet_type_name }}{% endblocktrans %}</a> | ||
{% endif %} | ||
{% if can_add_snippet %} | ||
<a href="{% url 'wagtailsnippets:add' model_opts.app_label model_opts.model_name %}" class="button bicolor icon icon-plus">{% blocktrans with snippet_type_name=model_opts.verbose_name %}Add {{ snippet_type_name }}{% endblocktrans %}</a> | ||
{# TODO: figure out a way of saying "Add a/an [foo]" #} | ||
{% if can_import_model %} | ||
<form action="{% url 'airtable_import_listing' %}" method="post" style='display: inline-block;'> | ||
{% csrf_token %} | ||
<input type="hidden" name="model" value="{{ model_opts.label }}" /> | ||
<button type="submit" class="button bicolor icon icon-plus button-longrunning" data-clicked-text="Importing..."> | ||
<span class="icon icon-spinner"></span> | ||
<em>{% blocktrans with snippet_type_name=model_opts.verbose_name_plural %}Import {{ snippet_type_name }}{% endblocktrans %}</em> | ||
</button> | ||
</form> | ||
{% endif %} | ||
{% endif %} | ||
</div> | ||
</div> | ||
</header> | ||
|
||
<div class="nice-padding"> | ||
<div id="snippet-results" class="snippets"> | ||
{% include "wagtailsnippets/snippets/results.html" %} | ||
</div> | ||
</div> | ||
{% endblock %} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
from django import template | ||
from django.conf import settings | ||
|
||
|
||
register = template.Library() | ||
|
||
@register.simple_tag | ||
def can_import_model(model_label) -> bool: | ||
""" | ||
Check if a model can be imported based on its model label. | ||
Use: | ||
{% load wagtail_airtable_tags %} | ||
{% can_import_model "yourapp.ModelName" as template_var %} | ||
Returns True or False. | ||
""" | ||
airtable_settings = getattr(settings, "AIRTABLE_IMPORT_SETTINGS", {}) | ||
has_settings = airtable_settings.get(model_label, False) | ||
return bool(has_settings) |