Exemplo n.º 1
0
class EditView(AppDetailBaseView):
    '''
    编辑
    '''
    def before_request(self, name):
        super(EditView, self).before_request(name)

        _id = self._id
        bundle_id = self.bundle_id

        if _id is None and bundle_id is None:
            return self.error('参数不正确')

        if _id is None:
            self.app_data = DB.AppBase.find_one({'bundleId':bundle_id})
        else:
            self.app_data = DB.AppBase.find_one({'_id':ObjectId(_id)})

        if self.app_data == None:
            return self.error('该应用不存在')

        self.icon = {}
        if 'artworkUrl512' in self.app_data:
            self.icon['apple'] = artworkUrl512_to_114_icon(self.app_data['artworkUrl512'])
        if 'local_icon' in self.app_data:
            self.icon['local'] = self.app_data['local_icon']

    def _init_form(self, data=None):

        self._view.assign('FormField', FormElementField)
        #语言选项
        lang_options = []
        langs = DB.language.find()
        for lang in langs:
            lang_options.append((lang['name'], lang['code']))

        #主分类选项
        genre_options = []
        genres = DB.app_genre.find({'parentGenre':36})
        for genre in genres:
            name = ''
            try:
                name = genre['genreName']['ZH']
            except:
                name = genre['genreName']['EN']
            if genre['genreId'] == 6014: name = "游戏"
            elif genre['genreId'] == 6021: name = "报刊杂志"
            genre_options.append((name, str(genre['genreId'])))
        #check device support, check if supportIphone or supportIpad
        self.supportIphone = 0
        self.supportIpad = 0
        if "supportIphone" in self.app_data:
            self.supportIphone = self.app_data["supportIphone"]
        else:
            if "supportedDevices" in self.app_data:
                if True in [item.startswith("iPhone") for item in self.app_data["supportedDevices"]]:
                    self.supportIphone = 1
            else:
                supportIphone = 0
        if "supportIpad" in self.app_data:
            self.supportIpad = self.app_data["supportIpad"]
        else:
            if "supportedDevices" in self.app_data:
                if True in [item.startswith("iPad") for item in self.app_data["supportedDevices"]]:
                    self.supportIpad = 1
            else:
                self.supportIpad = 0
        if data:
            data["supportIphone"]= self.supportIphone
            data["supportIpad"] = self.supportIpad
            app_cn = DB.AppBase_CN.find_one({"trackId": data["trackId"]})
            if app_cn:
                data["trackName_CN"] = app_cn["trackName"]
                data["description_cn"] = app_cn.get("description", "")
                data["releaseNotes_cn"] = app_cn.get("releaseNotes", "")


        self._form = Form('app_edit_form', request, session)
        self._form.add_field('file', '上传图标', 'pic', data={'attributes': {}})
        self._form.add_field('text', 'trackId', 'trackId', data={'attributes':{'class':'m-wrap large'}})
        self._form.add_field('text', 'trackName', 'trackName', data={'attributes':{'class':'m-wrap large'}})
        self._form.add_field('text', '应用中文名称', 'trackName_CN', data={'attributes':{'class':'m-wrap large'}})
        self._form.add_field('text', '编辑翻译(中文)', 'cnname', data={'attributes':{'class':'m-wrap large'}})
        self._form.add_field('text', '编辑翻译(阿拉伯)', 'arname', data={'attributes':{'class':'m-wrap large'}})
        self._form.add_field('text', 'bundleId', 'bundleId', data={'attributes':{'class':'m-wrap large'}})
        self._form.add_field('text', '官方应用地址', 'trackViewUrl', data={'attributes':{'class':'m-wrap large'}})
        self._form.add_field('text', '官方版本', 'version', data={'attributes':{'class':'m-wrap large'}})
        self._form.add_field('text', '评分', 'trackContentRating', data={'attributes':{'class':'m-wrap large'}})
        self._form.add_field('text', '最低系统要求', 'minimumOsVersion', data={'attributes':{'class':'m-wrap large'}})
        self._form.add_field('text', '可下载版本', 'downloadVersion', data={'attributes':{'class':'m-wrap large'}})
        self._form.add_field('radio', '主分类', 'primaryGenreId', data={'option': genre_options})
        self._form.add_field('radio', '支持iPhone', 'supportIphone', data={'option': [("是", "1"), ("否", "0")]})
        self._form.add_field('radio', '支持iPad', 'supportIpad', data={'option': [("是", "1"), ("否", "0")]})
        self._form.add_field('checkbox', '语言', 'languageCodesISO2A', data={'option': lang_options})
        self._form.add_field('textarea', '描述', 'description', data={'attributes':{'class':'m-wrap large','rows':'10'}})
        self._form.add_field('textarea', '描述(中)', 'description_cn', data={'attributes':{'class':'m-wrap large','rows':'10'}})
        self._form.add_field('textarea', '更新介绍', 'releaseNotes', data={'attributes':{'class':'m-wrap large','rows':'10'}})
        self._form.add_field('textarea', '更新介绍(中)', 'releaseNotes_cn', data={'attributes':{'class':'m-wrap large','rows':'10'}})
        self._form.add_field('radio', '审核', 'review', data={'option': [("审核通过", "1"), ("未审核", "0")]})
        self._form.set_value(data)
        self._form.add_validator(AppInfoValidator)

    @route('/edit', methods=['GET', 'POST'],  endpoint='admin_app_edit')
    def do_request(self):

        if request.method != 'POST':
            try:
                self._init_form(self.app_data)
            except FormException, ex:
                return self.error(str(ex))

            return self._view.render('app_edit', form=self._form, app=self.app_data, icon=self.icon)


        try:
            self._init_form(dict(request.form))
        except FormException, ex:
            return self.error(str(ex))