Skip to content

Commit

Permalink
Introduce f-strings.
Browse files Browse the repository at this point in the history
  • Loading branch information
idlesign committed Jun 9, 2020
1 parent 5de47da commit 6c545b1
Show file tree
Hide file tree
Showing 13 changed files with 68 additions and 66 deletions.
20 changes: 10 additions & 10 deletions sitetree/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ def get_model_url_name(model_nfo: Tuple[str, str], page: str, with_namespace: bo
prefix = ''
if with_namespace:
prefix = 'admin:'
return ('%s%s_%s' % (prefix, '%s_%s' % model_nfo, page)).lower()
return (f'{prefix}%s_{page}' % '%s_%s' % model_nfo).lower()


def get_tree_url_name(page: str, with_namespace: bool = False) -> str:
Expand Down Expand Up @@ -154,7 +154,7 @@ def response_add(self, request, obj, post_url_continue=None, **kwargs):
"""
if post_url_continue is None:
post_url_continue = '../item_%s/' % obj.pk
post_url_continue = f'../item_{obj.pk}/'

return self._redirect(request, super().response_add(request, obj, post_url_continue))

Expand Down Expand Up @@ -205,9 +205,9 @@ def _stack_known_urls(self, reverse_dict, ns=None):
for url_name, url_rules in reverse_dict.items():
if isinstance(url_name, str):
if ns is not None:
url_name = '%s:%s' % (ns, url_name)
url_name = f'{ns}:{url_name}'
self.known_url_names.append(url_name)
self.known_url_rules.append('<b>%s</b> %s' % (url_name, ' '.join(url_rules[0][0][1])))
self.known_url_rules.append(f"<b>{url_name}</b> {' '.join(url_rules[0][0][1])}")

def get_tree(self, request: HttpRequest, tree_id: Optional[int], item_id: Optional[int] = None) -> 'TreeBase':
"""Fetches Tree for current or given TreeItem."""
Expand Down Expand Up @@ -332,22 +332,22 @@ def get_urls(self):
sitetree_urls = [
url(r'^change/$', redirects_handler, name=get_tree_item_url_name('changelist')),

url(r'^((?P<tree_id>\d+)/)?%sitem_add/$' % prefix_change,
url(fr'^((?P<tree_id>\d+)/)?{prefix_change}item_add/$',
self.admin_site.admin_view(self.tree_admin.item_add), name=get_tree_item_url_name('add')),

url(r'^(?P<tree_id>\d+)/%sitem_(?P<item_id>\d+)/$' % prefix_change,
url(fr'^(?P<tree_id>\d+)/{prefix_change}item_(?P<item_id>\d+)/$',
self.admin_site.admin_view(self.tree_admin.item_edit), name=get_tree_item_url_name('change')),

url(r'^%sitem_(?P<item_id>\d+)/$' % prefix_change,
url(fr'^{prefix_change}item_(?P<item_id>\d+)/$',
self.admin_site.admin_view(self.tree_admin.item_edit), name=get_tree_item_url_name('change')),

url(r'^((?P<tree_id>\d+)/)?%sitem_(?P<item_id>\d+)/delete/$' % prefix_change,
url(fr'^((?P<tree_id>\d+)/)?{prefix_change}item_(?P<item_id>\d+)/delete/$',
self.admin_site.admin_view(self.tree_admin.item_delete), name=get_tree_item_url_name('delete')),

url(r'^((?P<tree_id>\d+)/)?%sitem_(?P<item_id>\d+)/history/$' % prefix_change,
url(fr'^((?P<tree_id>\d+)/)?{prefix_change}item_(?P<item_id>\d+)/history/$',
self.admin_site.admin_view(self.tree_admin.item_history), name=get_tree_item_url_name('history')),

url(r'^(?P<tree_id>\d+)/%sitem_(?P<item_id>\d+)/move_(?P<direction>(up|down))/$' % prefix_change,
url(fr'^(?P<tree_id>\d+)/{prefix_change}item_(?P<item_id>\d+)/move_(?P<direction>(up|down))/$',
self.admin_site.admin_view(self.tree_admin.item_move), name=get_tree_item_url_name('move')),
]
if SMUGGLER_INSTALLED:
Expand Down
2 changes: 1 addition & 1 deletion sitetree/fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ def choices_init(self, tree: Optional['TreeBase']):

def _build_choices(self):
"""Build choices list runtime using 'sitetree_tree' tag"""
tree_token = 'sitetree_tree from "%s" template "%s"' % (self.tree, self.template)
tree_token = f'sitetree_tree from "{self.tree}" template "{self.template}"'

context_kwargs = {'current_app': 'admin'}
context = template.Context(context_kwargs)
Expand Down
9 changes: 5 additions & 4 deletions sitetree/management/commands/sitetree_resync_apps.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,23 +37,23 @@ def handle(self, *apps, **options):
tree_modules = import_project_sitetree_modules()

if not tree_modules:
self.stdout.write('No sitetrees found in project apps (searched in %%app%%/%s.py).\n' % APP_MODULE_NAME)
self.stdout.write(f'No sitetrees found in project apps (searched in %app%/{APP_MODULE_NAME}.py).\n')

for module in tree_modules:
sitetrees = getattr(module, 'sitetrees', None)
app = module.__dict__['__package__']
if not apps or app in apps:
if sitetrees is not None:
self.stdout.write('Sitetrees found in `%s` app ...\n' % app)
self.stdout.write(f'Sitetrees found in `{app}` app ...\n')
for tree in sitetrees:
self.stdout.write(' Processing `%s` tree ...\n' % tree.alias)
self.stdout.write(f' Processing `{tree.alias}` tree ...\n')
# Delete trees with the same name beforehand.
MODEL_TREE_CLASS.objects.filter(alias=tree.alias).using(using).delete()
# Drop id to let the DB handle it.
tree.id = None
tree.save(using=using)
for item in tree.dynamic_items:
self.stdout.write(' Adding `%s` tree item ...\n' % item.title)
self.stdout.write(f' Adding `{item.title}` tree item ...\n')
# Drop id to let the DB handle it.
item.id = None
if item.parent is not None:
Expand All @@ -65,6 +65,7 @@ def handle(self, *apps, **options):
# has been saved
if hasattr(item.access_permissions, 'set'):
item.access_permissions.set(item.permissions)

else:
item.access_permissions = item.permissions

Expand Down
2 changes: 1 addition & 1 deletion sitetree/management/commands/sitetreedump.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,4 +56,4 @@ def handle(self, *aliases, **options):
return serializers.serialize('json', objects, indent=indent)

except Exception as e:
raise CommandError('Unable to serialize sitetree(s): %s' % e)
raise CommandError(f'Unable to serialize sitetree(s): {e}')
16 changes: 8 additions & 8 deletions sitetree/management/commands/sitetreeload.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,8 @@ def handle(self, *fixture_files, **options):
try:
items_into_tree = MODEL_TREE_CLASS.objects.get(alias=items_into_tree)
except ObjectDoesNotExist:
raise CommandError('Target tree alised by `%s` does not exist. Please create it before import.' %
items_into_tree)
raise CommandError(
f'Target tree aliased `{items_into_tree}` does not exist. Please create it before import.')
else:
mode = 'append'

Expand All @@ -69,7 +69,7 @@ def handle(self, *fixture_files, **options):

for fixture_file in fixture_files:

self.stdout.write('Loading fixture from `%s` ...\n' % fixture_file)
self.stdout.write(f'Loading fixture from `{fixture_file}` ...\n')

fixture = open(fixture_file, 'r')

Expand Down Expand Up @@ -107,7 +107,7 @@ def handle(self, *fixture_files, **options):

for tree in trees:

self.stdout.write('\nImporting tree `%s` ...\n' % tree.alias)
self.stdout.write(f'\nImporting tree `{tree.alias}` ...\n')
orig_tree_id = tree.id

if items_into_tree is None:
Expand All @@ -125,7 +125,7 @@ def handle(self, *fixture_files, **options):

for tree_item in tree_items[orig_tree_id]:
parent_ahead = False
self.stdout.write('Importing item `%s` ...\n' % tree_item.title)
self.stdout.write(f'Importing item `{tree_item.title}` ...\n')
tree_item.tree_id = tree.id
orig_item_id = tree_item.id

Expand Down Expand Up @@ -163,9 +163,9 @@ def handle(self, *fixture_files, **options):
fixture.close()

self.stderr.write(
self.style.ERROR('Fixture `%s` import error: %s\n' % (
fixture_file, ''.join(traceback.format_exception(*sys.exc_info()))
))
self.style.ERROR(
f"Fixture `{fixture_file}` import error: "
f"{''.join(traceback.format_exception(*sys.exc_info()))}\n")
)

fixture.close()
Expand Down
26 changes: 13 additions & 13 deletions sitetree/sitetreeapp.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ def my_items_processor(tree_items, tree_sender):
if tree_sender == 'menu.children':
# Lets add 'Hooked: ' to resolved titles of every item.
for item in tree_items:
item.title_resolved = 'Hooked: %s' % item.title_resolved
item.title_resolved = f'Hooked: {item.title_resolved}'
# Return items list mutated or not.
return tree_items
Expand Down Expand Up @@ -267,7 +267,7 @@ def result(sitetrees):

except ImportError as e:
if settings.DEBUG:
warnings.warn('Unable to register dynamic sitetree(s) for `%s` application: %s. ' % (src, e))
warnings.warn(f'Unable to register dynamic sitetree(s) for `{src}` application: {e}. ')
return {}

return result(src)
Expand Down Expand Up @@ -413,7 +413,7 @@ def resolve_tree_i18n_alias(self, alias: str) -> str:
return alias

current_language_code = self.current_lang
i18n_tree_alias = '%s_%s' % (alias, current_language_code)
i18n_tree_alias = f'{alias}_{current_language_code}'
trees_count = self.cache.get_entry('tree_aliases', i18n_tree_alias)

if trees_count is False:
Expand Down Expand Up @@ -575,7 +575,7 @@ def get_sitetree(self, alias: str) -> Tuple[str, List['TreeItemBase']]:
else item.access_permissions.all())

item.perms = set(
['%s.%s' % (perm.content_type.app_label, perm.codename) for perm in permissions_src])
[f'{perm.content_type.app_label}.{perm.codename}' for perm in permissions_src])

# Contextual properties.
item.url_resolved = url(item)
Expand Down Expand Up @@ -694,18 +694,18 @@ def url(self, sitetree_item: Union['TreeItemBase', FilterExpression], context: C
for view_argument in view_path[1:]:
resolved = resolve_var(view_argument)
# We enclose arg in double quotes as already resolved.
all_arguments.append('"%s"' % resolved)
all_arguments.append(f'"{resolved}"')

view_path = view_path[0].strip('"\' ')

url_pattern = "'%s' %s" % (view_path, ' '.join(all_arguments))
url_pattern = f"'{view_path}' {' '.join(all_arguments)}"

else:
url_pattern = '%s' % sitetree_item.url
url_pattern = f'{sitetree_item.url}'

if sitetree_item.urlaspattern:
# Form token to pass to Django 'url' tag.
url_token = 'url %s as item.url_resolved' % url_pattern
url_token = f'url {url_pattern} as item.url_resolved'
url_tag(
Parser(None),
Token(token_type=TOKEN_BLOCK, contents=url_token)
Expand Down Expand Up @@ -784,8 +784,8 @@ def get_current_page_attr(self, attr_name: str, tree_alias: str, context: Contex
if current_item is None:
if settings.DEBUG and RAISE_ITEMS_ERRORS_ON_DEBUG:
raise SiteTreeError(
'Unable to resolve current sitetree item to get a `%s` for current page. Check whether '
'there is an appropriate sitetree item defined for current URL.' % attr_name)
f'Unable to resolve current sitetree item to get a `{attr_name}` for current page. Check whether '
'there is an appropriate sitetree item defined for current URL.')

return ''

Expand Down Expand Up @@ -1022,7 +1022,7 @@ def children(

tree_items = self.get_children(tree_alias, parent_item)
tree_items = self.filter_items(tree_items, navigation_type)
tree_items = self.apply_hook(tree_items, '%s.children' % navigation_type)
tree_items = self.apply_hook(tree_items, f'{navigation_type}.children')
self.update_has_children(tree_alias, tree_items, navigation_type)

my_template = get_template(use_template)
Expand Down Expand Up @@ -1062,7 +1062,7 @@ def update_has_children(self, tree_alias: str, tree_items: List['TreeItemBase'],
for tree_item in tree_items:
children = get_children(tree_alias, tree_item)
children = filter_items(children, navigation_type)
children = apply_hook(children, '%s.has_children' % navigation_type)
children = apply_hook(children, f'{navigation_type}.has_children')
tree_item.has_children = len(children) > 0

def filter_items(self, items: List['TreeItemBase'], navigation_type: str = None) -> List['TreeItemBase']:
Expand All @@ -1089,7 +1089,7 @@ def filter_items(self, items: List['TreeItemBase'], navigation_type: str = None)
if not check_access(item, context):
continue

if not getattr(item, 'in%s' % navigation_type, True): # Hidden for current nav type
if not getattr(item, f'in{navigation_type}', True): # Hidden for current nav type
continue

items_filtered.append(item)
Expand Down
2 changes: 1 addition & 1 deletion sitetree/templatetags/sitetree.py
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ def for_tag(cls, parser, token, preposition, error_hint):
return cls(tree_alias, as_var)

raise template.TemplateSyntaxError(
'%r tag requires at least two arguments. E.g. {%% %s %%}.' % (tokens[0], error_hint))
f'{tokens[0]} tag requires at least two arguments. E.g. {{% {error_hint} %}}.')

@classmethod
def get_as_var(cls, tokens):
Expand Down
2 changes: 1 addition & 1 deletion sitetree/tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ def attach_items(tree, items, parent=None):
for permission in access_permissions:
item.access_permissions.add(Permission.objects.get(codename=permission))

items_map['%s' % item.url] = item
items_map[f'{item.url}'] = item

children and attach_items(tree, children, parent=item)

Expand Down
2 changes: 1 addition & 1 deletion sitetree/tests/test_management.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ def load(treedump, command_kwargs=None):
f = tmpdir.join('somefile.json')
f.write(treedump)
command_kwargs = command_kwargs or {}
command_run('sitetreeload', ['%s' % f], command_kwargs)
command_run('sitetreeload', [f'{f}'], command_kwargs)

treedump = (
'['
Expand Down
4 changes: 2 additions & 2 deletions sitetree/tests/test_other.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ def test_stress(template_render_tag, template_context, template_strip_tags, buil
tree = template_strip_tags(template_render_tag('sitetree', 'sitetree_tree from "mytree"', context))
breadcrumbs = template_strip_tags(template_render_tag('sitetree', 'sitetree_breadcrumbs from "mytree"', context))

menu = template_render_tag('sitetree', 'sitetree_menu from "mytree" include "%s"' % ALIAS_TRUNK, context)
menu_other = template_render_tag('sitetree', 'sitetree_menu from "othertree" include "%s"' % ALIAS_TRUNK, context)
menu = template_render_tag('sitetree', f'sitetree_menu from "mytree" include "{ALIAS_TRUNK}"', context)
menu_other = template_render_tag('sitetree', f'sitetree_menu from "othertree" include "{ALIAS_TRUNK}"', context)

assert title == 'Private'
assert title_other == 'Other title'
Expand Down

0 comments on commit 6c545b1

Please sign in to comment.