2015-05-27 10:21:30 +00:00
|
|
|
from django.contrib import admin
|
2016-06-03 05:07:47 +00:00
|
|
|
from django.core.urlresolvers import reverse
|
2017-04-24 22:07:50 +00:00
|
|
|
from django.utils.html import format_html
|
2017-04-24 16:51:11 +00:00
|
|
|
|
2016-05-27 05:51:10 +00:00
|
|
|
from utils.mailer import BaseEmail
|
2016-06-03 05:07:47 +00:00
|
|
|
from .forms import HostingOrderAdminForm
|
2017-04-23 16:54:41 +00:00
|
|
|
from .models import VirtualMachineType, VirtualMachinePlan, HostingOrder, ManageVM
|
2017-04-24 22:07:50 +00:00
|
|
|
from .opennebula_functions import HostingManageVMAdmin
|
|
|
|
|
2017-03-15 12:02:55 +00:00
|
|
|
|
2016-06-03 05:07:47 +00:00
|
|
|
class HostingOrderAdmin(admin.ModelAdmin):
|
|
|
|
# fields = ('slug', 'imdb_link', 'start', 'finish', 'added_by')
|
|
|
|
list_display = ('id', 'created_at', 'plan', 'user')
|
|
|
|
search_fields = ['vm_plan__id', 'customer__user__email']
|
|
|
|
|
|
|
|
def save_model(self, request, obj, form, change):
|
|
|
|
if not change:
|
|
|
|
customer = form.cleaned_data.get('customer')
|
|
|
|
|
|
|
|
# Get and set billing address from the lastest charged order
|
|
|
|
last_order = HostingOrder.objects.filter(customer=customer).latest('id')
|
|
|
|
billing_address = last_order.billing_address
|
|
|
|
obj.billing_address = billing_address
|
|
|
|
|
|
|
|
charge = form.cleaned_data.get('charge')
|
|
|
|
# Associate an order with a stripe payment
|
|
|
|
obj.set_stripe_charge(charge)
|
|
|
|
|
|
|
|
# If the Stripe payment was successed, set order status approved
|
|
|
|
obj.set_approved()
|
|
|
|
|
2016-07-11 03:08:51 +00:00
|
|
|
# Assigning permissions
|
|
|
|
obj.assign_permissions(customer.user)
|
|
|
|
|
2016-06-03 05:07:47 +00:00
|
|
|
context = {
|
|
|
|
'order': obj,
|
2016-06-16 06:04:48 +00:00
|
|
|
'vm': obj.vm_plan,
|
|
|
|
'base_url': "{0}://{1}".format(request.scheme, request.get_host())
|
2016-06-03 05:07:47 +00:00
|
|
|
}
|
|
|
|
email_data = {
|
2016-06-16 06:04:48 +00:00
|
|
|
'subject': 'Your VM plan has been charged',
|
2016-06-03 05:07:47 +00:00
|
|
|
'to': obj.customer.user.email,
|
|
|
|
'context': context,
|
|
|
|
'template_name': 'vm_charged',
|
Created signup view. Added login after signup.Added signup url to nosystem app urls.py. Added logout view, Added logout button on nabber, Added password reset form, Added password view , Added password reset html, Added password reset email for nosystemd app. Added confirm_reset_password.html, Added confirm_ reset password view, Added confirm reset password form, Fixed reset password token generation, Started donation view, Added donation view, Added donation.html, Added donation form, Adding donation.js lib in order to capture stripe payments for nosystem app.
2016-07-22 06:24:32 +00:00
|
|
|
'template_path': 'hosting/emails/'
|
2016-06-03 05:07:47 +00:00
|
|
|
}
|
|
|
|
email = BaseEmail(**email_data)
|
|
|
|
email.send()
|
|
|
|
|
|
|
|
obj.save()
|
|
|
|
return obj
|
|
|
|
|
|
|
|
def get_form(self, request, obj=None, **kwargs):
|
|
|
|
if obj is None:
|
|
|
|
kwargs['form'] = HostingOrderAdminForm
|
|
|
|
return super(HostingOrderAdmin, self).get_form(request, obj, **kwargs)
|
|
|
|
|
|
|
|
def user(self, obj):
|
|
|
|
email = obj.customer.user.email
|
|
|
|
user_url = reverse("admin:membership_customuser_change", args=[obj.customer.user.id])
|
|
|
|
return format_html("<a href='{url}'>{email}</a>", url=user_url, email=email)
|
|
|
|
|
|
|
|
def plan(self, obj):
|
|
|
|
vm_name = obj.vm_plan.name
|
|
|
|
vm_url = reverse("admin:hosting_virtualmachineplan_change", args=[obj.vm_plan.id])
|
|
|
|
return format_html("<a href='{url}'>{vm_name}</a>", url=vm_url, vm_name=vm_name)
|
|
|
|
|
|
|
|
plan.short_description = "Virtual Machine Plan"
|
2015-05-27 10:21:30 +00:00
|
|
|
|
2016-04-18 01:05:39 +00:00
|
|
|
|
2016-05-27 05:51:10 +00:00
|
|
|
class VirtualMachinePlanAdmin(admin.ModelAdmin):
|
|
|
|
list_display = ('name', 'id', 'email')
|
|
|
|
|
|
|
|
def email(self, obj):
|
|
|
|
return obj.hosting_orders.latest('id').customer.user.email
|
|
|
|
|
|
|
|
def save_model(self, request, obj, form, change):
|
|
|
|
email = self.email(obj)
|
2016-06-10 04:50:49 +00:00
|
|
|
if 'status' in form.changed_data:
|
2016-05-27 05:51:10 +00:00
|
|
|
context = {
|
2016-06-16 06:04:48 +00:00
|
|
|
'vm': obj,
|
|
|
|
'base_url': "{0}://{1}".format(request.scheme, request.get_host())
|
2016-05-27 05:51:10 +00:00
|
|
|
}
|
|
|
|
email_data = {
|
|
|
|
'subject': 'Your VM has been activated',
|
|
|
|
'to': email,
|
|
|
|
'context': context,
|
2016-06-10 04:50:49 +00:00
|
|
|
'template_name': 'vm_status_changed',
|
Created signup view. Added login after signup.Added signup url to nosystem app urls.py. Added logout view, Added logout button on nabber, Added password reset form, Added password view , Added password reset html, Added password reset email for nosystemd app. Added confirm_reset_password.html, Added confirm_ reset password view, Added confirm reset password form, Fixed reset password token generation, Started donation view, Added donation view, Added donation.html, Added donation form, Adding donation.js lib in order to capture stripe payments for nosystem app.
2016-07-22 06:24:32 +00:00
|
|
|
'template_path': 'hosting/emails/'
|
2016-05-27 05:51:10 +00:00
|
|
|
}
|
|
|
|
email = BaseEmail(**email_data)
|
|
|
|
email.send()
|
|
|
|
obj.save()
|
|
|
|
|
2017-04-10 08:13:13 +00:00
|
|
|
|
2016-06-03 05:07:47 +00:00
|
|
|
admin.site.register(HostingOrder, HostingOrderAdmin)
|
2016-04-18 01:05:39 +00:00
|
|
|
admin.site.register(VirtualMachineType)
|
2016-05-27 05:51:10 +00:00
|
|
|
admin.site.register(VirtualMachinePlan, VirtualMachinePlanAdmin)
|
2017-04-24 22:07:50 +00:00
|
|
|
admin.site.register(ManageVM, HostingManageVMAdmin)
|