Python

django-datatables-viewによるServer-side processingで、モデルの複数列を結合して表示する

django-datatables-viewで、モデルの複数列を結合して表示しようと考えた時に詰まったことがあったため、メモを残します。 目次 環境 やりたいこと エラーとなる方法 動作する方法 ソースコード 環境 Python 3.8 Django 3.1.2 django-datatables-view 1.19.1…

django-datatables-viewによるServer-side processingで、色々なソートを試してみた

ライブラリ django-datatables-view を使ってjQuery DataTableのServer Side Processing を行った際、ソートを実装することがありました。 ただ、ソートを実装しようとしたところ詰まったことがあったため、メモを残します。 目次 環境 ソートを意識しない時…

django-datatables-viewによるServer-side processingで、モデルの外部キーの項目を表示する

バックエンドがDjangoの環境にて、jQuery DataTable を使う機会がありました。 DataTables | Table plug-in for jQuery データ量がそれなりにあったので、DataTableのServer Side Processingを使いました。 DataTables example - Server-side processing Dja…

Rust + PyO3にて、自作のPythonモジュールをRustで実行する

RustからPythonのモジュールを使うときは、 PyO3 が便利です。 PyO3/pyo3: Rust bindings for the Python interpreter ただ、公式ドキュメントでは、Pythonの標準モジュールをimportして実行する方法は記載されていたものの、自作のPythonモジュールについて…

Django REST Framework + jQuery + S3で画像ファイルアップローダーを作った時のメモ

Django REST Framework + jQuery + S3で画像ファイルアップローダーを作る機会がありました。 その中で色々と考えたことをメモに残します。 なお、実装の詳細は以下となります。 thinkAmi-sandbox/image_uploader_by_drf_jquery_s3 目次 環境 仕様など 画面…

Django REST FrameworkのDEFAULT_PARSER_CLASSESの初期値について

Django REST Frameworkでは、 DEFAULT_PARSER_CLASSES の設定により、グローバルで使われるParserが決まります。 Parsers - Django REST framework ただ、その初期値をうっかり忘れていたので、メモを残します。 目次 環境 うっかりしていたこと 動作確認 ア…

Djangoのmodels.ForeignKeyにおけるrelated_nameとrelated_query_nameについて調べてみた

最近、同僚の @qtatsu に「models.ForeignKeyのrelated_nameに + を指定すると逆引き不可にできる」ということを教わって、そういえばこのあたりを理解してないなと思って調べた時のメモです。 目次 環境 models.ForeignKeyにおけるrelated_nameについて rel…

django-rulesを使って、オブジェクトレベルの認可判定をViewとテンプレートでそれぞれ実装してみた

Djangoには認可機能が標準で用意されています。 ただ、標準の認可機能の場合、モデルごとの認可判定は可能な一方で、オブジェクトごとの認可判定ができないようです。 Django のパーミッションフレームワークはオブジェクトパーミッション基盤を持っています…

Django + django-rules + 独自Userモデルで、has_permテンプレートタグを使うときの注意点

Djangoには標準で認可(Permission)の仕組みがあります。 ただ、Django標準の認可はモデルレベルです。オブジェクトレベルは Django のパーミッションフレームワークはオブジェクトパーミッション基盤を持っていますが、コアには実装されていません。 https:/…

Pythonで、unittest.mock.patchを使って定数を差し替える

小ネタです。 以前、 unittest.mock.patch を使ってデコレータを差し替えたことがありました。 Pythonで、unittest.mock.patchを使ってデコレータを差し替える - メモ的な思考的な 今回は、unittest.mock.patch を使って定数を差し替えてみます。 目次 環境 …

DjangoのListViewで、対象データがない場合は404ページを表示する

DjangoでListViewを使う場合、デフォルトではモデルにデータがない時は HTTP200 で、データがない状態で表示されます。 ただ、モデルにデータがない場合に HTTP404 を表示したい時はどうするか、調べたことをメモしておきます。 目次 環境 調査 allow_empty=…

AWS CDK + Pythonで、ネストした AWS StepFunctions のワークフローを作ってみた

今年の7月にAWS CDK (Cloud Development Kit) がGAとなりました。 AWS クラウド開発キット (CDK) – TypeScript と Python 用がご利用可能に | Amazon Web Services ブログ APIリファレンスも公開されているため、これでPythonを使ってAWSのリソースを作成す…

#pyconjp 発表「知ろう!使おう!HDF5ファイル!」の落ち穂拾い

PyCon JP 2019にて発表をした際、いくつか質問をいただきました。 前回の記事にもあるように、当時きちんと回答できたか不安だったため、今回落ち穂拾いとしてまとめてみます。 なお、誤りや過不足などがありましたら、ご指摘いただけるとありがたいです。 …

AWS AppSyncのPipeline Resolverを使って、複数のDynamoDBの値をマージして返すAPIを作成してみた

前回・前々回と、単一のデータソースから値を取得するAWS AppSync APIを作成しました。 Pythonで、 AWS AppSyncのquery・mutation・subscriptionを試してみた - メモ的な思考的な Pythonで、AWS Lambda をData sourceに持つ AWS AppSync API を呼んでみた - …

Pythonで、AWS Lambda をData sourceに持つ AWS AppSync API を呼んでみた

前回、Data sourceがDynamoDBである AWS AppSync APIをPythonで呼んでみました。 Pythonで、 AWS AppSyncのquery・mutation・subscriptionを試してみた - メモ的な思考的な ただ、AWS AppSync のData sourceでは、DynamoDBの他 Amazon Elasticsearch AWS Lam…

Pythonで、 AWS AppSyncのquery・mutation・subscriptionを試してみた

最近 AWS AppSync にふれる機会がありました。 そこで今回は、AWS AppSyncのGraphQLインタフェースを使って、Pythonでquery・mutation・subscriptionを試してみましたので、メモを残します。 目次 環境 長いのでまとめ AWS AppSyncでAPIを作る mutationの実…

DjangoCongress JP 2019 に参加 & 発表しました #djangocongress

5/18に開催された、DjangoCongress JP 2019に参加 & 発表しました。 DjangoCongress JP 2019 昨年同様、開催場所はサイボウズ株式会社の東京オフィスでした。 東京オフィス アクセスマップ | サイボウズ株式会社 今年も良い感じの雰囲気でした。 自分の発表…

Windows10 + pyinstallerで、Djangoをexe化して配布可能にしてみた

最近、Windows10 + pyinstallerで、 WindowsでDjangoアプリを開発 開発したDjangoアプリを、別のWindows端末に配布 別のWindows端末にて、Djangoアプリを実行 をしました。 pyinstallerのWikiに方法が記載されていますが、いろいろとハマったため、メモを残…

Python3.4 & Django1.8な個人アプリを、Python3.7 & Django 2.1 へとアップデートした

以前、食べたリンゴの割合をグラフ化するHerokuアプリを作りました。 Python + Django + Highcharts + Herokuで食べたリンゴの割合をグラフ化してみた - メモ的な思考的な Python3.4 & Django1.8な環境で作成した2015年以降、食べたりんごの種類を記載してい…

HerokuのCedar-14に、Python3.7系アプリをデプロイしたらエラーになった

昔作成したHerokuアプリのPythonが3.4系だったため、Python3.7系で動作するようにアプリを修正し、Herokuへデプロイしたところ、 $ git push heroku feature/migrate-to-django2:master Enumerating objects: 171, done. Counting objects: 100% (171/171), …

pytestを4系にアップデートしたら、pytest-freezegun 0.2.0 でエラーが出た

Pythonで日付まわりをテストする場合、日付を固定できる freezegun が便利です。 spulec/freezegun: Let your Python tests travel through time また、pytestの場合、pytestのプラグインとして pytest-freezegun があります。 ktosiek/pytest-freezegun: Ea…

Python + Zeep にて、SOAPの wsi:swaRef でファイルを送信する

前回、swaRef にて、SOAPでファイルを送信してみました。 Python + Zeep にて、SOAPのswaRef でファイルを送信する - メモ的な思考的な 今回は、wsi:swaRefという仕様でファイルを送信してみます。 仕様書 Attachments Profile - Version 1.0 (Final) Attach…

Python + Zeep にて、SOAPのswaRef でファイルを送信する

以前、SOAP with Attachments (SwA) にて、SOAPでファイルを送信してみました。 Python + Zeep にて、SOAP with Attachment (SwA) でファイルを送信する - メモ的な思考的な 今回は、SwAに似た swaRefという仕様でファイルを送信してみます。 仕様書:SOAP M…

WSDLのelementにattributeを追加し、Python + ZeepでSOAPのエンベロープを作成する

swaRefの仕様書を眺めていたところ、 <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <claim:insurance_claim_auto id="insurance_claim_document_id" xmlns:claim="http://schemas.risky-stuff.com/Auto-Claim"> </claim:insurance_claim_auto></soap-env:body></soap-env:envelope>

Python + Zeep にて、SOAP with Attachment (SwA) でファイルを送信する

前回、inline (Base64エンコード) にて、SOAPでファイルを送信してみました。 Python + Zeepにて、SOAPのinline(Base64エンコード)でファイルを送信する - メモ的な思考的な 今回は、SOAP with attachments (以降、SwA) でファイルを送信してみます。実装に…

Python + Zeepにて、SOAPのinline(Base64エンコード)でファイルを送信する

SOAPでファイルを送信する方法を調べたところ、5つほど見つかりました。 inline (Base64 エンコード) SOAP with Attachments (SwA) swaRef wsi:swaRef MTOM 参考:SOAP Attachments and Files | SoapUI Zeepではどれが実装されているかを調べたところ、eleme…

Python3で、bytes型の文字列にstr型の文字列を埋め込むため、%演算子 + %a を使う

Python3では、文字列表現として str型 bytes型 の2つの型があります。 通常はstr型を使うのですが、データ通信などではbytes型を使ったりします。 両者は別モノなので、 $ python Python 3.7.1 (default, Dec 19 2018, 21:58:12) [Clang 10.0.0 (clang-1000.…

GCP Cloud Functions + Python + Slack Outgoing WebHooks App + Zaim APIで、SlackからZaimへ登録する

最近、 Zaim を使って家計簿をつけています。 https://zaim.net/ ただ、時々入力を忘れたり、重複入力してしまうことがありました。 そこで、 日頃Slackを使っている ZaimにはWeb APIがある ということから、SlackからZaimのデータを登録する仕組みを作りま…

Python 3.6.4で、pip install python-memcached==1.58 したところ「tuple index out of range」エラー

python-memcachedの環境構築をする時に # 仮想環境を作る $ python -m venv env364 # アクティベート $ source env364/bin/activate # Pythonのバージョンを確認 (env364) $ python --version Python 3.6.4 # pipでインストール (env364) $ pip install pyth…

Python + msoffcrypto-toolで、Excelの読み取りパスワードを解除する

前回、Python + openpyxlで、ブックやシートの保護・解除を試しました。 Python + openpyxlで、ブックやシートの保護・解除を試してみた - メモ的な思考的な その際、openpyxlではExcelの読み取りパスワードを解除できませんでした。 ただ、読み取りパスワー…