Skip to content

Commit

Permalink
refactor: Split exporter app from dqt app
Browse files Browse the repository at this point in the history
  • Loading branch information
jpmckinney committed Nov 9, 2021
1 parent e9067d5 commit fe94f41
Show file tree
Hide file tree
Showing 73 changed files with 221 additions and 203 deletions.
1 change: 1 addition & 0 deletions backend/core/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@
"tastypie",
"corsheaders",
"dqt",
"exporter.apps.ExporterConfig",
]

MIDDLEWARE = [
Expand Down
1 change: 1 addition & 0 deletions backend/core/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@

urlpatterns = [
path("", include("dqt.urls"), name="api"),
path("", include("exporter.urls"), name="exporter"),
]
2 changes: 0 additions & 2 deletions backend/dqt/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
dataset_wipe,
field_level_detail,
field_level_stats,
generate_report,
resource_level_detail,
resource_level_stats,
time_variance_level_stats,
Expand Down Expand Up @@ -58,7 +57,6 @@
dataset_distinct_values,
name="dataset_distinct_values",
),
path("api/generate_report", generate_report, name="generate_report"),
path("api/dataset_start", dataset_start, name="dataset_start"),
path("api/dataset_status/<dataset_id>", dataset_progress, name="dataset_status"),
path("api/dataset_id", dataset_id, name="dataset_id"),
Expand Down
68 changes: 0 additions & 68 deletions backend/dqt/views.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
import time
from datetime import datetime

import simplejson as json
from django.conf import settings
from django.db import connections
from django.db.models import Count
from django.http import HttpResponse, HttpResponseBadRequest, JsonResponse
from django.utils import translation
from django.views.decorators.csrf import csrf_exempt
from psycopg2.sql import SQL, Identifier

Expand All @@ -18,10 +15,7 @@
ProgressMonitorDataset,
TimeVarianceLevelCheck,
)
from .tools.errors import GoogleDriveError, TagError
from .tools.gdocs import Gdocs
from .tools.rabbit import publish
from .tools.tags.template_tags.base import BaseTemplateTag


@csrf_exempt
Expand Down Expand Up @@ -271,68 +265,6 @@ def time_variance_level_stats(request, dataset_id):
return JsonResponse(result)


@csrf_exempt
def generate_report(request):
if request.method == "GET":
return JsonResponse({"status": "report_error", "data": {"reason": "Only post method is accepted."}})

body_unicode = request.body.decode("utf-8")
input_message = json.loads(body_unicode)

# checking input_message correctness
if (
"dataset_id" not in input_message
or not isinstance(input_message["dataset_id"], int)
or "document_id" not in input_message
or "folder_id" not in input_message
):
return JsonResponse(
{"status": "report_error", "data": {"reason": "Input message is malformed, will be dropped."}}
)

if "language" in input_message and input_message["language"] in dict(settings.LANGUAGES):
# switch to input language
translation.activate(input_message["language"])
else:
translation.activate("en")

response = None
gdocs = None

try:
gdocs = Gdocs(input_message["document_id"])
base = BaseTemplateTag(gdocs, input_message["dataset_id"])
base.set_param("template", input_message["document_id"])
base.finalize_params()
failed_tags = []
main_template, failed_tags = base.validate_and_process({})

report_name = "Report %s %s" % (input_message["dataset_id"], datetime.now())
if "report_name" in input_message and isinstance(input_message["report_name"], str):
report_name = input_message["report_name"]

file_id = gdocs.upload(input_message["folder_id"], report_name, main_template)

response = JsonResponse({"status": "ok", "data": {"file_id": file_id}, "failed_tags": failed_tags})
except GoogleDriveError as er:
response = JsonResponse({"status": "report_error", "data": {"reason": str(er)}})
except TagError as er:
response = JsonResponse(
{
"status": "template_error",
"data": [er.as_dict()], # Can accommodate multiple TagErrors in the future
"failed_tags": failed_tags,
}
)
finally:
if gdocs is not None:
gdocs.destroy_tempdir()

# restores default english translations
translation.activate("en")
return response


@csrf_exempt
def dataset_start(request):
if request.method == "GET":
Expand Down
File renamed without changes.
6 changes: 6 additions & 0 deletions backend/exporter/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from django.apps import AppConfig


class ExporterConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "exporter"
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion backend/dqt/tools/gdocs.py → backend/exporter/gdocs.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
from django.conf import settings
from django.core.files.base import ContentFile
from django.core.files.storage import default_storage
from dqt.tools.errors import GoogleDriveError
from exporter.exceptions import GoogleDriveError
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError, ResumableUploadError
Expand Down
6 changes: 3 additions & 3 deletions backend/dqt/tools/graphs.py → backend/exporter/graphs.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
from PIL import Image, ImageDraw, ImageFont

font_dirs = [
os.path.join("dqt", "assets", "fonts"),
os.path.join("exporter", "assets", "fonts"),
]
font_files = font_manager.findSystemFonts(fontpaths=font_dirs)
for font_file in font_files:
Expand Down Expand Up @@ -408,9 +408,9 @@ def table_result_box(counts_pairs, total_count=None, return_aspect_ratio=False):
def lifecycle_image(
planning_count, tender_count, award_count, contract_count, implementation_count, return_aspect_ratio=False
):
image = Image.open(os.path.join("dqt", "assets", "images", "lifecycle.png"))
image = Image.open(os.path.join("exporter", "assets", "images", "lifecycle.png"))
draw = ImageDraw.Draw(image)
font = ImageFont.truetype(os.path.join("dqt", "assets", "fonts", "GT Eesti Pro Display Regular.ttf"), 45)
font = ImageFont.truetype(os.path.join("exporter", "assets", "fonts", "GT Eesti Pro Display Regular.ttf"), 45)

draw.text(
xy=(154, 283),
Expand Down
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from dqt.tools.misc import terms_enumeration
from dqt.tools.tags.tag import LeafTag
from exporter.tags.tag import LeafTag
from exporter.util import terms_enumeration


class CountLeafTag(LeafTag):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import random

from dqt.tools.elements import multiple_line_elements
from dqt.tools.misc import terms_enumeration
from dqt.tools.tags.tag import LeafTag
from exporter.elements import multiple_line_elements
from exporter.tags.tag import LeafTag
from exporter.util import terms_enumeration


class ExamplesLeafTag(LeafTag):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from dqt.tools.misc import terms_enumeration
from dqt.tools.tags.tag import LeafTag
from exporter.tags.tag import LeafTag
from exporter.util import terms_enumeration


class ShareLeafTag(LeafTag):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from dqt.tools.misc import terms_enumeration
from dqt.tools.tags.tag import LeafTag
from exporter.tags.tag import LeafTag
from exporter.util import terms_enumeration


class SumLeafTag(LeafTag):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from dqt.tools import graphs
from dqt.tools.elements import image_element
from dqt.tools.misc import terms_enumeration
from dqt.tools.tags.tag import LeafTag
from exporter import graphs
from exporter.elements import image_element
from exporter.tags.tag import LeafTag
from exporter.util import terms_enumeration


class CountsResultBoxImageLeafTag(LeafTag):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from dqt.tools.tags.tag import LeafTag
from exporter.tags.tag import LeafTag


class CountLeafTag(LeafTag):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import random

from dqt.tools.elements import multiple_line_elements
from dqt.tools.misc import terms_enumeration
from dqt.tools.tags.tag import LeafTag
from exporter.elements import multiple_line_elements
from exporter.tags.tag import LeafTag
from exporter.util import terms_enumeration


class ExamplesLeafTag(LeafTag):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from dqt.tools.tags.tag import LeafTag
from exporter.tags.tag import LeafTag


class ShareLeafTag(LeafTag):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from dqt.tools import graphs
from dqt.tools.elements import image_element
from dqt.tools.tags.tag import LeafTag
from exporter import graphs
from exporter.elements import image_element
from exporter.tags.tag import LeafTag


class PassedResultBoxImageLeafTag(LeafTag):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from dqt.tools.tags.tag import LeafTag
from exporter.tags.tag import LeafTag


class ResultLeafTag(LeafTag):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from dqt.tools.misc import terms_enumeration
from dqt.tools.tags.tag import LeafTag
from exporter.tags.tag import LeafTag
from exporter.util import terms_enumeration


class BuyerCountLeafTag(LeafTag):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from dqt.tools.misc import terms_enumeration
from dqt.tools.tags.tag import LeafTag
from exporter.tags.tag import LeafTag
from exporter.util import terms_enumeration


class OcidCountLeafTag(LeafTag):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from dqt.tools import graphs
from dqt.tools.elements import image_element
from dqt.tools.tags.tag import LeafTag
from exporter import graphs
from exporter.elements import image_element
from exporter.tags.tag import LeafTag


class TableResultBoxImageLeafTag(LeafTag):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from dqt.tools.misc import terms_enumeration
from dqt.tools.tags.tag import LeafTag
from exporter.tags.tag import LeafTag
from exporter.util import terms_enumeration


class AmountLeafTag(LeafTag):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from dqt.tools.misc import terms_enumeration
from dqt.tools.tags.tag import LeafTag
from exporter.tags.tag import LeafTag
from exporter.util import terms_enumeration


class CountLeafTag(LeafTag):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import random

from dqt.tools.elements import multiple_line_elements
from dqt.tools.misc import terms_enumeration
from dqt.tools.tags.tag import LeafTag
from exporter.elements import multiple_line_elements
from exporter.tags.tag import LeafTag
from exporter.util import terms_enumeration


class ExamplesLeafTag(LeafTag):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from dqt.tools.misc import terms_enumeration
from dqt.tools.tags.tag import LeafTag
from exporter.tags.tag import LeafTag
from exporter.util import terms_enumeration


class ShareLeafTag(LeafTag):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from dqt.tools.tags.tag import LeafTag
from exporter.tags.tag import LeafTag


class ValueLeafTag(LeafTag):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import random

from dqt.tools.elements import multiple_line_elements
from dqt.tools.misc import terms_enumeration
from dqt.tools.tags.tag import LeafTag
from exporter.elements import multiple_line_elements
from exporter.tags.tag import LeafTag
from exporter.util import terms_enumeration


def generate_examples_leaf_tag(key):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from dqt.tools.misc import terms_enumeration
from dqt.tools.tags.tag import LeafTag
from exporter.tags.tag import LeafTag
from exporter.util import terms_enumeration


class CheckedCountLeafTag(LeafTag):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from django.utils.translation import gettext as _
from dqt.tools.misc import terms_enumeration
from dqt.tools.tags.tag import LeafTag
from exporter.tags.tag import LeafTag
from exporter.util import terms_enumeration


class DescriptionLeafTag(LeafTag):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from dqt.tools.misc import terms_enumeration
from dqt.tools.tags.tag import LeafTag
from exporter.tags.tag import LeafTag
from exporter.util import terms_enumeration


class FailedCountLeafTag(LeafTag):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import random

from dqt.tools.elements import multiple_line_elements
from dqt.tools.misc import terms_enumeration
from dqt.tools.tags.tag import LeafTag
from exporter.elements import multiple_line_elements
from exporter.tags.tag import LeafTag
from exporter.util import terms_enumeration


class FailedExamplesLeafTag(LeafTag):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from django.utils.translation import gettext as _
from dqt.tools.misc import terms_enumeration
from dqt.tools.tags.tag import LeafTag
from exporter.tags.tag import LeafTag
from exporter.util import terms_enumeration


class NameLeafTag(LeafTag):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from dqt.tools.misc import terms_enumeration
from dqt.tools.tags.tag import LeafTag
from exporter.tags.tag import LeafTag
from exporter.util import terms_enumeration


class PassedCountLeafTag(LeafTag):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import random

from dqt.tools.elements import multiple_line_elements
from dqt.tools.misc import terms_enumeration
from dqt.tools.tags.tag import LeafTag
from exporter.elements import multiple_line_elements
from exporter.tags.tag import LeafTag
from exporter.util import terms_enumeration


class PassedExamplesLeafTag(LeafTag):
Expand Down

0 comments on commit fe94f41

Please sign in to comment.