Exemplo n.º 1
0
    def putEventPoint(self, mid, uid, playdata):
        """獲得イベントポイントの埋め込み.
        """
        model_mgr = self.getModelMgr()
        points = playdata.result.get('point') or (0, 0, 0)

        if len(points) == 2:
            point, pointeffect = points
            successpoint = 0
        elif len(points) == 3:
            point, pointeffect, successpoint = points

        self.osa_util.logger.trace('%s,%s' % (point, pointeffect))
        scorerecord = BackendApi.get_scoutevent_scorerecord(
            model_mgr, mid, uid, using=settings.DB_READONLY)
        self.html_param['eventscore'] = Objects.scoutevent_score(
            scorerecord, point, pointeffect, successpoint)
Exemplo n.º 2
0
    def process(self):
        model_mgr = self.getModelMgr()

        using = settings.DB_READONLY

        eventmaster = BackendApi.get_current_scouteventmaster(model_mgr,
                                                              using=using)
        if eventmaster is None:
            raise CabaretError(u'Event Closed.',
                               CabaretError.Code.EVENT_CLOSED)
        mid = eventmaster.id

        v_player = self.getViewerPlayer()
        uid = v_player.id

        # 短冊情報.
        obj_tanzakulist = BackendApi.put_scoutevent_tanzakudata(self, uid)
        if not obj_tanzakulist:
            # 短冊が無いイベント.
            url = UrlMaker.scoutevent_top()
            self.appRedirect(self.makeAppLinkUrlRedirect(url))
            return

        # 所持チップ数.
        scorerecord = BackendApi.get_scoutevent_scorerecord(
            model_mgr, mid, uid, using=settings.DB_READONLY)
        self.html_param['scouteventscore'] = Objects.scoutevent_score(
            scorerecord)

        # トピック.
        self.putEventTopic(mid)

        # このページのURL.
        url = UrlMaker.scouteventtiptradedo(v_player.req_confirmkey)
        self.html_param['url_do'] = self.makeAppLinkUrl(url)

        self.writeScoutEventHTML('tip_trade', eventmaster)
Exemplo n.º 3
0
class Handler(ScoutHandler):
    """スカウトイベントキャスト指名.
    """
    @classmethod
    def getViewerPlayerClassList(cls):
        return []

    def process(self):
        model_mgr = self.getModelMgr()

        using = settings.DB_READONLY

        eventmaster = BackendApi.get_current_scouteventmaster(model_mgr,
                                                              using=using)
        if eventmaster is None:
            raise CabaretError(u'Event Closed.',
                               CabaretError.Code.EVENT_CLOSED)
        mid = eventmaster.id

        v_player = self.getViewerPlayer()
        uid = v_player.id

        # 短冊情報.
        obj_tanzakulist = BackendApi.put_scoutevent_tanzakudata(self, uid)
        if not obj_tanzakulist:
            # 短冊が無いイベント.
            url = UrlMaker.scoutevent_top()
            self.appRedirect(self.makeAppLinkUrlRedirect(url))
            return

        obj_tanzaku = None

        # 短冊所持情報.
        tanzakudata = BackendApi.get_scoutevent_tanzakucastdata(
            model_mgr, uid, mid, using=settings.DB_READONLY)
        current_cast_number = tanzakudata.current_cast if tanzakudata else -1
        if current_cast_number != -1:
            for obj in obj_tanzakulist:
                if obj['number'] == current_cast_number:
                    obj_tanzaku = obj
                    break

            # 一応データの不具合を防いでおく.
            if obj_tanzaku is None:
                if settings_sub.IS_DEV:
                    raise CabaretError(
                        u'存在しないキャストを指名しています.{}'.format(current_cast_number))

                def tr():
                    model_mgr = ModelRequestMgr()
                    BackendApi.tr_scoutevent_nominate_cast(
                        model_mgr, uid, mid, None)
                    model_mgr.write_all()
                    return model_mgr

                try:
                    db_util.run_in_transaction(tr).write_end()
                except CabaretError, err:
                    if err.code == CabaretError.Code.ALREADY_RECEIVED:
                        pass
                    else:
                        raise
                url = UrlMaker.scouteventcastnomination()
                self.appRedirect(self.makeAppLinkUrlRedirect(url))
                return

        self.html_param['scoutevent_tanzaku'] = obj_tanzaku

        # 所持チップ数.
        scorerecord = BackendApi.get_scoutevent_scorerecord(
            model_mgr, mid, uid, using=settings.DB_READONLY)
        self.html_param['scouteventscore'] = Objects.scoutevent_score(
            scorerecord)

        # トピック.
        self.putEventTopic(mid)

        # このページのURL.
        url = UrlMaker.scouteventcastnomination()
        self.html_param['url_self'] = self.makeAppLinkUrl(url)

        if obj_tanzaku:
            # 指名後.
            self.process_tip(eventmaster)
        else:
            # 指名前.
            self.process_tanzaku(eventmaster)