ultrabob's blog

Traefik proxied gunicorn/uvicorn python service with static files served by nginx

As a personal project, I developed a little python web app, and launched it to a few friends and family. It immediately became clear that the static files was slowing everything down. I probably could have fixed this problem through use of async, and I'll probably go back and do that anyway, but I wanted to understand more about how to use traefik effectively. I tried and failed several times to add an nginx service to it, and when I looked around for examples of how other people did it, I couldn't find a single example.

Recovering from a gitlab MR patch link rebase on a Drupal issue

Let me first preface this by saying that, as documented here, you should not put a gitlab MR patch link directly into your compose.json file. Instead you should download the patch file, and inlude it locally. Otherwise the patch is likely to change our from under you when the MR gets rebased onto another branch.

How to log into Wordpress with Python, BeautifulSoup, and httpx

The key to logging into wordpress programmatically, at least the one I was working on, seemed to be havng a cookie that gets set on first visit to the page, along with the nonce (This is likely not always required. I see it as being set by woocommerce) set as a hidden value in the login form.

This may be standard behavior or it may be a plugin called Snow Monkey Forms (I see a cookie set by that).

Drupal 8/9: Getting an array of target_ids from a multi-entry entity reference field

$target_ids = array_column($entity->field_name->getValue(), 'target_id);

Ajax form notes

The #ajax['wrapper'] property includes the HTML ID of a page section that should be replaced (or altered in some other way).

The #ajax['callback'] tells the Form system what callback should be called after the Ajax call happens and the form is rebuilt.

SimpleTest example module notes

The project I'm working on nicely manages to involve segments of drupal that I didn't learn as much about with the last project. I'm going back and working through the relevant submodules of the examples module to try to get a clear understanding of the drupalish way to handle things. The first thing on my list is simpletest. This is something I could/should have learned for the last project, but I had so much going on that I never got to it. It probably would have saved me time if I'd been disciplined, so I'll try to be more test-driven this time.

Fun with CSS child-selectors, making a comma separated series with oxford commas

This all started with a question on Drupal Answers in which I was trying to figure out how to manipulate the render array of paragraphs module output to turn it into a comma separated list of field content.

It turned into a fun exploration of css selectors that I haven't messed with in a long time. Here is a jsfiddle for you to follow along with.

Field Collection: multi-entry, add another item takes forever SOLVED

Now that I've managed to track down the patch for this issue I realize that I probably wasted a lot of time trying to find alternatives to field collections, and even making a start on my own compound field type.

PDFPreview User error: ImageMagick error 1: convert: no images defined

On my local development environment (a macbook pro running El Capitan), whenever I installed PDFPreview and tried to view a page that utilized it, I would get an error like:

User error: ImageMagick error 1: convert: no images defined `/path/to/pdfpreview/folder/filetowrite.jpg' @ error/convert.c/ConvertImageCommand/3241

File access control

So I've asked questions on a reddit thread, and I've asked some questions on drupal answers. The people who answer are extremely helpful, and if I get some further answers it may change my mind, but at this stage, it seems to me that my best approach for managing access by role to individual files as part of a node with its own independent access controls might be to continue on the track I've been on:

Pages

Subscribe to RSS - ultrabob's blog