From d7310f5ef36400e00b4d27ffa3287468cbedef44 Mon Sep 17 00:00:00 2001 From: noor Date: Mon, 17 Oct 2022 23:58:45 +0300 Subject: [PATCH 1/2] task 2 --- config/settings.py | 1 + config/urls.py | 25 +++++++++---------------- files_management/controller.py | 7 +++++++ 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/config/settings.py b/config/settings.py index e332a2b..df8f25d 100644 --- a/config/settings.py +++ b/config/settings.py @@ -37,6 +37,7 @@ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', + 'files_management', ] MIDDLEWARE = [ diff --git a/config/urls.py b/config/urls.py index b6601c1..467aa29 100644 --- a/config/urls.py +++ b/config/urls.py @@ -1,21 +1,14 @@ -"""config URL Configuration - -The `urlpatterns` list routes URLs to views. For more information please see: - https://docs.djangoproject.com/en/4.1/topics/http/urls/ -Examples: -Function views - 1. Add an import: from my_app import views - 2. Add a URL to urlpatterns: path('', views.home, name='home') -Class-based views - 1. Add an import: from other_app.views import Home - 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') -Including another URLconf - 1. Import the include() function: from django.urls import include, path - 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) -""" from django.contrib import admin from django.urls import path +from ninja import NinjaAPI +from files_management.controller import post_controller + + + +api = NinjaAPI() +api.add_router('/' , post_controller) urlpatterns = [ path('admin/', admin.site.urls), -] + path('api/', api.urls) +] \ No newline at end of file diff --git a/files_management/controller.py b/files_management/controller.py index 45a329d..476620e 100644 --- a/files_management/controller.py +++ b/files_management/controller.py @@ -1,2 +1,9 @@ from django.shortcuts import render # Create your views here. +from ninja import Router + +post_controller = Router() + +@post_controller.get('/') +def list_post(request): + return{'Message:goooo'} \ No newline at end of file From 85ed18e8ca7f4559b11abd55c38547c22ba77376 Mon Sep 17 00:00:00 2001 From: noor Date: Wed, 19 Oct 2022 18:52:07 +0300 Subject: [PATCH 2/2] solved the task,finally.. --- config/settings.py | 3 ++- config/urls.py | 2 +- files_management/controller.py | 39 +++++++++++++++++++++++++++++----- 3 files changed, 37 insertions(+), 7 deletions(-) diff --git a/config/settings.py b/config/settings.py index df8f25d..f9efde6 100644 --- a/config/settings.py +++ b/config/settings.py @@ -11,6 +11,7 @@ """ from pathlib import Path +from typing import Any # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent @@ -25,7 +26,7 @@ # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True -ALLOWED_HOSTS = [] +ALLOWED_HOSTS = ['*'] # Application definition diff --git a/config/urls.py b/config/urls.py index 467aa29..c2d46dc 100644 --- a/config/urls.py +++ b/config/urls.py @@ -6,7 +6,7 @@ api = NinjaAPI() -api.add_router('/' , post_controller) +api.add_router('/posts' , post_controller) urlpatterns = [ path('admin/', admin.site.urls), diff --git a/files_management/controller.py b/files_management/controller.py index 476620e..aa0ebec 100644 --- a/files_management/controller.py +++ b/files_management/controller.py @@ -1,9 +1,38 @@ +import re from django.shortcuts import render -# Create your views here. -from ninja import Router +from django.core.files.storage import default_storage +from django.core.files.base import ContentFile +from ninja import Router post_controller = Router() -@post_controller.get('/') -def list_post(request): - return{'Message:goooo'} \ No newline at end of file +# function to get all the posts +@post_controller.get('') +def list_posts(request): + _, filenames = default_storage.listdir("posts") + return list(sorted(re.sub(r"\.md$", "", filename) + for filename in filenames if filename.endswith(".md"))) + +# function to create new post and save it +@post_controller.post('') +def save_post(request , title , content): + filename = f"posts/{title}.md" + if default_storage.exists(filename): + default_storage.delete(filename) + default_storage.save(filename, ContentFile(content)) + +# function to get the post using the title +@post_controller.get('/{title}') +def get_post(request ,title): + try: + f = default_storage.open(f"posts/{title}.md") + return f.read().decode("utf-8") + except FileNotFoundError: + return None +#function to delete a post using title +@post_controller.delete('/{title}') +def del_post(request ,title): + filename = f"posts/{title}.md" + default_storage.delete(filename) + return {'messege': 'deleted.'} + \ No newline at end of file