started hosting permissions
This commit is contained in:
		
					parent
					
						
							
								c70c98ecc5
							
						
					
				
			
			
				commit
				
					
						a8b9e02ea5
					
				
			
		
					 10 changed files with 81 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -57,6 +57,7 @@ INSTALLED_APPS = (
 | 
			
		|||
    'stored_messages',
 | 
			
		||||
    'mptt',
 | 
			
		||||
    'parler',
 | 
			
		||||
    'guardian',
 | 
			
		||||
    'taggit',
 | 
			
		||||
    'taggit_autosuggest',
 | 
			
		||||
    # 'django_select2',
 | 
			
		||||
| 
						 | 
				
			
			@ -182,6 +183,10 @@ DATABASES = {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
AUTHENTICATION_BACKENDS = (
 | 
			
		||||
    'django.contrib.auth.backends.ModelBackend',
 | 
			
		||||
    'guardian.backends.ObjectPermissionBackend',
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Internationalization
 | 
			
		||||
| 
						 | 
				
			
			@ -460,3 +465,6 @@ if DEBUG:
 | 
			
		|||
    from .local import *
 | 
			
		||||
else:
 | 
			
		||||
    from .prod import *
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GUARDIAN_GET_INIT_ANONYMOUS_USER = 'membership.models.get_anonymous_user_instance'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										19
									
								
								hosting/migrations/0026_auto_20160625_0028.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								hosting/migrations/0026_auto_20160625_0028.py
									
										
									
									
									
										Normal 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'))},
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
| 
						 | 
				
			
			@ -10,6 +10,7 @@ from stored_messages.settings import stored_messages_settings
 | 
			
		|||
 | 
			
		||||
from membership.models import StripeCustomer
 | 
			
		||||
from utils.models import BillingAddress
 | 
			
		||||
from utils.mixins import AssignPermissionsMixin
 | 
			
		||||
from .managers import VMPlansManager
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -82,7 +83,7 @@ class VirtualMachineType(models.Model):
 | 
			
		|||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class VirtualMachinePlan(models.Model):
 | 
			
		||||
class VirtualMachinePlan(AssignPermissionsMixin, models.Model):
 | 
			
		||||
 | 
			
		||||
    PENDING_STATUS = 'pending'
 | 
			
		||||
    ONLINE_STATUS = 'online'
 | 
			
		||||
| 
						 | 
				
			
			@ -104,6 +105,10 @@ class VirtualMachinePlan(models.Model):
 | 
			
		|||
        (NODEJS, 'Debian, NodeJS'),
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    permissions = ('virtualmachineplan.view_virtualmachineplan', 
 | 
			
		||||
                   'virtualmachineplan.cancel_virtualmachineplan',
 | 
			
		||||
                   'virtualmachineplan.change_virtualmachineplan')
 | 
			
		||||
 | 
			
		||||
    cores = models.IntegerField()
 | 
			
		||||
    memory = models.IntegerField()
 | 
			
		||||
    disk_size = models.IntegerField()
 | 
			
		||||
| 
						 | 
				
			
			@ -116,6 +121,12 @@ class VirtualMachinePlan(models.Model):
 | 
			
		|||
 | 
			
		||||
    objects = VMPlansManager()
 | 
			
		||||
 | 
			
		||||
    class Meta:
 | 
			
		||||
        permissions = (
 | 
			
		||||
            ('view_virtualmachineplan', 'View Virtual Machine Plan'),
 | 
			
		||||
            ('cancel_virtualmachineplan', 'Cancel Virtual Machine Plan'),
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
    def __str__(self):
 | 
			
		||||
        return self.name
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -142,6 +153,7 @@ class VirtualMachinePlan(models.Model):
 | 
			
		|||
    @classmethod
 | 
			
		||||
    def create(cls, data, user):
 | 
			
		||||
        instance = cls.objects.create(**data)
 | 
			
		||||
        instance.assign_permissions(user)
 | 
			
		||||
        return instance
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,3 +1,4 @@
 | 
			
		|||
{% load static from staticfiles %}
 | 
			
		||||
<!-- Inliner Build Version 4380b7741bb759d6cb997545f3add21ad48f010b -->
 | 
			
		||||
<!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;">
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,3 +1,4 @@
 | 
			
		|||
{% load static from staticfiles %}
 | 
			
		||||
<!-- Inliner Build Version 4380b7741bb759d6cb997545f3add21ad48f010b -->
 | 
			
		||||
<!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;">
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,3 +1,4 @@
 | 
			
		|||
{% load static from staticfiles %}
 | 
			
		||||
<!-- Inliner Build Version 4380b7741bb759d6cb997545f3add21ad48f010b -->
 | 
			
		||||
<!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;">
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,3 +1,4 @@
 | 
			
		|||
{% load static from staticfiles %}
 | 
			
		||||
<!-- Inliner Build Version 4380b7741bb759d6cb997545f3add21ad48f010b -->
 | 
			
		||||
<!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;">
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,6 +16,11 @@ REGISTRATION_MESSAGE = {'subject': "Validation mail",
 | 
			
		|||
                        'from': 'test@test.com'}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def get_anonymous_user_instance(User):
 | 
			
		||||
    return User.register('Anonymous', None, 'anonymous@ungleich.ch')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class MyUserManager(BaseUserManager):
 | 
			
		||||
    def create_user(self, email, name, password=None):
 | 
			
		||||
        """
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,6 +19,7 @@ django-polymorphic
 | 
			
		|||
model-mommy
 | 
			
		||||
pycryptodome
 | 
			
		||||
django-stored-messages
 | 
			
		||||
django-guardian
 | 
			
		||||
 | 
			
		||||
#PLUGINS
 | 
			
		||||
djangocms_flash
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										31
									
								
								utils/mixins.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								utils/mixins.py
									
										
									
									
									
										Normal 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'
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue