#Django core bits
from django.shortcuts import render_to_response, get_object_or_404
from django.template import RequestContext, loader, Context
from django.contrib.auth.decorators import login_required, permission_required
from django.db.models import Q
from django.conf import settings
from django.http import HttpResponseRedirect, Http404, HttpResponse
from django.core.urlresolvers import reverse
from django.contrib import messages
from datetime import datetime,date,time

from dateutil.relativedelta import relativedelta

from models import *
from signals import *

def check_members(request,key):

    if key != 'rjihihji89r90g0u55s8h8fhl':
         return HttpResponseRedirect('/')
    else:
        today = date.today()

        last_week = today - relativedelta(days=7)
        one_week = today + relativedelta(days=7)
        two_weeks = today + relativedelta(days=14)
        three_weeks = today + relativedelta(days=21)
        four_weeks = today + relativedelta(days=28)
        four_months = today - relativedelta(days=120)

        renewal_sent = []
        expired_sent = []
        lapsed_sent = []

        renewal_members = Member.objects.filter(Q(expiry_date=four_weeks) | Q(expiry_date=three_weeks) | Q(expiry_date=two_weeks) | Q(expiry_date=one_week), member_status='current', approved=True, user_type='member').order_by('user__last_name')

        for member in renewal_members:

            member_activity = UserActivity(member=member,title="Membership Renewal",text='Your membership is due to expire on %s, please <a href="%s">Renew your membership</a>.' % (member.expiry_date,reverse('account_renew')), type='account-notification')
            member_activity.save()

            membership_renewal.send(sender=None,request=request,member=member)
            renewal_sent.append(member)

        expired_members = Member.objects.filter(expiry_date=today,member_status='current',approved=True,user_type='member')
        for member in expired_members:

            member_activity = UserActivity(member=member,title="Membership Expired",text='Your membership has expired, please <a href="%s">Renew your membership</a>.' % (reverse('account_renew')), type='account-notification')
            member_activity.save()

            membership_expired.send(sender=None,request=request,member=member)
            expired_sent.append(member)

        lapsed_members = Member.objects.filter(expiry_date=four_months, member_status='current', approved=True, user_type='member')
        for member in lapsed_members:

            member_activity = UserActivity(member=member,title="Membership Lapsed",text='Your membership has lapsed, please <a href="%s">Renew your membership</a>.' % (reverse('account_renew')), type='account-notification')
            member_activity.save()

            member.member_status = 'lapsed'
            member.lapsed_date = today
            member.save(update_fields=['member_status', 'lapsed_date'])
        
            membership_lapsed.send(sender=None, request=request, member=member)
            lapsed_sent.append(member)

        return render_to_response('public/member-check.html', {'renewal_sent':renewal_sent,'expired_sent':expired_sent, 'lapsed_sent':lapsed_sent},context_instance=RequestContext(request))
