Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat 1133 files transfer to ACF Titan #1918

Merged
merged 121 commits into from
Sep 16, 2022
Merged
Show file tree
Hide file tree
Changes from 20 commits
Commits
Show all changes
121 commits
Select commit Hold shift + click to select a range
529380c
added ToDo comments where the logic has to be added
raftmsohani Jun 28, 2022
7252738
1133: redis works, celery doesn't connect
raftmsohani Jul 1, 2022
6917bbb
1133: redis works
raftmsohani Jul 1, 2022
d880c6f
1133: redis works with celery installed in scheduling app
raftmsohani Jul 1, 2022
c006861
corrections
msohanifr Jul 5, 2022
c595ffb
changes to use django-configurations
msohanifr Jul 6, 2022
22a20e2
remove white space
msohanifr Jul 6, 2022
6cf5549
delete __init__ file
msohanifr Jul 6, 2022
51c818c
added __init__
msohanifr Jul 6, 2022
c9c7b7b
added a new app, and sub task
msohanifr Jul 11, 2022
81c8ea1
added django_celery_beat
msohanifr Jul 11, 2022
06df917
added the task for upload
msohanifr Jul 14, 2022
06d2f0d
added paramiko
msohanifr Jul 14, 2022
15daafb
added upload task
raftmsohani Jul 19, 2022
661c411
added shceduled tasks
raftmsohani Jul 19, 2022
c0a2652
Working scheduler
raftmsohani Jul 21, 2022
2f30262
FileUpload
raftmsohani Jul 25, 2022
c587b59
FileUpload - Refactored scheduled task to let delay task to be scheduled
raftmsohani Jul 25, 2022
5a2b3b5
FileUpload - added error handling
raftmsohani Jul 25, 2022
628bc2a
1133 - Added env vars, creating directories, putting the file, error …
raftmsohani Jul 28, 2022
384830f
1133 - Removed the scheduled tasks
raftmsohani Jul 29, 2022
7a92e00
1133 - Removed the tasks app
raftmsohani Jul 29, 2022
7f190c2
1133 - Linting
raftmsohani Jul 29, 2022
33276b0
1133 - Linting again
raftmsohani Jul 29, 2022
2f0bc79
1133 - Linting
raftmsohani Jul 29, 2022
4bba520
1133 - Linting
raftmsohani Jul 29, 2022
eaa8e32
1133 - Linting
raftmsohani Jul 29, 2022
01a04a1
Merge branch 'develop' into feat/1133-files-transferred-to-ACF-Titan
raftmsohani Aug 1, 2022
25adae8
added redis-cli apt
raftmsohani Aug 1, 2022
319b46d
added dependency packages
raftmsohani Aug 1, 2022
91384b7
added local redis
raftmsohani Aug 1, 2022
17cad9c
1133 - Added redis-server to gunicorn_start.sh and changed the Celery…
raftmsohani Aug 1, 2022
5956650
1133 - Removed the test files
raftmsohani Aug 1, 2022
ac202a5
1133 - Refactored redis URI to env vars
raftmsohani Aug 1, 2022
e4fb775
1133: absolute path instead of home path
raftmsohani Aug 2, 2022
56559e6
1133: absolute path instead of home path
raftmsohani Aug 2, 2022
d31af21
1133: corrected flower uri
raftmsohani Aug 2, 2022
b518124
1133: corrected gunicorn_start.sh
raftmsohani Aug 2, 2022
dd2d8f2
1133: corrected gunicorn_start.sh
raftmsohani Aug 2, 2022
d1b3130
1133: corrected gunicorn_start.sh
raftmsohani Aug 2, 2022
51c91de
1133: corrected gunicorn_start.sh
raftmsohani Aug 2, 2022
4a83bba
1133: wrapped the task in try/exception
raftmsohani Aug 2, 2022
30d5f7f
1133: additional log
raftmsohani Aug 2, 2022
5597c5b
1133: additional log
raftmsohani Aug 2, 2022
c3b2e65
1133: additional log
raftmsohani Aug 2, 2022
5ca7b04
1133: additional log
raftmsohani Aug 2, 2022
3cb3055
1133: Added error handling, starting redis on cloud.gov script
raftmsohani Aug 4, 2022
5eca1db
1133: Linting
raftmsohani Aug 4, 2022
63ad4c1
1133: Upload Pytest, and linting
raftmsohani Aug 15, 2022
fc7f9ba
1133: linting
raftmsohani Aug 15, 2022
20bb9a3
1133: linting
raftmsohani Aug 15, 2022
8e2fe88
1133: changes for passing the test
raftmsohani Aug 17, 2022
a759ed9
1133: added import
raftmsohani Aug 17, 2022
0a00a4f
1133: add logging
raftmsohani Aug 17, 2022
0584942
1133: add logging
raftmsohani Aug 17, 2022
f7eaeb5
1133: add logging
raftmsohani Aug 17, 2022
e8e1e74
1133: add logging
raftmsohani Aug 17, 2022
f93005e
1133: add logging
raftmsohani Aug 17, 2022
f29e7a9
1133: add logging
raftmsohani Aug 17, 2022
c737ed7
1133: add logging
raftmsohani Aug 17, 2022
98ba904
1133: add logging to celery.py
raftmsohani Aug 17, 2022
c4a899c
1133: change celery start step
raftmsohani Aug 17, 2022
2f19dc5
1133: change celery.py for linting
raftmsohani Aug 17, 2022
21a1418
1133: linting
raftmsohani Aug 17, 2022
878f635
1133: update config
raftmsohani Aug 17, 2022
966b2c6
1133: linting
raftmsohani Aug 17, 2022
899b903
1133: removed scheduling
raftmsohani Aug 17, 2022
a8a8525
1133: permissions
raftmsohani Aug 17, 2022
5913030
1133: permissions
raftmsohani Aug 17, 2022
15343de
1133: changed redis and celery memory
raftmsohani Aug 17, 2022
6b9d748
1133: changed redis and celery memory
raftmsohani Aug 17, 2022
ebd5049
1133: changed redis and celery memory and added commenting
raftmsohani Aug 18, 2022
b1b190d
1133: changed redis and celery memory by adding redis.conf, removed l…
raftmsohani Aug 18, 2022
30b5162
1133: removed cat ACF key file
raftmsohani Aug 18, 2022
a2196a4
1133: settings file: added if statement
raftmsohani Aug 18, 2022
ea861d2
1133: settings file linting
raftmsohani Aug 18, 2022
6cd1f1f
1133: settings file linting
raftmsohani Aug 18, 2022
0753710
1133: changed the pytest_key env var pull up to common.py
raftmsohani Aug 18, 2022
440b32b
1133: common settings file for env vars
raftmsohani Aug 18, 2022
36ea557
1133: common settings file for env vars
raftmsohani Aug 18, 2022
9cccf75
1133: Added an env var
raftmsohani Aug 18, 2022
5ab9c96
1133: Added an env var
raftmsohani Aug 18, 2022
4e52f2b
1133: Removed default for testing
raftmsohani Aug 18, 2022
e82c259
1133: Added end of line replacement for ssh key
raftmsohani Aug 18, 2022
73c5f51
1133: linting
raftmsohani Aug 18, 2022
38d4015
1133: changing private key and replace '_' with \n
raftmsohani Aug 18, 2022
1c6650e
1133: changed to pkey to resolve primary key error
raftmsohani Aug 18, 2022
741dd80
1133: look for key to false
raftmsohani Aug 18, 2022
448c342
1133: disabled private key algorithms
raftmsohani Aug 18, 2022
cebfd50
1133: Added comments to settings files
raftmsohani Aug 19, 2022
6d667aa
1133: linting
raftmsohani Aug 19, 2022
a1d8cb0
python script to change EOL with _
raftmsohani Aug 23, 2022
e8cc8ea
ENV variable for specific ACF TITAN directory
raftmsohani Aug 23, 2022
9117057
linting, chaging upload filename, etc
raftmsohani Aug 24, 2022
49292ba
test file reference change
raftmsohani Aug 24, 2022
ed4c9fc
correct typo
raftmsohani Aug 25, 2022
f1680f0
increase timeout for OWASP
raftmsohani Aug 25, 2022
4dac74d
increase timeout for OWASP
raftmsohani Aug 26, 2022
4681a0e
Added env var for local Redis
raftmsohani Aug 26, 2022
f88eeee
Added env var for owasp scan to use redis
raftmsohani Aug 26, 2022
887a210
Changed redis_server_local to TRUE
raftmsohani Aug 26, 2022
271dc53
corrected the directory config
raftmsohani Aug 26, 2022
c1ea902
Update tdrs-backend/tdpservice/scheduling/test/test_file_upload.py
raftmsohani Aug 26, 2022
37c5a26
Merge branch 'develop' into release/v2.0.0
andrew-jameson Aug 30, 2022
0af229d
Merge pull request #2098 from raft-tech/release/v2.0.0
andrew-jameson Aug 30, 2022
f9c23d2
Merge branch 'develop' into release/v2.0.1
andrew-jameson Aug 30, 2022
2b87189
Merge pull request #2099 from raft-tech/release/v2.0.1
andrew-jameson Aug 30, 2022
82b508e
Update sftp_upload task to use filename
raftmsohani Sep 6, 2022
728a71d
changed stt.filename to return Tribal filename and added comment on T…
raftmsohani Sep 6, 2022
2925995
changed method to use property
raftmsohani Sep 7, 2022
d251370
linting
raftmsohani Sep 7, 2022
642d573
linting + changed test file
raftmsohani Sep 8, 2022
bc08c38
Merge branch 'feat/2090-Transferred-files-must-renamed-ACF-Titan' int…
raftmsohani Sep 9, 2022
6c8f2e6
Update models.py
raftmsohani Sep 12, 2022
6cc737c
corrected Tribe logic
raftmsohani Sep 13, 2022
51e676f
corrected Tribe logic
raftmsohani Sep 13, 2022
ce849d7
force deployment when label is set to QASP REVIEW
n0remac Sep 13, 2022
3bb6517
changed the logic
raftmsohani Sep 13, 2022
1e0e4fb
removed label force
n0remac Sep 13, 2022
c534e51
merged 2090
raftmsohani Sep 13, 2022
af5f23b
Updated the comment
raftmsohani Sep 14, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions tdrs-backend/Pipfile
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,11 @@ pyjwt = "==2.4.0"
requests = "==2.27.1"
wait-for-it = "==2.2.0"
requests-mock = "==1.9.3"
celery = "*"
redis = "*"
flower = "1.1.0"
django-celery-beat = "2.3.0"
paramiko = "2.11.0"

[requires]
python_version = "3.10.4"
669 changes: 442 additions & 227 deletions tdrs-backend/Pipfile.lock

Large diffs are not rendered by default.

Empty file added tdrs-backend/__init__.py
Empty file.
2 changes: 2 additions & 0 deletions tdrs-backend/docker-compose.local.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ services:
- DATA_DIR=/tmp/localstack/data
- AWS_BUCKET=tdp-datafiles-localstack
- AWS_REGION_NAME=us-gov-west-1
- HOSTNAME=localstack
- HOSTNAME_EXTERNAL=localstack
ports:
- "4566:4566"
volumes:
Expand Down
13 changes: 12 additions & 1 deletion tdrs-backend/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,19 +67,30 @@ services:
- AMS_CLIENT_ID
- AMS_CLIENT_SECRET
- AMS_CONFIGURATION_ENDPOINT
- ACFTITAN_HOST
- ACFTITAN_KEY
- ACFTITAN_USERNAME
volumes:
- .:/tdpapp
image: tdp
build: .
command: >
bash -c "./wait_for_services.sh &&
./gunicorn_start.sh"
./gunicorn_start.sh && celery -A tdpservice.settings worker -l info"
ports:
- "8080:8080"
- "5555:5555"
depends_on:
- clamav-rest
- localstack
- postgres
- redis-server

redis-server:
image: "redis:alpine"
command: redis-server
ports:
- "6379:6379"

volumes:
localstack_data:
Expand Down
9 changes: 8 additions & 1 deletion tdrs-backend/gunicorn_start.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,13 @@ python manage.py makemigrations
python manage.py migrate
python manage.py populate_stts
python manage.py collectstatic --noinput

#
celery -A tdpservice.settings worker -l info &
sleep 5
celery -A tdpservice.settings --broker=redis://redis-server:6379 flower &
celery -A tdpservice.settings beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler &

echo "Starting Gunicorn"
if [[ "$DJANGO_CONFIGURATION" = "Development" || "$DJANGO_CONFIGURATION" = "Local" ]]; then
gunicorn_params="--bind 0.0.0.0:8080 --timeout 10 --workers 3 --reload --log-level $LOGGING_LEVEL"
Expand All @@ -15,4 +22,4 @@ fi

gunicorn_cmd="gunicorn tdpservice.wsgi:application $gunicorn_params"

exec $gunicorn_cmd
exec $gunicorn_cmd
Empty file added tdrs-backend/tasks/__init__.py
Empty file.
Empty file.
3 changes: 3 additions & 0 deletions tdrs-backend/tasks/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from django.db import models

# Create your models here.
3 changes: 3 additions & 0 deletions tdrs-backend/tasks/tests.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from django.test import TestCase

# Create your tests here.
3 changes: 3 additions & 0 deletions tdrs-backend/tasks/views.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from django.shortcuts import render

# Create your views here.
2 changes: 1 addition & 1 deletion tdrs-backend/tdpservice/data_files/test/test_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

from tdpservice.stts.models import STT

from ..models import DataFile
from tdpservice.data_files.models import DataFile


@pytest.mark.django_db
Expand Down
13 changes: 13 additions & 0 deletions tdrs-backend/tdpservice/data_files/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from rest_framework.viewsets import ModelViewSet
from rest_framework.decorators import action
from wsgiref.util import FileWrapper
from rest_framework import status

from tdpservice.data_files.serializers import DataFileSerializer
from tdpservice.data_files.models import DataFile
Expand All @@ -33,6 +34,8 @@ class Meta:
fields = ['stt', 'quarter', 'year']


from tdpservice.scheduling import tasks

class DataFileViewSet(ModelViewSet):
"""Data file views."""

Expand All @@ -51,6 +54,16 @@ class DataFileViewSet(ModelViewSet):
# we will be able to appropriately refer to the latest versions only.
ordering = ['-version']

def create(self, request, *args, **kwargs):
response = super().create(request, *args, **kwargs)

# Upload to ACF-TITAN only if file is passed the virus scan and created
if response.status_code == status.HTTP_201_CREATED:
tasks.upload.delay(
data_file_pk=response.data.get('id')
)
return response

def filter_queryset(self, queryset):
"""Only apply filters to the list action."""
if self.action != 'list':
Expand Down
28 changes: 28 additions & 0 deletions tdrs-backend/tdpservice/scheduling/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
from django.conf import settings
settings.LOCAL_KEY = """-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn
NhAAAAAwEAAQAAAQEAun8bpLADVmGiq9BkGBmcPP79L7vPEeQBfC50YosrKh04i0Djvmrl
2UPG3TJitk4ngWOcH+dz9uEVGDLVauDBQ5/m9x83q3+rP+RWgCUJq0sQ65t5zpuTJniplx
LpalJTWOIj2yIPnZqqxSgRlXZX2uXhSfPDjkXfz0w6uxIzJrG+ak573G/bN+kWFjakI4Zo
MzBZ95qq8Cr3EFkLhbNZzRFmUpHMApWaL8A5cqcSGCuS6q6Hozs+AW/kjPAgwH+6zs14Va
aZTPUwaPWYW+GWn6Fwknex0iJAd2Nm6PwBod3mn4+ogdl+gFDB2qmwI+JVCg3qrap7xQdP
fnxjpXFC7QAAA9gzkzJFM5MyRQAAAAdzc2gtcnNhAAABAQC6fxuksANWYaKr0GQYGZw8/v
0vu88R5AF8LnRiiysqHTiLQOO+auXZQ8bdMmK2TieBY5wf53P24RUYMtVq4MFDn+b3Hzer
f6s/5FaAJQmrSxDrm3nOm5MmeKmXEulqUlNY4iPbIg+dmqrFKBGVdlfa5eFJ88OORd/PTD
q7EjMmsb5qTnvcb9s36RYWNqQjhmgzMFn3mqrwKvcQWQuFs1nNEWZSkcwClZovwDlypxIY
K5LqroejOz4Bb+SM8CDAf7rOzXhVpplM9TBo9Zhb4ZafoXCSd7HSIkB3Y2bo/AGh3eafj6
iB2X6AUMHaqbAj4lUKDeqtqnvFB09+fGOlcULtAAAAAwEAAQAAAQBX18kYgEOCK4jorsaG
x4FdBaoSEr9NKP0+Fc+CHxUcyBi7FrxvE4DiHleMFtCCGDvpaRa/vFBV59z8wezeY7EEfk
vW+KBLKl5qQM4xm8B7K2dz4o60L3lXNJyE6UaCavaRNis3a0q5rIFlTiNCKDTniUHdiHED
EYyC4uAC/2aSgXZdW/+uythxLVsRmpA3weFrMAfMRCM45Luxj2N8LZ4R213aPikX+dSMHK
hxnxvGL9zDwMRR3v4jqBYqXaLPpZKedyvrcNc3TqG+RhUsuSU/0j5YEk683zTxWmIc4Ze6
j/PDXFrSRREwZCuzeL4emkDUSUKdh0FJ1vCEDhT+DuptAAAAgAdM+SFIjOjMd4L+7GidVF
VE3f+OL5Z6rPRNmwx4ifibukHdk9wsHp55yfccxr013xvM/EOmnhNqb5uNj/MgN981/ZFb
RJobRG4NuH1HHZMd9F8BE5JtkUiuuhryxEzfwTpsgEJuCtR5BW8v9laKYkaBViejZ/XM2M
bjIKCeOooOAAAAgQDarA/9tVL2YR0VupZfQQdZL+4lO2RtvddjdSKEECvckxSRIKVA/9HY
KJRHwrNIzA8sPuxNBR+9BRp+cw3cgTIQ/Rp+ISF9PFVxTMnM//vcsUTUxziYvaal3DDIpb
f8KcPJ6ECSVq/TYPYQ+wCLoPM49c8TnW8PxtDb3f+fI5WBdwAAAIEA2lT6BkcR9A6FHB+j
Ad2PpLYJqef1ZCQJrhvQRlQfrqhmAie7TdTWi7eH/jUksh+4j4rlobQ22ryTBKMA91npq8
8lhuJnULmWzl7CBTR8YQ/6WbY58PTadkk79e9w/4WOWp8b0SxMwtZDnESs5x1dfuUyqqfS
rFBHiFOY1MK2F7sAAAAdbXNvaGFuaUBNb3MtTWFjQm9vay1Qcm8ubG9jYWwBAgMEBQY=
-----END OPENSSH PRIVATE KEY-----"""
3 changes: 3 additions & 0 deletions tdrs-backend/tdpservice/scheduling/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from django.contrib import admin

# Register your models here.
6 changes: 6 additions & 0 deletions tdrs-backend/tdpservice/scheduling/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from django.apps import AppConfig


class TasksConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'tdpservice.scheduling'
65 changes: 65 additions & 0 deletions tdrs-backend/tdpservice/scheduling/tasks.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
from __future__ import absolute_import

import os

from celery import shared_task
from django.conf import settings
import datetime
import paramiko
import logging
from tdpservice.data_files.models import DataFile
logger = logging.getLogger(__name__)

server_address = settings.SERVER_ADDRESS
local_key = settings.LOCAL_KEY
username = settings.USERNAME


def write_key_to_file(private_key):
raftmsohani marked this conversation as resolved.
Show resolved Hide resolved
"""
Paramiko require the key in file object format
"""
with open('temp_key_file', 'w') as f:
f.write(private_key)
f.close()
return 'temp_key_file'


@shared_task
def upload(data_file_pk):
"""
This task uploads the file in DataFile object with
pk = data_file_pk
to sftp server as defined in Settings file
"""
data_file = DataFile.objects.get(id=data_file_pk)
destination = str(data_file.file).split('/')[-1]
today_date = datetime.datetime.today()
upper_directory_name = today_date.strftime('%Y%m%d')
lower_directory_name = today_date.strftime(str(data_file.year) + '-' + str(data_file.quarter))

transport = paramiko.SSHClient()
transport.set_missing_host_key_policy(paramiko.AutoAddPolicy())
transport.connect(server_address, key_filename=write_key_to_file(local_key), username=username)
sftp = transport.open_sftp()

transport.exec_command('mkdir -p ' + upper_directory_name +
'/' + lower_directory_name)

f = data_file.file.read()
with open(destination, 'wb') as f1:
f1.write(f)
f1.close()
logger.info(os.listdir())

# Upload file
try:
# sftp = transport.open_sftp()
# temp file can be the file object
sftp.put(destination, upper_directory_name + '/' + lower_directory_name + '/' + destination)
os.remove(destination)
raftmsohani marked this conversation as resolved.
Show resolved Hide resolved
logger.info('File {} has been successfully uploaded to {}'.format(destination, server_address))
return True
except Exception as e:
logger.error('Failed to upload {} with error:{}'.format(destination, e))
andrew-jameson marked this conversation as resolved.
Show resolved Hide resolved
return False
Empty file.
30 changes: 30 additions & 0 deletions tdrs-backend/tdpservice/scheduling/test/test_file_upload.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
"""Integration test(s) for clamav-rest operations."""
from os import remove
from requests.sessions import Session
import pytest

from django.contrib.admin import site as admin_site
from django.core.files.base import File
from rest_framework.status import HTTP_400_BAD_REQUEST
from tdpservice.scheduling.tasks import upload

"""
WRITE TEST:

1. CREATE FILE -> clean_file fixture -> DONE
2. UPLOAD TO ACF_TITAN ->
3. SSH TO ACF TITAN AND MAKE SURE THE FILE EXISTS
"""


from tdpservice.data_files.test.factories import DataFileFactory


@pytest.fixture()
def upload_file():
return DataFileFactory()


@pytest.mark.django_db
def test_upload_server(upload_file):
assert upload_file.original_filename == 'data_file.txt'
1 change: 1 addition & 0 deletions tdrs-backend/tdpservice/security/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

9 changes: 9 additions & 0 deletions tdrs-backend/tdpservice/settings/__init__.py
100755 → 100644
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
from __future__ import absolute_import
import logging
import os
from django.conf import settings

# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from .celery import app as celery_app
__all__ = ['celery_app']
36 changes: 36 additions & 0 deletions tdrs-backend/tdpservice/settings/celery.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
from __future__ import absolute_import
import os
from celery import Celery, shared_task
from django.conf import settings
import configurations
from celery.schedules import crontab

# Set the default Django settings module for the 'celery' program.
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "tdpservice.settings.local")
os.environ.setdefault("DJANGO_CONFIGURATION", "Local")

configurations.setup()

app = Celery('settings')
# Using a string here means the worker doesn't have to serialize
# the configuration object to child processes.
# - namespace='CELERY' means all celery-related configuration keys
# should have a `CELERY_` prefix.
app.config_from_object('django.conf:settings', namespace='CELERY')

# Load task modules from all registered Django apps.
app.autodiscover_tasks()


@app.task(bind=True)
def debug_task(self):
print('Request: {0!r}'.format(self.request))


app.conf.beat_schedule = {
'example': {
'task': 'tdpservice.scheduling.tasks.run_backup',
'schedule': crontab(minute='10'),
'args': ['lolo'],
},
}
18 changes: 16 additions & 2 deletions tdrs-backend/tdpservice/settings/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))


def get_required_env_var_setting(
env_var_name: str,
setting_name: Optional[str] = None
Expand Down Expand Up @@ -48,13 +47,15 @@ class Common(Configuration):
"corsheaders",
"django_extensions",
"drf_yasg",
"django_celery_beat",
"storages",
# Local apps
"tdpservice.core.apps.CoreConfig",
"tdpservice.users",
"tdpservice.stts",
"tdpservice.data_files",
"tdpservice.security",
"tdpservice.scheduling"
)

# https://docs.djangoproject.com/en/2.0/topics/http/middleware/
Expand All @@ -69,7 +70,7 @@ class Common(Configuration):
"corsheaders.middleware.CorsMiddleware",
"tdpservice.users.api.middleware.AuthUpdateMiddleware",
"csp.middleware.CSPMiddleware",
"tdpservice.middleware.NoCacheMiddleware",
"tdpservice.middleware.NoCacheMiddleware"
)

APP_NAME = "dev"
Expand Down Expand Up @@ -397,3 +398,16 @@ class Common(Configuration):
'AMS_CLIENT_SECRET',
''
)

# sftp config
SERVER_ADDRESS = os.getenv('ACFTITAN_HOST', '')
LOCAL_KEY = os.getenv('ACFTITAN_KEY', '')
USERNAME = os.getenv('ACFTITAN_USERNAME', '')

# CELERY CONFIG
CELERY_BROKER_URL = "redis://redis-server:6379"
CELERY_RESULT_BACKEND = "redis://redis-server:6379"
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TIMEZONE = 'UTC'
2 changes: 1 addition & 1 deletion tdrs-backend/tdpservice/stts/test/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from django.contrib.auth import get_user_model
from django.urls import reverse
from rest_framework import status
from ...stts.models import STT, Region
from tdpservice.stts.models import STT, Region

User = get_user_model()

Expand Down
2 changes: 1 addition & 1 deletion tdrs-backend/tdpservice/stts/test/test_commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from django.core.management import call_command
import pytest
from ..models import Region, STT
from tdpservice.stts.models import Region, STT


@pytest.mark.django_db
Expand Down
2 changes: 1 addition & 1 deletion tdrs-backend/tdpservice/stts/test/test_models.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"""Module for testing the stt and region models."""
import pytest

from ..models import STT, Region
from tdpservice.stts.models import STT, Region
andrew-jameson marked this conversation as resolved.
Show resolved Hide resolved


@pytest.mark.django_db
Expand Down
Loading