Skip to content

Instantly share code, notes, and snippets.

@chelseatroy
Created August 28, 2018 18:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chelseatroy/4506c10118a584456e6a973d962e3b68 to your computer and use it in GitHub Desktop.
Save chelseatroy/4506c10118a584456e6a973d962e3b68 to your computer and use it in GitHub Desktop.
Example of Proxy Model Dependency Injection
from __future__ import unicode_literals
from django.shortcuts import render
from models import Visualization
from exceptions import IncompleteDataException
from .forms import VisualizationForm
from django.contrib.auth.decorators import login_required
VISUALIZATIONS = {
"infection_rate_visualization": InfectionRateVisualization.objects.get(pk="infection_rate_visualization"),
"friend_family_visit_visualization": FriendFamilyVisitVisualization.objects.get(pk="friend_family_visit_visualization"),
"food_request_visualization": FoodRequestVisualization.objects.get(pk="food_request_visualization")
}
@login_required
def transform(request):
name = request.GET['script']
if request.POST and request.FILES:
form = VisualizaionForm(request.POST, request.FILES)
if form.is_valid():
input_file = request.FILES['file']
image = None
try:
vizualization = VISUALIZATIONS[name]
image = vizualization.from_data(name, input_file)
except IncompleteDataException as e:
return render(request, 'visualizations/form.html', {'error': e.message()})
return render(request, 'visualizations/results.html', {'image': image})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment