Added ‘view virtual machine plan ’ permission, Added ‘delete virtual machine plan’ permission , Added ‘view hosting order’ permission
This commit is contained in:
parent
f024841c4e
commit
2852d3046c
7 changed files with 47 additions and 16 deletions
|
@ -185,8 +185,8 @@ DATABASES = {
|
||||||
|
|
||||||
|
|
||||||
AUTHENTICATION_BACKENDS = (
|
AUTHENTICATION_BACKENDS = (
|
||||||
'django.contrib.auth.backends.ModelBackend',
|
|
||||||
'guardian.backends.ObjectPermissionBackend',
|
'guardian.backends.ObjectPermissionBackend',
|
||||||
|
'django.contrib.auth.backends.ModelBackend',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,9 @@ class HostingOrderAdmin(admin.ModelAdmin):
|
||||||
# If the Stripe payment was successed, set order status approved
|
# If the Stripe payment was successed, set order status approved
|
||||||
obj.set_approved()
|
obj.set_approved()
|
||||||
|
|
||||||
|
# Assigning permissions
|
||||||
|
obj.assign_permissions(customer.user)
|
||||||
|
|
||||||
context = {
|
context = {
|
||||||
'order': obj,
|
'order': obj,
|
||||||
'vm': obj.vm_plan,
|
'vm': obj.vm_plan,
|
||||||
|
|
19
hosting/migrations/0027_auto_20160711_0210.py
Normal file
19
hosting/migrations/0027_auto_20160711_0210.py
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Generated by Django 1.9.4 on 2016-07-11 02:10
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from django.db import migrations
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('hosting', '0026_auto_20160625_0028'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterModelOptions(
|
||||||
|
name='hostingorder',
|
||||||
|
options={'permissions': (('view_hostingorder', 'View Hosting Order'),)},
|
||||||
|
),
|
||||||
|
]
|
|
@ -4,8 +4,6 @@ from django.db import models
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
from django.utils.functional import cached_property
|
from django.utils.functional import cached_property
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
from Crypto.PublicKey import RSA
|
from Crypto.PublicKey import RSA
|
||||||
from stored_messages.settings import stored_messages_settings
|
from stored_messages.settings import stored_messages_settings
|
||||||
|
|
||||||
|
@ -106,9 +104,9 @@ class VirtualMachinePlan(AssignPermissionsMixin, models.Model):
|
||||||
(NODEJS, 'Debian, NodeJS'),
|
(NODEJS, 'Debian, NodeJS'),
|
||||||
)
|
)
|
||||||
|
|
||||||
permissions = ('virtualmachineplan.view_virtualmachineplan',
|
permissions = ('view_virtualmachineplan',
|
||||||
'virtualmachineplan.cancel_virtualmachineplan',
|
'cancel_virtualmachineplan',
|
||||||
'virtualmachineplan.change_virtualmachineplan')
|
'change_virtualmachineplan')
|
||||||
|
|
||||||
cores = models.IntegerField()
|
cores = models.IntegerField()
|
||||||
memory = models.IntegerField()
|
memory = models.IntegerField()
|
||||||
|
@ -180,7 +178,7 @@ class VirtualMachinePlan(AssignPermissionsMixin, models.Model):
|
||||||
self.save(update_fields=['status'])
|
self.save(update_fields=['status'])
|
||||||
|
|
||||||
|
|
||||||
class HostingOrder(models.Model):
|
class HostingOrder(AssignPermissionsMixin, models.Model):
|
||||||
|
|
||||||
ORDER_APPROVED_STATUS = 'Approved'
|
ORDER_APPROVED_STATUS = 'Approved'
|
||||||
ORDER_DECLINED_STATUS = 'Declined'
|
ORDER_DECLINED_STATUS = 'Declined'
|
||||||
|
@ -194,6 +192,13 @@ class HostingOrder(models.Model):
|
||||||
cc_brand = models.CharField(max_length=10)
|
cc_brand = models.CharField(max_length=10)
|
||||||
stripe_charge_id = models.CharField(max_length=100, null=True)
|
stripe_charge_id = models.CharField(max_length=100, null=True)
|
||||||
|
|
||||||
|
permissions = ('view_hostingorder',)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
permissions = (
|
||||||
|
('view_hostingorder', 'View Hosting Order'),
|
||||||
|
)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "%s" % (self.id)
|
return "%s" % (self.id)
|
||||||
|
|
||||||
|
@ -205,6 +210,7 @@ class HostingOrder(models.Model):
|
||||||
def create(cls, vm_plan=None, customer=None, billing_address=None):
|
def create(cls, vm_plan=None, customer=None, billing_address=None):
|
||||||
instance = cls.objects.create(vm_plan=vm_plan, customer=customer,
|
instance = cls.objects.create(vm_plan=vm_plan, customer=customer,
|
||||||
billing_address=billing_address)
|
billing_address=billing_address)
|
||||||
|
instance.assign_permissions(customer.user)
|
||||||
return instance
|
return instance
|
||||||
|
|
||||||
def set_approved(self):
|
def set_approved(self):
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
<meta name="description" content="">
|
<meta name="description" content="">
|
||||||
<meta name="author" content="">
|
<meta name="author" content="">
|
||||||
|
|
||||||
<title>nngleich</title>
|
<title>ungleich</title>
|
||||||
|
|
||||||
<!-- Bootstrap Core CSS -->
|
<!-- Bootstrap Core CSS -->
|
||||||
<link href="{% static 'hosting/css/bootstrap.min.css' %}" rel="stylesheet">
|
<link href="{% static 'hosting/css/bootstrap.min.css' %}" rel="stylesheet">
|
||||||
|
|
|
@ -12,7 +12,7 @@ from django.http import HttpResponseRedirect
|
||||||
from django.contrib.auth import authenticate, login
|
from django.contrib.auth import authenticate, login
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
|
from guardian.mixins import PermissionRequiredMixin
|
||||||
from stored_messages.settings import stored_messages_settings
|
from stored_messages.settings import stored_messages_settings
|
||||||
from stored_messages.models import Message
|
from stored_messages.models import Message
|
||||||
from stored_messages.api import mark_read
|
from stored_messages.api import mark_read
|
||||||
|
@ -406,10 +406,11 @@ class PaymentVMView(LoginRequiredMixin, FormView):
|
||||||
return self.form_invalid(form)
|
return self.form_invalid(form)
|
||||||
|
|
||||||
|
|
||||||
class OrdersHostingDetailView(LoginRequiredMixin, DetailView):
|
class OrdersHostingDetailView(PermissionRequiredMixin, LoginRequiredMixin, DetailView):
|
||||||
template_name = "hosting/order_detail.html"
|
template_name = "hosting/order_detail.html"
|
||||||
context_object_name = "order"
|
context_object_name = "order"
|
||||||
login_url = reverse_lazy('hosting:login')
|
login_url = reverse_lazy('hosting:login')
|
||||||
|
permission_required = ['view_hostingorder']
|
||||||
model = HostingOrder
|
model = HostingOrder
|
||||||
|
|
||||||
|
|
||||||
|
@ -447,11 +448,12 @@ class VirtualMachinesPlanListView(LoginRequiredMixin, ListView):
|
||||||
return super(VirtualMachinesPlanListView, self).get_queryset()
|
return super(VirtualMachinesPlanListView, self).get_queryset()
|
||||||
|
|
||||||
|
|
||||||
class VirtualMachineView(LoginRequiredMixin, UpdateView):
|
class VirtualMachineView(PermissionRequiredMixin, LoginRequiredMixin, UpdateView):
|
||||||
template_name = "hosting/virtual_machine_detail.html"
|
template_name = "hosting/virtual_machine_detail.html"
|
||||||
login_url = reverse_lazy('hosting:login')
|
login_url = reverse_lazy('hosting:login')
|
||||||
model = VirtualMachinePlan
|
model = VirtualMachinePlan
|
||||||
context_object_name = "virtual_machine"
|
context_object_name = "virtual_machine"
|
||||||
|
permission_required = ['view_virtualmachineplan', 'cancel_virtualmachineplan']
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
|
|
||||||
def get_success_url(self):
|
def get_success_url(self):
|
||||||
|
|
|
@ -17,7 +17,8 @@ REGISTRATION_MESSAGE = {'subject': "Validation mail",
|
||||||
|
|
||||||
|
|
||||||
def get_anonymous_user_instance(User):
|
def get_anonymous_user_instance(User):
|
||||||
return User.register('Anonymous', None, 'anonymous@ungleich.ch')
|
return CustomUser(name='Anonymous', email='anonymous@ungleich.ch',
|
||||||
|
validation_slug=make_password(None))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -108,10 +109,10 @@ class CustomUser(AbstractBaseUser, PermissionsMixin):
|
||||||
def __str__(self): # __unicode__ on Python 2
|
def __str__(self): # __unicode__ on Python 2
|
||||||
return self.email
|
return self.email
|
||||||
|
|
||||||
def has_perm(self, perm, obj=None):
|
# def has_perm(self, perm, obj=None):
|
||||||
"Does the user have a specific permission?"
|
# "Does the user have a specific permission?"
|
||||||
# Simplest possible answer: Yes, always
|
# # Simplest possible answer: Yes, always
|
||||||
return self.is_admin
|
# return self.is_admin
|
||||||
|
|
||||||
def has_module_perms(self, app_label):
|
def has_module_perms(self, app_label):
|
||||||
"Does the user have permissions to view the app `app_label`?"
|
"Does the user have permissions to view the app `app_label`?"
|
||||||
|
|
Loading…
Reference in a new issue