views.py 3.16 KB
from django.utils.translation import ugettext_lazy as _
from django.shortcuts import render
from django.views.generic import ListView
from django.views import View, generic
from django.contrib import messages
from rolepermissions.mixins import HasRoleMixin
from django.contrib.auth.mixins import LoginRequiredMixin
from django.core.urlresolvers import reverse_lazy
from core.mixins import NotificationMixin
from core.models import Notification, Action, Resource, Action_Resource
from users.models import User
from .models import EmailBackend
from .forms import EmailBackendForm
from courses.models import Course

class AppIndex(LoginRequiredMixin, ListView, NotificationMixin):
	login_url = reverse_lazy("core:home")	
	redirect_field_name = 'next'

	template_name = "home.html"
	context_object_name = 'objects'
	paginate_by = 10

	def get_queryset(self):
		if self.request.user.is_staff:
			objects = Course.objects.all()
		else:
			objects = Notification.objects.filter(user = self.request.user).order_by('-datetime')

		return objects

	def render_to_response(self, context, **response_kwargs):
		if self.request.user.is_staff:
			context['page_template'] = "home_admin_content.html"
		else:
			context['page_template'] = "home_teacher_student_content.html"
	
		context['title'] = 'Amadeus'

		if self.request.is_ajax():
			if self.request.user.is_staff:
				self.template_name = "home_admin_content.html"
			else:
				self.template_name = "home_teacher_student_content.html"
			
		return self.response_class(request = self.request, template = self.template_name, context = context, using = self.template_engine, **response_kwargs)

class AmadeusSettings(LoginRequiredMixin, HasRoleMixin, generic.CreateView):
	allowed_roles = ['system_admin']
	login_url = reverse_lazy("core:home")
	model = EmailBackend
	template_name = 'admin_settings.html'
	form_class = EmailBackendForm
	#success_url = reverse_lazy('app:settings')

	def get_success_url(self):
		return reverse_lazy('app:settings', kwargs = {'page': self.kwargs['page']})

	def form_invalid(self, form):
		return self.render_to_response(self.get_context_data(form=form))

	def form_valid(self, form):
		try:
			self.object = EmailBackend.objects.latest('id')
			self.object.description = form.cleaned_data['description']
			self.object.host = form.cleaned_data['host']
			self.object.port = form.cleaned_data['port']
			self.object.username = form.cleaned_data['username']
			self.object.password = form.cleaned_data['password']
			self.object.safe_conection = form.cleaned_data['safe_conection']
			self.object.default_from_email = form.cleaned_data['default_from_email']
			self.object.save()
		except:
			self.object = form.save()
		messages.success(self.request, _('Changes saved.'))

		return super(AmadeusSettings, self).form_valid(form)

	def get_context_data(self, **kwargs):
		context = super(AmadeusSettings, self).get_context_data(**kwargs)
		context['page'] = self.kwargs.get('page')
		if not self.request.method == 'POST':
			try:
				setting = EmailBackend.objects.latest('id')
				context['form'] = EmailBackendForm(instance = setting)
			except:
				pass
		return context