# -*-coding:utf-8 -*-
from django.shortcuts import render
from django.core.paginator import Paginator, EmptyPage,PageNotAnInteger
from django.shortcuts import render, get_object_or_404
from ..models import Town,Post
from ..forms import TownPostForm,PostForm
from django.shortcuts import redirect,HttpResponseRedirect
from django.core.urlresolvers import reverse
from push_notifications.models import APNSDevice
import uuid
from datetime import datetime
import re
import logging
logger = logging.getLogger('django')

# Create your views here.
def community(request, name):
    if request.method == 'POST':
        # Form was submitted
        form = TownPostForm(request.POST)
        if form.is_valid():
            data = form.cleaned_data
            selectedTown = data['selectedTown']
            return redirect('/lgbt_community/'+selectedTown+'/')
        else:
            return redirect('/')
    else:
        town = Town.objects.get(name=name)
        selectedTown = town.name

    page = request.GET.get('page')
    post_list = Post.objects.filter(valid=True,refTown__name=selectedTown).select_related('refUser').select_related('refTown').order_by('-updatedAt')
    town_list = Town.objects.all().order_by('name').cache()
    paginator = Paginator(post_list, 20)  # 20 posts in each page

    try:
        posts = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer deliver the first page
        posts = paginator.page(1)
    except EmptyPage:
        # If page is out of range deliver last page of results
        posts = paginator.page(paginator.num_pages)
    return render(request,
                     'backoffice/community/list.html',
                     {'posts': posts,'page':page,'selectedTown':selectedTown,'towns':town_list,'notIndex':True})


def share(request,name):
    town = Town.objects.get(name=name)
    selectedTown = town.name
    form = PostForm()
    return render(request,
                  'backoffice/community/compose.html',
                  {'form': form,  'selectedTown': selectedTown, 'notIndex': True})

def shared(request):
    print "on RECOIT %s" % request.GET
    town = request.GET.get('town')
    if town:
        #TODO : grab image from the web
        # and clean texte from the url
        refTown = Town.objects.get(name=town)
        texte = request.GET.get('texte')
        webSiteUrl = request.GET.get('url')
        webSiteTitle = request.GET.get('titre')
        webSiteDescription = request.GET.get('description')
        webSiteImage = request.GET.get('image')
        post = Post()
        post.categoryType = 6
        post.refTown = refTown
        post.refUser = request.user
        if texte:
            # Il faut virer l'url du texte
            # maintenant post avec <a class='lp-post-link' href='http://www.liberation.fr' target='_blank'>http://www.liberation.fr</a>"
            replaced = re.sub(r'<a class=(.*?)</a>', '', texte, flags=re.MULTILINE)
            post.message = replaced
        if webSiteTitle:
            post.webSiteTitle = webSiteTitle
        if webSiteDescription:
            post.webSiteDescription = webSiteDescription

        if webSiteImage:
            post.webSiteImageUrl_remoteURL = webSiteImage
        if webSiteUrl:
            post.webSite = webSiteUrl

        post.nbLike = 0
        post.nbComment = 0
        post.valid = True
        post.waitingValidation = True
        post.createdAt = datetime.now()
        #sauve le post
        post.save()
        #envoi push à julien
        try:
            device = APNSDevice.objects.get(registration_id='9c0b264441608f6ce2098093f39ff14dbb3401cba566badeadccf764a1a41e9b', active=True)
            device.send_message('NOUVEAU POST', badge=1)
        except Exception as e:
            logger.info("Impossible d'envoyer push une exception est survenue %s", e)

        url = '/lgbt_community/%s' % (town)
        return HttpResponseRedirect(url)
    else:
        return redirect('/')
