Category: new features

51 posts

New Feature - Designer Dashboard

Nov. 1, 2024
The Designer Dashboard is a new page providing a single place for MOC Designers to view everything they need to monitor and manage their MOCs on Rebrickable. The old MOC Analytics and MOC Sales pages have been moved to this new location, as well as a whole lot of new features added. One big visual change is that all of these pages are full-width.

New Features - MOC Images and Watermarking

July 15, 2024
You can now more easily add multiple images to your MOCs, to be displayed as a sliding image gallery. Previously this required linking to an external Bricksafe page (which is no longer supported). Up to 12 images can be added to the MOC's image gallery during submission or afterwards via the Admin tab.

New Premium MOC Features

Nov. 24, 2022
Two major new features for Premium MOCs has just been released: support for extra Payment Methods (Apple Pay, etc) and the ability to buy MOCs without having to create an account first (Guest Checkouts). Hopefully, these improvements will see some additional sales for your Premium MOCs.

RebrickNet - Now Recognising 200 Parts

May 23, 2022
RebrickNet is a tool that can identify LEGO parts from photos you upload . Since it's release 4 months ago, it has run 2300 predictions and detected 72,000 parts. RebrickNet has now been updated to recognise 200 different LEGO parts. When it was first deployed about 4 months ago , it could only recognise 40 parts with about 60% accuracy.

Introducing RebrickNet - The LEGO Parts Detector

Jan. 27, 2022
RebrickNet detects LEGO parts within photos. It is an Artificial Intelligence that has been trained on the Rebrickable database. Simply take a photo of a bunch of LEGO parts. Ideally, on a flat white background with good lighting and minimal shadowing. On the RebrickNet page, upload your photo.

New Feature - Polls

July 28, 2020
If you haven't noticed already, I've added a new feature to the site - Polls. You can see it on your home page just under the latest blog posts. I will probably try to add a new poll question every month or so, or as some newsworthy topic comes up. I think they will generate some interesting discussions, or at least provide some useful data. Polls can only be voted on by registered users.

New Features for MOC Instructions

June 4, 2020
There have been a few improvements recently to MOC building instruction viewing and downloading. These new features are aimed at improving the MOC Studio/Ldraw file usability, adding PDF stamping/watermarking and improving confidence in potential Premium MOC buyers. Thanks to Lasse Deleuran from BrickHub we have been able to integrate his awesome LDraw viewer into Rebrickable.

Minifigs Suck

April 13, 2020
About 9 years ago, when I started building the Rebrickable database, I quickly came across the nightmare that is the Minifig part numbering and naming "standards". From that day onwards I pledged my eternal hatred of Minifigs with a few choice words, and have pretended they don't exist ever since. Over the years, various brave admins have added the missing parts.

Designer Plan - Improvements

Feb. 20, 2020
The Designer Plan is intended to provide more features beyond the Pro Plan that help MOC designers promote and sell their creations on Rebrickable. Over the last few months I've released several enhancements specific to the Designer Plan . As the number of people upgrading has increased, the number of MOCs that are being promoted in the Featured MOCs spots has grown considerably.
DJDT

Time

Resource usage

Resource Value
User CPU time 188.987 msec
System CPU time 3.945 msec
Total CPU time 192.932 msec
Elapsed time 231.487 msec
Context switches 152 voluntary, 11 involuntary

Browser timing

Timing attribute Timeline Milliseconds since navigation start (+length)

SQL queries from 1 connection

  • default 31.99 ms (63 queries including 60 similar and 30 duplicates )
Query Timeline Time (ms) Action
SELECT COUNT(*) AS "__count"
  FROM
"blog_article"
 INNER JOIN
"blog_articlecategory"
    ON
("blog_article"."category_id" = "blog_articlecategory"."id")
 WHERE
("blog_article"."is_active" AND UPPER("blog_articlecategory"."name"::text) = UPPER('new features'))
SELECT ••• FROM "blog_article" INNER JOIN "blog_articlecategory" ON ("blog_article"."category_id" = "blog_articlecategory"."id") WHERE ("blog_article"."is_active" AND UPPER("blog_articlecategory"."name"::text) = UPPER('new features'))
0.41

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(72)
  articles = paginator.get_page(request.GET.get('page', 1))

/home/nathan/rb/site/./digg_paginator/utils.py in get_page(274)
  return self.page(page)

/home/nathan/rb/site/./digg_paginator/utils.py in page(199)
  page = super(DiggPaginator, self).page(number, *args, **kwargs)

/home/nathan/rb/site/./digg_paginator/utils.py in page(47)
  return super(ExPaginator, self).page(number)

SELECT "blog_article"."id",
       "blog_article"."title",
       "blog_article"."author_id",
       "blog_article"."published_date",
       "blog_article"."is_active",
       "blog_article"."body",
       "blog_article"."meta_description",
       "blog_article"."meta_img",
       "blog_article"."slug",
       "blog_article"."category_id",
       "blog_article"."ads",
       "blog_article"."show_ads_for_set_num",
       "blog_article"."review_for_set_num",
       "blog_article"."status",
       "blog_article"."scheduled_net",
       "blog_article"."ready_for_review_date",
       "blog_article"."is_sensitive",
       "blog_article"."search_vector"
  FROM
"blog_article"
 WHERE
("blog_article"."is_active" AND "blog_article"."id" = 646)
 LIMIT
21
SELECT ••• FROM "blog_article" WHERE ("blog_article"."is_active" AND "blog_article"."id" = 646) LIMIT 21
8 similar queries.
0.18

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(75)
  article_series_images = get_series()

/home/nathan/rb/site/./blog/views.py in get_series(50)
  {'name': 'Designer Spotlights', 'tag': 'designer-spotlight', 'article': Article.objects.get(id=646)},

SELECT "blog_article"."id",
       "blog_article"."title",
       "blog_article"."author_id",
       "blog_article"."published_date",
       "blog_article"."is_active",
       "blog_article"."body",
       "blog_article"."meta_description",
       "blog_article"."meta_img",
       "blog_article"."slug",
       "blog_article"."category_id",
       "blog_article"."ads",
       "blog_article"."show_ads_for_set_num",
       "blog_article"."review_for_set_num",
       "blog_article"."status",
       "blog_article"."scheduled_net",
       "blog_article"."ready_for_review_date",
       "blog_article"."is_sensitive",
       "blog_article"."search_vector"
  FROM
"blog_article"
 WHERE
("blog_article"."is_active" AND "blog_article"."id" = 720)
 LIMIT
21
SELECT ••• FROM "blog_article" WHERE ("blog_article"."is_active" AND "blog_article"."id" = 720) LIMIT 21
8 similar queries.
0.30

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(75)
  article_series_images = get_series()

/home/nathan/rb/site/./blog/views.py in get_series(51)
  {'name': 'New Set Releases', 'tag': 'sets', 'article': Article.objects.get(id=720)},

SELECT "blog_article"."id",
       "blog_article"."title",
       "blog_article"."author_id",
       "blog_article"."published_date",
       "blog_article"."is_active",
       "blog_article"."body",
       "blog_article"."meta_description",
       "blog_article"."meta_img",
       "blog_article"."slug",
       "blog_article"."category_id",
       "blog_article"."ads",
       "blog_article"."show_ads_for_set_num",
       "blog_article"."review_for_set_num",
       "blog_article"."status",
       "blog_article"."scheduled_net",
       "blog_article"."ready_for_review_date",
       "blog_article"."is_sensitive",
       "blog_article"."search_vector"
  FROM
"blog_article"
 WHERE
("blog_article"."is_active" AND "blog_article"."id" = 605)
 LIMIT
21
SELECT ••• FROM "blog_article" WHERE ("blog_article"."is_active" AND "blog_article"."id" = 605) LIMIT 21
8 similar queries.
0.19

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(75)
  article_series_images = get_series()

/home/nathan/rb/site/./blog/views.py in get_series(52)
  {'name': 'Into the Archives', 'tag': 'into-the-archives', 'article': Article.objects.get(id=605)},

SELECT "blog_article"."id",
       "blog_article"."title",
       "blog_article"."author_id",
       "blog_article"."published_date",
       "blog_article"."is_active",
       "blog_article"."body",
       "blog_article"."meta_description",
       "blog_article"."meta_img",
       "blog_article"."slug",
       "blog_article"."category_id",
       "blog_article"."ads",
       "blog_article"."show_ads_for_set_num",
       "blog_article"."review_for_set_num",
       "blog_article"."status",
       "blog_article"."scheduled_net",
       "blog_article"."ready_for_review_date",
       "blog_article"."is_sensitive",
       "blog_article"."search_vector"
  FROM
"blog_article"
 WHERE
("blog_article"."is_active" AND "blog_article"."id" = 705)
 LIMIT
21
SELECT ••• FROM "blog_article" WHERE ("blog_article"."is_active" AND "blog_article"."id" = 705) LIMIT 21
8 similar queries.
0.24

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(75)
  article_series_images = get_series()

/home/nathan/rb/site/./blog/views.py in get_series(53)
  {'name': 'Mini MOC Madness', 'tag': 'mini-moc-madness', 'article': Article.objects.get(id=705)},

SELECT "blog_article"."id",
       "blog_article"."title",
       "blog_article"."author_id",
       "blog_article"."published_date",
       "blog_article"."is_active",
       "blog_article"."body",
       "blog_article"."meta_description",
       "blog_article"."meta_img",
       "blog_article"."slug",
       "blog_article"."category_id",
       "blog_article"."ads",
       "blog_article"."show_ads_for_set_num",
       "blog_article"."review_for_set_num",
       "blog_article"."status",
       "blog_article"."scheduled_net",
       "blog_article"."ready_for_review_date",
       "blog_article"."is_sensitive",
       "blog_article"."search_vector"
  FROM
"blog_article"
 WHERE
("blog_article"."is_active" AND "blog_article"."id" = 616)
 LIMIT
21
SELECT ••• FROM "blog_article" WHERE ("blog_article"."is_active" AND "blog_article"."id" = 616) LIMIT 21
8 similar queries.
0.20

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(75)
  article_series_images = get_series()

/home/nathan/rb/site/./blog/views.py in get_series(54)
  {'name': 'Is This LEGO?', 'tag': 'is-this-lego', 'article': Article.objects.get(id=616)},

SELECT "blog_article"."id",
       "blog_article"."title",
       "blog_article"."author_id",
       "blog_article"."published_date",
       "blog_article"."is_active",
       "blog_article"."body",
       "blog_article"."meta_description",
       "blog_article"."meta_img",
       "blog_article"."slug",
       "blog_article"."category_id",
       "blog_article"."ads",
       "blog_article"."show_ads_for_set_num",
       "blog_article"."review_for_set_num",
       "blog_article"."status",
       "blog_article"."scheduled_net",
       "blog_article"."ready_for_review_date",
       "blog_article"."is_sensitive",
       "blog_article"."search_vector"
  FROM
"blog_article"
 WHERE
("blog_article"."is_active" AND "blog_article"."id" = 462)
 LIMIT
21
SELECT ••• FROM "blog_article" WHERE ("blog_article"."is_active" AND "blog_article"."id" = 462) LIMIT 21
8 similar queries.
0.22

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(75)
  article_series_images = get_series()

/home/nathan/rb/site/./blog/views.py in get_series(55)
  {'name': 'Tips & Useful Info', 'tag': 'tips', 'article': Article.objects.get(id=462)},

SELECT "blog_article"."id",
       "blog_article"."title",
       "blog_article"."author_id",
       "blog_article"."published_date",
       "blog_article"."is_active",
       "blog_article"."body",
       "blog_article"."meta_description",
       "blog_article"."meta_img",
       "blog_article"."slug",
       "blog_article"."category_id",
       "blog_article"."ads",
       "blog_article"."show_ads_for_set_num",
       "blog_article"."review_for_set_num",
       "blog_article"."status",
       "blog_article"."scheduled_net",
       "blog_article"."ready_for_review_date",
       "blog_article"."is_sensitive",
       "blog_article"."search_vector"
  FROM
"blog_article"
 WHERE
("blog_article"."is_active" AND "blog_article"."id" = 279)
 LIMIT
21
SELECT ••• FROM "blog_article" WHERE ("blog_article"."is_active" AND "blog_article"."id" = 279) LIMIT 21
8 similar queries.
0.17

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(75)
  article_series_images = get_series()

/home/nathan/rb/site/./blog/views.py in get_series(56)
  {'name': 'Rebricksberg', 'tag': 'rebricksberg', 'article': Article.objects.get(id=279)},

SELECT "blog_article"."id",
       "blog_article"."title",
       "blog_article"."author_id",
       "blog_article"."published_date",
       "blog_article"."is_active",
       "blog_article"."body",
       "blog_article"."meta_description",
       "blog_article"."meta_img",
       "blog_article"."slug",
       "blog_article"."category_id",
       "blog_article"."ads",
       "blog_article"."show_ads_for_set_num",
       "blog_article"."review_for_set_num",
       "blog_article"."status",
       "blog_article"."scheduled_net",
       "blog_article"."ready_for_review_date",
       "blog_article"."is_sensitive",
       "blog_article"."search_vector"
  FROM
"blog_article"
 WHERE
("blog_article"."is_active" AND "blog_article"."id" = 249)
 LIMIT
21
SELECT ••• FROM "blog_article" WHERE ("blog_article"."is_active" AND "blog_article"."id" = 249) LIMIT 21
8 similar queries.
0.13

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(75)
  article_series_images = get_series()

/home/nathan/rb/site/./blog/views.py in get_series(57)
  {'name': 'The Good, The Bad, & The Ugly', 'tag': 'good-bad-ugly', 'article': Article.objects.get(id=249)},

SELECT COUNT(*) AS "__count"
  FROM
"blog_article"
 INNER JOIN
"taggit_taggeditem"
    ON
("blog_article"."id" = "taggit_taggeditem"."object_id" AND ("taggit_taggeditem"."content_type_id" = 12))
 INNER JOIN
"taggit_tag"
    ON
("taggit_taggeditem"."tag_id" = "taggit_tag"."id")
 WHERE
("blog_article"."is_active" AND UPPER("taggit_tag"."slug"::text) = UPPER('designer-spotlight'))
SELECT ••• FROM "blog_article" INNER JOIN "taggit_taggeditem" ON ("blog_article"."id" = "taggit_taggeditem"."object_id" AND ("taggit_taggeditem"."content_type_id" = 12)) INNER JOIN "taggit_tag" ON ("taggit_taggeditem"."tag_id" = "taggit_tag"."id") WHERE ("blog_article"."is_active" AND UPPER("taggit_tag"."slug"::text) = UPPER('designer-spotlight'))
8 similar queries.
3.25

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(75)
  article_series_images = get_series()

/home/nathan/rb/site/./blog/views.py in get_series(60)
  s['num_posts'] = Article.objects.filter(tags__slug__iexact=s['tag']).count()

SELECT COUNT(*) AS "__count"
  FROM
"blog_article"
 INNER JOIN
"taggit_taggeditem"
    ON
("blog_article"."id" = "taggit_taggeditem"."object_id" AND ("taggit_taggeditem"."content_type_id" = 12))
 INNER JOIN
"taggit_tag"
    ON
("taggit_taggeditem"."tag_id" = "taggit_tag"."id")
 WHERE
("blog_article"."is_active" AND UPPER("taggit_tag"."slug"::text) = UPPER('sets'))
SELECT ••• FROM "blog_article" INNER JOIN "taggit_taggeditem" ON ("blog_article"."id" = "taggit_taggeditem"."object_id" AND ("taggit_taggeditem"."content_type_id" = 12)) INNER JOIN "taggit_tag" ON ("taggit_taggeditem"."tag_id" = "taggit_tag"."id") WHERE ("blog_article"."is_active" AND UPPER("taggit_tag"."slug"::text) = UPPER('sets'))
8 similar queries.
2.72

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(75)
  article_series_images = get_series()

/home/nathan/rb/site/./blog/views.py in get_series(60)
  s['num_posts'] = Article.objects.filter(tags__slug__iexact=s['tag']).count()

SELECT COUNT(*) AS "__count"
  FROM
"blog_article"
 INNER JOIN
"taggit_taggeditem"
    ON
("blog_article"."id" = "taggit_taggeditem"."object_id" AND ("taggit_taggeditem"."content_type_id" = 12))
 INNER JOIN
"taggit_tag"
    ON
("taggit_taggeditem"."tag_id" = "taggit_tag"."id")
 WHERE
("blog_article"."is_active" AND UPPER("taggit_tag"."slug"::text) = UPPER('into-the-archives'))
SELECT ••• FROM "blog_article" INNER JOIN "taggit_taggeditem" ON ("blog_article"."id" = "taggit_taggeditem"."object_id" AND ("taggit_taggeditem"."content_type_id" = 12)) INNER JOIN "taggit_tag" ON ("taggit_taggeditem"."tag_id" = "taggit_tag"."id") WHERE ("blog_article"."is_active" AND UPPER("taggit_tag"."slug"::text) = UPPER('into-the-archives'))
8 similar queries.
2.36

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(75)
  article_series_images = get_series()

/home/nathan/rb/site/./blog/views.py in get_series(60)
  s['num_posts'] = Article.objects.filter(tags__slug__iexact=s['tag']).count()

SELECT COUNT(*) AS "__count"
  FROM
"blog_article"
 INNER JOIN
"taggit_taggeditem"
    ON
("blog_article"."id" = "taggit_taggeditem"."object_id" AND ("taggit_taggeditem"."content_type_id" = 12))
 INNER JOIN
"taggit_tag"
    ON
("taggit_taggeditem"."tag_id" = "taggit_tag"."id")
 WHERE
("blog_article"."is_active" AND UPPER("taggit_tag"."slug"::text) = UPPER('mini-moc-madness'))
SELECT ••• FROM "blog_article" INNER JOIN "taggit_taggeditem" ON ("blog_article"."id" = "taggit_taggeditem"."object_id" AND ("taggit_taggeditem"."content_type_id" = 12)) INNER JOIN "taggit_tag" ON ("taggit_taggeditem"."tag_id" = "taggit_tag"."id") WHERE ("blog_article"."is_active" AND UPPER("taggit_tag"."slug"::text) = UPPER('mini-moc-madness'))
8 similar queries.
2.16

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(75)
  article_series_images = get_series()

/home/nathan/rb/site/./blog/views.py in get_series(60)
  s['num_posts'] = Article.objects.filter(tags__slug__iexact=s['tag']).count()

SELECT COUNT(*) AS "__count"
  FROM
"blog_article"
 INNER JOIN
"taggit_taggeditem"
    ON
("blog_article"."id" = "taggit_taggeditem"."object_id" AND ("taggit_taggeditem"."content_type_id" = 12))
 INNER JOIN
"taggit_tag"
    ON
("taggit_taggeditem"."tag_id" = "taggit_tag"."id")
 WHERE
("blog_article"."is_active" AND UPPER("taggit_tag"."slug"::text) = UPPER('is-this-lego'))
SELECT ••• FROM "blog_article" INNER JOIN "taggit_taggeditem" ON ("blog_article"."id" = "taggit_taggeditem"."object_id" AND ("taggit_taggeditem"."content_type_id" = 12)) INNER JOIN "taggit_tag" ON ("taggit_taggeditem"."tag_id" = "taggit_tag"."id") WHERE ("blog_article"."is_active" AND UPPER("taggit_tag"."slug"::text) = UPPER('is-this-lego'))
8 similar queries.
2.15

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(75)
  article_series_images = get_series()

/home/nathan/rb/site/./blog/views.py in get_series(60)
  s['num_posts'] = Article.objects.filter(tags__slug__iexact=s['tag']).count()

SELECT COUNT(*) AS "__count"
  FROM
"blog_article"
 INNER JOIN
"taggit_taggeditem"
    ON
("blog_article"."id" = "taggit_taggeditem"."object_id" AND ("taggit_taggeditem"."content_type_id" = 12))
 INNER JOIN
"taggit_tag"
    ON
("taggit_taggeditem"."tag_id" = "taggit_tag"."id")
 WHERE
("blog_article"."is_active" AND UPPER("taggit_tag"."slug"::text) = UPPER('tips'))
SELECT ••• FROM "blog_article" INNER JOIN "taggit_taggeditem" ON ("blog_article"."id" = "taggit_taggeditem"."object_id" AND ("taggit_taggeditem"."content_type_id" = 12)) INNER JOIN "taggit_tag" ON ("taggit_taggeditem"."tag_id" = "taggit_tag"."id") WHERE ("blog_article"."is_active" AND UPPER("taggit_tag"."slug"::text) = UPPER('tips'))
8 similar queries.
2.13

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(75)
  article_series_images = get_series()

/home/nathan/rb/site/./blog/views.py in get_series(60)
  s['num_posts'] = Article.objects.filter(tags__slug__iexact=s['tag']).count()

SELECT COUNT(*) AS "__count"
  FROM
"blog_article"
 INNER JOIN
"taggit_taggeditem"
    ON
("blog_article"."id" = "taggit_taggeditem"."object_id" AND ("taggit_taggeditem"."content_type_id" = 12))
 INNER JOIN
"taggit_tag"
    ON
("taggit_taggeditem"."tag_id" = "taggit_tag"."id")
 WHERE
("blog_article"."is_active" AND UPPER("taggit_tag"."slug"::text) = UPPER('rebricksberg'))
SELECT ••• FROM "blog_article" INNER JOIN "taggit_taggeditem" ON ("blog_article"."id" = "taggit_taggeditem"."object_id" AND ("taggit_taggeditem"."content_type_id" = 12)) INNER JOIN "taggit_tag" ON ("taggit_taggeditem"."tag_id" = "taggit_tag"."id") WHERE ("blog_article"."is_active" AND UPPER("taggit_tag"."slug"::text) = UPPER('rebricksberg'))
8 similar queries.
2.14

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(75)
  article_series_images = get_series()

/home/nathan/rb/site/./blog/views.py in get_series(60)
  s['num_posts'] = Article.objects.filter(tags__slug__iexact=s['tag']).count()

SELECT COUNT(*) AS "__count"
  FROM
"blog_article"
 INNER JOIN
"taggit_taggeditem"
    ON
("blog_article"."id" = "taggit_taggeditem"."object_id" AND ("taggit_taggeditem"."content_type_id" = 12))
 INNER JOIN
"taggit_tag"
    ON
("taggit_taggeditem"."tag_id" = "taggit_tag"."id")
 WHERE
("blog_article"."is_active" AND UPPER("taggit_tag"."slug"::text) = UPPER('good-bad-ugly'))
SELECT ••• FROM "blog_article" INNER JOIN "taggit_taggeditem" ON ("blog_article"."id" = "taggit_taggeditem"."object_id" AND ("taggit_taggeditem"."content_type_id" = 12)) INNER JOIN "taggit_tag" ON ("taggit_taggeditem"."tag_id" = "taggit_tag"."id") WHERE ("blog_article"."is_active" AND UPPER("taggit_tag"."slug"::text) = UPPER('good-bad-ugly'))
8 similar queries.
2.13

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(75)
  article_series_images = get_series()

/home/nathan/rb/site/./blog/views.py in get_series(60)
  s['num_posts'] = Article.objects.filter(tags__slug__iexact=s['tag']).count()

SELECT "countries_plus_country"."iso",
       "countries_plus_country"."iso3",
       "countries_plus_country"."iso_numeric",
       "countries_plus_country"."fips",
       "countries_plus_country"."name",
       "countries_plus_country"."capital",
       "countries_plus_country"."area",
       "countries_plus_country"."population",
       "countries_plus_country"."continent",
       "countries_plus_country"."tld",
       "countries_plus_country"."currency_code",
       "countries_plus_country"."currency_symbol",
       "countries_plus_country"."currency_name",
       "countries_plus_country"."phone",
       "countries_plus_country"."postal_code_format",
       "countries_plus_country"."postal_code_regex",
       "countries_plus_country"."languages",
       "countries_plus_country"."geonameid",
       "countries_plus_country"."neighbours",
       "countries_plus_country"."equivalent_fips_code"
  FROM
"countries_plus_country"
 WHERE
"countries_plus_country"."iso" = 'US'
 LIMIT
21
SELECT ••• FROM "countries_plus_country" WHERE "countries_plus_country"."iso" = 'US' LIMIT 21
0.18

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/home/nathan/rb/site/./rb/templatetags/rb_geo.py in geo_currency(20)
  geo_data = user.geo.get_user_currency()

/home/nathan/rb/site/./geo/geo.py in get_user_currency(253)
  country = Country.objects.get(iso=country_code)

74 </a>
75 </li>
76 <li>
77 {% geo_currency request.user %}
78 </li>
79 {% comment %}
80 <li class="hidden-xs hidden-sm">
81 <a href={% if request.user.is_authenticated %}"{% url 'user_profile_settings' request.user.get_username %}#personalisation"{% else %}"#" onclick="return false;"{% endif %} title="All date/times are being converted to this timezone">{% get_user_timezone request.user %}</a>

/home/nathan/rb/site/rb/templates/rb/includes/topbar.html

SELECT "blog_article"."id",
       "blog_article"."title",
       "blog_article"."author_id",
       "blog_article"."published_date",
       "blog_article"."is_active",
       "blog_article"."body",
       "blog_article"."meta_description",
       "blog_article"."meta_img",
       "blog_article"."slug",
       "blog_article"."category_id",
       "blog_article"."ads",
       "blog_article"."show_ads_for_set_num",
       "blog_article"."review_for_set_num",
       "blog_article"."status",
       "blog_article"."scheduled_net",
       "blog_article"."ready_for_review_date",
       "blog_article"."is_sensitive",
       "blog_article"."search_vector"
  FROM
"blog_article"
 INNER JOIN
"blog_articlecategory"
    ON
("blog_article"."category_id" = "blog_articlecategory"."id")
 WHERE
("blog_article"."is_active" AND UPPER("blog_articlecategory"."name"::text) = UPPER('new features'))
 ORDER BY
"blog_article"."published_date" DESC
 LIMIT
10
SELECT ••• FROM "blog_article" INNER JOIN "blog_articlecategory" ON ("blog_article"."category_id" = "blog_articlecategory"."id") WHERE ("blog_article"."is_active" AND UPPER("blog_articlecategory"."name"::text) = UPPER('new features')) ORDER BY "blog_article"."published_date" DESC LIMIT 10
0.42

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

64 </div>
65 </div>
66
67 {% for article in articles %}
68 <div class="mb-30">
69 <div class="">
70 {% include 'blog/includes/render_article_horizontal.html' %}
71 </div>

/home/nathan/rb/site/blog/templates/blog/blog_list.html

SELECT "auth_user"."id",
       "auth_user"."password",
       "auth_user"."last_login",
       "auth_user"."is_superuser",
       "auth_user"."username",
       "auth_user"."first_name",
       "auth_user"."last_name",
       "auth_user"."email",
       "auth_user"."is_staff",
       "auth_user"."is_active",
       "auth_user"."date_joined"
  FROM
"auth_user"
 WHERE
"auth_user"."id" = 2
 LIMIT
21
SELECT ••• FROM "auth_user" WHERE "auth_user"."id" = 2 LIMIT 21
10 similar queries. Duplicated 10 times.
0.16

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

9 <div class="rb-article-card__body">
10 <div class="rb-article-card__top">
11 <span class="rb-article-card__avatar hidden-xs">
12 <a href="{% url 'blog_by_author' article.author.username %}">
13 <img data-src="{% avatar_url article.author.username 75 %}" width="30" height="30" alt="{{ article.author.username }}">
14 </a>
15 </span>
16

/home/nathan/rb/site/blog/templates/blog/includes/render_article_horizontal.html

SELECT "auth_user"."id",
       "auth_user"."password",
       "auth_user"."last_login",
       "auth_user"."is_superuser",
       "auth_user"."username",
       "auth_user"."first_name",
       "auth_user"."last_name",
       "auth_user"."email",
       "auth_user"."is_staff",
       "auth_user"."is_active",
       "auth_user"."date_joined"
  FROM
"auth_user"
 WHERE
"auth_user"."username" = 'Nathan'
 LIMIT
21
SELECT ••• FROM "auth_user" WHERE "auth_user"."username" = 'Nathan' LIMIT 21
10 similar queries. Duplicated 10 times.
0.12

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/home/nathan/rb/site/./avatar/templatetags/avatar_tags.py in avatar_url(33)
  avatar_url = provider.get_avatar_url(user, size)

/home/nathan/rb/site/./avatar/providers.py in get_avatar_url(48)
  avatar = get_primary_avatar(user, size)

/home/nathan/rb/site/./avatar/utils.py in get_primary_avatar(112)
  user = get_user(user)

/home/nathan/rb/site/./avatar/utils.py in get_user(33)
  return get_user_model().objects.get_by_natural_key(username)

10 <div class="rb-article-card__top">
11 <span class="rb-article-card__avatar hidden-xs">
12 <a href="{% url 'blog_by_author' article.author.username %}">
13 <img data-src="{% avatar_url article.author.username 75 %}" width="30" height="30" alt="{{ article.author.username }}">
14 </a>
15 </span>
16
17 <h2 class="rb-article-card__title">

/home/nathan/rb/site/blog/templates/blog/includes/render_article_horizontal.html

SELECT "avatar_avatar"."id",
       "avatar_avatar"."user_id",
       "avatar_avatar"."primary",
       "avatar_avatar"."avatar",
       "avatar_avatar"."date_uploaded"
  FROM
"avatar_avatar"
 WHERE
"avatar_avatar"."user_id" = 2
 ORDER BY
"avatar_avatar"."primary" DESC, "avatar_avatar"."date_uploaded" DESC
 LIMIT
1
SELECT ••• FROM "avatar_avatar" WHERE "avatar_avatar"."user_id" = 2 ORDER BY "avatar_avatar"."primary" DESC, "avatar_avatar"."date_uploaded" DESC LIMIT 1
10 similar queries. Duplicated 10 times.
0.10

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/home/nathan/rb/site/./avatar/templatetags/avatar_tags.py in avatar_url(33)
  avatar_url = provider.get_avatar_url(user, size)

/home/nathan/rb/site/./avatar/providers.py in get_avatar_url(48)
  avatar = get_primary_avatar(user, size)

/home/nathan/rb/site/./avatar/utils.py in get_primary_avatar(120)
  avatar = user.avatar_set.order_by("-primary", "-date_uploaded")[0]

10 <div class="rb-article-card__top">
11 <span class="rb-article-card__avatar hidden-xs">
12 <a href="{% url 'blog_by_author' article.author.username %}">
13 <img data-src="{% avatar_url article.author.username 75 %}" width="30" height="30" alt="{{ article.author.username }}">
14 </a>
15 </span>
16
17 <h2 class="rb-article-card__title">

/home/nathan/rb/site/blog/templates/blog/includes/render_article_horizontal.html

SELECT "blog_articlestats"."article_id",
       "blog_articlestats"."hits"
  FROM
"blog_articlestats"
 WHERE
"blog_articlestats"."article_id" = 774
 LIMIT
21
SELECT ••• FROM "blog_articlestats" WHERE "blog_articlestats"."article_id" = 774 LIMIT 21
10 similar queries.
0.09

Connection: default

Transaction status: In transaction

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/usr/lib/python3.10/contextlib.py in inner(79)
  return func(*args, **kwds)

/home/nathan/venv_rb310/lib/python3.10/site-packages/annoying/fields.py in __get__(36)
  .__get__(instance, instance_type)

33 </div>
34 {% endif %}
35
36 {% if article.stats.hits > 100 %}
37 <div>
38 <i class="fa fa-line-chart"></i>
39 <span>{{ article.stats.hits|floor_100 }} views</span>
40 </div>

/home/nathan/rb/site/blog/templates/blog/includes/render_article_byline.html

SELECT "auth_user"."id",
       "auth_user"."password",
       "auth_user"."last_login",
       "auth_user"."is_superuser",
       "auth_user"."username",
       "auth_user"."first_name",
       "auth_user"."last_name",
       "auth_user"."email",
       "auth_user"."is_staff",
       "auth_user"."is_active",
       "auth_user"."date_joined"
  FROM
"auth_user"
 WHERE
"auth_user"."id" = 2
 LIMIT
21
SELECT ••• FROM "auth_user" WHERE "auth_user"."id" = 2 LIMIT 21
10 similar queries. Duplicated 10 times.
0.26

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

9 <div class="rb-article-card__body">
10 <div class="rb-article-card__top">
11 <span class="rb-article-card__avatar hidden-xs">
12 <a href="{% url 'blog_by_author' article.author.username %}">
13 <img data-src="{% avatar_url article.author.username 75 %}" width="30" height="30" alt="{{ article.author.username }}">
14 </a>
15 </span>
16

/home/nathan/rb/site/blog/templates/blog/includes/render_article_horizontal.html

SELECT "auth_user"."id",
       "auth_user"."password",
       "auth_user"."last_login",
       "auth_user"."is_superuser",
       "auth_user"."username",
       "auth_user"."first_name",
       "auth_user"."last_name",
       "auth_user"."email",
       "auth_user"."is_staff",
       "auth_user"."is_active",
       "auth_user"."date_joined"
  FROM
"auth_user"
 WHERE
"auth_user"."username" = 'Nathan'
 LIMIT
21
SELECT ••• FROM "auth_user" WHERE "auth_user"."username" = 'Nathan' LIMIT 21
10 similar queries. Duplicated 10 times.
0.15

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/home/nathan/rb/site/./avatar/templatetags/avatar_tags.py in avatar_url(33)
  avatar_url = provider.get_avatar_url(user, size)

/home/nathan/rb/site/./avatar/providers.py in get_avatar_url(48)
  avatar = get_primary_avatar(user, size)

/home/nathan/rb/site/./avatar/utils.py in get_primary_avatar(112)
  user = get_user(user)

/home/nathan/rb/site/./avatar/utils.py in get_user(33)
  return get_user_model().objects.get_by_natural_key(username)

10 <div class="rb-article-card__top">
11 <span class="rb-article-card__avatar hidden-xs">
12 <a href="{% url 'blog_by_author' article.author.username %}">
13 <img data-src="{% avatar_url article.author.username 75 %}" width="30" height="30" alt="{{ article.author.username }}">
14 </a>
15 </span>
16
17 <h2 class="rb-article-card__title">

/home/nathan/rb/site/blog/templates/blog/includes/render_article_horizontal.html

SELECT "avatar_avatar"."id",
       "avatar_avatar"."user_id",
       "avatar_avatar"."primary",
       "avatar_avatar"."avatar",
       "avatar_avatar"."date_uploaded"
  FROM
"avatar_avatar"
 WHERE
"avatar_avatar"."user_id" = 2
 ORDER BY
"avatar_avatar"."primary" DESC, "avatar_avatar"."date_uploaded" DESC
 LIMIT
1
SELECT ••• FROM "avatar_avatar" WHERE "avatar_avatar"."user_id" = 2 ORDER BY "avatar_avatar"."primary" DESC, "avatar_avatar"."date_uploaded" DESC LIMIT 1
10 similar queries. Duplicated 10 times.
0.14

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/home/nathan/rb/site/./avatar/templatetags/avatar_tags.py in avatar_url(33)
  avatar_url = provider.get_avatar_url(user, size)

/home/nathan/rb/site/./avatar/providers.py in get_avatar_url(48)
  avatar = get_primary_avatar(user, size)

/home/nathan/rb/site/./avatar/utils.py in get_primary_avatar(120)
  avatar = user.avatar_set.order_by("-primary", "-date_uploaded")[0]

10 <div class="rb-article-card__top">
11 <span class="rb-article-card__avatar hidden-xs">
12 <a href="{% url 'blog_by_author' article.author.username %}">
13 <img data-src="{% avatar_url article.author.username 75 %}" width="30" height="30" alt="{{ article.author.username }}">
14 </a>
15 </span>
16
17 <h2 class="rb-article-card__title">

/home/nathan/rb/site/blog/templates/blog/includes/render_article_horizontal.html

SELECT "blog_articlestats"."article_id",
       "blog_articlestats"."hits"
  FROM
"blog_articlestats"
 WHERE
"blog_articlestats"."article_id" = 745
 LIMIT
21
SELECT ••• FROM "blog_articlestats" WHERE "blog_articlestats"."article_id" = 745 LIMIT 21
10 similar queries.
0.12

Connection: default

Transaction status: In transaction

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/usr/lib/python3.10/contextlib.py in inner(79)
  return func(*args, **kwds)

/home/nathan/venv_rb310/lib/python3.10/site-packages/annoying/fields.py in __get__(36)
  .__get__(instance, instance_type)

33 </div>
34 {% endif %}
35
36 {% if article.stats.hits > 100 %}
37 <div>
38 <i class="fa fa-line-chart"></i>
39 <span>{{ article.stats.hits|floor_100 }} views</span>
40 </div>

/home/nathan/rb/site/blog/templates/blog/includes/render_article_byline.html

SELECT "auth_user"."id",
       "auth_user"."password",
       "auth_user"."last_login",
       "auth_user"."is_superuser",
       "auth_user"."username",
       "auth_user"."first_name",
       "auth_user"."last_name",
       "auth_user"."email",
       "auth_user"."is_staff",
       "auth_user"."is_active",
       "auth_user"."date_joined"
  FROM
"auth_user"
 WHERE
"auth_user"."id" = 2
 LIMIT
21
SELECT ••• FROM "auth_user" WHERE "auth_user"."id" = 2 LIMIT 21
10 similar queries. Duplicated 10 times.
0.12

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

9 <div class="rb-article-card__body">
10 <div class="rb-article-card__top">
11 <span class="rb-article-card__avatar hidden-xs">
12 <a href="{% url 'blog_by_author' article.author.username %}">
13 <img data-src="{% avatar_url article.author.username 75 %}" width="30" height="30" alt="{{ article.author.username }}">
14 </a>
15 </span>
16

/home/nathan/rb/site/blog/templates/blog/includes/render_article_horizontal.html

SELECT "auth_user"."id",
       "auth_user"."password",
       "auth_user"."last_login",
       "auth_user"."is_superuser",
       "auth_user"."username",
       "auth_user"."first_name",
       "auth_user"."last_name",
       "auth_user"."email",
       "auth_user"."is_staff",
       "auth_user"."is_active",
       "auth_user"."date_joined"
  FROM
"auth_user"
 WHERE
"auth_user"."username" = 'Nathan'
 LIMIT
21
SELECT ••• FROM "auth_user" WHERE "auth_user"."username" = 'Nathan' LIMIT 21
10 similar queries. Duplicated 10 times.
0.11

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/home/nathan/rb/site/./avatar/templatetags/avatar_tags.py in avatar_url(33)
  avatar_url = provider.get_avatar_url(user, size)

/home/nathan/rb/site/./avatar/providers.py in get_avatar_url(48)
  avatar = get_primary_avatar(user, size)

/home/nathan/rb/site/./avatar/utils.py in get_primary_avatar(112)
  user = get_user(user)

/home/nathan/rb/site/./avatar/utils.py in get_user(33)
  return get_user_model().objects.get_by_natural_key(username)

10 <div class="rb-article-card__top">
11 <span class="rb-article-card__avatar hidden-xs">
12 <a href="{% url 'blog_by_author' article.author.username %}">
13 <img data-src="{% avatar_url article.author.username 75 %}" width="30" height="30" alt="{{ article.author.username }}">
14 </a>
15 </span>
16
17 <h2 class="rb-article-card__title">

/home/nathan/rb/site/blog/templates/blog/includes/render_article_horizontal.html

SELECT "avatar_avatar"."id",
       "avatar_avatar"."user_id",
       "avatar_avatar"."primary",
       "avatar_avatar"."avatar",
       "avatar_avatar"."date_uploaded"
  FROM
"avatar_avatar"
 WHERE
"avatar_avatar"."user_id" = 2
 ORDER BY
"avatar_avatar"."primary" DESC, "avatar_avatar"."date_uploaded" DESC
 LIMIT
1
SELECT ••• FROM "avatar_avatar" WHERE "avatar_avatar"."user_id" = 2 ORDER BY "avatar_avatar"."primary" DESC, "avatar_avatar"."date_uploaded" DESC LIMIT 1
10 similar queries. Duplicated 10 times.
0.11

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/home/nathan/rb/site/./avatar/templatetags/avatar_tags.py in avatar_url(33)
  avatar_url = provider.get_avatar_url(user, size)

/home/nathan/rb/site/./avatar/providers.py in get_avatar_url(48)
  avatar = get_primary_avatar(user, size)

/home/nathan/rb/site/./avatar/utils.py in get_primary_avatar(120)
  avatar = user.avatar_set.order_by("-primary", "-date_uploaded")[0]

10 <div class="rb-article-card__top">
11 <span class="rb-article-card__avatar hidden-xs">
12 <a href="{% url 'blog_by_author' article.author.username %}">
13 <img data-src="{% avatar_url article.author.username 75 %}" width="30" height="30" alt="{{ article.author.username }}">
14 </a>
15 </span>
16
17 <h2 class="rb-article-card__title">

/home/nathan/rb/site/blog/templates/blog/includes/render_article_horizontal.html

SELECT "blog_articlestats"."article_id",
       "blog_articlestats"."hits"
  FROM
"blog_articlestats"
 WHERE
"blog_articlestats"."article_id" = 572
 LIMIT
21
SELECT ••• FROM "blog_articlestats" WHERE "blog_articlestats"."article_id" = 572 LIMIT 21
10 similar queries.
0.10

Connection: default

Transaction status: In transaction

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/usr/lib/python3.10/contextlib.py in inner(79)
  return func(*args, **kwds)

/home/nathan/venv_rb310/lib/python3.10/site-packages/annoying/fields.py in __get__(36)
  .__get__(instance, instance_type)

33 </div>
34 {% endif %}
35
36 {% if article.stats.hits > 100 %}
37 <div>
38 <i class="fa fa-line-chart"></i>
39 <span>{{ article.stats.hits|floor_100 }} views</span>
40 </div>

/home/nathan/rb/site/blog/templates/blog/includes/render_article_byline.html

SELECT "auth_user"."id",
       "auth_user"."password",
       "auth_user"."last_login",
       "auth_user"."is_superuser",
       "auth_user"."username",
       "auth_user"."first_name",
       "auth_user"."last_name",
       "auth_user"."email",
       "auth_user"."is_staff",
       "auth_user"."is_active",
       "auth_user"."date_joined"
  FROM
"auth_user"
 WHERE
"auth_user"."id" = 2
 LIMIT
21
SELECT ••• FROM "auth_user" WHERE "auth_user"."id" = 2 LIMIT 21
10 similar queries. Duplicated 10 times.
0.11

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

9 <div class="rb-article-card__body">
10 <div class="rb-article-card__top">
11 <span class="rb-article-card__avatar hidden-xs">
12 <a href="{% url 'blog_by_author' article.author.username %}">
13 <img data-src="{% avatar_url article.author.username 75 %}" width="30" height="30" alt="{{ article.author.username }}">
14 </a>
15 </span>
16

/home/nathan/rb/site/blog/templates/blog/includes/render_article_horizontal.html

SELECT "auth_user"."id",
       "auth_user"."password",
       "auth_user"."last_login",
       "auth_user"."is_superuser",
       "auth_user"."username",
       "auth_user"."first_name",
       "auth_user"."last_name",
       "auth_user"."email",
       "auth_user"."is_staff",
       "auth_user"."is_active",
       "auth_user"."date_joined"
  FROM
"auth_user"
 WHERE
"auth_user"."username" = 'Nathan'
 LIMIT
21
SELECT ••• FROM "auth_user" WHERE "auth_user"."username" = 'Nathan' LIMIT 21
10 similar queries. Duplicated 10 times.
0.11

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/home/nathan/rb/site/./avatar/templatetags/avatar_tags.py in avatar_url(33)
  avatar_url = provider.get_avatar_url(user, size)

/home/nathan/rb/site/./avatar/providers.py in get_avatar_url(48)
  avatar = get_primary_avatar(user, size)

/home/nathan/rb/site/./avatar/utils.py in get_primary_avatar(112)
  user = get_user(user)

/home/nathan/rb/site/./avatar/utils.py in get_user(33)
  return get_user_model().objects.get_by_natural_key(username)

10 <div class="rb-article-card__top">
11 <span class="rb-article-card__avatar hidden-xs">
12 <a href="{% url 'blog_by_author' article.author.username %}">
13 <img data-src="{% avatar_url article.author.username 75 %}" width="30" height="30" alt="{{ article.author.username }}">
14 </a>
15 </span>
16
17 <h2 class="rb-article-card__title">

/home/nathan/rb/site/blog/templates/blog/includes/render_article_horizontal.html

SELECT "avatar_avatar"."id",
       "avatar_avatar"."user_id",
       "avatar_avatar"."primary",
       "avatar_avatar"."avatar",
       "avatar_avatar"."date_uploaded"
  FROM
"avatar_avatar"
 WHERE
"avatar_avatar"."user_id" = 2
 ORDER BY
"avatar_avatar"."primary" DESC, "avatar_avatar"."date_uploaded" DESC
 LIMIT
1
SELECT ••• FROM "avatar_avatar" WHERE "avatar_avatar"."user_id" = 2 ORDER BY "avatar_avatar"."primary" DESC, "avatar_avatar"."date_uploaded" DESC LIMIT 1
10 similar queries. Duplicated 10 times.
0.10

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/home/nathan/rb/site/./avatar/templatetags/avatar_tags.py in avatar_url(33)
  avatar_url = provider.get_avatar_url(user, size)

/home/nathan/rb/site/./avatar/providers.py in get_avatar_url(48)
  avatar = get_primary_avatar(user, size)

/home/nathan/rb/site/./avatar/utils.py in get_primary_avatar(120)
  avatar = user.avatar_set.order_by("-primary", "-date_uploaded")[0]

10 <div class="rb-article-card__top">
11 <span class="rb-article-card__avatar hidden-xs">
12 <a href="{% url 'blog_by_author' article.author.username %}">
13 <img data-src="{% avatar_url article.author.username 75 %}" width="30" height="30" alt="{{ article.author.username }}">
14 </a>
15 </span>
16
17 <h2 class="rb-article-card__title">

/home/nathan/rb/site/blog/templates/blog/includes/render_article_horizontal.html

SELECT "blog_articlestats"."article_id",
       "blog_articlestats"."hits"
  FROM
"blog_articlestats"
 WHERE
"blog_articlestats"."article_id" = 550
 LIMIT
21
SELECT ••• FROM "blog_articlestats" WHERE "blog_articlestats"."article_id" = 550 LIMIT 21
10 similar queries.
0.11

Connection: default

Transaction status: In transaction

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/usr/lib/python3.10/contextlib.py in inner(79)
  return func(*args, **kwds)

/home/nathan/venv_rb310/lib/python3.10/site-packages/annoying/fields.py in __get__(36)
  .__get__(instance, instance_type)

33 </div>
34 {% endif %}
35
36 {% if article.stats.hits > 100 %}
37 <div>
38 <i class="fa fa-line-chart"></i>
39 <span>{{ article.stats.hits|floor_100 }} views</span>
40 </div>

/home/nathan/rb/site/blog/templates/blog/includes/render_article_byline.html

SELECT "auth_user"."id",
       "auth_user"."password",
       "auth_user"."last_login",
       "auth_user"."is_superuser",
       "auth_user"."username",
       "auth_user"."first_name",
       "auth_user"."last_name",
       "auth_user"."email",
       "auth_user"."is_staff",
       "auth_user"."is_active",
       "auth_user"."date_joined"
  FROM
"auth_user"
 WHERE
"auth_user"."id" = 2
 LIMIT
21
SELECT ••• FROM "auth_user" WHERE "auth_user"."id" = 2 LIMIT 21
10 similar queries. Duplicated 10 times.
0.10

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

9 <div class="rb-article-card__body">
10 <div class="rb-article-card__top">
11 <span class="rb-article-card__avatar hidden-xs">
12 <a href="{% url 'blog_by_author' article.author.username %}">
13 <img data-src="{% avatar_url article.author.username 75 %}" width="30" height="30" alt="{{ article.author.username }}">
14 </a>
15 </span>
16

/home/nathan/rb/site/blog/templates/blog/includes/render_article_horizontal.html

SELECT "auth_user"."id",
       "auth_user"."password",
       "auth_user"."last_login",
       "auth_user"."is_superuser",
       "auth_user"."username",
       "auth_user"."first_name",
       "auth_user"."last_name",
       "auth_user"."email",
       "auth_user"."is_staff",
       "auth_user"."is_active",
       "auth_user"."date_joined"
  FROM
"auth_user"
 WHERE
"auth_user"."username" = 'Nathan'
 LIMIT
21
SELECT ••• FROM "auth_user" WHERE "auth_user"."username" = 'Nathan' LIMIT 21
10 similar queries. Duplicated 10 times.
0.11

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/home/nathan/rb/site/./avatar/templatetags/avatar_tags.py in avatar_url(33)
  avatar_url = provider.get_avatar_url(user, size)

/home/nathan/rb/site/./avatar/providers.py in get_avatar_url(48)
  avatar = get_primary_avatar(user, size)

/home/nathan/rb/site/./avatar/utils.py in get_primary_avatar(112)
  user = get_user(user)

/home/nathan/rb/site/./avatar/utils.py in get_user(33)
  return get_user_model().objects.get_by_natural_key(username)

10 <div class="rb-article-card__top">
11 <span class="rb-article-card__avatar hidden-xs">
12 <a href="{% url 'blog_by_author' article.author.username %}">
13 <img data-src="{% avatar_url article.author.username 75 %}" width="30" height="30" alt="{{ article.author.username }}">
14 </a>
15 </span>
16
17 <h2 class="rb-article-card__title">

/home/nathan/rb/site/blog/templates/blog/includes/render_article_horizontal.html

SELECT "avatar_avatar"."id",
       "avatar_avatar"."user_id",
       "avatar_avatar"."primary",
       "avatar_avatar"."avatar",
       "avatar_avatar"."date_uploaded"
  FROM
"avatar_avatar"
 WHERE
"avatar_avatar"."user_id" = 2
 ORDER BY
"avatar_avatar"."primary" DESC, "avatar_avatar"."date_uploaded" DESC
 LIMIT
1
SELECT ••• FROM "avatar_avatar" WHERE "avatar_avatar"."user_id" = 2 ORDER BY "avatar_avatar"."primary" DESC, "avatar_avatar"."date_uploaded" DESC LIMIT 1
10 similar queries. Duplicated 10 times.
0.10

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/home/nathan/rb/site/./avatar/templatetags/avatar_tags.py in avatar_url(33)
  avatar_url = provider.get_avatar_url(user, size)

/home/nathan/rb/site/./avatar/providers.py in get_avatar_url(48)
  avatar = get_primary_avatar(user, size)

/home/nathan/rb/site/./avatar/utils.py in get_primary_avatar(120)
  avatar = user.avatar_set.order_by("-primary", "-date_uploaded")[0]

10 <div class="rb-article-card__top">
11 <span class="rb-article-card__avatar hidden-xs">
12 <a href="{% url 'blog_by_author' article.author.username %}">
13 <img data-src="{% avatar_url article.author.username 75 %}" width="30" height="30" alt="{{ article.author.username }}">
14 </a>
15 </span>
16
17 <h2 class="rb-article-card__title">

/home/nathan/rb/site/blog/templates/blog/includes/render_article_horizontal.html

SELECT "blog_articlestats"."article_id",
       "blog_articlestats"."hits"
  FROM
"blog_articlestats"
 WHERE
"blog_articlestats"."article_id" = 497
 LIMIT
21
SELECT ••• FROM "blog_articlestats" WHERE "blog_articlestats"."article_id" = 497 LIMIT 21
10 similar queries.
0.11

Connection: default

Transaction status: In transaction

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/usr/lib/python3.10/contextlib.py in inner(79)
  return func(*args, **kwds)

/home/nathan/venv_rb310/lib/python3.10/site-packages/annoying/fields.py in __get__(36)
  .__get__(instance, instance_type)

33 </div>
34 {% endif %}
35
36 {% if article.stats.hits > 100 %}
37 <div>
38 <i class="fa fa-line-chart"></i>
39 <span>{{ article.stats.hits|floor_100 }} views</span>
40 </div>

/home/nathan/rb/site/blog/templates/blog/includes/render_article_byline.html

SELECT "auth_user"."id",
       "auth_user"."password",
       "auth_user"."last_login",
       "auth_user"."is_superuser",
       "auth_user"."username",
       "auth_user"."first_name",
       "auth_user"."last_name",
       "auth_user"."email",
       "auth_user"."is_staff",
       "auth_user"."is_active",
       "auth_user"."date_joined"
  FROM
"auth_user"
 WHERE
"auth_user"."id" = 2
 LIMIT
21
SELECT ••• FROM "auth_user" WHERE "auth_user"."id" = 2 LIMIT 21
10 similar queries. Duplicated 10 times.
0.10

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

9 <div class="rb-article-card__body">
10 <div class="rb-article-card__top">
11 <span class="rb-article-card__avatar hidden-xs">
12 <a href="{% url 'blog_by_author' article.author.username %}">
13 <img data-src="{% avatar_url article.author.username 75 %}" width="30" height="30" alt="{{ article.author.username }}">
14 </a>
15 </span>
16

/home/nathan/rb/site/blog/templates/blog/includes/render_article_horizontal.html

SELECT "auth_user"."id",
       "auth_user"."password",
       "auth_user"."last_login",
       "auth_user"."is_superuser",
       "auth_user"."username",
       "auth_user"."first_name",
       "auth_user"."last_name",
       "auth_user"."email",
       "auth_user"."is_staff",
       "auth_user"."is_active",
       "auth_user"."date_joined"
  FROM
"auth_user"
 WHERE
"auth_user"."username" = 'Nathan'
 LIMIT
21
SELECT ••• FROM "auth_user" WHERE "auth_user"."username" = 'Nathan' LIMIT 21
10 similar queries. Duplicated 10 times.
0.08

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/home/nathan/rb/site/./avatar/templatetags/avatar_tags.py in avatar_url(33)
  avatar_url = provider.get_avatar_url(user, size)

/home/nathan/rb/site/./avatar/providers.py in get_avatar_url(48)
  avatar = get_primary_avatar(user, size)

/home/nathan/rb/site/./avatar/utils.py in get_primary_avatar(112)
  user = get_user(user)

/home/nathan/rb/site/./avatar/utils.py in get_user(33)
  return get_user_model().objects.get_by_natural_key(username)

10 <div class="rb-article-card__top">
11 <span class="rb-article-card__avatar hidden-xs">
12 <a href="{% url 'blog_by_author' article.author.username %}">
13 <img data-src="{% avatar_url article.author.username 75 %}" width="30" height="30" alt="{{ article.author.username }}">
14 </a>
15 </span>
16
17 <h2 class="rb-article-card__title">

/home/nathan/rb/site/blog/templates/blog/includes/render_article_horizontal.html

SELECT "avatar_avatar"."id",
       "avatar_avatar"."user_id",
       "avatar_avatar"."primary",
       "avatar_avatar"."avatar",
       "avatar_avatar"."date_uploaded"
  FROM
"avatar_avatar"
 WHERE
"avatar_avatar"."user_id" = 2
 ORDER BY
"avatar_avatar"."primary" DESC, "avatar_avatar"."date_uploaded" DESC
 LIMIT
1
SELECT ••• FROM "avatar_avatar" WHERE "avatar_avatar"."user_id" = 2 ORDER BY "avatar_avatar"."primary" DESC, "avatar_avatar"."date_uploaded" DESC LIMIT 1
10 similar queries. Duplicated 10 times.
0.07

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/home/nathan/rb/site/./avatar/templatetags/avatar_tags.py in avatar_url(33)
  avatar_url = provider.get_avatar_url(user, size)

/home/nathan/rb/site/./avatar/providers.py in get_avatar_url(48)
  avatar = get_primary_avatar(user, size)

/home/nathan/rb/site/./avatar/utils.py in get_primary_avatar(120)
  avatar = user.avatar_set.order_by("-primary", "-date_uploaded")[0]

10 <div class="rb-article-card__top">
11 <span class="rb-article-card__avatar hidden-xs">
12 <a href="{% url 'blog_by_author' article.author.username %}">
13 <img data-src="{% avatar_url article.author.username 75 %}" width="30" height="30" alt="{{ article.author.username }}">
14 </a>
15 </span>
16
17 <h2 class="rb-article-card__title">

/home/nathan/rb/site/blog/templates/blog/includes/render_article_horizontal.html

SELECT "blog_articlestats"."article_id",
       "blog_articlestats"."hits"
  FROM
"blog_articlestats"
 WHERE
"blog_articlestats"."article_id" = 456
 LIMIT
21
SELECT ••• FROM "blog_articlestats" WHERE "blog_articlestats"."article_id" = 456 LIMIT 21
10 similar queries.
0.11

Connection: default

Transaction status: In transaction

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/usr/lib/python3.10/contextlib.py in inner(79)
  return func(*args, **kwds)

/home/nathan/venv_rb310/lib/python3.10/site-packages/annoying/fields.py in __get__(36)
  .__get__(instance, instance_type)

33 </div>
34 {% endif %}
35
36 {% if article.stats.hits > 100 %}
37 <div>
38 <i class="fa fa-line-chart"></i>
39 <span>{{ article.stats.hits|floor_100 }} views</span>
40 </div>

/home/nathan/rb/site/blog/templates/blog/includes/render_article_byline.html

SELECT "auth_user"."id",
       "auth_user"."password",
       "auth_user"."last_login",
       "auth_user"."is_superuser",
       "auth_user"."username",
       "auth_user"."first_name",
       "auth_user"."last_name",
       "auth_user"."email",
       "auth_user"."is_staff",
       "auth_user"."is_active",
       "auth_user"."date_joined"
  FROM
"auth_user"
 WHERE
"auth_user"."id" = 2
 LIMIT
21
SELECT ••• FROM "auth_user" WHERE "auth_user"."id" = 2 LIMIT 21
10 similar queries. Duplicated 10 times.
0.10

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

9 <div class="rb-article-card__body">
10 <div class="rb-article-card__top">
11 <span class="rb-article-card__avatar hidden-xs">
12 <a href="{% url 'blog_by_author' article.author.username %}">
13 <img data-src="{% avatar_url article.author.username 75 %}" width="30" height="30" alt="{{ article.author.username }}">
14 </a>
15 </span>
16

/home/nathan/rb/site/blog/templates/blog/includes/render_article_horizontal.html

SELECT "auth_user"."id",
       "auth_user"."password",
       "auth_user"."last_login",
       "auth_user"."is_superuser",
       "auth_user"."username",
       "auth_user"."first_name",
       "auth_user"."last_name",
       "auth_user"."email",
       "auth_user"."is_staff",
       "auth_user"."is_active",
       "auth_user"."date_joined"
  FROM
"auth_user"
 WHERE
"auth_user"."username" = 'Nathan'
 LIMIT
21
SELECT ••• FROM "auth_user" WHERE "auth_user"."username" = 'Nathan' LIMIT 21
10 similar queries. Duplicated 10 times.
0.08

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/home/nathan/rb/site/./avatar/templatetags/avatar_tags.py in avatar_url(33)
  avatar_url = provider.get_avatar_url(user, size)

/home/nathan/rb/site/./avatar/providers.py in get_avatar_url(48)
  avatar = get_primary_avatar(user, size)

/home/nathan/rb/site/./avatar/utils.py in get_primary_avatar(112)
  user = get_user(user)

/home/nathan/rb/site/./avatar/utils.py in get_user(33)
  return get_user_model().objects.get_by_natural_key(username)

10 <div class="rb-article-card__top">
11 <span class="rb-article-card__avatar hidden-xs">
12 <a href="{% url 'blog_by_author' article.author.username %}">
13 <img data-src="{% avatar_url article.author.username 75 %}" width="30" height="30" alt="{{ article.author.username }}">
14 </a>
15 </span>
16
17 <h2 class="rb-article-card__title">

/home/nathan/rb/site/blog/templates/blog/includes/render_article_horizontal.html

SELECT "avatar_avatar"."id",
       "avatar_avatar"."user_id",
       "avatar_avatar"."primary",
       "avatar_avatar"."avatar",
       "avatar_avatar"."date_uploaded"
  FROM
"avatar_avatar"
 WHERE
"avatar_avatar"."user_id" = 2
 ORDER BY
"avatar_avatar"."primary" DESC, "avatar_avatar"."date_uploaded" DESC
 LIMIT
1
SELECT ••• FROM "avatar_avatar" WHERE "avatar_avatar"."user_id" = 2 ORDER BY "avatar_avatar"."primary" DESC, "avatar_avatar"."date_uploaded" DESC LIMIT 1
10 similar queries. Duplicated 10 times.
0.07

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/home/nathan/rb/site/./avatar/templatetags/avatar_tags.py in avatar_url(33)
  avatar_url = provider.get_avatar_url(user, size)

/home/nathan/rb/site/./avatar/providers.py in get_avatar_url(48)
  avatar = get_primary_avatar(user, size)

/home/nathan/rb/site/./avatar/utils.py in get_primary_avatar(120)
  avatar = user.avatar_set.order_by("-primary", "-date_uploaded")[0]

10 <div class="rb-article-card__top">
11 <span class="rb-article-card__avatar hidden-xs">
12 <a href="{% url 'blog_by_author' article.author.username %}">
13 <img data-src="{% avatar_url article.author.username 75 %}" width="30" height="30" alt="{{ article.author.username }}">
14 </a>
15 </span>
16
17 <h2 class="rb-article-card__title">

/home/nathan/rb/site/blog/templates/blog/includes/render_article_horizontal.html

SELECT "blog_articlestats"."article_id",
       "blog_articlestats"."hits"
  FROM
"blog_articlestats"
 WHERE
"blog_articlestats"."article_id" = 285
 LIMIT
21
SELECT ••• FROM "blog_articlestats" WHERE "blog_articlestats"."article_id" = 285 LIMIT 21
10 similar queries.
0.08

Connection: default

Transaction status: In transaction

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/usr/lib/python3.10/contextlib.py in inner(79)
  return func(*args, **kwds)

/home/nathan/venv_rb310/lib/python3.10/site-packages/annoying/fields.py in __get__(36)
  .__get__(instance, instance_type)

33 </div>
34 {% endif %}
35
36 {% if article.stats.hits > 100 %}
37 <div>
38 <i class="fa fa-line-chart"></i>
39 <span>{{ article.stats.hits|floor_100 }} views</span>
40 </div>

/home/nathan/rb/site/blog/templates/blog/includes/render_article_byline.html

SELECT "auth_user"."id",
       "auth_user"."password",
       "auth_user"."last_login",
       "auth_user"."is_superuser",
       "auth_user"."username",
       "auth_user"."first_name",
       "auth_user"."last_name",
       "auth_user"."email",
       "auth_user"."is_staff",
       "auth_user"."is_active",
       "auth_user"."date_joined"
  FROM
"auth_user"
 WHERE
"auth_user"."id" = 2
 LIMIT
21
SELECT ••• FROM "auth_user" WHERE "auth_user"."id" = 2 LIMIT 21
10 similar queries. Duplicated 10 times.
0.09

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

9 <div class="rb-article-card__body">
10 <div class="rb-article-card__top">
11 <span class="rb-article-card__avatar hidden-xs">
12 <a href="{% url 'blog_by_author' article.author.username %}">
13 <img data-src="{% avatar_url article.author.username 75 %}" width="30" height="30" alt="{{ article.author.username }}">
14 </a>
15 </span>
16

/home/nathan/rb/site/blog/templates/blog/includes/render_article_horizontal.html

SELECT "auth_user"."id",
       "auth_user"."password",
       "auth_user"."last_login",
       "auth_user"."is_superuser",
       "auth_user"."username",
       "auth_user"."first_name",
       "auth_user"."last_name",
       "auth_user"."email",
       "auth_user"."is_staff",
       "auth_user"."is_active",
       "auth_user"."date_joined"
  FROM
"auth_user"
 WHERE
"auth_user"."username" = 'Nathan'
 LIMIT
21
SELECT ••• FROM "auth_user" WHERE "auth_user"."username" = 'Nathan' LIMIT 21
10 similar queries. Duplicated 10 times.
0.08

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/home/nathan/rb/site/./avatar/templatetags/avatar_tags.py in avatar_url(33)
  avatar_url = provider.get_avatar_url(user, size)

/home/nathan/rb/site/./avatar/providers.py in get_avatar_url(48)
  avatar = get_primary_avatar(user, size)

/home/nathan/rb/site/./avatar/utils.py in get_primary_avatar(112)
  user = get_user(user)

/home/nathan/rb/site/./avatar/utils.py in get_user(33)
  return get_user_model().objects.get_by_natural_key(username)

10 <div class="rb-article-card__top">
11 <span class="rb-article-card__avatar hidden-xs">
12 <a href="{% url 'blog_by_author' article.author.username %}">
13 <img data-src="{% avatar_url article.author.username 75 %}" width="30" height="30" alt="{{ article.author.username }}">
14 </a>
15 </span>
16
17 <h2 class="rb-article-card__title">

/home/nathan/rb/site/blog/templates/blog/includes/render_article_horizontal.html

SELECT "avatar_avatar"."id",
       "avatar_avatar"."user_id",
       "avatar_avatar"."primary",
       "avatar_avatar"."avatar",
       "avatar_avatar"."date_uploaded"
  FROM
"avatar_avatar"
 WHERE
"avatar_avatar"."user_id" = 2
 ORDER BY
"avatar_avatar"."primary" DESC, "avatar_avatar"."date_uploaded" DESC
 LIMIT
1
SELECT ••• FROM "avatar_avatar" WHERE "avatar_avatar"."user_id" = 2 ORDER BY "avatar_avatar"."primary" DESC, "avatar_avatar"."date_uploaded" DESC LIMIT 1
10 similar queries. Duplicated 10 times.
0.07

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/home/nathan/rb/site/./avatar/templatetags/avatar_tags.py in avatar_url(33)
  avatar_url = provider.get_avatar_url(user, size)

/home/nathan/rb/site/./avatar/providers.py in get_avatar_url(48)
  avatar = get_primary_avatar(user, size)

/home/nathan/rb/site/./avatar/utils.py in get_primary_avatar(120)
  avatar = user.avatar_set.order_by("-primary", "-date_uploaded")[0]

10 <div class="rb-article-card__top">
11 <span class="rb-article-card__avatar hidden-xs">
12 <a href="{% url 'blog_by_author' article.author.username %}">
13 <img data-src="{% avatar_url article.author.username 75 %}" width="30" height="30" alt="{{ article.author.username }}">
14 </a>
15 </span>
16
17 <h2 class="rb-article-card__title">

/home/nathan/rb/site/blog/templates/blog/includes/render_article_horizontal.html

SELECT "blog_articlestats"."article_id",
       "blog_articlestats"."hits"
  FROM
"blog_articlestats"
 WHERE
"blog_articlestats"."article_id" = 274
 LIMIT
21
SELECT ••• FROM "blog_articlestats" WHERE "blog_articlestats"."article_id" = 274 LIMIT 21
10 similar queries.
0.08

Connection: default

Transaction status: In transaction

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/usr/lib/python3.10/contextlib.py in inner(79)
  return func(*args, **kwds)

/home/nathan/venv_rb310/lib/python3.10/site-packages/annoying/fields.py in __get__(36)
  .__get__(instance, instance_type)

33 </div>
34 {% endif %}
35
36 {% if article.stats.hits > 100 %}
37 <div>
38 <i class="fa fa-line-chart"></i>
39 <span>{{ article.stats.hits|floor_100 }} views</span>
40 </div>

/home/nathan/rb/site/blog/templates/blog/includes/render_article_byline.html

SELECT "auth_user"."id",
       "auth_user"."password",
       "auth_user"."last_login",
       "auth_user"."is_superuser",
       "auth_user"."username",
       "auth_user"."first_name",
       "auth_user"."last_name",
       "auth_user"."email",
       "auth_user"."is_staff",
       "auth_user"."is_active",
       "auth_user"."date_joined"
  FROM
"auth_user"
 WHERE
"auth_user"."id" = 2
 LIMIT
21
SELECT ••• FROM "auth_user" WHERE "auth_user"."id" = 2 LIMIT 21
10 similar queries. Duplicated 10 times.
0.14

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

9 <div class="rb-article-card__body">
10 <div class="rb-article-card__top">
11 <span class="rb-article-card__avatar hidden-xs">
12 <a href="{% url 'blog_by_author' article.author.username %}">
13 <img data-src="{% avatar_url article.author.username 75 %}" width="30" height="30" alt="{{ article.author.username }}">
14 </a>
15 </span>
16

/home/nathan/rb/site/blog/templates/blog/includes/render_article_horizontal.html

SELECT "auth_user"."id",
       "auth_user"."password",
       "auth_user"."last_login",
       "auth_user"."is_superuser",
       "auth_user"."username",
       "auth_user"."first_name",
       "auth_user"."last_name",
       "auth_user"."email",
       "auth_user"."is_staff",
       "auth_user"."is_active",
       "auth_user"."date_joined"
  FROM
"auth_user"
 WHERE
"auth_user"."username" = 'Nathan'
 LIMIT
21
SELECT ••• FROM "auth_user" WHERE "auth_user"."username" = 'Nathan' LIMIT 21
10 similar queries. Duplicated 10 times.
0.13

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/home/nathan/rb/site/./avatar/templatetags/avatar_tags.py in avatar_url(33)
  avatar_url = provider.get_avatar_url(user, size)

/home/nathan/rb/site/./avatar/providers.py in get_avatar_url(48)
  avatar = get_primary_avatar(user, size)

/home/nathan/rb/site/./avatar/utils.py in get_primary_avatar(112)
  user = get_user(user)

/home/nathan/rb/site/./avatar/utils.py in get_user(33)
  return get_user_model().objects.get_by_natural_key(username)

10 <div class="rb-article-card__top">
11 <span class="rb-article-card__avatar hidden-xs">
12 <a href="{% url 'blog_by_author' article.author.username %}">
13 <img data-src="{% avatar_url article.author.username 75 %}" width="30" height="30" alt="{{ article.author.username }}">
14 </a>
15 </span>
16
17 <h2 class="rb-article-card__title">

/home/nathan/rb/site/blog/templates/blog/includes/render_article_horizontal.html

SELECT "avatar_avatar"."id",
       "avatar_avatar"."user_id",
       "avatar_avatar"."primary",
       "avatar_avatar"."avatar",
       "avatar_avatar"."date_uploaded"
  FROM
"avatar_avatar"
 WHERE
"avatar_avatar"."user_id" = 2
 ORDER BY
"avatar_avatar"."primary" DESC, "avatar_avatar"."date_uploaded" DESC
 LIMIT
1
SELECT ••• FROM "avatar_avatar" WHERE "avatar_avatar"."user_id" = 2 ORDER BY "avatar_avatar"."primary" DESC, "avatar_avatar"."date_uploaded" DESC LIMIT 1
10 similar queries. Duplicated 10 times.
0.08

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/home/nathan/rb/site/./avatar/templatetags/avatar_tags.py in avatar_url(33)
  avatar_url = provider.get_avatar_url(user, size)

/home/nathan/rb/site/./avatar/providers.py in get_avatar_url(48)
  avatar = get_primary_avatar(user, size)

/home/nathan/rb/site/./avatar/utils.py in get_primary_avatar(120)
  avatar = user.avatar_set.order_by("-primary", "-date_uploaded")[0]

10 <div class="rb-article-card__top">
11 <span class="rb-article-card__avatar hidden-xs">
12 <a href="{% url 'blog_by_author' article.author.username %}">
13 <img data-src="{% avatar_url article.author.username 75 %}" width="30" height="30" alt="{{ article.author.username }}">
14 </a>
15 </span>
16
17 <h2 class="rb-article-card__title">

/home/nathan/rb/site/blog/templates/blog/includes/render_article_horizontal.html

SELECT "blog_articlestats"."article_id",
       "blog_articlestats"."hits"
  FROM
"blog_articlestats"
 WHERE
"blog_articlestats"."article_id" = 259
 LIMIT
21
SELECT ••• FROM "blog_articlestats" WHERE "blog_articlestats"."article_id" = 259 LIMIT 21
10 similar queries.
0.08

Connection: default

Transaction status: In transaction

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/usr/lib/python3.10/contextlib.py in inner(79)
  return func(*args, **kwds)

/home/nathan/venv_rb310/lib/python3.10/site-packages/annoying/fields.py in __get__(36)
  .__get__(instance, instance_type)

33 </div>
34 {% endif %}
35
36 {% if article.stats.hits > 100 %}
37 <div>
38 <i class="fa fa-line-chart"></i>
39 <span>{{ article.stats.hits|floor_100 }} views</span>
40 </div>

/home/nathan/rb/site/blog/templates/blog/includes/render_article_byline.html

SELECT "auth_user"."id",
       "auth_user"."password",
       "auth_user"."last_login",
       "auth_user"."is_superuser",
       "auth_user"."username",
       "auth_user"."first_name",
       "auth_user"."last_name",
       "auth_user"."email",
       "auth_user"."is_staff",
       "auth_user"."is_active",
       "auth_user"."date_joined"
  FROM
"auth_user"
 WHERE
"auth_user"."id" = 2
 LIMIT
21
SELECT ••• FROM "auth_user" WHERE "auth_user"."id" = 2 LIMIT 21
10 similar queries. Duplicated 10 times.
0.07

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

9 <div class="rb-article-card__body">
10 <div class="rb-article-card__top">
11 <span class="rb-article-card__avatar hidden-xs">
12 <a href="{% url 'blog_by_author' article.author.username %}">
13 <img data-src="{% avatar_url article.author.username 75 %}" width="30" height="30" alt="{{ article.author.username }}">
14 </a>
15 </span>
16

/home/nathan/rb/site/blog/templates/blog/includes/render_article_horizontal.html

SELECT "auth_user"."id",
       "auth_user"."password",
       "auth_user"."last_login",
       "auth_user"."is_superuser",
       "auth_user"."username",
       "auth_user"."first_name",
       "auth_user"."last_name",
       "auth_user"."email",
       "auth_user"."is_staff",
       "auth_user"."is_active",
       "auth_user"."date_joined"
  FROM
"auth_user"
 WHERE
"auth_user"."username" = 'Nathan'
 LIMIT
21
SELECT ••• FROM "auth_user" WHERE "auth_user"."username" = 'Nathan' LIMIT 21
10 similar queries. Duplicated 10 times.
0.07

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/home/nathan/rb/site/./avatar/templatetags/avatar_tags.py in avatar_url(33)
  avatar_url = provider.get_avatar_url(user, size)

/home/nathan/rb/site/./avatar/providers.py in get_avatar_url(48)
  avatar = get_primary_avatar(user, size)

/home/nathan/rb/site/./avatar/utils.py in get_primary_avatar(112)
  user = get_user(user)

/home/nathan/rb/site/./avatar/utils.py in get_user(33)
  return get_user_model().objects.get_by_natural_key(username)

10 <div class="rb-article-card__top">
11 <span class="rb-article-card__avatar hidden-xs">
12 <a href="{% url 'blog_by_author' article.author.username %}">
13 <img data-src="{% avatar_url article.author.username 75 %}" width="30" height="30" alt="{{ article.author.username }}">
14 </a>
15 </span>
16
17 <h2 class="rb-article-card__title">

/home/nathan/rb/site/blog/templates/blog/includes/render_article_horizontal.html

SELECT "avatar_avatar"."id",
       "avatar_avatar"."user_id",
       "avatar_avatar"."primary",
       "avatar_avatar"."avatar",
       "avatar_avatar"."date_uploaded"
  FROM
"avatar_avatar"
 WHERE
"avatar_avatar"."user_id" = 2
 ORDER BY
"avatar_avatar"."primary" DESC, "avatar_avatar"."date_uploaded" DESC
 LIMIT
1
SELECT ••• FROM "avatar_avatar" WHERE "avatar_avatar"."user_id" = 2 ORDER BY "avatar_avatar"."primary" DESC, "avatar_avatar"."date_uploaded" DESC LIMIT 1
10 similar queries. Duplicated 10 times.
0.07

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/home/nathan/rb/site/./avatar/templatetags/avatar_tags.py in avatar_url(33)
  avatar_url = provider.get_avatar_url(user, size)

/home/nathan/rb/site/./avatar/providers.py in get_avatar_url(48)
  avatar = get_primary_avatar(user, size)

/home/nathan/rb/site/./avatar/utils.py in get_primary_avatar(120)
  avatar = user.avatar_set.order_by("-primary", "-date_uploaded")[0]

10 <div class="rb-article-card__top">
11 <span class="rb-article-card__avatar hidden-xs">
12 <a href="{% url 'blog_by_author' article.author.username %}">
13 <img data-src="{% avatar_url article.author.username 75 %}" width="30" height="30" alt="{{ article.author.username }}">
14 </a>
15 </span>
16
17 <h2 class="rb-article-card__title">

/home/nathan/rb/site/blog/templates/blog/includes/render_article_horizontal.html

SELECT "blog_articlestats"."article_id",
       "blog_articlestats"."hits"
  FROM
"blog_articlestats"
 WHERE
"blog_articlestats"."article_id" = 240
 LIMIT
21
SELECT ••• FROM "blog_articlestats" WHERE "blog_articlestats"."article_id" = 240 LIMIT 21
10 similar queries.
0.10

Connection: default

Transaction status: In transaction

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/usr/lib/python3.10/contextlib.py in inner(79)
  return func(*args, **kwds)

/home/nathan/venv_rb310/lib/python3.10/site-packages/annoying/fields.py in __get__(36)
  .__get__(instance, instance_type)

33 </div>
34 {% endif %}
35
36 {% if article.stats.hits > 100 %}
37 <div>
38 <i class="fa fa-line-chart"></i>
39 <span>{{ article.stats.hits|floor_100 }} views</span>
40 </div>

/home/nathan/rb/site/blog/templates/blog/includes/render_article_byline.html

SELECT (width*height) AS "area",
       "ads_banner"."id",
       "ads_banner"."width",
       "ads_banner"."height",
       "ads_banner"."start_date",
       "ads_banner"."end_date",
       "ads_banner"."country_code",
       "ads_banner"."html"
  FROM
"ads_banner"
 WHERE
("ads_banner"."start_date" < '2026-11-15T23:50:49.726777+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:50:49.726849+00:00'::timestamptz OR "ads_banner"."end_date" IS NULL) AND "ads_banner"."height" <= 600 AND "ads_banner"."start_date" < '2026-11-15T23:50:49.726759+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" IS NULL OR "ads_banner"."end_date" > '2026-11-15T23:50:49.726981+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US')
SELECT ••• FROM "ads_banner" WHERE ("ads_banner"."start_date" < '2026-11-15T23:50:49.726777+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:50:49.726849+00:00'::timestamptz OR "ads_banner"."end_date" IS NULL) AND "ads_banner"."height" <= 600 AND "ads_banner"."start_date" < '2026-11-15T23:50:49.726759+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" IS NULL OR "ads_banner"."end_date" > '2026-11-15T23:50:49.726981+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US')
2 similar queries.
2.49

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/home/nathan/rb/site/./ads/templatetags/ads/drawing.py in render_banner(291)
  if not banners:

66 </div>
67 {% endfor %}
68
69 {% render_banner 262 600 5 %}
70 </div>
71 <div id="tab_popular" class="tab-pane" role="tabpanel">
72 {% for popular_article in popular_articles %}
73 <div class="mb-30">

/home/nathan/rb/site/blog/templates/blog/includes/render_posts_preview_tabs.html

SELECT (width*height) AS "area",
       "ads_banner"."id",
       "ads_banner"."width",
       "ads_banner"."height",
       "ads_banner"."start_date",
       "ads_banner"."end_date",
       "ads_banner"."country_code",
       "ads_banner"."html"
  FROM
"ads_banner"
 WHERE
("ads_banner"."start_date" < '2026-11-15T23:50:49.726777+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:50:49.726849+00:00'::timestamptz OR "ads_banner"."end_date" IS NULL) AND "ads_banner"."height" <= 600 AND "ads_banner"."start_date" < '2026-11-15T23:50:49.726759+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" IS NULL OR "ads_banner"."end_date" > '2026-11-15T23:50:49.726981+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US')
 ORDER BY
1 DESC, RANDOM() ASC
 LIMIT
1
SELECT ••• FROM "ads_banner" WHERE ("ads_banner"."start_date" < '2026-11-15T23:50:49.726777+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:50:49.726849+00:00'::timestamptz OR "ads_banner"."end_date" IS NULL) AND "ads_banner"."height" <= 600 AND "ads_banner"."start_date" < '2026-11-15T23:50:49.726759+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" IS NULL OR "ads_banner"."end_date" > '2026-11-15T23:50:49.726981+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US') ORDER BY 1 DESC, RANDOM() ASC LIMIT 1
2 similar queries.
1.40

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/home/nathan/rb/site/./ads/templatetags/ads/drawing.py in render_banner(298)
  banner = banners.order_by('-area', '?')[0]

66 </div>
67 {% endfor %}
68
69 {% render_banner 262 600 5 %}
70 </div>
71 <div id="tab_popular" class="tab-pane" role="tabpanel">
72 {% for popular_article in popular_articles %}
73 <div class="mb-30">

/home/nathan/rb/site/blog/templates/blog/includes/render_posts_preview_tabs.html

SELECT (width*height) AS "area",
       "ads_banner"."id",
       "ads_banner"."width",
       "ads_banner"."height",
       "ads_banner"."start_date",
       "ads_banner"."end_date",
       "ads_banner"."country_code",
       "ads_banner"."html"
  FROM
"ads_banner"
 WHERE
("ads_banner"."start_date" < '2026-11-15T23:50:49.734295+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:50:49.734360+00:00'::timestamptz OR "ads_banner"."end_date" IS NULL) AND "ads_banner"."height" <= 600 AND "ads_banner"."start_date" < '2026-11-15T23:50:49.734285+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" IS NULL OR "ads_banner"."end_date" > '2026-11-15T23:50:49.734480+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US')
SELECT ••• FROM "ads_banner" WHERE ("ads_banner"."start_date" < '2026-11-15T23:50:49.734295+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:50:49.734360+00:00'::timestamptz OR "ads_banner"."end_date" IS NULL) AND "ads_banner"."height" <= 600 AND "ads_banner"."start_date" < '2026-11-15T23:50:49.734285+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" IS NULL OR "ads_banner"."end_date" > '2026-11-15T23:50:49.734480+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US')
2 similar queries.
1.14

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/home/nathan/rb/site/./ads/templatetags/ads/drawing.py in render_banner(291)
  if not banners:

74 {% include 'blog/includes/render_posts_preview.html' with article=popular_article %}
75 </div>
76 {% endfor %}
77 {% render_banner 262 600 5 %}
78 </div>
79 </div>
80 </div>
81

/home/nathan/rb/site/blog/templates/blog/includes/render_posts_preview_tabs.html

SELECT (width*height) AS "area",
       "ads_banner"."id",
       "ads_banner"."width",
       "ads_banner"."height",
       "ads_banner"."start_date",
       "ads_banner"."end_date",
       "ads_banner"."country_code",
       "ads_banner"."html"
  FROM
"ads_banner"
 WHERE
("ads_banner"."start_date" < '2026-11-15T23:50:49.734295+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:50:49.734360+00:00'::timestamptz OR "ads_banner"."end_date" IS NULL) AND "ads_banner"."height" <= 600 AND "ads_banner"."start_date" < '2026-11-15T23:50:49.734285+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" IS NULL OR "ads_banner"."end_date" > '2026-11-15T23:50:49.734480+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US')
 ORDER BY
1 DESC, RANDOM() ASC
 LIMIT
1
SELECT ••• FROM "ads_banner" WHERE ("ads_banner"."start_date" < '2026-11-15T23:50:49.734295+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:50:49.734360+00:00'::timestamptz OR "ads_banner"."end_date" IS NULL) AND "ads_banner"."height" <= 600 AND "ads_banner"."start_date" < '2026-11-15T23:50:49.734285+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" IS NULL OR "ads_banner"."end_date" > '2026-11-15T23:50:49.734480+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US') ORDER BY 1 DESC, RANDOM() ASC LIMIT 1
2 similar queries.
1.08

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./blog/views.py in blog_by_category(246)
  return render_articles_list(request, articles, 10)

/home/nathan/rb/site/./blog/views.py in render_articles_list(76)
  return render(request, 'blog/blog_list.html', {'articles': articles, 'drafts': drafts, 'tag': tag,

/home/nathan/rb/site/./ads/templatetags/ads/drawing.py in render_banner(298)
  banner = banners.order_by('-area', '?')[0]

74 {% include 'blog/includes/render_posts_preview.html' with article=popular_article %}
75 </div>
76 {% endfor %}
77 {% render_banner 262 600 5 %}
78 </div>
79 </div>
80 </div>
81

/home/nathan/rb/site/blog/templates/blog/includes/render_posts_preview_tabs.html

Log messages

No messages logged.