From cf30c677db4ec3adb78cc8b3ef667fc830f814dc Mon Sep 17 00:00:00 2001 From: "Chen, Chien-ting" Date: Tue, 5 Jan 2021 23:31:36 +0800 Subject: [PATCH] initial commit --- gazhdict/addentry/__init__.py | 0 gazhdict/addentry/admin.py | 3 + gazhdict/addentry/apps.py | 5 + gazhdict/addentry/migrations/__init__.py | 0 gazhdict/addentry/models.py | 57 +++++++++++ gazhdict/addentry/tests.py | 3 + gazhdict/addentry/views.py | 9 ++ gazhdict/gazhdict/__init__.py | 0 gazhdict/gazhdict/asgi.py | 16 +++ gazhdict/gazhdict/settings.py | 122 +++++++++++++++++++++++ gazhdict/gazhdict/urls.py | 23 +++++ gazhdict/gazhdict/wsgi.py | 16 +++ gazhdict/manage.py | 22 ++++ gazhdict/templates/hello_world.html | 18 ++++ sql-schema.ods | Bin 0 -> 10751 bytes 15 files changed, 294 insertions(+) create mode 100644 gazhdict/addentry/__init__.py create mode 100644 gazhdict/addentry/admin.py create mode 100644 gazhdict/addentry/apps.py create mode 100644 gazhdict/addentry/migrations/__init__.py create mode 100644 gazhdict/addentry/models.py create mode 100644 gazhdict/addentry/tests.py create mode 100644 gazhdict/addentry/views.py create mode 100644 gazhdict/gazhdict/__init__.py create mode 100644 gazhdict/gazhdict/asgi.py create mode 100644 gazhdict/gazhdict/settings.py create mode 100644 gazhdict/gazhdict/urls.py create mode 100644 gazhdict/gazhdict/wsgi.py create mode 100755 gazhdict/manage.py create mode 100644 gazhdict/templates/hello_world.html create mode 100644 sql-schema.ods diff --git a/gazhdict/addentry/__init__.py b/gazhdict/addentry/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/gazhdict/addentry/admin.py b/gazhdict/addentry/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/gazhdict/addentry/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/gazhdict/addentry/apps.py b/gazhdict/addentry/apps.py new file mode 100644 index 0000000..ec9778b --- /dev/null +++ b/gazhdict/addentry/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class AddentryConfig(AppConfig): + name = 'addentry' diff --git a/gazhdict/addentry/migrations/__init__.py b/gazhdict/addentry/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/gazhdict/addentry/models.py b/gazhdict/addentry/models.py new file mode 100644 index 0000000..50b2936 --- /dev/null +++ b/gazhdict/addentry/models.py @@ -0,0 +1,57 @@ +from django.db import models + +# Create your models here. +class Entry(models.Model): + Gaeilge = models.CharField(max_length=100) + PoS = models.CharField(max_length=20) + Pronoun = models.CharField(max_length=250) + PreScript = models.CharField(max_length=200) + PostScript = models.CharField(max_length=2000) + +class Meaning(models.Model): + Entry = models.ForeignKey("Entry", on_delete=models.CASCADE) + Meaning_content = models.CharField(max_length=500) + Exam_Sentence1 = models.CharField(max_length=1000) + Exam_Sentence1_zh = models.CharField(max_length=1000) + Exam_Sentence2 = models.CharField(max_length=1000) + Exam_Sentence2_zh = models.CharField(max_length=1000) + Exam_Sentence3 = models.CharField(max_length=1000) + Exam_Sentence3_zh = models.CharField(max_length=1000) + +class Noun(models.Model): + Entry = models.ForeignKey("Entry", on_delete=models.CASCADE) + Decl_no = models.IntegerField(), + Gsg = models.CharField(max_length=100) + Npl = models.CharField(max_length=100) + Gpl = models.CharField(max_length=100) + Dsg = models.CharField(max_length=100) + +class Adjective(models.Model): + Entry = models.ForeignKey("Entry", on_delete=models.CASCADE) + Decl_no = models.IntegerField() + Comp = models.CharField(max_length=100) + +class Preposition(models.Model): + Entry = models.ForeignKey("Entry", on_delete=models.CASCADE) + _1sg = models.CharField(max_length=100) + _2sg = models.CharField(max_length=100) + _3sg_m = models.CharField(max_length=100) + _3sg_f = models.CharField(max_length=100) + _1pl = models.CharField(max_length=100) + _2pl = models.CharField(max_length=100) + _3pl = models.CharField(max_length=100) + +class Verb(models.Model): + Entry = models.ForeignKey("Entry", on_delete=models.CASCADE) + Conj_no = models.IntegerField() + VN = models.CharField(max_length=100) + PP = models.CharField(max_length=100) + _1sg_pres = models.CharField(max_length=100) + _2sg_pres = models.CharField(max_length=100) + _3sg_pres = models.CharField(max_length=100) + _1pl_pres = models.CharField(max_length=100) + _2pl_pres = models.CharField(max_length=100) + _3pl_pres = models.CharField(max_length=100) + Rel_pres = models.CharField(max_length=100) # for "a leanas" only + + auto_pres 1sg_past 2sg_past 3sg_past 1pl_past 2pl_past 3pl_past auto_past 1sg_pa_ha 2sg_pa_ha 3sg_pa_ha 1pl_pa_ha 2pl_pa_ha 3pl_pa_ha auto_pa_ha 1sg_fut 2sg_fut 3sg_fut 1pl_fut 2pl_fut 3pl_fut rel_fut auto_fut 1sg_cond 2sg_cond 3sg_cond 1pl_cond 2pl_cond 3pl_cond auto_cond 1sg_subj 2sg_subj 3sg_subj 1pl_subj 2pl_subj 3pl_subj auto_subj 1sg_imp 2sg_imp 3sg_imp 1pl_imp 2pl_imp 3pl_imp auto_imp diff --git a/gazhdict/addentry/tests.py b/gazhdict/addentry/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/gazhdict/addentry/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/gazhdict/addentry/views.py b/gazhdict/addentry/views.py new file mode 100644 index 0000000..a0b1a28 --- /dev/null +++ b/gazhdict/addentry/views.py @@ -0,0 +1,9 @@ +from django.shortcuts import render + +from django.http import HttpResponse +from datetime import datetime + +# Create your views here. +def hello_world(request): + return render(request, 'hello_world.html', + {'current_time' : str(datetime.now()),}) diff --git a/gazhdict/gazhdict/__init__.py b/gazhdict/gazhdict/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/gazhdict/gazhdict/asgi.py b/gazhdict/gazhdict/asgi.py new file mode 100644 index 0000000..b3b448b --- /dev/null +++ b/gazhdict/gazhdict/asgi.py @@ -0,0 +1,16 @@ +""" +ASGI config for gazhdict project. + +It exposes the ASGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/3.1/howto/deployment/asgi/ +""" + +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'gazhdict.settings') + +application = get_asgi_application() diff --git a/gazhdict/gazhdict/settings.py b/gazhdict/gazhdict/settings.py new file mode 100644 index 0000000..04727b8 --- /dev/null +++ b/gazhdict/gazhdict/settings.py @@ -0,0 +1,122 @@ +""" +Django settings for gazhdict project. + +Generated by 'django-admin startproject' using Django 3.1.4. + +For more information on this file, see +https://docs.djangoproject.com/en/3.1/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/3.1/ref/settings/ +""" + +from pathlib import Path +import os + +# Build paths inside the project like this: BASE_DIR / 'subdir'. +BASE_DIR = Path(__file__).resolve().parent.parent + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/3.1/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'z(edll4(o&=28^t0g*6t$jz2ic&q*ql^x7ekrdoux2x&1se=t6' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = [] + + +# Application definition + +INSTALLED_APPS = [ + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'addentry', +] + +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', +] + +ROOT_URLCONF = 'gazhdict.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [os.path.join(BASE_DIR, 'templates').replace('\\', '/')], + '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 = 'gazhdict.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/3.1/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': BASE_DIR / 'db.sqlite3', + } +} + + +# Password validation +# https://docs.djangoproject.com/en/3.1/ref/settings/#auth-password-validators + +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', + }, +] + + +# Internationalization +# https://docs.djangoproject.com/en/3.1/topics/i18n/ + +LANGUAGE_CODE = 'en-us' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_L10N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/3.1/howto/static-files/ + +STATIC_URL = '/static/' diff --git a/gazhdict/gazhdict/urls.py b/gazhdict/gazhdict/urls.py new file mode 100644 index 0000000..1419d38 --- /dev/null +++ b/gazhdict/gazhdict/urls.py @@ -0,0 +1,23 @@ +"""gazhdict URL Configuration + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/3.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 addentry.views import hello_world + +urlpatterns = [ + path('admin/', admin.site.urls), + path('hello/', hello_world), +] diff --git a/gazhdict/gazhdict/wsgi.py b/gazhdict/gazhdict/wsgi.py new file mode 100644 index 0000000..f521fe3 --- /dev/null +++ b/gazhdict/gazhdict/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for gazhdict project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/3.1/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'gazhdict.settings') + +application = get_wsgi_application() diff --git a/gazhdict/manage.py b/gazhdict/manage.py new file mode 100755 index 0000000..d22d416 --- /dev/null +++ b/gazhdict/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + """Run administrative tasks.""" + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'gazhdict.settings') + try: + from django.core.management import execute_from_command_line + except ImportError as exc: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) from exc + execute_from_command_line(sys.argv) + + +if __name__ == '__main__': + main() diff --git a/gazhdict/templates/hello_world.html b/gazhdict/templates/hello_world.html new file mode 100644 index 0000000..e23fea6 --- /dev/null +++ b/gazhdict/templates/hello_world.html @@ -0,0 +1,18 @@ + + + + I come from template!! + + + +

Hello World!

+ {{ current_time }} + + diff --git a/sql-schema.ods b/sql-schema.ods new file mode 100644 index 0000000000000000000000000000000000000000..9f4d083af452ae9496eccf2ea43c652b0f4e9cc5 GIT binary patch literal 10751 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 literal 0 HcmV?d00001