Все эти представления очень похожи, и я хотел бы объединить их в одно представление.
class SummerIntents(TemplateView):
template_name = 'admin/hr/intent_forms/summer_intents.html'
@user_is_staff
def dispatch(self, request, *args, **kwargs):
return super(SummerIntents, self).dispatch(request, *args, **kwargs)
def get_context_data(self, **kwargs):
context = super(SummerIntents, self).get_context_data(**kwargs)
# These functions are found in util.py
update_date = get_update_date()
active_users = get_active_users(self)
context['summer_info'] = SummerInfo.objects.filter(employee__in=active_users, date_modified__gte=update_date.date, active=True).order_by('position','employee__last_name')
return context
def post(self, request, *args, **kwargs):
context = super(SummerIntents, self).get_context_data(**kwargs)
file_name = "summer_intent_forms"
update_date = get_update_date()
active_users = get_active_users(self)
info = SummerInfo.objects.filter(employee__in=active_users, date_modified__gte=update_date.date, active=True).order_by('position','employee__last_name')
student_intents = get_student_intents(active_users, update_date, 'summer', info)
return intents_to_csv(student_intents, file_name)
class WinterIntents(TemplateView):
template_name = 'admin/hr/intent_forms/winter_intents.html'
@user_is_staff
def dispatch(self, request, *args, **kwargs):
return super(WinterIntents, self).dispatch(request, *args, **kwargs)
def get_context_data(self, **kwargs):
context = super(WinterIntents, self).get_context_data(**kwargs)
# These functions are found in util.py
update_date = get_update_date()
active_users = get_active_users(self)
context['winter_info'] = WinterInfo.objects.filter(employee__in=active_users, date_modified__gte=update_date.date, active=True).order_by('position','employee__last_name')
return context
def post(self, request, *args, **kwargs):
context = super(WinterIntents, self).get_context_data(**kwargs)
file_name = "winter_intent_forms"
update_date = get_update_date()
active_users = get_active_users(self)
info = WinterInfo.objects.filter(employee__in=active_users, date_modified__gte=update_date.date, active=True).order_by('position','employee__last_name')
student_intents = get_student_intents(active_users, update_date, 'winter', info)
return intents_to_csv(student_intents, file_name)
class FallIntents(TemplateView):
template_name = 'admin/hr/intent_forms/fall_intents.html'
@user_is_staff
def dispatch(self, request, *args, **kwargs):
return super(FallIntents, self).dispatch(request, *args, **kwargs)
def get_context_data(self, **kwargs):
context = super(FallIntents, self).get_context_data(**kwargs)
# These functions are found in util.py
update_date = get_update_date()
active_users = get_active_users(self)
context['fall_info'] = FallInfo.objects.filter(employee__in=active_users, date_modified__gte=update_date.date, active=True).order_by('position','employee__last_name')
return context
def post(self, request, *args, **kwargs):
context = super(FallIntents, self).get_context_data(**kwargs)
file_name = "fall_intent_forms"
update_date = get_update_date()
active_users = get_active_users(self)
info = FallInfo.objects.filter(employee__in=active_users, date_modified__gte=update_date.date, active=True).order_by('position','employee__last_name')
student_intents = get_student_intents(active_users, update_date, 'fall')
return intents_to_csv(student_intents, file_name, info)
Я открыт для одного основного представления, от которого все они наследуются, но значит ли это, что мне нужно передать некоторые переменные через контекст? Такие как update_date
и active_users
? Я бы предпочел не добавлять другой метод поверх этих, тем более что они уже такие короткие и основной вид, который наследуется, не принесет особого успеха. Во-вторых, у каждого из них есть метод post, который сохраняет шаблоны в виде CSV-файла при нажатии кнопки, и я не знаю, как его сжать, чтобы все кнопки по-прежнему функционировали должным образом. Наконец, все они имеют разные шаблоны. Должен ли я также объединить их в один файл? Это то, что я надеюсь сделать в конце концов.