from django.shortcuts import get_object_or_404, render from django.core.urlresolvers import reverse_lazy, reverse from django.views.generic import View, CreateView, FormView from django.shortcuts import redirect from django.http import HttpResponseRedirect from django.contrib.auth import authenticate, login from django.conf import settings from membership.forms import PaymentForm from membership.models import CustomUser from .models import RailsBetaUser, VirtualMachineType from .forms import HostingUserSignupForm, HostingUserLoginForm from .mixins import ProcessVMSelectionMixin class DjangoHostingView(ProcessVMSelectionMixin, View): template_name = "hosting/django.html" def get_context_data(self, **kwargs): context = { 'hosting': "django", 'hosting_long': "Django", 'domain': "django-hosting.ch", 'google_analytics': "UA-62285904-6", 'email': "info@django-hosting.ch", 'vm_types': VirtualMachineType.get_serialized_vm_types(), } return context def get(self, request, *args, **kwargs): context = self.get_context_data() return render(request, self.template_name, context) class RailsHostingView(ProcessVMSelectionMixin, View): template_name = "hosting/rails.html" def get_context_data(self, **kwargs): context = { 'hosting': "rails", 'hosting_long': "Ruby On Rails", 'domain': "rails-hosting.ch", 'google_analytics': "UA-62285904-5", 'email': "info@rails-hosting.ch", 'vm_types': VirtualMachineType.get_serialized_vm_types(), } return context def get(self, request, *args, **kwargs): context = self.get_context_data() return render(request, self.template_name, context) class NodeJSHostingView(ProcessVMSelectionMixin, View): template_name = "hosting/nodejs.html" def get_context_data(self, **kwargs): context = { 'hosting': "nodejs", 'hosting_long': "NodeJS", 'domain': "node-hosting.ch", 'google_analytics': "UA-62285904-7", 'email': "info@node-hosting.ch", 'vm_types': VirtualMachineType.get_serialized_vm_types(), } return context def get(self, request, *args, **kwargs): context = self.get_context_data() return render(request, self.template_name, context) class IndexView(View): template_name = "hosting/index.html" def get_context_data(self, **kwargs): context = { 'hosting': "nodejs", 'hosting_long': "NodeJS", 'domain': "node-hosting.ch", 'google_analytics': "UA-62285904-7", 'email': "info@node-hosting.ch", 'vm_types': VirtualMachineType.get_serialized_vm_types(), } return context def get(self, request, *args, **kwargs): context = self.get_context_data() return render(request, self.template_name, context) class LoginView(FormView): template_name = 'hosting/login.html' form_class = HostingUserLoginForm moodel = CustomUser success_url = reverse_lazy('hosting:login') def form_valid(self, form): email = form.cleaned_data.get('email') password = form.cleaned_data.get('password') auth_user = authenticate(email=email, password=password) if auth_user: login(self.request, auth_user) return HttpResponseRedirect(self.get_success_url()) return HttpResponseRedirect(self.get_success_url()) class SignupView(CreateView): template_name = 'hosting/signup.html' form_class = HostingUserSignupForm moodel = CustomUser def get_success_url(self): return reverse_lazy('hosting:signup') def form_valid(self, form): name = form.cleaned_data.get('name') email = form.cleaned_data.get('email') password = form.cleaned_data.get('password') CustomUser.register(name, password, email) auth_user = authenticate(email=email, password=password) login(self.request, auth_user) return HttpResponseRedirect(self.get_success_url()) class PaymentVMView(FormView): template_name = 'hosting/payment.html' form_class = PaymentForm def get_context_data(self, **kwargs): context = super(PaymentVMView, self).get_context_data(**kwargs) context.update({ 'stripe_key': settings.STRIPE_API_PUBLIC_KEY }) return context # moodel = CustomUser # def get(self, request, *args, **kwargs): # return render(request, self.template_name, self.context) # class RailsBetaUserForm(ModelForm): # required_css_class = 'form-control' # class Meta: # model = RailsBetaUser # fields = [ 'email' ] # def hosting(request, context): # email = RailsBetaUser(received_date=datetime.datetime.now()) # if request.method == 'POST': # context['form'] = RailsBetaUserForm(request.POST, instance=email) # if context['form'].is_valid(): # context['form'].save() # email = context['form'].cleaned_data['email'] # subject = "%shosting request" % context['hosting'] # message = "Request for beta by: %s" % email # mail_managers(subject, message) # return HttpResponseRedirect(reverse("hosting:beta")) # else: # context['form'] = RailsBetaUserForm() # context['error_message'] = "a problem" # page = "hosting/%s.html" % context['hosting'] # return render(request, page, context) # def beta(request): # return render(request, 'hosting/beta.html')