Skip to content
Snippets Groups Projects
Commit fd3870ee authored by Leonidas Poulopoulos's avatar Leonidas Poulopoulos
Browse files

Invoked mailing mechanism

parent 735ba631
No related branches found
No related tags found
No related merge requests found
from django.core.management import setup_environ
import settings
setup_environ(settings)
from django.core.mail import send_mail
from flowspy.flowspec.models import *
from django.template.loader import render_to_string
import datetime
def notify_expired():
routes = Route.objects.all()
for route in routes:
if route.status != 'EXPIRED':
expiration_days = (route.expires - datetime.date.today()).days
if expiration_days < settings.EXPIRATION_NOTIFY_DAYS:
try:
mail_body = render_to_string("rule_expiration.txt",
{"route": route, 'expiration_days':expiration_days})
send_mail(settings.EMAIL_SUBJECT_PREFIX + "Rule %s expires in %s days" %
(route.name,expiration_days),
mail_body, settings.SERVER_EMAIL,
[route.applier.email])
except Exception as e:
print e
pass
if __name__ == "__main__":
notify_expired()
......@@ -13,6 +13,8 @@ class RouteAdmin(admin.ModelAdmin):
actions = ['deactivate']
def deactivate(self, request, queryset):
queryset = queryset.filter(status='ACTIVE')
rows = queryset.update(status='PENDING')
response = batch_delete.delay(queryset, reason="ADMININACTIVE")
self.message_user(request, "Added request %s to job que. Check in a while for result" % response)
deactivate.short_description = "Remove selected routes from network"
......
......@@ -253,6 +253,8 @@ class Route(models.Model):
self.status = "ACTIVE"
self.save()
found = True
if not found and self.status == "ADMININACTIVE":
found = True
return found
def get_then(self):
......
......@@ -3,7 +3,6 @@ from celery.task import task
from celery.task.sets import subtask
import logging
import json
from celery.task.http import *
from flowspy.utils import beanstalkc
from django.conf import settings
......@@ -105,15 +104,16 @@ def check_sync(route_name=None, selected_routes = []):
if route_name:
routes = routes.filter(name=route_name)
for route in routes:
if route.has_expired() and (route.status != 'EXPIRED' or route.status != 'ADMININACTIVE' or route.status != 'INACTIVE'):
if route.has_expired() and (route.status != 'EXPIRED' and route.status != 'ADMININACTIVE' and route.status != 'INACTIVE'):
logger.info('Expiring route %s' %route.name)
subtask(delete).delay(route, reason="EXPIRED")
elif route.has_expired() and (route.status == 'ADMININACTIVE' or route.status == 'INACTIVE'):
route.status = 'EXPIRED'
route.response = 'Route Expired'
route.save()
elif route.status != 'EXPIRED':
route.check_sync()
else:
if route.status != 'EXPIRED':
route.check_sync()
#def delete(route):
......
......@@ -11,7 +11,7 @@ from django.http import HttpResponseRedirect, HttpResponseForbidden, HttpRespons
from django.shortcuts import get_object_or_404, render_to_response
from django.core.context_processors import request
from django.template.context import RequestContext
from django.template.loader import get_template
from django.template.loader import get_template, render_to_string
from django.utils import simplejson
from django.core.urlresolvers import reverse
from django.contrib import messages
......@@ -30,6 +30,7 @@ import datetime
from django.views.decorators.cache import never_cache
from django.conf import settings
from django.core.mail import mail_admins, mail_managers, send_mail
def days_offset(): return datetime.date.today() + datetime.timedelta(days = settings.EXPIRATION_DAYS_OFFSET)
......@@ -80,6 +81,10 @@ def add_route(request):
route.save()
form.save_m2m()
route.commit_add()
mail_body = render_to_string("rule_add_mail.txt",
{"route": route})
mail_admins("Rule %s creation request submitted by %s" %(route.name, route.applier.username),
mail_body, fail_silently=True)
return HttpResponseRedirect(reverse("group-routes"))
else:
return render_to_response('apply.html', {'form': form, 'applier':applier},
......@@ -127,6 +132,10 @@ def edit_route(request, route_slug):
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, messages.WARNING,
"Cannot edit a pending rule: %s." %(route_slug))
return HttpResponseRedirect(reverse("group-routes"))
route_original = deepcopy(route_edit)
if request.POST:
form = RouteForm(request.POST, instance = route_edit)
......@@ -139,6 +148,10 @@ def edit_route(request, route_slug):
route.save()
form.save_m2m()
route.commit_edit()
mail_body = render_to_string("rule_edit_mail.txt",
{"route": route})
mail_admins("Rule %s edit request submitted by %s" %(route.name, route.applier.username),
mail_body, fail_silently=True)
return HttpResponseRedirect(reverse("group-routes"))
else:
return render_to_response('apply.html', {'form': form, 'edit':True, 'applier': applier},
......@@ -160,6 +173,10 @@ def delete_route(request, route_slug):
if applier_peer == requester_peer:
route.status = "PENDING"
route.commit_delete()
mail_body = render_to_string("rule_delete_mail.txt",
{"route": route})
mail_admins("Rule %s removal request submitted by %s" %(route.name, route.applier.username),
mail_body, fail_silently=True)
html = "<html><body>Done</body></html>"
return HttpResponse(html)
else:
......
Η αίτησή σας #{{ application.pk }} για τη δημιουργία εικονικής μηχανής με όνομα
{{ application.hostname }} απορρίφθηκε για τους παρακάτω λόγους:
{{ application.admin_comments }}
Για το ΚΕΔ ΕΔΕΤ
Η εικονική μηχανή με όνομα {{ application.hostname }} δημιουργήθηκε.
Μπορείτε να τη χειριστείτε και να δείτε τα στοιχεία της στην ακόλουθη
διεύθυνση:
{{instance_url}}
{% if application.admin_comments %}Σχόλια διαχειριστή:
{{ application.admin_comments }}
{% endif %}
Για το ΚΕΔ ΕΔΕΤ
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment