From 5ea8b2a2232f089dd083ad40f7b012e7fc4c720c Mon Sep 17 00:00:00 2001 From: Victor San Kho Lin Date: Wed, 22 May 2024 10:01:06 +1000 Subject: [PATCH] Deprecated skel profile DJANGO_PROC Resolves #317 --- docs/developer/DJANGO_PROC.md | 129 ------------------ docs/developer/MICROSERVICE.md | 1 - skel/django-proc/component.ts | 103 -------------- skel/django-proc/src/manage.py | 22 --- skel/django-proc/src/migrate.py | 12 -- skel/django-proc/src/project_name/__init__.py | 5 - skel/django-proc/src/project_name/fields.py | 48 ------- .../src/project_name/migrations/__init__.py | 0 .../src/project_name/models/__init__.py | 3 - .../src/project_name/models/helloworld.py | 15 -- .../src/project_name/settings/__init__.py | 0 .../src/project_name/settings/aws.py | 22 --- .../src/project_name/settings/base.py | 77 ----------- .../src/project_name/settings/it.py | 16 --- .../src/project_name/settings/local.py | 24 ---- .../src/project_name/tests/__init__.py | 0 .../src/project_name/tests/test_models.py | 23 ---- .../src/project_name_proc/__init__.py | 0 .../src/project_name_proc/lambdas/__init__.py | 0 .../project_name_proc/lambdas/hello_proc.py | 61 --------- .../project_name_proc/services/__init__.py | 0 .../project_name_proc/services/hello_srv.py | 15 -- .../src/project_name_proc/tests/__init__.py | 0 .../src/project_name_proc/tests/case.py | 23 ---- .../tests/test_hello_proc.py | 17 --- .../project_name_proc/tests/test_hello_srv.py | 19 --- skel/django-proc/src/requirements.txt | 8 -- 27 files changed, 643 deletions(-) delete mode 100644 docs/developer/DJANGO_PROC.md delete mode 100644 skel/django-proc/component.ts delete mode 100755 skel/django-proc/src/manage.py delete mode 100644 skel/django-proc/src/migrate.py delete mode 100644 skel/django-proc/src/project_name/__init__.py delete mode 100644 skel/django-proc/src/project_name/fields.py delete mode 100644 skel/django-proc/src/project_name/migrations/__init__.py delete mode 100644 skel/django-proc/src/project_name/models/__init__.py delete mode 100644 skel/django-proc/src/project_name/models/helloworld.py delete mode 100644 skel/django-proc/src/project_name/settings/__init__.py delete mode 100644 skel/django-proc/src/project_name/settings/aws.py delete mode 100644 skel/django-proc/src/project_name/settings/base.py delete mode 100644 skel/django-proc/src/project_name/settings/it.py delete mode 100644 skel/django-proc/src/project_name/settings/local.py delete mode 100644 skel/django-proc/src/project_name/tests/__init__.py delete mode 100644 skel/django-proc/src/project_name/tests/test_models.py delete mode 100644 skel/django-proc/src/project_name_proc/__init__.py delete mode 100644 skel/django-proc/src/project_name_proc/lambdas/__init__.py delete mode 100644 skel/django-proc/src/project_name_proc/lambdas/hello_proc.py delete mode 100644 skel/django-proc/src/project_name_proc/services/__init__.py delete mode 100644 skel/django-proc/src/project_name_proc/services/hello_srv.py delete mode 100644 skel/django-proc/src/project_name_proc/tests/__init__.py delete mode 100644 skel/django-proc/src/project_name_proc/tests/case.py delete mode 100644 skel/django-proc/src/project_name_proc/tests/test_hello_proc.py delete mode 100644 skel/django-proc/src/project_name_proc/tests/test_hello_srv.py delete mode 100644 skel/django-proc/src/requirements.txt diff --git a/docs/developer/DJANGO_PROC.md b/docs/developer/DJANGO_PROC.md deleted file mode 100644 index a3e838644..000000000 --- a/docs/developer/DJANGO_PROC.md +++ /dev/null @@ -1,129 +0,0 @@ -# Django Proc Profile - -> !!! TODO NOTE: DJANGO PROJECT DIR STRUCTURE & STEPS NEED TO BE REVISED DUE TO REFACTOR !!! - -- Use this profile if your microservice need: ORM, LAMBDA, SQS -- Mainly data processing app and require no API - -## App - -- Consider building a microservice: `hello_proc_manager` - -### Ready Check - -- Make sure you have activated conda environment and setup dev toolchain -- At project root, preform: -``` -conda activate orcabus -make install -``` - -### Bootstrap - -``` -mkdir -p ./lib/workload/stateless/hello_proc_manager - -django-admin startproject --template skel/django-proc hello_proc_manager ./lib/workload/stateless/hello_proc_manager - -make install -``` - -### Model - -``` -(make sure db is up) -make up && make ps - -cd lib/workload/stateless/hello_proc_manager/src - -python manage.py inspectdb -python manage.py showmigrations - -python manage.py makemigrations -python manage.py showmigrations -python manage.py migrate -python manage.py inspectdb -python manage.py inspectdb table hello_proc_manager_helloworld -python manage.py test -python manage.py shell_plus - ->>> HelloWorld.objects.count() -0 - ->>> HelloWorld.objects.create(text="Hello World") - - ->>> HelloWorld.objects.count() -1 - ->>> HelloWorld.objects.first() - - ->>> exit() -``` - -### MySQL - -``` -docker exec -it orcabus_db mysql -h 0.0.0.0 -D orcabus -u root -proot - -mysql> show databases; -mysql> show tables; -mysql> describe hello_proc_manager_helloworld; -mysql> select * from hello_proc_manager_helloworld; -mysql> \q -``` - -### Django - -``` -python manage.py help -``` - -- Note that not all commands will be possible as this is not web application. -- We are just using Django ORM only as standalone data processing app. -- See Django doc for more about ORM. - -### Test - -- Unit test model -``` -python manage.py test hello_proc_manager.tests.test_models.HelloModelTests.test_save_hello -``` - -- Unit test proc handler -``` -python manage.py test hello_proc_manager_proc.tests.test_hello_proc.HelloProcUnitTests.test_handler -``` - -- Unit test service layer -``` -python manage.py test hello_proc_manager_proc.tests.test_hello_srv.HelloSrvUnitTests.test_get_hello_from_db -``` - -### Reset -``` -python manage.py reset_db - -rm hello_proc_manager/migrations/0001_initial.py - -python manage.py showmigrations -``` - -At this point, you may rename source code and, continue developing the app; or simply delete it. - -Go back to project root: -``` -cd ../../../../../ -rm -rf lib/workload/stateless/hello_proc_manager -``` - -## CDK - -Each App stack comes with corresponding `component.ts` for CDK boilerplate code as well. -Typically, it is unfinished CDK deployment code. You will need to complete it. -Follow the `FIXME` trail. - -This App stack use the following CDK Construct library. You may need to refer their documentation for further enhancement or tweaking. - -- https://constructs.dev/packages/@aws-cdk/aws-lambda-python-alpha diff --git a/docs/developer/MICROSERVICE.md b/docs/developer/MICROSERVICE.md index 2d02d4e36..cd96e4599 100644 --- a/docs/developer/MICROSERVICE.md +++ b/docs/developer/MICROSERVICE.md @@ -37,7 +37,6 @@ The "skel" profile are one abstraction up; from the native toolchain application Think of; it is "the origin" of where your _now_ very complex application to date in near future. Doing this way is optional. We may revise whether this skel approach is useful in the future iterations. - [DJANGO_API.md](DJANGO_API.md) -- [DJANGO_PROC.md](DJANGO_PROC.md) - [RUST_API.md](RUST_API.md) ### AWS Native diff --git a/skel/django-proc/component.ts b/skel/django-proc/component.ts deleted file mode 100644 index ec779f5cd..000000000 --- a/skel/django-proc/component.ts +++ /dev/null @@ -1,103 +0,0 @@ -// FIXME complete the implementation - -import path from 'path'; -import { Construct } from 'constructs'; -import { ILayerVersion } from 'aws-cdk-lib/aws-lambda'; -import { ISecurityGroup, IVpc } from 'aws-cdk-lib/aws-ec2'; -import { IEventBus, Rule } from 'aws-cdk-lib/aws-events'; -import { aws_events_targets, aws_lambda } from 'aws-cdk-lib'; -import { PythonFunction, PythonLayerVersion } from '@aws-cdk/aws-lambda-python-alpha'; - -export interface ProjectNameProps { // FIXME change prop interface name - layers: ILayerVersion[]; - securityGroups: ISecurityGroup[]; - vpc: IVpc; - mainBus: IEventBus; - functionName: string; - lambdaRuntimePythonVersion: aws_lambda.Runtime; -} - -export class ProjectNameConstruct extends Construct { // FIXME change construct name - private scope: Construct; - private readonly id: string; - private props: ProjectNameProps; - private baseLayer: PythonLayerVersion; - private readonly lambdaEnv; - - constructor(scope: Construct, id: string, props: ProjectNameProps) { - super(scope, id); - - this.scope = scope; - this.id = id; - this.props = props; - - this.lambdaEnv = { - DJANGO_SETTINGS_MODULE: '{{ProjectName}}.settings.aws', // FIXME project name - EVENT_BUS_NAME: this.props.mainBus.eventBusName, - }; - - this.createLambdaLayer(); - this.createMigrationHandler(); - this.createProcHandler(); - this.createProcSqsHandler(); - } - - private createLambdaLayer() { - this.baseLayer = new PythonLayerVersion(this, this.id + 'Layer', { - entry: path.join(__dirname, 'src/'), - }); - } - - private createMigrationHandler() { - new PythonFunction(this, this.id + 'Migration', { - entry: path.join(__dirname, 'src/'), - runtime: this.props.lambdaRuntimePythonVersion, - layers: [this.baseLayer], - index: 'migrate.py', - handler: 'handler', - environment: this.lambdaEnv, - }); - } - - private createProcHandler() { - const procFn = new PythonFunction(this, this.id + 'ProcHandler', { - entry: path.join(__dirname, 'src/'), - runtime: this.props.lambdaRuntimePythonVersion, - layers: [this.baseLayer], - index: '{{project_name}}_proc/lambdas/hello_proc.py', // FIXME update appropriate path to Lambda entry point - handler: 'handler', - environment: this.lambdaEnv, - }); - - this.props.mainBus.grantPutEventsTo(procFn); - this.setupEventRule(procFn); - } - - private createProcSqsHandler() { - const procSqsFn = new PythonFunction(this, this.id + 'ProcHandler', { - entry: path.join(__dirname, 'src/'), - runtime: this.props.lambdaRuntimePythonVersion, - layers: [this.baseLayer], - index: '{{project_name}}_proc/lambdas/hello_proc.py', // FIXME update appropriate path to Lambda entry point - handler: 'sqs_handler', - environment: this.lambdaEnv, - }); - - // this.props.mainBus.grantPutEventsTo(procSqsFn); // FIXME remove this if no use - // this.setupEventRule(procSqsFn); // FIXME remove this if no use - } - - private setupEventRule(fn: aws_lambda.Function) { - const eventRule = new Rule(this, this.id + 'EventRule', { - ruleName: this.id + 'EventRule', - description: 'Rule to send {event_type.value} events to the {handler.function_name} Lambda', - eventBus: this.props.mainBus, - }); - - eventRule.addTarget(new aws_events_targets.LambdaFunction(fn)); - eventRule.addEventPattern({ - source: ['ORCHESTRATOR'], // FIXME complete source to destination event mapping - detailType: ['SequenceRunStateChange'], - }); - } -} diff --git a/skel/django-proc/src/manage.py b/skel/django-proc/src/manage.py deleted file mode 100755 index a4c07c240..000000000 --- a/skel/django-proc/src/manage.py +++ /dev/null @@ -1,22 +0,0 @@ -#!/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", "{{project_name}}.settings.local") - 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/skel/django-proc/src/migrate.py b/skel/django-proc/src/migrate.py deleted file mode 100644 index 1710d93d3..000000000 --- a/skel/django-proc/src/migrate.py +++ /dev/null @@ -1,12 +0,0 @@ -# -*- coding: utf-8 -*- -"""migrate lambda module - -Convenience AWS lambda handler for Django database migration command hook -""" - -from django.core.management import execute_from_command_line - - -def handler(event, context) -> str: - execute_from_command_line(['./manage.py', 'migrate']) - return 'Migration complete.' diff --git a/skel/django-proc/src/project_name/__init__.py b/skel/django-proc/src/project_name/__init__.py deleted file mode 100644 index 785ba241e..000000000 --- a/skel/django-proc/src/project_name/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -import pymysql - -# see https://github.com/PyMySQL/PyMySQL/issues/790 -pymysql.version_info = (1, 4, 6, 'final', 0) -pymysql.install_as_MySQLdb() diff --git a/skel/django-proc/src/project_name/fields.py b/skel/django-proc/src/project_name/fields.py deleted file mode 100644 index ba79fa4f7..000000000 --- a/skel/django-proc/src/project_name/fields.py +++ /dev/null @@ -1,48 +0,0 @@ -import hashlib - -from django.db import models - - -class HashField(models.CharField): - description = ( - "HashField is related to some base fields (other columns) in a model and" - "stores its hashed value for better indexing performance." - ) - - def __init__(self, base_fields, *args, **kwargs): - """ - :param base_fields: name of fields storing the value to be hashed - """ - self.base_fields = base_fields - kwargs["max_length"] = 64 - super(HashField, self).__init__(*args, **kwargs) - - def deconstruct(self): - name, path, args, kwargs = super().deconstruct() - del kwargs["max_length"] - if self.base_fields is not None: - kwargs["base_fields"] = self.base_fields - return name, path, args, kwargs - - def pre_save(self, instance, add): - self.calculate_hash(instance) - return super(HashField, self).pre_save(instance, add) - - def calculate_hash(self, instance): - sha256 = hashlib.sha256() - for field in self.base_fields: - value = getattr(instance, field) - sha256.update(value.encode("utf-8")) - setattr(instance, self.attname, sha256.hexdigest()) - - -class HashFieldHelper(object): - def __init__(self): - self.__sha256 = hashlib.sha256() - - def add(self, value): - self.__sha256.update(value.encode("utf-8")) - return self - - def calculate_hash(self): - return self.__sha256.hexdigest() diff --git a/skel/django-proc/src/project_name/migrations/__init__.py b/skel/django-proc/src/project_name/migrations/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/skel/django-proc/src/project_name/models/__init__.py b/skel/django-proc/src/project_name/models/__init__.py deleted file mode 100644 index 6d956dbf2..000000000 --- a/skel/django-proc/src/project_name/models/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# https://docs.djangoproject.com/en/4.1/topics/db/models/#organizing-models-in-a-package - -from .helloworld import HelloWorld diff --git a/skel/django-proc/src/project_name/models/helloworld.py b/skel/django-proc/src/project_name/models/helloworld.py deleted file mode 100644 index 35cc0a372..000000000 --- a/skel/django-proc/src/project_name/models/helloworld.py +++ /dev/null @@ -1,15 +0,0 @@ -from django.db import models - - -class HelloWorldManager(models.Manager): - pass - - -class HelloWorld(models.Model): - id = models.BigAutoField(primary_key=True) - text = models.CharField(max_length=255) - - objects = HelloWorldManager() - - def __str__(self): - return f"ID: {self.id}, text: {self.text}" diff --git a/skel/django-proc/src/project_name/settings/__init__.py b/skel/django-proc/src/project_name/settings/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/skel/django-proc/src/project_name/settings/aws.py b/skel/django-proc/src/project_name/settings/aws.py deleted file mode 100644 index ace447d78..000000000 --- a/skel/django-proc/src/project_name/settings/aws.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -"""AWS Django settings - -Usage: -- export DJANGO_SETTINGS_MODULE={{project_name}}.settings.aws -""" - -from environ import Env -from libumccr.aws import libssm - -from .base import * # noqa - -SECRET_KEY = libssm.get_secret("/orcabus/backend/django_secret_key") - -DEBUG = False - -db_conn_cfg = Env.db_url_config(libssm.get_secret("/orcabus/backend/full_db_url")) -db_conn_cfg["OPTIONS"] = { - "max_allowed_packet": MYSQL_CLIENT_MAX_ALLOWED_PACKET, -} - -DATABASES = {"default": db_conn_cfg} diff --git a/skel/django-proc/src/project_name/settings/base.py b/skel/django-proc/src/project_name/settings/base.py deleted file mode 100644 index ea25851a6..000000000 --- a/skel/django-proc/src/project_name/settings/base.py +++ /dev/null @@ -1,77 +0,0 @@ -"""DO NOT USE base SETTING IN PRODUCTION""" -import os -import uuid -from pathlib import Path - -import aws_xray_sdk -from corsheaders.defaults import default_headers - -# Build paths inside the project like this: BASE_DIR / 'subdir'. -BASE_DIR = Path(__file__).resolve().parent.parent - -# SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = os.getenv("DJANGO_SECRET_KEY", uuid.uuid4()) - -# SECURITY WARNING: don't run with debug turned on in production! -DEBUG = os.getenv("DJANGO_DEBUG", True) - -DB_PREFIX = "{{project_name}}_" - -INSTALLED_APPS = [ - "django_database_prefix", - "django.contrib.contenttypes", - "{{project_name}}", - "aws_xray_sdk.ext.django", -] - -MIDDLEWARE = [ - "aws_xray_sdk.ext.django.middleware.XRayMiddleware", -] - -DATABASES = { - "default": { - "ENGINE": "django.db.backends.sqlite3", - "NAME": BASE_DIR / "db.sqlite3", - } -} - -# Default primary key field type -# https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field - -DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" - -# --- - -# 1GB packet limit for MySQL. See https://dev.mysql.com/doc/refman/5.7/en/packet-too-large.html -MYSQL_CLIENT_MAX_ALLOWED_PACKET = 1073741824 - -LOGGING = { - "version": 1, - "disable_existing_loggers": False, - "formatters": { - "console": { - "format": "%(asctime)s %(name)-12s %(levelname)-8s %(message)s", - }, - }, - "handlers": { - "console": { - "class": "logging.StreamHandler", - "formatter": "console", - }, - }, - "loggers": { - "": { - "level": "INFO", - "handlers": ["console"], - }, - }, -} - -XRAY_RECORDER = { - "AUTO_INSTRUMENT": True, - "AWS_XRAY_CONTEXT_MISSING": os.getenv("AWS_XRAY_CONTEXT_MISSING", "LOG_ERROR"), - "AWS_XRAY_TRACING_NAME": os.getenv("AWS_XRAY_TRACING_NAME", "{{project_name}}"), -} - -# turn off xray more generally and, you can overwrite with env var AWS_XRAY_SDK_ENABLED=true at runtime -aws_xray_sdk.global_sdk_config.set_sdk_enabled(False) diff --git a/skel/django-proc/src/project_name/settings/it.py b/skel/django-proc/src/project_name/settings/it.py deleted file mode 100644 index ace437665..000000000 --- a/skel/django-proc/src/project_name/settings/it.py +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- -"""integration tests Django settings - -Usage: -- export DJANGO_SETTINGS_MODULE={{project_name}}.settings.it -""" -from environ import Env - -from .base import * # noqa - -# pragma: allowlist nextline secret -db_conn_cfg = Env.db_url_config( - os.getenv("DB_URL", "mysql://root:root@localhost:3306/orcabus") # pragma: allowlist secret -) - -DATABASES = {"default": db_conn_cfg} diff --git a/skel/django-proc/src/project_name/settings/local.py b/skel/django-proc/src/project_name/settings/local.py deleted file mode 100644 index 9bf16f180..000000000 --- a/skel/django-proc/src/project_name/settings/local.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -"""local development Django settings - -Usage: -- export DJANGO_SETTINGS_MODULE={{project_name}}.settings.local -""" - -from environ import Env - -from .base import * # noqa - -# pragma: allowlist nextline secret -db_conn_cfg = Env.db_url_config( - os.getenv("DB_URL", "mysql://root:root@localhost:3306/orcabus") # pragma: allowlist secret -) -db_conn_cfg["OPTIONS"] = { - "max_allowed_packet": MYSQL_CLIENT_MAX_ALLOWED_PACKET, -} - -DATABASES = {"default": db_conn_cfg} - -INSTALLED_APPS += ( - "django_extensions", -) diff --git a/skel/django-proc/src/project_name/tests/__init__.py b/skel/django-proc/src/project_name/tests/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/skel/django-proc/src/project_name/tests/test_models.py b/skel/django-proc/src/project_name/tests/test_models.py deleted file mode 100644 index 1477b3ebf..000000000 --- a/skel/django-proc/src/project_name/tests/test_models.py +++ /dev/null @@ -1,23 +0,0 @@ -import logging - -from django.test import TestCase - -from {{project_name}}.models.helloworld import HelloWorld - -logger = logging.getLogger() -logger.setLevel(logging.INFO) - - -class HelloModelTests(TestCase): - - def test_save_hello(self): - """ - python manage.py test {{project_name}}.tests.test_models.HelloModelTests.test_save_hello - """ - mock_hello = HelloWorld() - mock_hello.text = "Hello World" - mock_hello.save() - - logger.info(mock_hello) - - self.assertEqual(1, HelloWorld.objects.count()) diff --git a/skel/django-proc/src/project_name_proc/__init__.py b/skel/django-proc/src/project_name_proc/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/skel/django-proc/src/project_name_proc/lambdas/__init__.py b/skel/django-proc/src/project_name_proc/lambdas/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/skel/django-proc/src/project_name_proc/lambdas/hello_proc.py b/skel/django-proc/src/project_name_proc/lambdas/hello_proc.py deleted file mode 100644 index a20d12b24..000000000 --- a/skel/django-proc/src/project_name_proc/lambdas/hello_proc.py +++ /dev/null @@ -1,61 +0,0 @@ -import django - -django.setup() - -# --- keep ^^^ at top of the module - -from libumccr import libjson - -from {{project_name}}_proc.services import hello_srv - - -def sqs_handler(event, context): - """event payload dict - { - 'Records': [ - { - 'messageId': "11d6ee51-4cc7-4302-9e22-7cd8afdaadf5", - 'body': "{\"JSON\": \"Formatted Message\"}", - 'messageAttributes': {}, - 'md5OfBody': "", - 'eventSource': "aws:sqs", - 'eventSourceARN': "arn:aws:sqs:us-east-2:123456789012:fifo.fifo", - }, - ... - ] - } - - Details event payload dict refer to https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html - Backing queue is FIFO queue and, guaranteed delivery-once, no duplication. - - :param event: - :param context: - :return: - """ - messages = event['Records'] - - results = [] - for message in messages: - job = libjson.loads(message['body']) - results.append(handler(job, context)) - - return { - 'results': results - } - - -def handler(event, context): - """event payload - { - THIS SHOULD TYPICALLY BE BOUND TO RESPECTIVE config/event_schemas - } - """ - print(f"Processing {event}, {context}") - - hallo = hello_srv.get_hello_from_db() - print(f"Hello > {hallo}") - - response = { - "hello": "world" - } - return response diff --git a/skel/django-proc/src/project_name_proc/services/__init__.py b/skel/django-proc/src/project_name_proc/services/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/skel/django-proc/src/project_name_proc/services/hello_srv.py b/skel/django-proc/src/project_name_proc/services/hello_srv.py deleted file mode 100644 index dc32db8bb..000000000 --- a/skel/django-proc/src/project_name_proc/services/hello_srv.py +++ /dev/null @@ -1,15 +0,0 @@ -from django.db import transaction - -from {{project_name}}.models.helloworld import HelloWorld - - -@transaction.atomic -def persist_hello_srv(): - hello = HelloWorld() - hello.text = "Hallo Welt" - hello.save() - - -@transaction.atomic -def get_hello_from_db(): - return HelloWorld.objects.first() diff --git a/skel/django-proc/src/project_name_proc/tests/__init__.py b/skel/django-proc/src/project_name_proc/tests/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/skel/django-proc/src/project_name_proc/tests/case.py b/skel/django-proc/src/project_name_proc/tests/case.py deleted file mode 100644 index d374b2d8f..000000000 --- a/skel/django-proc/src/project_name_proc/tests/case.py +++ /dev/null @@ -1,23 +0,0 @@ -import logging - -from django.test import TestCase - -logger = logging.getLogger() -logger.setLevel(logging.INFO) - - -class HelloProcUnitTestCase(TestCase): - - def setUp(self) -> None: - # some code construct that share across all test cases under lims package - # pass for now - pass - - def tearDown(self) -> None: - # undo any construct done from setUp - # pass for now - pass - - -class HelloProcIntegrationTestCase(TestCase): - pass diff --git a/skel/django-proc/src/project_name_proc/tests/test_hello_proc.py b/skel/django-proc/src/project_name_proc/tests/test_hello_proc.py deleted file mode 100644 index 1647aff67..000000000 --- a/skel/django-proc/src/project_name_proc/tests/test_hello_proc.py +++ /dev/null @@ -1,17 +0,0 @@ -from {{project_name}}.models.helloworld import HelloWorld -from {{project_name}}_proc.lambdas import hello_proc -from {{project_name}}_proc.tests.case import HelloProcUnitTestCase - - -class HelloProcUnitTests(HelloProcUnitTestCase): - - def test_handler(self): - """ - python manage.py test {{project_name}}_proc.tests.test_hello_proc.HelloProcUnitTests.test_handler - """ - mock_event = { - "key": "value" - } - mock_hello = HelloWorld.objects.create(text="Hi") - resp = hello_proc.handler(mock_event, None) - self.assertIsNotNone(resp) diff --git a/skel/django-proc/src/project_name_proc/tests/test_hello_srv.py b/skel/django-proc/src/project_name_proc/tests/test_hello_srv.py deleted file mode 100644 index 5ca5bc3bc..000000000 --- a/skel/django-proc/src/project_name_proc/tests/test_hello_srv.py +++ /dev/null @@ -1,19 +0,0 @@ -from {{project_name}}_proc.services import hello_srv -from {{project_name}}_proc.tests.case import HelloProcUnitTestCase, logger -from {{project_name}}.models.helloworld import HelloWorld - - -class HelloSrvUnitTests(HelloProcUnitTestCase): - - def test_get_hello_from_db(self): - """ - python manage.py test {{project_name}}_proc.tests.test_hello_srv.HelloSrvUnitTests.test_get_hello_from_db - """ - mock_hello = HelloWorld() - mock_hello.text = "Hola Mundo" - mock_hello.save() - - hola = hello_srv.get_hello_from_db() - logger.info(hola) - self.assertIsNotNone(hola) - self.assertIn("Hola", hola.text) diff --git a/skel/django-proc/src/requirements.txt b/skel/django-proc/src/requirements.txt deleted file mode 100644 index b2091c455..000000000 --- a/skel/django-proc/src/requirements.txt +++ /dev/null @@ -1,8 +0,0 @@ -aws-xray-sdk==2.12.0 -boto3==1.28.0 -Django==4.2.11 -django-environ==0.10.0 -django-database-prefix==0.1.0 -pymysql==1.1.0 -libica==2.2.1 -libumccr==0.4.0rc1