Exemplo n.º 1
0
class AccountController(BaseController):
    def __init__(self):
        self.utility = Utility()
        self.registerService = RegisterService()
        dh = LogDBHandler(config=config, request=request)
        log.addHandler(dh)

        self.__getMasterData()

    def _before(self, *args, **kw):
        tmpl_context.project_name = "pollandsurvey"

    def __getMasterData(self):
        self.serviceType = model.SocialType.getAll(1)

    @expose("pollandsurvey.templates.account.index")
    @require(predicates.not_anonymous())
    def index(self, *args, **kw):

        userService = model.UserService()
        if request.identity:
            user = request.identity["user"]
            userService = model.UserService.getById(user.user_id)
            if userService is None:
                userService = model.UserService()

        listConutry = []
        self.country = model.FixCountry.getAll("1")
        for lang in self.country:
            listConutry.append(lang.to_json())

        listGender = model.Gender.getAll(1)
        listLanguage = []

        self.language = model.FixLanguage.getAll("1")
        for lang in self.language:
            listLanguage.append(lang.to_json())

        return dict(
            page="index",
            userService=userService,
            listConutry=listConutry,
            listGender=listGender,
            listLanguage=listLanguage,
        )

    @expose("pollandsurvey.templates.account.changepassword")
    @require(predicates.not_anonymous())
    def changepass(self, *args, **kw):
        """Handle the front-page."""
        return dict(page="changepassword")

    @expose("pollandsurvey.templates.account.socialmedia")
    @require(predicates.not_anonymous())
    def socialmedia(self, *args, **kw):
        user = request.identity["user"]
        self.userSocialNetwork = model.UserSocialNetwork.getSocialByUserId(user.user_id)
        return dict(page="socialmedia", userSocialNetwork=self.userSocialNetwork, socialType=self.serviceType)

    @expose("pollandsurvey.templates.account.cancellation")
    @require(predicates.not_anonymous())
    def cancellation(self, *args, **kw):
        """Handle the front-page."""
        return dict(page="cancellation")

    @expose()
    @require(predicates.not_anonymous())
    def deactivate(self):
        self.user = request.identity["user"]
        self.user.active = 0
        # user.deactivate()

        self.urlServer = model.SystemEnvironment.getServerUrl()
        self.userGenCode = self.registerService.deActivateUserGenCode(self.user)

        self.emailValues = {}
        self.emailValues["user_name"] = self.user.display_name
        self.emailValues["email"] = self.user.email_address
        self.emailValues["deactivate_url"] = (
            request.scheme + "://" + self.urlServer + "/activate/canceldeactive/" + str(self.userGenCode.code)
        )
        # request.application_url

        self.sendMailService = SendMailService()
        self.sendMailService.senddeActivate(self.emailValues)
        self.sendMailService.start()

        # model.User.deactivate()
        flash(_(LanguageObject.getdata("msg_thank_you")), "warning")
        redirect("/logout_handler")

    @expose()
    @require(predicates.not_anonymous())
    def updateprofile(self, *args, **kw):

        if request.identity:

            self.user = request.identity["user"]
            self.userService = model.UserService.getById(self.user.user_id)
            if self.userService is None:
                self.userService = model.UserService()
            self.userService.updateByValue(**kw)
            self.userService.accept_tnc = 1
            self.userService.user_id = self.user.user_id
            self.userService.birthdate = self.utility.convertToDateTime(self.userService.birthdate, "%d/%m/%Y")
            self.userService.updateall()

            flash(_(LanguageObject.getdata("msg_save_success")), "warning")
        else:

            log.warning("user cannot login, redirect to login")
            flash(_(LanguageObject.getdata("msg_not_login")), "warning")

        redirect("/account")

    @expose()
    # @expose('json')
    # @expose('json',content_type="text/plain"  )
    @require(predicates.not_anonymous())
    def rechangepass(self, *args, **kw):

        self.success = False
        self.message = ""
        if request.identity:
            self.current_password = kw.get("password")
            self.new_password = kw.get("newpassword")
            self.re_new_password = kw.get("rnewpassword")
            user = request.identity["user"]

            if user.validate_password(self.current_password):
                if str(self.new_password) == str(self.re_new_password):
                    user._set_password(self.new_password)
                    self.success = True
                    self.message = LanguageObject.getdata("msg_password_changed")
                else:
                    self.message = LanguageObject.getdata("msg_password_not_match")

            else:
                log.warning("user %s password not match : %s", user.user_name, self.current_password)
                self.message = LanguageObject.getdata("msg_password_not_match")
        else:
            self.message = LanguageObject.getdata("msg_not_login")
            log.warning("user cannot login, redirect to login")

        flash(_(self.message), "warning")
        # return dict(success=self.success, message = self.message);

        redirect("/account/changepass")