#!/usr/bin/env python

from optparse import OptionParser
from bson.codec_options import CodecOptions
from pytz import timezone
import string
import random

from pymongo import MongoClient
from ki_hosting import handle

parser = OptionParser()
parser.add_option("-d", "--draft", \
                  action="store_true", dest="draft", default=False, \
                  help="draw a watermark at the center of each page \
                  and does not print signing part")
parser.add_option("-b", "--debug", \
                  action="store_true", dest="debug", default=False, \
                  help="Debug mode : doesn't clean tmp and print tex \
                  compilation to terminal")
parser.add_option("-k", "--ki", \
                  action="store_true", dest="ki", default=False, \
                  help="make fiche with ki reserved information")
parser.add_option("-o", "--open", \
                  action="store_true", dest="open", default=False, \
                  help="open pdf after compilation")

def random_password(size = 16): # inutilisée
	'''FTP contains between 8 and 30 characters, being only digits and letters, with at least one digit, one capital letter, one lowercase letter'''
	pwd_list = 	[random.choice(string.ascii_lowercase)]+ \
				[random.choice(string.ascii_uppercase)]+ \
				[random.choice(string.digits)]+ \
				[random.choice(string.ascii_letters+string.digits) for _ in range(size-3)]
	random.shuffle(pwd_list)
	return  ''.join(pwd_list)

def format_data(club_data):
    club_data['site']['creation_date'] = club_data['site']['creation_date'].strftime('%d/%m/%y %H:%M')
    club_data['site']['expiry_date'] = club_data['site']['expiry_date'].strftime('%d/%m/%y %H:%M')
    return club_data

if __name__ == "__main__":
    (options, args) = parser.parse_args()
    client = MongoClient()
    db = client.fiches
    clubs = db.clubs.with_options(codec_options=CodecOptions(tz_aware=True, tzinfo=timezone('Europe/Paris')))

    if args[0] == "all":
        clubs_data = clubs.find()
        for club_data in clubs_data:
            handle.generate_fiche(club_data, options)
            slug = club_data.pop('_id', None)
            club_data = format_data(club_data)
            models.fiche.save_pdf(slug, club_data, options)
    else:
        for slug in args:
            club_data = clubs.find_one({'_id': slug})
            handle.generate_fiche(club_data, options)
