# coding: utf-8
'''
Created on 02.11.2011

@author: den
'''
from __future__ import with_statement
from ru.curs.showcase.core.jython import JythonProc
from ru.curs.showcase.runtime import ConnectionFactory,AppInfoSingleton
from ru.curs.showcase.util.xml import XMLUtils
import xml.dom.minidom as minidom
from java.io import FileOutputStream,FileInputStream,StringWriter,StringBufferInputStream,ByteArrayInputStream
from java.lang import Class
from com.ziclix.python.sql import zxJDBC, PyConnection
from java.sql import Connection, SQLException, DriverManager
from javax.xml.stream import XMLOutputFactory,XMLStreamWriter
import datetime
import uuid
import simplejson as json

#from org.xml.sax.helpers import DefaultHandler;
#from ru.curs.showcase.util import TextUtils;

# init vars

class create_user(JythonProc):        
    def handle(self, input):
        global request
        request = input
        return mainproc()
        
def mainproc():
    if __name__ == "__main__": 
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        conn = DriverManager.getConnection("jdbc:sqlserver://localhost\\FUV;databaseName=dbVector","sa","F708420Dx")
        pyConn = PyConnection(conn)
        # print 'testCon'
    else: 
        pyConn = ConnectionFactory.getPyConnection();
    #pyConn = PyConnection(conn)    
    pyConn.autocommit = True      
    info = pyConn.cursor()
    try:
		email = request
		# check if user with such login is exist
		queryStr= u'''select count(*) from authserver.users_auth_server where login=?'''
		info.execute(queryStr,[unicode(email)])
		res = info.fetchone()  
		if res[0] > 0:
			# get pass from db
			queryStr= u'''select key_pass from authserver.users_auth_server where login=?'''
			info.execute(queryStr,[unicode(email)])
			res = info.fetchone() 
			pass_from_base = res[0]
			# send email to user
			queryStr= u'''insert into journals.xlreports (script, parameters, status) values(?,?,?)'''
			message_body = u'''<p><b>Уважаемый коллега!</b></p>
							<p>Вы зарегистрированы на портале ФДПО ГОУ ВПО РНИМУ им. Н.И. Пирогова.</p>
							<p>Для входа в систему пройдите по ссылке <a href='http://fuv.msk.ru/fuv'>АС ДПО ФДПО</a>, введите ваши</p>
							<p>"Имя пользователя": <b>%s</b></p>
							<p>"Пароль": <b>%s</b></p>
							<p>Далее войдите в личный кабинет слушателя. Информация, представленная на первой странице личного кабинета, поможет Вам ориентироваться в системе.</p>
							<p>С уважением, Администрация ФДПО</p>
					''' % (email, pass_from_base)
			params = json.dumps({"message": message_body, "subject": u"Единая образовательно-информационная среда РНИМУ им. Н.И. Пирогова", "emails": email})
			info.execute(queryStr,[(u'journals.notifications.sendMessage.simple',params,0)])
			result = u' был отправлен Вам на указанный e-mail.'
		else:
			password = generatePassword()
			queryStr= u'''insert into authserver.users_auth_server (uid, sid, login, password, key_pass) values(?,?,?,?,?)'''
			sid = uuid.uuid4()
			person_id = uuid.uuid4()
			info.execute(queryStr,[(unicode(sid),unicode(sid),unicode(email),unicode(password),unicode(password))])
			#info.execute(queryStr,[(sid,sid,email,'123','123')])
			#result=password
			result = u' был отправлен Вам на указанный e-mail.'
			queryStr= u'''insert into celesta.userroles (userid, roleid) values(?,?)'''
			info.execute(queryStr,[(unicode(sid),'editor')])
			info.execute(queryStr,[(unicode(sid),'student')])
			queryStr= u'''insert into dbo.PersonFUV (PersonID, email) values(?,?)'''
			info.execute(queryStr,[(unicode(person_id), email)])
			queryStr= u'''insert into dbo.usersAuthServerFUV (uid, login, password, personUid) values(?,?,?,?)'''
			info.execute(queryStr,[(unicode(sid),unicode(email),unicode(password),unicode(person_id))])
			# send email to user
			queryStr= u'''insert into journals.xlreports (script, parameters, status) values(?,?,?)'''
			message_body = u'''<p><b>Уважаемый коллега!</b></p>
							<p>Вы зарегистрированы на портале ФДПО ГОУ ВПО РНИМУ им. Н.И. Пирогова.</p>
							<p>Для входа в систему пройдите по ссылке <a href='http://fuv.msk.ru/fuv'>АС ДПО ФДПО</a>, введите ваши</p>
							<p>"Имя пользователя": <b>%s</b></p>
							<p>"Пароль": <b>%s</b></p>
							<p>Далее войдите в личный кабинет слушателя. Информация, представленная на первой странице личного кабинета, поможет Вам ориентироваться в системе.</p>
							<p>С уважением, Администрация ФДПО</p>
					''' % (email, password)
			params = json.dumps({"message": message_body, "subject": u"Единая образовательно-информационная среда РНИМУ им. Н.И. Пирогова", "emails": email})
			info.execute(queryStr,[(u'journals.notifications.sendMessage.simple',params,0)])
	   
    finally:
        info.close()	
    return result

def generatePassword():

    chars = "abcdefghjklnmoprstuvxyzABCDEFGHJKLMNPQRSTUVWXYZ123456789"
    from os import urandom
    return "".join([chars[ord(c) % len(chars)] for c in urandom(6)])
  