+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()
+
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
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):
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
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)
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},
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)
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},
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: