class AddView(View): ''' 添加 ''' def _init_form(self): try: self._form = Form('app_add_form', request, session) self._form.add_field('text', '苹果应用地址', 'apple_url', data={'attributes':{'class':'m-wrap large'}}) self._form.add_validator(AppAddValidator) except FormException, ex: return self.error(str(ex))
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))
class CreateView(View): ''' 创建 ''' def _init_form(self): 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']))) self._form = Form('app_create_form', request, session) 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', 'bundleId', 'bundleId', data={'attributes':{'class':'m-wrap large'}}) self._form.add_field('text', '官方版本', 'version', data={'attributes':{'class':'m-wrap large'}}) self._form.add_field('radio', '主分类', 'primaryGenreId', data={'option': genre_options}) self._form.add_field('checkbox', '支持设备', 'supportedDevices', data={'value': '', 'option': [("iPad", "iPad"), ("iPhone", "iPhone")]}) self._form.add_field('checkbox', '语言', 'languageCodesISO2A', data={ 'value': '', 'option': lang_options}) self._form.add_field('textarea', '描述', 'description', data={'attributes':{'class':'m-wrap huge'}}) self._form.add_field('textarea', '更新介绍', 'releaseNotes', data={'attributes':{'class':'m-wrap huge'}}) self._form.add_validator(AppInfoValidator) @route('/create', methods=["GET","POST"], endpoint='admin_app_create') def get(self): try: self._init_form() except FormException, ex: return self._view.error(str(ex)) if request.method == "POST": if self._form.validate(): #_id = MongoId() data = { 'trackId':int(request.form['trackId']), 'trackName':request.form['trackName'], 'bundleId':request.form['bundleId'], 'version':request.form['version'], 'primaryGenreId':int(request.form['primaryGenreId']), 'languageCodesISO2A':request.form.getlist('languageCodesISO2A'), 'description':request.form['description'], 'releaseNotes':request.form['releaseNotes'], 'supportedDevices': request.form.getlist('supportedDevices') } DB.AppBase.update({'bundleId':request.form['bundleId']}, {'$set':data}, upsert=True) app = DB.AppBase.find_one({"trackId": int(request.form["trackId"])}) #return redirect(create_url('.app.edit', {'_id':app._id})) return redirect(url_for("admin_app_edit") + "?_id=" + str(app["_id"])) else: message = {'status':'error', 'message':'添加失败'} self._form.add_message(**message) return self._view.render('app_create', form=self._form)