started hosting permissions

This commit is contained in:
Levi 2016-06-26 14:50:48 -05:00
parent c70c98ecc5
commit a8b9e02ea5
10 changed files with 81 additions and 1 deletions

View file

@ -57,6 +57,7 @@ INSTALLED_APPS = (
'stored_messages', 'stored_messages',
'mptt', 'mptt',
'parler', 'parler',
'guardian',
'taggit', 'taggit',
'taggit_autosuggest', 'taggit_autosuggest',
# 'django_select2', # 'django_select2',
@ -182,6 +183,10 @@ DATABASES = {
} }
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
'guardian.backends.ObjectPermissionBackend',
)
# Internationalization # Internationalization
@ -460,3 +465,6 @@ if DEBUG:
from .local import * from .local import *
else: else:
from .prod import * from .prod import *
GUARDIAN_GET_INIT_ANONYMOUS_USER = 'membership.models.get_anonymous_user_instance'

View file

@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.4 on 2016-06-25 00:28
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('hosting', '0025_auto_20160621_0522'),
]
operations = [
migrations.AlterModelOptions(
name='virtualmachineplan',
options={'permissions': (('view_virtualmachineplan', 'View Virtual Machine Plan'), ('cancel_virtualmachineplan', 'Cancel Virtual Machine Plan'))},
),
]

View file

@ -10,6 +10,7 @@ from stored_messages.settings import stored_messages_settings
from membership.models import StripeCustomer from membership.models import StripeCustomer
from utils.models import BillingAddress from utils.models import BillingAddress
from utils.mixins import AssignPermissionsMixin
from .managers import VMPlansManager from .managers import VMPlansManager
@ -82,7 +83,7 @@ class VirtualMachineType(models.Model):
} }
class VirtualMachinePlan(models.Model): class VirtualMachinePlan(AssignPermissionsMixin, models.Model):
PENDING_STATUS = 'pending' PENDING_STATUS = 'pending'
ONLINE_STATUS = 'online' ONLINE_STATUS = 'online'
@ -104,6 +105,10 @@ class VirtualMachinePlan(models.Model):
(NODEJS, 'Debian, NodeJS'), (NODEJS, 'Debian, NodeJS'),
) )
permissions = ('virtualmachineplan.view_virtualmachineplan',
'virtualmachineplan.cancel_virtualmachineplan',
'virtualmachineplan.change_virtualmachineplan')
cores = models.IntegerField() cores = models.IntegerField()
memory = models.IntegerField() memory = models.IntegerField()
disk_size = models.IntegerField() disk_size = models.IntegerField()
@ -116,6 +121,12 @@ class VirtualMachinePlan(models.Model):
objects = VMPlansManager() objects = VMPlansManager()
class Meta:
permissions = (
('view_virtualmachineplan', 'View Virtual Machine Plan'),
('cancel_virtualmachineplan', 'Cancel Virtual Machine Plan'),
)
def __str__(self): def __str__(self):
return self.name return self.name
@ -142,6 +153,7 @@ class VirtualMachinePlan(models.Model):
@classmethod @classmethod
def create(cls, data, user): def create(cls, data, user):
instance = cls.objects.create(**data) instance = cls.objects.create(**data)
instance.assign_permissions(user)
return instance return instance
@staticmethod @staticmethod

View file

@ -1,3 +1,4 @@
{% load static from staticfiles %}
<!-- Inliner Build Version 4380b7741bb759d6cb997545f3add21ad48f010b --> <!-- Inliner Build Version 4380b7741bb759d6cb997545f3add21ad48f010b -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"> <html xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">

View file

@ -1,3 +1,4 @@
{% load static from staticfiles %}
<!-- Inliner Build Version 4380b7741bb759d6cb997545f3add21ad48f010b --> <!-- Inliner Build Version 4380b7741bb759d6cb997545f3add21ad48f010b -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"> <html xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">

View file

@ -1,3 +1,4 @@
{% load static from staticfiles %}
<!-- Inliner Build Version 4380b7741bb759d6cb997545f3add21ad48f010b --> <!-- Inliner Build Version 4380b7741bb759d6cb997545f3add21ad48f010b -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"> <html xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">

View file

@ -1,3 +1,4 @@
{% load static from staticfiles %}
<!-- Inliner Build Version 4380b7741bb759d6cb997545f3add21ad48f010b --> <!-- Inliner Build Version 4380b7741bb759d6cb997545f3add21ad48f010b -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"> <html xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">

View file

@ -16,6 +16,11 @@ REGISTRATION_MESSAGE = {'subject': "Validation mail",
'from': 'test@test.com'} 'from': 'test@test.com'}
def get_anonymous_user_instance(User):
return User.register('Anonymous', None, 'anonymous@ungleich.ch')
class MyUserManager(BaseUserManager): class MyUserManager(BaseUserManager):
def create_user(self, email, name, password=None): def create_user(self, email, name, password=None):
""" """

View file

@ -19,6 +19,7 @@ django-polymorphic
model-mommy model-mommy
pycryptodome pycryptodome
django-stored-messages django-stored-messages
django-guardian
#PLUGINS #PLUGINS
djangocms_flash djangocms_flash

31
utils/mixins.py Normal file
View file

@ -0,0 +1,31 @@
from guardian.shortcuts import assign_perm
class AssignPermissionsMixin(object):
permissions = tuple()
user = None
obj = None
kwargs = dict()
def assign_permissions(self, user):
for permission in self.permissions:
assign_perm(permission, user, self)
# def save(self, *args, **kwargs):
# self.kwargs = kwargs
# self.get_objs()
# create = False
# if not self.pk:
# create = True
# super(AssignPermissionsMixin, self).save(*args, **kwargs)
# if create:
# self.assign_permissions()
# def get_objs(self):
# self.user = self.kwargs.pop('user', None)
# self.obj = self.kwargs.pop('obj', None)
# assert self.user, 'Se necesita el parámetro user para poder asignar los permisos'
# assert self.obj, 'Se necesita el parámetro obj para poder asignar los permisos'