From 3e00ac64f599cb11b586da69d53381511029c6f1 Mon Sep 17 00:00:00 2001 From: maxime Date: Fri, 21 Jun 2019 12:03:27 +0200 Subject: [PATCH] added script to automatically create new routes --- gen_route.sh | 53 +++++++++++++++++++ route_template/.tmp/gpp/urls.py | 25 +++++++++ .../.tmp/port/templates/new/add.html | 32 +++++++++++ .../.tmp/port/templates/new/list.html | 8 +++ route_template/.tmp/port/urls/person.py | 13 +++++ route_template/.tmp/port/views/person.py | 22 ++++++++ route_template/app/templates/new/add.html | 12 +++++ route_template/app/templates/new/list.html | 9 ++++ route_template/app/urls/new.py | 13 +++++ route_template/app/views/new.py | 22 ++++++++ route_template/proj/urls.py | 25 +++++++++ 11 files changed, 234 insertions(+) create mode 100755 gen_route.sh create mode 100644 route_template/.tmp/gpp/urls.py create mode 100644 route_template/.tmp/port/templates/new/add.html create mode 100644 route_template/.tmp/port/templates/new/list.html create mode 100644 route_template/.tmp/port/urls/person.py create mode 100644 route_template/.tmp/port/views/person.py create mode 100644 route_template/app/templates/new/add.html create mode 100644 route_template/app/templates/new/list.html create mode 100644 route_template/app/urls/new.py create mode 100644 route_template/app/views/new.py create mode 100644 route_template/proj/urls.py diff --git a/gen_route.sh b/gen_route.sh new file mode 100755 index 0000000..8aabeaf --- /dev/null +++ b/gen_route.sh @@ -0,0 +1,53 @@ +#!/bin/bash +PWD_=$PWD +BASE='route_template' +NAME=$1 +NAME_UPPERFIRST=$(echo "$NAME"|sed 's/^./\U&/') + +PROJ='gpp' +APP='port' + + +rm -rf "$BASE.tmp" +cp -r $BASE $BASE.tmp +cd "$BASE.tmp" + +# update template with last routes +cp $PWD_/$PROJ/urls.py ./proj/urls.py +cp $PWD_/$APP/views.py ./proj/views.py + +# rename template dir names according to +# current projet +mv ./proj $PROJ +mv ./app $APP + +# PROJ +SEDCMD="s/# NEW_ROUTE/" +SEDCMD=$SEDCMD"path('$NAME\/'," +SEDCMD=$SEDCMD"include('$APP.urls.$NAME'," +SEDCMD=$SEDCMD"namespace='$NAME')),/" +sed -i "$SEDCMD" ./$PROJ/urls.py + +#APP +cd $APP +SEDCMD="s/#NAME#/$NAME/g;" +SEDCMD=$SEDCMD"s/#NAME_UPPERFIRST#/$NAME_UPPERFIRST/g" + +## URLS +sed -i "$SEDCMD" ./urls/new.py +mv urls/new.py urls/$NAME.py + +## VIEWS +sed -i "$SEDCMD" ./views/new.py +mv views/new.py views/$NAME.py + +## TEMPLATES +for FILE in ./templates/new/* +do + sed -i $SEDCMD $FILE; +done +mv ./templates/new ./templates/$NAME + +sed -i "$SEDCMD" ./urls/$NAME.py + +exit 0 diff --git a/route_template/.tmp/gpp/urls.py b/route_template/.tmp/gpp/urls.py new file mode 100644 index 0000000..e0b7360 --- /dev/null +++ b/route_template/.tmp/gpp/urls.py @@ -0,0 +1,25 @@ +"""gpp URL Configuration + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/2.2/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 include, path + +urlpatterns = [ + #path('', include('port.urls', namespace='index')), + path('port/', include('port.urls.port', namespace='port')), + path('person/', include('port.urls.person', namespace='person')), + path('boat/', include('port.urls.boat', namespace='boat')), + path('admin/', admin.site.urls), +] diff --git a/route_template/.tmp/port/templates/new/add.html b/route_template/.tmp/port/templates/new/add.html new file mode 100644 index 0000000..1e5e5ad --- /dev/null +++ b/route_template/.tmp/port/templates/new/add.html @@ -0,0 +1,32 @@ +{% extends "base.html" %} +{% block content %} +
+ {% csrf_token %} + +
+ Person + {{ form.person }} +
+
+ Address + {{ form.address }} +
+ +
+{% endblock %} diff --git a/route_template/.tmp/port/templates/new/list.html b/route_template/.tmp/port/templates/new/list.html new file mode 100644 index 0000000..8b2defb --- /dev/null +++ b/route_template/.tmp/port/templates/new/list.html @@ -0,0 +1,8 @@ +{% extends "base.html" %} +{% block content %} + +{% endblock %} diff --git a/route_template/.tmp/port/urls/person.py b/route_template/.tmp/port/urls/person.py new file mode 100644 index 0000000..bebcae3 --- /dev/null +++ b/route_template/.tmp/port/urls/person.py @@ -0,0 +1,13 @@ +from django.urls import path + +from ..views.person import * + +app_name = 'person' +urlpatterns = [ + path('', index, name='index'), + path('list', list_persons, name='list'), + path('form', form_person, name='form'), + path('add', add_person, name='add'), + +] + diff --git a/route_template/.tmp/port/views/person.py b/route_template/.tmp/port/views/person.py new file mode 100644 index 0000000..bc8101e --- /dev/null +++ b/route_template/.tmp/port/views/person.py @@ -0,0 +1,22 @@ +from django.shortcuts import render +from django.http import HttpResponse + +from pprint import pprint + +from ..models import * +from ..forms import * + +def index(request): + return HttpResponse("Hello Person") + +def list_persons(request): +# TO IMPLEMENT + pass + +def form_person(request): +# TO IMPLEMENT + pass + +def add_person(request): +# TO IMPLEMENT + pass diff --git a/route_template/app/templates/new/add.html b/route_template/app/templates/new/add.html new file mode 100644 index 0000000..acaece7 --- /dev/null +++ b/route_template/app/templates/new/add.html @@ -0,0 +1,12 @@ +{% extends "base.html" %} +{% block content %} +
+ {% csrf_token %} +
+ + #NAME_UPPERFIRST# + {{ form.#NAME# }} +
+ +
+{% endblock %} diff --git a/route_template/app/templates/new/list.html b/route_template/app/templates/new/list.html new file mode 100644 index 0000000..b2119c6 --- /dev/null +++ b/route_template/app/templates/new/list.html @@ -0,0 +1,9 @@ +{% extends "base.html" %} +{% block content %} + +{% endblock %} diff --git a/route_template/app/urls/new.py b/route_template/app/urls/new.py new file mode 100644 index 0000000..f71423b --- /dev/null +++ b/route_template/app/urls/new.py @@ -0,0 +1,13 @@ +from django.urls import path + +from ..views.#NAME# import * + +app_name = '#NAME#' +urlpatterns = [ + path('', index, name='index'), + path('list', list_#NAME#s, name='list'), + path('form', form_#NAME#, name='form'), + path('add', add_#NAME#, name='add'), + +] + diff --git a/route_template/app/views/new.py b/route_template/app/views/new.py new file mode 100644 index 0000000..ac2add6 --- /dev/null +++ b/route_template/app/views/new.py @@ -0,0 +1,22 @@ +from django.shortcuts import render +from django.http import HttpResponse + +from pprint import pprint + +from ..models import * +from ..forms import * + +def index(request): + return HttpResponse("Hello #NAME_UPPERFIRST#") + +def list_#NAME#s(request): +# TO IMPLEMENT + pass + +def form_#NAME#(request): +# TO IMPLEMENT + pass + +def add_#NAME#(request): +# TO IMPLEMENT + pass diff --git a/route_template/proj/urls.py b/route_template/proj/urls.py new file mode 100644 index 0000000..e0b7360 --- /dev/null +++ b/route_template/proj/urls.py @@ -0,0 +1,25 @@ +"""gpp URL Configuration + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/2.2/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 include, path + +urlpatterns = [ + #path('', include('port.urls', namespace='index')), + path('port/', include('port.urls.port', namespace='port')), + path('person/', include('port.urls.person', namespace='person')), + path('boat/', include('port.urls.boat', namespace='boat')), + path('admin/', admin.site.urls), +]