diff --git a/smash/web/views/kit.py b/smash/web/views/kit.py
index aaa91741d4818a97c93d3503d7e8befb5e765997..8e72e9975c85e98ec245b530bf7c4c9908c61dbf 100644
--- a/smash/web/views/kit.py
+++ b/smash/web/views/kit.py
@@ -1,16 +1,27 @@
 # coding=utf-8
+
 import datetime
+import locale
+import platform
+import sys
+import time
+import traceback
 
+import pytz
 from django.contrib import messages
 from django.utils.dateparse import parse_datetime
+from django_cron import CronJobBase, Schedule
+from django_cron.models import CronJobLog
 
 from notifications import get_filter_locations, get_today_midnight_date
-from web.models import ConfigurationItem
+from web.models import ConfigurationItem, Language, Worker
+from web.models.constants import KIT_EMAIL_HOUR_CONFIGURATION_TYPE, \
+    KIT_EMAIL_DAY_OF_WEEK_CONFIGURATION_TYPE
 from web.models.constants import KIT_RECIPIENT_EMAIL_CONFIGURATION_TYPE
 from . import wrap_response
-from ..smash_email import EmailSender
 from ..forms import KitRequestForm
 from ..models import AppointmentType, Appointment
+from ..smash_email import EmailSender
 
 
 def get_kit_requests(user, start_date=None, end_date=None):
@@ -67,10 +78,9 @@ def kit_requests(request):
     return wrap_response(request, 'equipment_and_rooms/kit_requests.html', get_kit_requests_data(request))
 
 
-def kit_requests_send_mail(request, start_date, end_date=None):
-    data = get_kit_requests_data(request, start_date, end_date)
+def send_mail(data):
     end_date_str = " end of time"
-    if end_date is not None:
+    if data["end_date"] is not None:
         end_date_str = data["end_date"].strftime('%Y-%m-%d')
     title = "Kits required between " + data["start_date"].strftime('%Y-%m-%d') + " and " + end_date_str
 
@@ -101,14 +111,58 @@ def kit_requests_send_mail(request, start_date, end_date=None):
         email_body += "</tr>"
     email_body += "</tbody></table>"
     recipients = ConfigurationItem.objects.get(type=KIT_RECIPIENT_EMAIL_CONFIGURATION_TYPE).value
-    sender = request.user.email
     cc_recipients = []
-    if sender is not None:
-        cc_recipients.append(sender)
+    EmailSender().send_email(title, email_body, recipients, cc_recipients)
+
+
+def kit_requests_send_mail(request, start_date, end_date=None):
+    data = get_kit_requests_data(request, start_date, end_date)
     try:
-        print email_body
-        EmailSender().send_email(title, email_body, recipients, cc_recipients)
+        send_mail(data)
         messages.add_message(request, messages.SUCCESS, 'Mail sent')
     except:
         messages.add_message(request, messages.ERROR, 'There was problem with sending email')
     return wrap_response(request, 'equipment_and_rooms/kit_requests.html', get_kit_requests_data(request))
+
+
+class KitRequestEmailSendJob(CronJobBase):
+    RUN_EVERY_MINS = 1
+    schedule = Schedule(run_every_mins=RUN_EVERY_MINS)
+    code = 'web.kit_request_weekly_email'  # a unique code
+
+    def do(self):
+        now = datetime.datetime.utcnow()
+        hour = int(ConfigurationItem.objects.get(
+            type=KIT_EMAIL_HOUR_CONFIGURATION_TYPE).value.split(":")[0])
+        minute = int(ConfigurationItem.objects.get(
+            type=KIT_EMAIL_HOUR_CONFIGURATION_TYPE).value.split(":")[1])
+        # check if we sent email this day already
+        date = pytz.utc.localize(now.replace(hour=hour, minute=minute))
+        date = date + (datetime.datetime.utcnow() - datetime.datetime.now())
+        jobs = CronJobLog.objects.filter(code=KitRequestEmailSendJob.code, message="mail sent", start_time__gte=date)
+
+        if jobs.count() == 0:
+            if self.match_day_of_week():
+                data = get_kit_requests(Worker.objects.create());
+                send_mail(data);
+                return "mail sent"
+            else:
+                return False
+        else:
+            return False
+
+    def match_day_of_week(self):
+        user_day_of_week = ConfigurationItem.objects.get(type=KIT_EMAIL_DAY_OF_WEEK_CONFIGURATION_TYPE).value
+        language = Language.objects.get(name="English");
+        locale_name = language.locale
+        if platform.system() == 'Windows':
+            locale_name = language.windows_locale_name
+        try:
+            locale.setlocale(locale.LC_TIME, locale_name)
+        except:
+            traceback.print_exc(file=sys.stdout)
+
+        user_day_of_week_int = int(time.strptime(user_day_of_week, '%A').tm_wday) + 1
+        current_day_of_week_int = int(datetime.datetime.now().strftime("%w"));
+
+        return user_day_of_week_int == current_day_of_week_int