From b44b6bb3075c2bedba31fc2d38f0c92661d84b4f Mon Sep 17 00:00:00 2001 From: Stauros Kroustouris <staurosk@noc.grnet.gr> Date: Mon, 25 May 2015 12:06:40 +0300 Subject: [PATCH] remove lint errors and clean some files --- accounts/admin.py | 21 +- accounts/models.py | 13 +- accounts/serializers.py | 8 - accounts/views.py | 120 ++++++---- accounts/viewsets.py | 8 - djangobackends/shibauthBackend.py | 5 +- flowspec/admin.py | 26 +-- flowspec/forms.py | 26 +-- flowspec/tasks.py | 47 ++-- flowspec/templatetags/tofqdn.py | 2 - flowspec/views.py | 370 ++++++++++++++++++++---------- 11 files changed, 376 insertions(+), 270 deletions(-) delete mode 100644 accounts/serializers.py delete mode 100644 accounts/viewsets.py diff --git a/accounts/admin.py b/accounts/admin.py index ada7c4dc..04d6f9cc 100644 --- a/accounts/admin.py +++ b/accounts/admin.py @@ -18,20 +18,21 @@ # from django.contrib import admin -from accounts.models import * -from django.contrib.auth.models import User -from peers.models import * -from django.conf import settings - -class UserPrAdmin(admin.ModelAdmin): - list_display = ('user', 'peer') - -admin.site.register(UserProfile, UserPrAdmin) from django import forms from django.core.urlresolvers import reverse from django.contrib.flatpages.admin import FlatPageAdmin from django.contrib.flatpages.models import FlatPage + from tinymce.widgets import TinyMCE +from accounts.models import UserProfile + + +class UserPrAdmin(admin.ModelAdmin): + list_display = ('user', 'peer') + +admin.site.register(UserProfile, UserPrAdmin) + + class TinyMCEFlatPageAdmin(FlatPageAdmin): def formfield_for_dbfield(self, db_field, **kwargs): @@ -43,4 +44,4 @@ class TinyMCEFlatPageAdmin(FlatPageAdmin): return super(TinyMCEFlatPageAdmin, self).formfield_for_dbfield(db_field, **kwargs) admin.site.unregister(FlatPage) -admin.site.register(FlatPage, TinyMCEFlatPageAdmin) \ No newline at end of file +admin.site.register(FlatPage, TinyMCEFlatPageAdmin) diff --git a/accounts/models.py b/accounts/models.py index d1441588..0976e2b1 100644 --- a/accounts/models.py +++ b/accounts/models.py @@ -19,24 +19,23 @@ from django.db import models from django.contrib.auth.models import User -from peers.models import * +from peers.models import Peer class UserProfile(models.Model): user = models.OneToOneField(User) peer = models.ForeignKey(Peer) - + class Meta: permissions = ( - ("overview", "Can see registered users and rules"), - ) + ("overview", "Can see registered users and rules"), + ) - def __unicode__(self): - return "%s:%s" %(self.user.username, self.peer.peer_name) + return "%s:%s" % (self.user.username, self.peer.peer_name) def get_address_space(self): networks = self.domain.networks.all() if not networks: return False - return networks \ No newline at end of file + return networks diff --git a/accounts/serializers.py b/accounts/serializers.py deleted file mode 100644 index 27eff549..00000000 --- a/accounts/serializers.py +++ /dev/null @@ -1,8 +0,0 @@ -from rest_framework import serializers -from django.contrib.auth.models import User - - -class UserSerializer(serializers.HyperlinkedModelSerializer): - class Meta: - model = User - fields = ('url', 'username', 'email', 'is_staff') diff --git a/accounts/views.py b/accounts/views.py index 8909aa96..a86b74e4 100644 --- a/accounts/views.py +++ b/accounts/views.py @@ -16,84 +16,110 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # - +from django import forms from django.conf import settings from django.core.mail import send_mail from django.contrib.sites.models import Site -from django.shortcuts import render_to_response -from django.template.context import RequestContext +from django.contrib.auth.models import User +from django.shortcuts import render from django.template.loader import render_to_string from django.utils.translation import ugettext_lazy as _ -from accounts.models import * -from peers.models import * -from flowspec.forms import * -from registration.models import RegistrationProfile -from registration.views import activate as registration_activate from django.views.decorators.cache import never_cache +from accounts.models import UserProfile +from peers.models import Peer +from flowspec.forms import UserProfileForm +from registration.models import RegistrationProfile + + @never_cache def activate(request, activation_key): account = None if request.method == "GET": - activation_key = activation_key.lower() # Normalize before trying anything with it. - context = RequestContext(request) + activation_key = activation_key.lower() # Normalize before trying anything with it. try: rp = RegistrationProfile.objects.get(activation_key=activation_key) - + except RegistrationProfile.DoesNotExist: - return render_to_response("registration/activate.html", - { 'account': account, - 'expiration_days': settings.ACCOUNT_ACTIVATION_DAYS }, - context_instance=context) + return render( + request, + 'registration/activate.html', + { + 'account': account, + 'expiration_days': settings.ACCOUNT_ACTIVATION_DAYS + } + ) try: userProfile = rp.user.get_profile() except UserProfile.DoesNotExist: - return render_to_response("registration/activate.html", - { 'account': account, - 'expiration_days': settings.ACCOUNT_ACTIVATION_DAYS }, - context_instance=context) - + return render( + request, + 'registration/activate.html', + { + 'account': account, + 'expiration_days': settings.ACCOUNT_ACTIVATION_DAYS + } + ) + form = UserProfileForm(instance=userProfile) form.fields['user'] = forms.ModelChoiceField(queryset=User.objects.filter(pk=rp.user.pk), empty_label=None) form.fields['peer'] = forms.ModelChoiceField(queryset=Peer.objects.all(), empty_label=None) - - return render_to_response("registration/activate_edit.html", - { 'account': account, - 'expiration_days': settings.ACCOUNT_ACTIVATION_DAYS, - 'form': form }, - context_instance=context) - + + return render( + request, + 'registration/activate_edit.html', + { + 'account': account, + 'expiration_days': settings.ACCOUNT_ACTIVATION_DAYS, + 'form': form + }, + ) + if request.method == "POST": - context = RequestContext(request) request_data = request.POST.copy() try: user = User.objects.get(pk=request_data['user']) up = user.get_profile() up.peer = Peer.objects.get(pk=request_data['peer']) up.save() - + except: - return render_to_response("registration/activate_edit.html", - { 'account': account, - 'expiration_days': settings.ACCOUNT_ACTIVATION_DAYS - }, - context_instance=context) - activation_key = activation_key.lower() # Normalize before trying anything with it. + return render( + request, + 'registration/activate_edit.html', + { + 'account': account, + 'expiration_days': settings.ACCOUNT_ACTIVATION_DAYS + }, + ) + activation_key = activation_key.lower() # Normalize before trying anything with it. try: rp = RegistrationProfile.objects.get(activation_key=activation_key) account = RegistrationProfile.objects.activate_user(activation_key) - except Exception as e: + except Exception: pass - + if account: # A user has been activated - email = render_to_string("registration/activation_complete.txt", - {"site": Site.objects.get_current(), - "user": account}) - send_mail(_("%sUser account activated") % settings.EMAIL_SUBJECT_PREFIX, - email, settings.SERVER_EMAIL, [account.email]) - context = RequestContext(request) - return render_to_response("registration/activate.html", - { 'account': account, - 'expiration_days': settings.ACCOUNT_ACTIVATION_DAYS }, - context_instance=context) \ No newline at end of file + email = render_to_string( + request, + 'registration/activation_complete.txt', + { + 'site': Site.objects.get_current(), + 'user': account + } + ) + send_mail( + _("%sUser account activated") % settings.EMAIL_SUBJECT_PREFIX, + email, + settings.SERVER_EMAIL, + [account.email] + ) + return render( + request, + 'registration/activate.html', + { + 'account': account, + 'expiration_days': settings.ACCOUNT_ACTIVATION_DAYS + }, + ) diff --git a/accounts/viewsets.py b/accounts/viewsets.py deleted file mode 100644 index 09dea852..00000000 --- a/accounts/viewsets.py +++ /dev/null @@ -1,8 +0,0 @@ -from rest_framework import viewsets -from django.contrib.auth.models import User -from accounts.serializers import UserSerializer - - -class UserViewSet(viewsets.ModelViewSet): - queryset = User.objects.all() - serializer_class = UserSerializer diff --git a/djangobackends/shibauthBackend.py b/djangobackends/shibauthBackend.py index 57f7770e..94649333 100644 --- a/djangobackends/shibauthBackend.py +++ b/djangobackends/shibauthBackend.py @@ -17,9 +17,8 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. # +from django.contrib.auth.models import User -from django.contrib.auth.models import User, UserManager, Permission, Group -from django.conf import settings class shibauthBackend: def authenticate(self, **kwargs): @@ -43,7 +42,7 @@ class shibauthBackend: try: user = User.objects.get(username__exact=username) # The user did not exist. Create one with no privileges - except: + except: user = User.objects.create_user(username, mail, None) user.first_name = firstname user.last_name = lastname diff --git a/flowspec/admin.py b/flowspec/admin.py index 5c19e39e..501c7546 100644 --- a/flowspec/admin.py +++ b/flowspec/admin.py @@ -18,23 +18,21 @@ # from django.contrib import admin -from flowspec.models import * -from accounts.models import * +from flowspec.models import MatchPort, MatchDscp, MatchProtocol, FragmentType, ThenAction, Route +from accounts.models import UserProfile from utils import proxy as PR from tasks import * from django.contrib.auth.models import User from django.contrib.auth.admin import UserAdmin from peers.models import * from flowspec.forms import * -import datetime -from django.conf import settings from longerusername.forms import UserCreationForm, UserChangeForm class RouteAdmin(admin.ModelAdmin): form = RouteForm actions = ['deactivate'] - + def deactivate(self, request, queryset): queryset = queryset.filter(status='ACTIVE') response = batch_delete.delay(queryset, reason="ADMININACTIVE") @@ -52,23 +50,23 @@ class RouteAdmin(admin.ModelAdmin): def has_delete_permission(self, request, obj=None): return False - list_display = ('name', 'status', 'applier' , 'applier_peer', 'get_match', 'get_then', 'response', "expires", "comments") + list_display = ('name', 'status', 'applier', 'applier_peer', 'get_match', 'get_then', 'response', "expires", "comments") fieldsets = [ - (None, {'fields': ['name','applier']}), - ("Match", {'fields': ['source', 'sourceport', 'destination', 'destinationport', 'port']}), + (None, {'fields': ['name', 'applier']}), + ("Match", {'fields': ['source', 'sourceport', 'destination', 'destinationport', 'port']}), ('Advanced Match Statements', {'fields': ['dscp', 'fragmenttype', 'icmpcode', 'icmptype', 'packetlength', 'protocol', 'tcpflag'], 'classes': ['collapse']}), - ("Then", {'fields': ['then' ]}), - ("Expires", {'fields': ['expires' ]}), - (None, {'fields': ['comments',]}), - + ("Then", {'fields': ['then']}), + ("Expires", {'fields': ['expires']}), + (None, {'fields': ['comments', ]}), + ] - class UserProfileInline(admin.StackedInline): model = UserProfile - + + class UserProfileAdmin(UserAdmin): add_form = UserCreationForm form = UserChangeForm diff --git a/flowspec/forms.py b/flowspec/forms.py index 39d0f4e6..8d3494da 100644 --- a/flowspec/forms.py +++ b/flowspec/forms.py @@ -140,7 +140,7 @@ class RouteForm(forms.ModelForm): if broadcast_error: error_text = _('Malformed address format. Cannot be ...0/32') raise forms.ValidationError(error_text) - + def clean_expires(self): date = self.cleaned_data['expires'] if date: @@ -152,22 +152,17 @@ class RouteForm(forms.ModelForm): def clean(self): if self.errors: - raise forms.ValidationError(_('Errors in form. Please review and fix them: %s'%", ".join(self.errors))) + raise forms.ValidationError(_('Errors in form. Please review and fix them: %s'%", ".join(self.errors))) name = self.cleaned_data.get('name', None) source = self.cleaned_data.get('source', None) sourceports = self.cleaned_data.get('sourceport', None) ports = self.cleaned_data.get('port', None) - fragmenttypes = self.cleaned_data.get('fragmenttype', None) then = self.cleaned_data.get('then', None) destination = self.cleaned_data.get('destination', None) destinationports = self.cleaned_data.get('destinationport', None) protocols = self.cleaned_data.get('protocol', None) user = self.cleaned_data.get('applier', None) - try: - issuperuser = self.data['issuperuser'] - su = User.objects.get(username=issuperuser) - except: - issuperuser = None + issuperuser = self.data.get('issuperuser') peer = user.get_profile().peer networks = peer.networks.all() if issuperuser: @@ -223,7 +218,7 @@ class RouteForm(forms.ModelForm): if ports: route_pk_list=get_matchingport_route_pks(ports, existing_routes) if route_pk_list: - existing_routes = existing_routes.filter(pk__in=route_pk_list) + existing_routes = existing_routes.filter(pk__in=route_pk_list) else: existing_routes = existing_routes.filter(port=None) for route in existing_routes: @@ -233,11 +228,12 @@ class RouteForm(forms.ModelForm): raise forms.ValidationError('Found an exact %s rule, %s with destination prefix %s<br>To avoid overlapping try editing rule <a href=\'%s\'>%s</a>' %(route.status, route.name, route.destination, existing_url, route.name)) return self.cleaned_data + class ThenPlainForm(forms.ModelForm): # action = forms.CharField(initial='rate-limit') class Meta: model = ThenAction - + def clean_action_value(self): action_value = self.cleaned_data['action_value'] if action_value: @@ -257,18 +253,17 @@ class ThenPlainForm(forms.ModelForm): raise forms.ValidationError(_('Cannot select something other than rate-limit')) else: return self.cleaned_data["action"] - + class PortPlainForm(forms.ModelForm): # action = forms.CharField(initial='rate-limit') class Meta: model = MatchPort - + def clean_port(self): port = self.cleaned_data['port'] if port: try: - p = int(port) if int(port) > 65535 or int(port) < 0: raise forms.ValidationError(_('Port should be < 65535 and >= 0')) return "%s" %self.cleaned_data["port"] @@ -279,12 +274,14 @@ class PortPlainForm(forms.ModelForm): else: raise forms.ValidationError(_('Cannot be empty')) + def value_list_to_list(valuelist): vl = [] for val in valuelist: vl.append(val[0]) return vl + def get_matchingport_route_pks(portlist, routes): route_pk_list = [] ports_value_list = value_list_to_list(portlist.values_list('port').order_by('port')) @@ -294,6 +291,7 @@ def get_matchingport_route_pks(portlist, routes): route_pk_list.append(route.pk) return route_pk_list + def get_matchingprotocol_route_pks(protocolist, routes): route_pk_list = [] protocols_value_list = value_list_to_list(protocolist.values_list('protocol').order_by('protocol')) @@ -301,4 +299,4 @@ def get_matchingprotocol_route_pks(protocolist, routes): rsp = value_list_to_list(route.protocol.all().values_list('protocol').order_by('protocol')) if rsp and rsp == protocols_value_list: route_pk_list.append(route.pk) - return route_pk_list \ No newline at end of file + return route_pk_list diff --git a/flowspec/tasks.py b/flowspec/tasks.py index 6ad2abbc..28c502d1 100644 --- a/flowspec/tasks.py +++ b/flowspec/tasks.py @@ -28,16 +28,14 @@ from django.conf import settings import datetime from django.core.mail import send_mail from django.template.loader import render_to_string -from django.core.urlresolvers import reverse import os from celery.exceptions import TimeLimitExceeded, SoftTimeLimitExceeded - - LOG_FILENAME = os.path.join(settings.LOG_FILE_LOCATION, 'celery_jobs.log') -#FORMAT = '%(asctime)s %(levelname)s: %(message)s' -#logging.basicConfig(format=FORMAT) + +# FORMAT = '%(asctime)s %(levelname)s: %(message)s' +# logging.basicConfig(format=FORMAT) formatter = logging.Formatter('%(asctime)s %(levelname)s: %(message)s') logger = logging.getLogger(__name__) @@ -74,7 +72,8 @@ def add(route, callback=None): route.status = "ERROR" route.response = "Error" route.save() - announce("[%s] Rule add: %s - Result: %s"%(route.applier, route.name, route.response), route.applier) + announce("[%s] Rule add: %s - Result: %s"%(route.applier, route.name, route.response), route.applier) + @task(ignore_result=True) def edit(route, callback=None): @@ -103,7 +102,7 @@ def edit(route, callback=None): route.status = "ERROR" route.response = "Error" route.save() - announce("[%s] Rule edit: %s - Result: %s"%(route.applier, route.name, route.response), route.applier) + announce("[%s] Rule edit: %s - Result: %s"%(route.applier, route.name, route.response), route.applier) @task(ignore_result=True) @@ -137,7 +136,8 @@ def delete(route, **kwargs): route.status = "ERROR" route.response = "Error" route.save() - announce("[%s] Suspending rule : %s - Result: %s"%(route.applier, route.name, route.response), route.applier) + announce("[%s] Suspending rule : %s - Result: %s"%(route.applier, route.name, route.response), route.applier) + # May not work in the first place... proxy is not aware of Route models @task @@ -164,22 +164,24 @@ def batch_delete(routes, **kwargs): route.response = response route.expires = datetime.date.today() route.save() - announce("[%s] Rule removal: %s%s- Result %s" %(route.applier, route.name, reason_text, response), route.applier) + announce("[%s] Rule removal: %s%s- Result %s" % (route.applier, route.name, reason_text, response), route.applier) else: return False + #@task(ignore_result=True) def announce(messg, user): messg = str(messg) username = user.get_profile().peer.peer_tag b = beanstalkc.Connection() b.use(settings.POLLS_TUBE) - tube_message = json.dumps({'message': messg, 'username':username}) + tube_message = json.dumps({'message': messg, 'username': username}) b.put(tube_message) b.close() + @task -def check_sync(route_name=None, selected_routes = []): +def check_sync(route_name=None, selected_routes=[]): from flowspec.models import Route, MatchPort, MatchDscp, ThenAction if not selected_routes: routes = Route.objects.all() @@ -196,6 +198,7 @@ def check_sync(route_name=None, selected_routes = []): if route.status != 'EXPIRED': route.check_sync() + @task(ignore_result=True) def notify_expired(): from flowspec.models import * @@ -229,25 +232,3 @@ def notify_expired(): logger.info("Exception: %s"%e) pass logger.info('Expiration notification process finished') - -#def delete(route): -# -# applier = PR.Applier(route_object=route) -# commit, response = applier.apply(configuration=applier.delete_routes()) -# if commit: -# rows = queryset.update(is_online=False, is_active=False) -# queryset.update(response="Successfully removed route from network") -# self.message_user(request, "Successfully removed %s routes from network" % rows) -# else: -# self.message_user(request, "Could not remove routes from network") -# if commit: -# is_online = False -# is_active = False -# response = "Successfully removed route from network" -# else: -# is_online = False -# is_active = True -# route.is_online = is_online -# route.is_active = is_active -# route.response = response -# route.save() \ No newline at end of file diff --git a/flowspec/templatetags/tofqdn.py b/flowspec/templatetags/tofqdn.py index 7b83fb13..4518ae38 100644 --- a/flowspec/templatetags/tofqdn.py +++ b/flowspec/templatetags/tofqdn.py @@ -1,6 +1,4 @@ from django import template -from django.utils.safestring import mark_safe -from django.utils.encoding import force_unicode import socket register = template.Library() diff --git a/flowspec/views.py b/flowspec/views.py index 120d597d..d1250acb 100644 --- a/flowspec/views.py +++ b/flowspec/views.py @@ -17,22 +17,16 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. # -import urllib2 -import socket import json from django import forms -from django.views.decorators.csrf import csrf_exempt -from django.core import urlresolvers -from django.core import serializers from django.contrib.auth.decorators import login_required from django.contrib.auth import logout from django.contrib.sites.models import Site from django.contrib.auth.models import User -from django.http import HttpResponseRedirect, HttpResponseForbidden, HttpResponse -from django.shortcuts import get_object_or_404, render_to_response -from django.core.context_processors import request +from django.http import HttpResponseRedirect, HttpResponse +from django.shortcuts import get_object_or_404, render_to_response, render from django.template.context import RequestContext -from django.template.loader import get_template, render_to_string +from django.template.loader import render_to_string from django.utils.translation import ugettext as _ from django.core.urlresolvers import reverse from django.contrib import messages @@ -50,7 +44,6 @@ from peers.models import * from registration.models import RegistrationProfile from copy import deepcopy -from utils.decorators import shib_required from django.views.decorators.cache import never_cache from django.conf import settings @@ -60,8 +53,8 @@ import datetime import os LOG_FILENAME = os.path.join(settings.LOG_FILE_LOCATION, 'celery_jobs.log') -#FORMAT = '%(asctime)s %(levelname)s: %(message)s' -#logging.basicConfig(format=FORMAT) +# FORMAT = '%(asctime)s %(levelname)s: %(message)s' +# logging.basicConfig(format=FORMAT) formatter = logging.Formatter('%(asctime)s %(levelname)s %(clientip)s %(user)s: %(message)s') logger = logging.getLogger(__name__) @@ -70,14 +63,26 @@ handler = logging.FileHandler(LOG_FILENAME) handler.setFormatter(formatter) logger.addHandler(handler) + @login_required def user_routes(request): user_routes = Route.objects.filter(applier=request.user) - return render_to_response('user_routes.html', {'routes': user_routes}, - context_instance=RequestContext(request)) + return render( + request, + 'user_routes.html', + { + 'routes': user_routes + }, + ) + def welcome(request): - return render_to_response('welcome.html', context_instance=RequestContext(request)) + return render( + request, + 'welcome.html', + {} + ) + @login_required @never_cache @@ -87,25 +92,48 @@ def dashboard(request): peer = request.user.get_profile().peer except UserProfile.DoesNotExist: error = "User <strong>%s</strong> does not belong to any peer or organization. It is not possible to create new firewall rules.<br>Please contact Helpdesk to resolve this issue" % request.user.username - return render_to_response('error.html', {'error': error}, context_instance=RequestContext(request)) + return render( + request, + 'error.html', + { + 'error': error + } + ) if peer: - peer_members = UserProfile.objects.filter(peer=peer) - users = [prof.user for prof in peer_members] - group_routes = Route.objects.filter(applier__in=users).order_by('-expires')[:10] - if request.user.is_superuser: - group_routes = Route.objects.all().order_by('-expires')[:10] - return render_to_response('dashboard.html', {'routes': group_routes}, - context_instance=RequestContext(request)) + peer_members = UserProfile.objects.filter(peer=peer) + users = [prof.user for prof in peer_members] + group_routes = Route.objects.filter(applier__in=users).order_by('-expires')[:10] + if request.user.is_superuser: + group_routes = Route.objects.all().order_by('-expires')[:10] + return render( + request, + 'dashboard.html', + { + 'routes': group_routes + }, + ) + @login_required @never_cache def group_routes(request): try: - peer = request.user.get_profile().peer + request.user.get_profile().peer except UserProfile.DoesNotExist: error = "User <strong>%s</strong> does not belong to any peer or organization. It is not possible to create new firewall rules.<br>Please contact Helpdesk to resolve this issue" % request.user.username - return render_to_response('error.html', {'error': error}, context_instance=RequestContext(request)) - return render_to_response('user_routes.html', context_instance=RequestContext(request)) + return render( + request, + 'error.html', + { + 'error': error + } + ) + return render( + request, + 'user_routes.html', + {} + ) + @login_required @never_cache @@ -115,13 +143,17 @@ def group_routes_ajax(request): peer = request.user.get_profile().peer except UserProfile.DoesNotExist: error = "User <strong>%s</strong> does not belong to any peer or organization. It is not possible to create new firewall rules.<br>Please contact Helpdesk to resolve this issue" % request.user.username - return render_to_response('error.html', {'error': error}, context_instance=RequestContext(request)) + return render( + request, + 'error.html', + {'error': error} + ) if peer: - peer_members = UserProfile.objects.filter(peer=peer) - users = [prof.user for prof in peer_members] - group_routes = Route.objects.filter(applier__in=users) - if request.user.is_superuser: - group_routes = Route.objects.all() + peer_members = UserProfile.objects.filter(peer=peer) + users = [prof.user for prof in peer_members] + group_routes = Route.objects.filter(applier__in=users) + if request.user.is_superuser: + group_routes = Route.objects.all() jresp = {} routes = build_routes_json(group_routes) jresp['aaData'] = routes @@ -138,11 +170,11 @@ def overview_routes_ajax(request): error = "User <strong>%s</strong> does not belong to any peer or organization. It is not possible to create new firewall rules.<br>Please contact Helpdesk to resolve this issue" % request.user.username return render_to_response('error.html', {'error': error}, context_instance=RequestContext(request)) if peer: - peer_members = UserProfile.objects.filter(peer=peer) - users = [prof.user for prof in peer_members] - group_routes = Route.objects.filter(applier__in=users) - if request.user.is_superuser or request.user.has_perm('accounts.overview'): - group_routes = Route.objects.all() + peer_members = UserProfile.objects.filter(peer=peer) + users = [prof.user for prof in peer_members] + group_routes = Route.objects.filter(applier__in=users) + if request.user.is_superuser or request.user.has_perm('accounts.overview'): + group_routes = Route.objects.all() jresp = {} routes = build_routes_json(group_routes) jresp['aaData'] = routes @@ -223,13 +255,13 @@ def add_route(request): if not request.user.is_superuser: form.fields['then'] = forms.ModelMultipleChoiceField(queryset=ThenAction.objects.filter(action__in=settings.UI_USER_THEN_ACTIONS).order_by('action'), required=True) form.fields['protocol'] = forms.ModelMultipleChoiceField(queryset=MatchProtocol.objects.filter(protocol__in=settings.UI_USER_PROTOCOLS).order_by('protocol'), required=False) - return render_to_response( + return render( + request, 'apply.html', { 'form': form, 'applier': applier - }, - context_instance=RequestContext(request) + } ) @@ -247,14 +279,6 @@ def edit_route(request, route_slug): ('Insufficient rights to edit rule %s') % (route_slug) ) return HttpResponseRedirect(reverse("group-routes")) -# if route_edit.status == "ADMININACTIVE" : -# messages.add_message(request, messages.WARNING, -# "Administrator has disabled editing of rule %s" %(route_slug)) -# return HttpResponseRedirect(reverse("group-routes")) -# if route_edit.status == "EXPIRED" : -# messages.add_message(request, messages.WARNING, -# "Cannot edit the expired rule %s. Contact helpdesk to enable it" %(route_slug)) -# return HttpResponseRedirect(reverse("group-routes")) if route_edit.status == 'PENDING': messages.add_message( request, @@ -370,9 +394,20 @@ def user_profile(request): peers = Peer.objects.all() except UserProfile.DoesNotExist: error = "User <strong>%s</strong> does not belong to any peer or organization. It is not possible to create new firewall rules.<br>Please contact Helpdesk to resolve this issue" % user.username - return render_to_response('error.html', {'error': error}, context_instance=RequestContext(request)) - return render_to_response('profile.html', {'user': user, 'peers':peers}, - context_instance=RequestContext(request)) + return render( + request, + 'error.html', + {'error': error} + ) + return render( + request, + 'profile.html', + { + 'user': user, + 'peers': peers + }, + ) + @never_cache def user_login(request): @@ -390,27 +425,28 @@ def user_login(request): lastname = lookupShibAttr(settings.SHIB_LASTNAME, request.META) mail = lookupShibAttr(settings.SHIB_MAIL, request.META) entitlement = lookupShibAttr(settings.SHIB_ENTITLEMENT, request.META) - #organization = request.META['HTTP_SHIB_HOMEORGANIZATION'] if settings.SHIB_AUTH_ENTITLEMENT in entitlement.split(";"): has_entitlement = True if not has_entitlement: error_entitlement = True -# if not organization: -# error_orgname = True if not mail: error_mail = True if error_username: error = _("Your idP should release the HTTP_EPPN attribute towards this service<br>") -# if error_orgname: -# error = error + _("Your idP should release the HTTP_SHIB_HOMEORGANIZATION attribute towards this service<br>") if error_entitlement: error = error + _("Your idP should release an appropriate HTTP_SHIB_EP_ENTITLEMENT attribute towards this service<br>") if error_mail: error = error + _("Your idP should release the HTTP_SHIB_INETORGPERSON_MAIL attribute towards this service") if error_username or error_orgname or error_entitlement or error_mail: - return render_to_response('error.html', {'error': error, "missing_attributes": True}, - context_instance=RequestContext(request)) + return render( + request, + 'error.html', + { + 'error': error, + "missing_attributes": True + }, + ) try: if settings.SHIB_SLUGIFY_USERNAME: username = slugify(username) @@ -426,9 +462,7 @@ def user_login(request): if user is not None: try: - peer = user.get_profile().peer -# peer = Peer.objects.get(domain_name=organization) -# up = UserProfile.objects.get_or_create(user=user,peer=peer) + user.get_profile().peer except: form = UserProfileForm() form.fields['user'] = forms.ModelChoiceField(queryset=User.objects.filter(pk=user.pk), empty_label=None) @@ -437,99 +471,157 @@ def user_login(request): if not user_exists: user_activation_notify(user) if user.is_active: - login(request, user) - return HttpResponseRedirect(reverse("dashboard")) + login(request, user) + return HttpResponseRedirect(reverse("dashboard")) else: error = _("User account <strong>%s</strong> is pending activation. Administrators have been notified and will activate this account within the next days. <br>If this account has remained inactive for a long time contact your technical coordinator or GRNET Helpdesk") %user.username - return render_to_response('error.html', {'error': error, 'inactive': True}, - context_instance=RequestContext(request)) + return render( + request, + 'error.html', + { + 'error': error, + 'inactive': True + }, + ) else: error = _("Something went wrong during user authentication. Contact your administrator") - return render_to_response('error.html', {'error': error,}, - context_instance=RequestContext(request)) + return render( + request, + 'error.html', + {'error': error}, + ) except User.DoesNotExist as e: - error = _("Invalid login procedure. Error: %s" %e) - return render_to_response('error.html', {'error': error,}, - context_instance=RequestContext(request)) - # Return an 'invalid login' error message. -# return HttpResponseRedirect(reverse("user-routes")) + error = _("Invalid login procedure. Error: %s" % e) + return render( + request, + 'error.html', + { + 'error': error + }, + ) + def user_activation_notify(user): current_site = Site.objects.get_current() peer = user.get_profile().peer - # Email subject *must not* contain newlines # TechCs will be notified about new users. # Platform admins will activate the users. - subject = render_to_string('registration/activation_email_subject.txt', - { 'site': current_site }) + subject = render_to_string( + 'registration/activation_email_subject.txt', + { + 'site': current_site + } + ) subject = ''.join(subject.splitlines()) registration_profile = RegistrationProfile.objects.create_profile(user) - message = render_to_string('registration/activation_email.txt', - { 'activation_key': registration_profile.activation_key, - 'expiration_days': settings.ACCOUNT_ACTIVATION_DAYS, - 'site': current_site, - 'user': user }) + message = render_to_string( + 'registration/activation_email.txt', + { + 'activation_key': registration_profile.activation_key, + 'expiration_days': settings.ACCOUNT_ACTIVATION_DAYS, + 'site': current_site, + 'user': user + } + ) if settings.NOTIFY_ADMIN_MAILS: admin_mails = settings.NOTIFY_ADMIN_MAILS - send_new_mail(settings.EMAIL_SUBJECT_PREFIX + subject, - message, settings.SERVER_EMAIL, - admin_mails, []) - + send_new_mail( + settings.EMAIL_SUBJECT_PREFIX + subject, + message, + settings.SERVER_EMAIL, + admin_mails, + [] + ) # Mail to domain techCs plus platform admins (no activation hash sent) - subject = render_to_string('registration/activation_email_peer_notify_subject.txt', - { 'site': current_site, - 'peer': peer }) + subject = render_to_string( + 'registration/activation_email_peer_notify_subject.txt', + { + 'site': current_site, + 'peer': peer + } + ) subject = ''.join(subject.splitlines()) - message = render_to_string('registration/activation_email_peer_notify.txt', - { 'user': user, - 'peer': peer }) - send_new_mail(settings.EMAIL_SUBJECT_PREFIX + subject, - message, settings.SERVER_EMAIL, - get_peer_techc_mails(user), []) + message = render_to_string( + 'registration/activation_email_peer_notify.txt', + { + 'user': user, + 'peer': peer + } + ) + send_new_mail( + settings.EMAIL_SUBJECT_PREFIX + subject, + message, + settings.SERVER_EMAIL, + get_peer_techc_mails(user), []) + @login_required @never_cache def add_rate_limit(request): if request.method == "GET": form = ThenPlainForm() - return render_to_response('add_rate_limit.html', {'form': form,}, - context_instance=RequestContext(request)) - + return render( + request, + 'add_rate_limit.html', + { + 'form': form, + }, + ) else: form = ThenPlainForm(request.POST) if form.is_valid(): - then=form.save(commit=False) - then.action_value = "%sk"%then.action_value + then = form.save(commit=False) + then.action_value = "%sk" % then.action_value then.save() response_data = {} - response_data['pk'] = "%s" %then.pk - response_data['value'] = "%s:%s" %(then.action, then.action_value) - return HttpResponse(json.dumps(response_data), mimetype='application/json') + response_data['pk'] = "%s" % then.pk + response_data['value'] = "%s:%s" % (then.action, then.action_value) + return HttpResponse( + json.dumps(response_data), + mimetype='application/json' + ) else: - return render_to_response('add_rate_limit.html', {'form': form,}, - context_instance=RequestContext(request)) + return render( + request, + 'add_rate_limit.html', + { + 'form': form, + }, + ) + @login_required @never_cache def add_port(request): if request.method == "GET": form = PortPlainForm() - return render_to_response('add_port.html', {'form': form,}, - context_instance=RequestContext(request)) - + return render( + 'add_port.html', + { + 'form': form, + }, + ) else: form = PortPlainForm(request.POST) if form.is_valid(): - port=form.save() + port = form.save() response_data = {} - response_data['value'] = "%s" %port.pk - response_data['text'] = "%s" %port.port - return HttpResponse(json.dumps(response_data), mimetype='application/json') + response_data['value'] = "%s" % port.pk + response_data['text'] = "%s" % port.port + return HttpResponse( + json.dumps(response_data), + mimetype='application/json' + ) else: - return render_to_response('add_port.html', {'form': form,}, - context_instance=RequestContext(request)) + return render( + 'add_port.html', + { + 'form': form, + }, + ) + @never_cache def selectinst(request): @@ -537,10 +629,16 @@ def selectinst(request): request_data = request.POST.copy() user = request_data['user'] try: - existingProfile = UserProfile.objects.get(user=user) + UserProfile.objects.get(user=user) error = _("Violation warning: User account is already associated with an institution.The event has been logged and our administrators will be notified about it") - return render_to_response('error.html', {'error': error, 'inactive': True}, - context_instance=RequestContext(request)) + return render( + request, + 'error.html', + { + 'error': error, + 'inactive': True + }, + ) except UserProfile.DoesNotExist: pass @@ -549,12 +647,25 @@ def selectinst(request): userprofile = form.save() user_activation_notify(userprofile.user) error = _("User account <strong>%s</strong> is pending activation. Administrators have been notified and will activate this account within the next days. <br>If this account has remained inactive for a long time contact your technical coordinator or GRNET Helpdesk") %userprofile.user.username - return render_to_response('error.html', {'error': error, 'inactive': True}, - context_instance=RequestContext(request)) + return render( + request, + 'error.html', + { + 'error': error, + 'inactive': True + }, + ) else: form.fields['user'] = forms.ModelChoiceField(queryset=User.objects.filter(pk=user.pk), empty_label=None) form.fields['institution'] = forms.ModelChoiceField(queryset=Peer.objects.all(), empty_label=None) - return render_to_response('registration/select_institution.html', {'form': form}, context_instance=RequestContext(request)) + return render( + request, + 'registration/select_institution.html', + { + 'form': form + } + ) + @never_cache def overview(request): @@ -562,15 +673,26 @@ def overview(request): if user.is_authenticated(): if user.has_perm('accounts.overview'): users = User.objects.all() - return render_to_response('overview/index.html', {'users': users}, - context_instance=RequestContext(request)) + return render( + request, + 'overview/index.html', + { + 'users': users + }, + ) else: - violation=True - return render_to_response('overview/index.html', {'violation': violation}, - context_instance=RequestContext(request)) + violation = True + return render( + request, + 'overview/index.html', + { + 'violation': violation + }, + ) else: return HttpResponseRedirect(reverse("altlogin")) + @login_required @never_cache def user_logout(request): @@ -580,7 +702,7 @@ def user_logout(request): @never_cache def load_jscript(request, file): - long_polling_timeout = int(settings.POLL_SESSION_UPDATE)*1000 + 10000 + long_polling_timeout = int(settings.POLL_SESSION_UPDATE) * 1000 + 10000 return render_to_response('%s.js' % file, {'timeout': long_polling_timeout}, context_instance=RequestContext(request), mimetype="text/javascript") -- GitLab