# -*- coding: utf-8 -*-

import json, falcon

from db import session
from sqlalchemy.exc import SQLAlchemyError
import model
import auth
import util

class Registration(object):

	def on_post(self, req, resp):
		data = json.loads(req.stream.read())

		try:
			existing_user = session.query(model.User).filter(model.User.email == data['email']).first()
			if existing_user != None:
				req.context['result'] = { 'error': "duplicate_user" }
				return
		except SQLAlchemyError:
			session.rollback()
			raise

		try:
			user = model.User(email=data['email'], password=auth.get_hashed_password(data['password']), first_name=data['first_name'], last_name=data['last_name'], nick_name=data['nick_name'], sex=data['gender'], short_info=data["short_info"])
			session.add(user)
			session.commit()
		except:
			session.rollback()
			req.context['result'] = { 'error': "Nelze vytvořit uživatele, kontaktuj prosím orga." }
			raise

		try:
			profile = model.Profile(user_id=user.id, addr_street=data['addr_street'], addr_city=data['addr_city'], addr_zip=data['addr_zip'], addr_country=data['addr_country'],\
				school_name=data['school_name'], school_street=data['school_street'], school_city=data['school_city'], school_zip=data['school_zip'], school_country=data['school_country'], school_finish=int(data['school_finish']),\
				tshirt_size=data['tshirt_size'].upper())
		except:
			session.delete(user)
			req.context['result'] = { 'error': "Nelze vytvořit profil, kontaktuj prosím orga." }
			raise

		try:
			session.add(profile)
			session.commit()
		except:
			session.rollback()
			raise

		try:
			util.mail.send(user.email, u'[KSI-WEB] Potvrzení registrace do Korespondenčního semináře z informatiky', u'Ahoj!<br/>Vítáme tě v Korespondenčním semináři z informatiky Fakulty informatiky Masarykovy univerzity. Nyní můžeš začít řešit naplno. Stačí se přihlásit na https://ksi.fi.muni.cz pomocí e-mailu a zvoleného hesla. Přejeme ti hodně úspěchů při řešení semináře!<br/><br/>KSI')
		except:
			e = sys.exc_info()[0]
			print str(e)

		session.close()


# -*- coding: utf-8 -*-

import json, falcon

from db import session
from sqlalchemy.exc import SQLAlchemyError
import model
import auth
import util

class Registration(object):

	def on_post(self, req, resp):
		data = json.loads(req.stream.read())

		try:
			existing_user = session.query(model.User).filter(model.User.email == data['email']).first()
			if existing_user != None:
				req.context['result'] = { 'error': "duplicate_user" }
				return
		except SQLAlchemyError:
			session.rollback()
			raise

		try:
			if not data['nick_name']: data['nick_name'] = ""
			user = model.User(email=data['email'], password=auth.get_hashed_password(data['password']), first_name=data['first_name'], last_name=data['last_name'], nick_name=data['nick_name'], sex=data['gender'], short_info=data["short_info"])
			session.add(user)
			session.commit()
		except:
			session.rollback()
			req.context['result'] = { 'error': "Nelze vytvořit uživatele, kontaktuj prosím orga." }
			raise

		try:
			profile = model.Profile(user_id=user.id, addr_street=data['addr_street'], addr_city=data['addr_city'], addr_zip=data['addr_zip'], addr_country=data['addr_country'],\
				school_name=data['school_name'], school_street=data['school_street'], school_city=data['school_city'], school_zip=data['school_zip'], school_country=data['school_country'], school_finish=int(data['school_finish']),\
				tshirt_size=data['tshirt_size'].upper())
		except:
			session.delete(user)
			req.context['result'] = { 'error': "Nelze vytvořit profil, kontaktuj prosím orga." }
			raise

		try:
			session.add(profile)
			session.commit()
		except:
			session.rollback()
			raise

		try:
			util.mail.send(user.email, u'[KSI-WEB] Potvrzení registrace do Korespondenčního semináře z informatiky', u'Ahoj!<br/>Vítáme tě v Korespondenčním semináři z informatiky Fakulty informatiky Masarykovy univerzity. Nyní můžeš začít řešit naplno. Stačí se přihlásit na https://ksi.fi.muni.cz pomocí e-mailu a zvoleného hesla. Přejeme ti hodně úspěchů při řešení semináře!<br/><br/>KSI')
		except:
			e = sys.exc_info()[0]
			print str(e)

		session.close()


Fix bug in registration.