Django: User: Permissionコードのどれかを保有しているユーザーを検索

Django: User: Permission コードのどれかを持っているユーザーを検索 1 2 3 from operator import or_ from functools import reduce from django.db.models import Q 1 2 3 4 5 6 7 8 9 10 11 12 13 class UserQuerySet(models.QuerySet): def filter_has_perm(self, perm_codeset: List[str]): """ Permission code(List[app_label.codename]) の一覧のどれかを含むユーザーの検索 """ def _query(item): return reduce(or_, [ Q(user_permissions__content_type__app_label=item[0], user_permissions__codename=item[1]), Q(groups__permissions__content_type__app_label=item[0], groups__permissions__codename=item[1]), ]) query = reduce(or_, map(_query, map(lambda i: i.strip().split("."), perm_codeset))) return self.filter(query) 1 2 3 4 5 6 7 8 9 10 11 12 13 class UserFilter(django_filters.FilterSet) def filter_permission_codes__in_csv(self, queryset, name, value): if not value: return queryset values = value.split(",") if isinstance(value, str) else value if len(values) < 1: return queryset return queryset.filter_has_perm(values) permission_codes__in_csv = DF.BaseInFilter( label="パーミッションコード(CSV)", method="filter_permission_codes__in_csv", )

2023年4月23日 · 1 分

Djanog: Permission: app_lablel.codename

Django: Permission: app_label.codename をアノテートする 1 2 3 from django.db.models import F, Value from django.db.models.functions import Concat from django.contrib.auth import models as auth_models 1 2 3 4 5 6 7 class PermissionDef: @classmethod def choices(cls): return auth_models.Permission.objects.annotate( code=Concat("content_type__app_label", Value("."), "codename") ).values_list("code", "name") ただし、件数が大きいので, フィールドのchoices に使うのは現実的ではない

2023年4月23日 · 1 分

DRF: Userを所属グループで検索

django-filters: Userを所属グループで検索 Django REST Frameworkとdjango-filterを使って、Userが所属しているGroupを複数指定して検索することはできます。 以下のように、django-filter.FilterSetを継承したフィルタセットを定義し、filters.ModelMultipleChoiceFilterを使って、Userが所属しているGroupを複数指定することができます。 1 2 3 4 5 6 7 8 9 10 11 12 13 from django.contrib.auth.models import User, Group import django_filters class UserFilter(django_filters.FilterSet): groups = django_filters.ModelMultipleChoiceFilter( field_name='groups__name', to_field_name='name', queryset=Group.objects.all() ) class Meta: model = User fields = ['username', 'groups'] 上記の例では、Userモデルに対するフィルタセットを定義しています。groupsフィールドには、django_filters.ModelMultipleChoiceFilterを使って、Userが所属しているGroupを複数指定することができます。field_nameには、Userモデルのgroups__nameフィールドを指定し、to_field_nameには、Groupモデルのnameフィールドを指定しています。 ...

2023年4月23日 · 1 分

Python: モジュールの実装パス

モジュール名からファイルを見つける Pythonのモジュール名が与えられた時、そのモジュールの実装されているファイルのパスを調べるには、以下のようにします。 1 2 3 4 5 6 7 import importlib.util def get_module_path(module_name): spec = importlib.util.find_spec(module_name) if spec is None: return None return spec.origin 上記のように、importlib.util.find_spec()関数を使って、モジュール名からspecオブジェクトを取得し、spec.origin属性を参照することで、モジュールが実装されているファイルのパスを取得することができます。 ソース: Bing との会話 2023/4/23 (1) 6. モジュール — Python 3.11.3 ドキュメント. https://docs.python.org/ja/3/tutorial/modules.html. (2) Pythonで独自モジュールのディレクトリパスを通す方法 …. https://lightgauge.net/language/python/add-module-path. (3) 【Python】パッケージ・モジュールの検索と import - Qiita. https://qiita.com/shinsa82/items/5004a3ea63594f20190d. Djangoのアプリケーションの場合 1 2 3 4 5 6 7 8 from django.apps import apps class Def: @property def path(self): app_label = self.__module__.split(".")[0] conf = apps.get_app_config(app_label) return conf.path

2023年4月23日 · 1 分

Django: User ログインシグナル

ログインシグナル Djangoでログインした時のイベントをシグナルで受け取る方法については、Djangoの公式ドキュメントに詳しく記載されています¹。以下のように、django.contrib.auth.signals.user_logged_inシグナルを使用して、ログイン時に実行する関数を定義し、receiver()デコレーターでシグナルを受信する関数を登録します。 1 2 3 4 5 6 7 from django.contrib.auth.signals import user_logged_in from django.dispatch import receiver @receiver(user_logged_in) def user_logged_in_callback(sender, request, user, **kwargs): # ログイン時に実行する処理 pass このように、シグナルを使用することで、ログイン時に任意の処理を実行することができます。 ソース: Bing との会話 2023/4/21 (1) 「超簡単」Djangoでログインページの実装 - Qiita. https://qiita.com/Yuji-Sakata0110/items/3722fa651e02eafc4d01. (2) 【Django】ログイン・ログアウト機能の実装 - Qiita. https://qiita.com/onishi_820/items/c69ebb6a4e34da0f34d4. (3) Django パスワード試行回数ロックとランダムかつ有効期限付き …. https://qiita.com/startours777/items/5b1fc415e047a2044129.

2023年4月21日 · 1 分

tmux: セッション名

tmux セッション名 tmuxで現在のセッション名を変更するにはどうしたらいいでしょうか? tmuxで現在のセッション名を変更するには、以下の方法があります。 セッションを作成する時に tmux new-session -s <name> と指定する²⁴。 アタッチしている状態で C-b + $ または、 :rename-session <name> で変更する²⁴。 アタッチしてない状態で tmux rename -t <old-name> <new-name> でも可能です²⁴。 ソース: Bing との会話 2023/4/19 (1) tmuxの基本的な使い方とコマンドのまとめ - TASK NOTES. https://www.task-notes.com/entry/20150711/1436583600. (2) tmuxでよく使うコマンド - Qiita. https://qiita.com/suisuina/items/fb7cf7590595d62957fd. (3) tmuxでよく使うコマンド - Qiita. https://bing.com/search?q=tmux+%e3%82%bb%e3%83%83%e3%82%b7%e3%83%a7%e3%83%b3%e5%90%8d+%e5%a4%89%e6%9b%b4. (4) tmuxを使いこなそう(ウインドウ、ペイン、セッション、ア …. https://qiita.com/shoma2da/items/2e68c1e59938eb0c2f83. (5) tmuxでセッションの名前を変更するにはどうすればよいですか?. https://qastack.jp/superuser/428016/how-do-i-rename-a-session-in-tmux.

2023年4月19日 · 1 分

半角カナ文字

半角カナ文字 Pythonで半角カナ文字かどうかを判定するには、正規表現を使う方法があります。⁴⁶ 例えば、次のような関数を定義して、文字列が半角カナだけで構成されているかどうかをチェックできます。 1 2 3 4 import re def is_hankaku_kana(s): return re.match(r"^[ヲ-゚]+$", s) is not None この関数は、文字列sが半角カナの範囲(ヲから゚)にマッチするかどうかを判定します。⁶ 他の言語(JavaScriptやC#など)でも同様の方法が使えます。¹² ソース: Bing との会話 2023/4/18 (1) python 正規表現を使った文字列チェック【ひらがな・カタカナ …. https://qiita.com/mocha_xx/items/00c5a968f7069d8e092c アクセス日時 2023/4/18. (2) Pythonで正規表現を使って数値/英字チェックを実装する (コピペ …. https://www.sukerou.com/2018/12/python.html アクセス日時 2023/4/18. (3) [JavaScript] 全角カナ、半角カナの判定を行う方法 - YoheiM .NET. https://www.yoheim.net/blog.php?q=20191105 アクセス日時 2023/4/18. (4) [C#共通関数] 半角カナチェックFunction - C#ちょこっとリファレンス. https://csharp.programmer-reference.com/function-check-han-kana/ アクセス日時 2023/4/18. (5) 文字がひらがなか、カタカナか、漢字か、英数字か調べる - .NET …. https://dobon.net/vb/dotnet/string/ishiragana.html アクセス日時 2023/4/18. (6) python - 半角数字・文字のチェック方法 - スタック・オーバーフロー. https://ja.stackoverflow.com/questions/90953/%E5%8D%8A%E8%A7%92%E6%95%B0%E5%AD%97-%E6%96%87%E5%AD%97%E3%81%AE%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E6%96%B9%E6%B3%95 アクセス日時 2023/4/18. 半角カナ文字を判定するPYPIパッケージはありますか? 半角カナ文字を判定する専用のPYPIパッケージは見つかりませんでしたが、標準ライブラリのunicodedataモジュールを使うことができます。¹ ...

2023年4月18日 · 2 分

Django: Admin: ManyToManyField Inline (raw_id_fields)

Django: Admin: ManyToManyField Inline (raw_id_fields) raw_id_fields and ManyToMany in Django admin 手順: ManyToManyField を exclude にいれて表示させないようにする Inline Admin を定義する. model には through を定義する 対象モデルフィールドを raw_id_fields に入れる

2023年4月16日 · 1 分

AWS CodeWhisperer & IAM Identity Center

AWS CodeWhisperer & IAM Identity Center CodeWhisperer IAM Identity Center: IAM Identity Centerを有効にする ユーザーを追加する ユーザーのメアド認証 パスワードリセットをメアドに送り、パスワード設定してログイン可能にする CodeWhisperer: Codewhiper の利用を開始する CodeWhispererを IAM Identity Centerのアプリケーションに登録する IAM Identity Centerで登録したユーザーを CodeWhispererで使えるようにする VSCode: AWS Toolkit プラグインを入れる CodeWhisperer の利用を開始:Connect using AWS Identity Center で AWS Identity Center URLを入力 (https://x-xxxxxxx.awsapps.com/start) AWS Toolkitにアクセストークンを取得( 認証コードをブラウザに入力して、IAM Identity Centerにログイン) 資料 AWS IAM Identity CenterでIAMアカウントを統一する AWS IAM Identity Center(旧:AWS SSO)を使ってみた Amazon CodeWhisperer を IAM Identity Center に統合させて使ってみた

2023年4月15日 · 1 分

eleventy/11ty

eleventy/11ty eleventyとは、静的サイトジェネレーターの一種です¹²³。静的サイトジェネレーターとは、ビルドにより静的なHTMLファイルを生成するツールのことです³。eleventyの特徴は、以下のようなものがあります¹²³。 テンプレートエンジンが自由に選べる。NunjucksやLiquid、Markdownなど、様々なテンプレートエンジンを使うことができます¹²³。 CSSやJSファイル周りの処理がシンプル。eleventyはCSSやJSファイルをそのままコピーするだけでなく、SassやBabelなどのプラグインを使って変換することもできます¹。 データファイルを利用できる。JSONやYAMLなどのデータファイルをテンプレートに渡して、動的にコンテンツを生成することができます¹³。 ページネーションやコレクションなどの機能が豊富。ブログ記事やカテゴリーなどのコレクションを作成したり、ページネーションやタグなどの機能を利用したりすることができます¹³。 以上がeleventyについての情報です。興味があれば、公式サイトやドキュメントを参照してみてください。 ソース: Bing との会話 2023/4/15 (1) 静的サイトジェネレーター 11ty/eleventy をもっと使ってみる - Qiita. https://qiita.com/yuzuru_xa/items/c2148a9ce31f852d8c9a アクセス日時 2023/4/15. (2) 11ty(eleventy)で静的サイト構築 | 株式会社 エヴォワークス …. https://www.evoworx.co.jp/blog/11ty-static-site-generator/ アクセス日時 2023/4/15. (3) 静的サイトジェネレーターEleventy 第1回 Eleventyとその特徴 …. https://www.codegrid.net/articles/2019-11ty-1/ アクセス日時 2023/4/15.

2023年4月15日 · 1 分