From 1ffd079c1ce766b20c323d136d8738406a6b8c2a Mon Sep 17 00:00:00 2001 From: Jakob Klepp Date: Sat, 15 Feb 2020 11:49:35 +0100 Subject: [PATCH 1/2] Format gnerated code files with black --- django_mycelium/asgi.py | 2 +- django_mycelium/settings.py | 83 +++++++++++++++++-------------------- django_mycelium/urls.py | 4 +- django_mycelium/wsgi.py | 2 +- manage.py | 4 +- mycelium/apps.py | 2 +- 6 files changed, 44 insertions(+), 53 deletions(-) diff --git a/django_mycelium/asgi.py b/django_mycelium/asgi.py index 2ae49fe..dc19ae7 100644 --- a/django_mycelium/asgi.py +++ b/django_mycelium/asgi.py @@ -11,6 +11,6 @@ import os from django.core.asgi import get_asgi_application -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'django_mycelium.settings') +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_mycelium.settings") application = get_asgi_application() diff --git a/django_mycelium/settings.py b/django_mycelium/settings.py index 9b29f20..1d8890e 100644 --- a/django_mycelium/settings.py +++ b/django_mycelium/settings.py @@ -20,7 +20,7 @@ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = 'owwylmqm5n@0h0ko((1$+ti7l#6q6hni4x0w^9)dk)5y6_r^c3' +SECRET_KEY = "owwylmqm5n@0h0ko((1$+ti7l#6q6hni4x0w^9)dk)5y6_r^c3" # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True @@ -31,54 +31,53 @@ ALLOWED_HOSTS = [] # Application definition INSTALLED_APPS = [ - 'django.contrib.admin', - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.messages', - 'django.contrib.staticfiles', - 'mycelium.apps.MyceliumConfig', + "django.contrib.admin", + "django.contrib.auth", + "django.contrib.contenttypes", + "django.contrib.sessions", + "django.contrib.messages", + "django.contrib.staticfiles", + "mycelium.apps.MyceliumConfig", ] MIDDLEWARE = [ - 'django.middleware.security.SecurityMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.middleware.common.CommonMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - 'django.middleware.clickjacking.XFrameOptionsMiddleware', + "django.middleware.security.SecurityMiddleware", + "django.contrib.sessions.middleware.SessionMiddleware", + "django.middleware.common.CommonMiddleware", + "django.middleware.csrf.CsrfViewMiddleware", + "django.contrib.auth.middleware.AuthenticationMiddleware", + "django.contrib.messages.middleware.MessageMiddleware", + "django.middleware.clickjacking.XFrameOptionsMiddleware", ] -ROOT_URLCONF = 'django_mycelium.urls' +ROOT_URLCONF = "django_mycelium.urls" TEMPLATES = [ { - 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [os.path.join(BASE_DIR, 'templates')] - , - 'APP_DIRS': True, - 'OPTIONS': { - 'context_processors': [ - 'django.template.context_processors.debug', - 'django.template.context_processors.request', - 'django.contrib.auth.context_processors.auth', - 'django.contrib.messages.context_processors.messages', - ], + "BACKEND": "django.template.backends.django.DjangoTemplates", + "DIRS": [os.path.join(BASE_DIR, "templates")], + "APP_DIRS": True, + "OPTIONS": { + "context_processors": [ + "django.template.context_processors.debug", + "django.template.context_processors.request", + "django.contrib.auth.context_processors.auth", + "django.contrib.messages.context_processors.messages", + ] }, - }, + } ] -WSGI_APPLICATION = 'django_mycelium.wsgi.application' +WSGI_APPLICATION = "django_mycelium.wsgi.application" # Database # https://docs.djangoproject.com/en/3.0/ref/settings/#databases DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), + "default": { + "ENGINE": "django.db.backends.sqlite3", + "NAME": os.path.join(BASE_DIR, "db.sqlite3"), } } @@ -88,26 +87,20 @@ DATABASES = { AUTH_PASSWORD_VALIDATORS = [ { - 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator" }, + {"NAME": "django.contrib.auth.password_validation.MinimumLengthValidator"}, + {"NAME": "django.contrib.auth.password_validation.CommonPasswordValidator"}, + {"NAME": "django.contrib.auth.password_validation.NumericPasswordValidator"}, ] # Internationalization # https://docs.djangoproject.com/en/3.0/topics/i18n/ -LANGUAGE_CODE = 'en-us' +LANGUAGE_CODE = "en-us" -TIME_ZONE = 'UTC' +TIME_ZONE = "UTC" USE_I18N = True @@ -119,4 +112,4 @@ USE_TZ = True # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/3.0/howto/static-files/ -STATIC_URL = '/static/' +STATIC_URL = "/static/" diff --git a/django_mycelium/urls.py b/django_mycelium/urls.py index 78d0bea..de2e137 100644 --- a/django_mycelium/urls.py +++ b/django_mycelium/urls.py @@ -16,6 +16,4 @@ Including another URLconf from django.contrib import admin from django.urls import path -urlpatterns = [ - path('admin/', admin.site.urls), -] +urlpatterns = [path("admin/", admin.site.urls)] diff --git a/django_mycelium/wsgi.py b/django_mycelium/wsgi.py index b7ef549..5f19dfb 100644 --- a/django_mycelium/wsgi.py +++ b/django_mycelium/wsgi.py @@ -11,6 +11,6 @@ import os from django.core.wsgi import get_wsgi_application -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'django_mycelium.settings') +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_mycelium.settings") application = get_wsgi_application() diff --git a/manage.py b/manage.py index e695678..071de8e 100755 --- a/manage.py +++ b/manage.py @@ -5,7 +5,7 @@ import sys def main(): - os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'django_mycelium.settings') + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_mycelium.settings") try: from django.core.management import execute_from_command_line except ImportError as exc: @@ -17,5 +17,5 @@ def main(): execute_from_command_line(sys.argv) -if __name__ == '__main__': +if __name__ == "__main__": main() diff --git a/mycelium/apps.py b/mycelium/apps.py index ac45c29..98b2b50 100644 --- a/mycelium/apps.py +++ b/mycelium/apps.py @@ -2,4 +2,4 @@ from django.apps import AppConfig class MyceliumConfig(AppConfig): - name = 'mycelium' + name = "mycelium" From 98e5725281a2215b21d3add04e540dc521ed358f Mon Sep 17 00:00:00 2001 From: Jakob Klepp Date: Sat, 15 Feb 2020 12:16:26 +0100 Subject: [PATCH 2/2] Add rest_framework --- Readme.md | 11 +++++++++++ django_mycelium/settings.py | 1 + django_mycelium/urls.py | 10 +++++++++- requirements.nix | 25 +++++++++++++++++++++---- requirements.txt | 1 + requirements_frozen.txt | 3 ++- 6 files changed, 45 insertions(+), 6 deletions(-) create mode 100644 Readme.md diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000..c17a30d --- /dev/null +++ b/Readme.md @@ -0,0 +1,11 @@ +- Update `requirements.nix`: + +```sh +pypi2nix -V python3 -r requirements.txt +``` + +- Generate interpreter: + +```sh +nix build -f requirements.nix interpreter +``` diff --git a/django_mycelium/settings.py b/django_mycelium/settings.py index 1d8890e..a72c95b 100644 --- a/django_mycelium/settings.py +++ b/django_mycelium/settings.py @@ -37,6 +37,7 @@ INSTALLED_APPS = [ "django.contrib.sessions", "django.contrib.messages", "django.contrib.staticfiles", + "rest_framework", "mycelium.apps.MyceliumConfig", ] diff --git a/django_mycelium/urls.py b/django_mycelium/urls.py index de2e137..105f374 100644 --- a/django_mycelium/urls.py +++ b/django_mycelium/urls.py @@ -15,5 +15,13 @@ Including another URLconf """ from django.contrib import admin from django.urls import path +from rest_framework.schemas import get_schema_view -urlpatterns = [path("admin/", admin.site.urls)] +urlpatterns = [ + path("admin/", admin.site.urls), + path( + "openapi", + get_schema_view(title="Mycelium", description="API", version="0.1.0"), + name="openapi-schema", + ), +] diff --git a/requirements.nix b/requirements.nix index bfe27fb..bb3395a 100644 --- a/requirements.nix +++ b/requirements.nix @@ -153,10 +153,10 @@ let }; "markdown" = python.mkDerivation { - name = "markdown-3.2"; + name = "markdown-3.2.1"; src = pkgs.fetchurl { - url = "https://files.pythonhosted.org/packages/3a/0b/6deec230d8c30f1ae569e4cfca5fd202d912dbf61f338d4d86b284a40812/Markdown-3.2.tar.gz"; - sha256 = "5ad7180c3ec16422a764568ad6409ec82460c40d1631591fa53d597033cc98bf"; + url = "https://files.pythonhosted.org/packages/98/79/ce6984767cb9478e6818bd0994283db55c423d733cc62a88a3ffb8581e11/Markdown-3.2.1.tar.gz"; + sha256 = "90fee683eeabe1a92e149f7ba74e5ccdc81cd397bd6c516d93a8da0ef90b6902"; }; doCheck = commonDoCheck; format = "setuptools"; @@ -188,6 +188,23 @@ let }; }; + "pyyaml" = python.mkDerivation { + name = "pyyaml-5.3"; + src = pkgs.fetchurl { + url = "https://files.pythonhosted.org/packages/3d/d9/ea9816aea31beeadccd03f1f8b625ecf8f645bd66744484d162d84803ce5/PyYAML-5.3.tar.gz"; + sha256 = "e9f45bd5b92c7974e59bcd2dcc8631a6b6cc380a904725fce7bc08872e691615"; +}; + doCheck = commonDoCheck; + format = "setuptools"; + buildInputs = commonBuildInputs ++ [ ]; + propagatedBuildInputs = [ ]; + meta = with pkgs.stdenv.lib; { + homepage = "https://github.com/yaml/pyyaml"; + license = licenses.mit; + description = "YAML parser and emitter for Python"; + }; + }; + "setuptools" = python.mkDerivation { name = "setuptools-45.2.0"; src = pkgs.fetchurl { @@ -225,7 +242,7 @@ let localOverridesFile = ./requirements_override.nix; localOverrides = import localOverridesFile { inherit pkgs python; }; commonOverrides = [ - (let src = pkgs.fetchFromGitHub { owner = "nix-community"; repo = "pypi2nix-overrides"; rev = "ebc21a64505989717dc395ad92f0a4d7021c44bc"; sha256 = "1p1bqm80anxsnh2k26y0f066z3zpngwxpff1jldzzkbhvw8zw77i"; } ; in import "${src}/overrides.nix" { inherit pkgs python; }) + (let src = pkgs.fetchFromGitHub { owner = "nix-community"; repo = "pypi2nix-overrides"; rev = "fbbcadd9e5fedade659ba2585893d3a8cbba8e56"; sha256 = "1fmqib6j08lswfw0agbgy1hdib3rfmrzx2x5zyzrqbkvc80a734b"; } ; in import "${src}/overrides.nix" { inherit pkgs python; }) ]; paramOverrides = [ (overrides { inherit pkgs python; }) diff --git a/requirements.txt b/requirements.txt index 349a45e..ebb318e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,3 +2,4 @@ django==3 djangorestframework markdown django-filter +pyyaml diff --git a/requirements_frozen.txt b/requirements_frozen.txt index a4b1f73..77bb201 100644 --- a/requirements_frozen.txt +++ b/requirements_frozen.txt @@ -2,6 +2,7 @@ asgiref==3.2.3 Django==3.0 django-filter==2.2.0 djangorestframework==3.11.0 -Markdown==3.2 +Markdown==3.2.1 pytz==2019.3 +PyYAML==5.3 sqlparse==0.3.0