Example #1
0
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))
Example #2
0
    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)
Example #3
0
class LoginView(FlaskView):

    def before_request(self, name):
        self._view = AdminView()
        self.login_form = Form('login_form', request, session)
        self.login_form.add_field('text', '用户名', 'username', data={'attributes': {'class': 'm-wrap placeholder-no-fix', 'placeholder': 'Username'}})
        self.login_form.add_field('password', '密码', 'password', data={'attributes': {'class': 'm-wrap placeholder-no-fix', 'placeholder': 'Password'}})
        self._view.assign('FormField', FormElementField)

    def get(self):
        return self._view.render('login', title="维享管理系统", form=self.login_form)

    def post(self):
        if not self.login_form.has_error():
            username, password = request.form["username"], request.form["password"]
            user = User.find_one(username=username)
            if user and user.verify_password(password):
                login_user(user)
                return redirect(url_for('admin_app_collection_list'))
        flash(u"错误的用户名或者密码")
        return self._view.render('login', title="维享管理系统", form=self.login_form)
Example #4
0
    def _init_form(self):

        self._view.assign('FormField', FormElementField)

        lang_options, country_options = self.get_country_and_language_options()

        self._form = Form('app_topic_add_form', request, session)
        self._form.add_field('text', '专题名称', 'name', data={'attributes': {'class': 'm-wrap large'}})
        self._form.add_field('text', '排序', 'order', data={'attributes': {'class': 'm-wrap large'}})
        self._form.add_field('textarea', '描述', 'description', data={'attributes': {'class': 'm-wrap large'}})
        self._form.add_field('checkbox', '投放语言', 'language', data={'value': '', 'option': lang_options})
        self._form.add_field('checkbox', '投放国家', 'country', data={'value': '', 'option': country_options})
        self._form.add_field('file', '专题图标', 'pic', data={'attributes': {}})
        self._form.add_field('radio', '状态', 'status', data={'value': '0', 'option':[('发布','1'), ('未发布','0')]})
        self._form.add_field('radio', '版本', 'prisonbreak', data={'value': '0', 'option':[('正版','0'), ('越狱','1')]})
Example #5
0
class AppTopicInfoBaseView(View):
    '''
    专题信息添加修改基类
    '''

    def get_country_and_language_options(self):
        #语言选项
        lang_options = []
        langs = DB.client_support_language.find()
        for lang in langs:
            lang_options.append((lang['name'],lang['code']))
        #国家选项
        country_options = []
        countries = DB.country.find()
        for country in countries:
            country_options.append((country['name'], country['code']))

        return lang_options, country_options

    def _init_form(self):

        self._view.assign('FormField', FormElementField)

        lang_options, country_options = self.get_country_and_language_options()

        self._form = Form('app_topic_add_form', request, session)
        self._form.add_field('text', '专题名称', 'name', data={'attributes': {'class': 'm-wrap large'}})
        self._form.add_field('text', '排序', 'order', data={'attributes': {'class': 'm-wrap large'}})
        self._form.add_field('textarea', '描述', 'description', data={'attributes': {'class': 'm-wrap large'}})
        self._form.add_field('checkbox', '投放语言', 'language', data={'value': '', 'option': lang_options})
        self._form.add_field('checkbox', '投放国家', 'country', data={'value': '', 'option': country_options})
        self._form.add_field('file', '专题图标', 'pic', data={'attributes': {}})
        self._form.add_field('radio', '状态', 'status', data={'value': '0', 'option':[('发布','1'), ('未发布','0')]})
        self._form.add_field('radio', '版本', 'prisonbreak', data={'value': '0', 'option':[('正版','0'), ('越狱','1')]})
Example #6
0
 def before_request(self, name):
     self._view = AdminView()
     self.login_form = Form('login_form', request, session)
     self.login_form.add_field('text', '用户名', 'username', data={'attributes': {'class': 'm-wrap placeholder-no-fix', 'placeholder': 'Username'}})
     self.login_form.add_field('password', '密码', 'password', data={'attributes': {'class': 'm-wrap placeholder-no-fix', 'placeholder': 'Password'}})
     self._view.assign('FormField', FormElementField)
Example #7
0
    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)
Example #8
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))
Example #9
0
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)