add default rtmp application, filter by rtmp application permissions
This commit is contained in:
		
							parent
							
								
									020393c48b
								
							
						
					
					
						commit
						e92a131e4c
					
				| 
						 | 
					@ -28,6 +28,7 @@ ALLOWED_HOSTS = os.environ.get("DJANGO_ALLOWED_HOSTS", default="*").split(" ")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DEFAULT_GROUP = 'default'
 | 
					DEFAULT_GROUP = 'default'
 | 
				
			||||||
 | 
					DEFAULT_RTMP_APPPLICATION = 'live'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Application definition
 | 
					# Application definition
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,16 @@
 | 
				
			||||||
 | 
					from django.forms import ModelForm
 | 
				
			||||||
 | 
					from guardian.shortcuts import get_objects_for_user
 | 
				
			||||||
 | 
					from . import models
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class StreamFilteredApplicationForm(ModelForm):
 | 
				
			||||||
 | 
					    class Meta:
 | 
				
			||||||
 | 
					        model = models.Stream
 | 
				
			||||||
 | 
					        fields = ['name', 'application']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __init__(self, *args, **kwargs):
 | 
				
			||||||
 | 
					        user = kwargs.pop('user', None)
 | 
				
			||||||
 | 
					        super().__init__(*args, **kwargs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # limit the stream selection to user-accessible streams
 | 
				
			||||||
 | 
					        self.fields['application'].queryset = get_objects_for_user(user, 'rtmp.view_application')
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,16 @@
 | 
				
			||||||
 | 
					from django.core.management.base import BaseCommand
 | 
				
			||||||
 | 
					from django.contrib.auth.models import Group
 | 
				
			||||||
 | 
					from django.conf import settings
 | 
				
			||||||
 | 
					from guardian.shortcuts import assign_perm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from rtmp import models
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Command(BaseCommand):
 | 
				
			||||||
 | 
					    help = 'Creates a default RTMP application that is available to all users in the default group'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def handle(self, *args, **options):
 | 
				
			||||||
 | 
					        default_group, _ = Group.objects.get_or_create(name=settings.DEFAULT_GROUP)
 | 
				
			||||||
 | 
					        default_app, _ = models.Application.objects.get_or_create(name=settings.DEFAULT_RTMP_APPPLICATION)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        assign_perm('view_application', default_group, default_app)
 | 
				
			||||||
| 
						 | 
					@ -13,6 +13,7 @@ from guardian.decorators import permission_required_or_403
 | 
				
			||||||
from guardian.shortcuts import assign_perm
 | 
					from guardian.shortcuts import assign_perm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from . import models
 | 
					from . import models
 | 
				
			||||||
 | 
					from . import forms
 | 
				
			||||||
 | 
					
 | 
				
			||||||
logger = logging.getLogger(__name__)
 | 
					logger = logging.getLogger(__name__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -70,16 +71,26 @@ class StreamDetail(DetailView):
 | 
				
			||||||
                  name='dispatch')
 | 
					                  name='dispatch')
 | 
				
			||||||
class StreamChange(UpdateView):
 | 
					class StreamChange(UpdateView):
 | 
				
			||||||
    model = models.Stream
 | 
					    model = models.Stream
 | 
				
			||||||
    fields = ['application', 'name']
 | 
					    form_class = forms.StreamFilteredApplicationForm
 | 
				
			||||||
    template_name_suffix = '_update_form'
 | 
					    template_name_suffix = '_update_form'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def get_form_kwargs(self):
 | 
				
			||||||
 | 
					        kwargs = super().get_form_kwargs()
 | 
				
			||||||
 | 
					        kwargs['user'] = self.request.user
 | 
				
			||||||
 | 
					        return kwargs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@method_decorator(login_required, name='dispatch')
 | 
					@method_decorator(login_required, name='dispatch')
 | 
				
			||||||
@method_decorator(permission_required_or_403('rtmp.add_stream'),
 | 
					@method_decorator(permission_required_or_403('rtmp.add_stream'),
 | 
				
			||||||
                  name='dispatch')
 | 
					                  name='dispatch')
 | 
				
			||||||
class StreamCreate(CreateView):
 | 
					class StreamCreate(CreateView):
 | 
				
			||||||
    model = models.Stream
 | 
					    model = models.Stream
 | 
				
			||||||
    fields = ["name", "application"]
 | 
					    form_class = forms.StreamFilteredApplicationForm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def get_form_kwargs(self):
 | 
				
			||||||
 | 
					        kwargs = super().get_form_kwargs()
 | 
				
			||||||
 | 
					        kwargs['user'] = self.request.user
 | 
				
			||||||
 | 
					        return kwargs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def form_valid(self, form):
 | 
					    def form_valid(self, form):
 | 
				
			||||||
        valid = super().form_valid(form)
 | 
					        valid = super().form_valid(form)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue