Example #1
0
    def do_request(self):
        _id = request.args.get('_id')
        if request.method != 'POST':
            res = DB.app_topic.find_one({'_id':ObjectId(_id)})
            if not res:
                return self._view.error("专题不存在")
            self._view.assign('search_use', 'topic')
            self._view.assign('app_topic', res)

            return self._view.render('app_topic_item_add')

        try:
            app = DB.AppBase.find_one({'_id': ObjectId(request.form['_appid'])})
            if app == None:
                raise Exception("app not exists")

            item_id = '%s%s' % (int(time.time()), random.randint(1000, 9999))
            try:
                rating = app['averageUserRating']
            except:
                rating = 0
            try:
                download_version = app['downloadVersion']
            except:
                download_version = ''
            #check if items already in app_topic
            if DB.app_topic.find({"_id": ObjectId(_id), "items":\
                {"$elemMatch": {"trackName": app['trackName']}}}).count() != 0:
                raise ValueError(u"应用已经存在")
            items = {
                'id': item_id,
                'sort':int(request.form['sort']),
                'trackName':app['trackName'],
                'cnname': app.get('cnname', ""),
                'arname': app.get('arname', ""),
                'icon': artworkUrl512_to_114_icon(app['artworkUrl512']),
                'ID': str(app['_id']),
                'averageUserRating': rating,
                'size': file_size_format(app['fileSizeBytes']),
                'version': download_version,
                "bundleId": app["bundleId"]
            }

            DB.app_topic.update({'_id': ObjectId(request.args.get('_id'))}, 
                {
                    '$set':{'update_time': datetime.datetime.now()}, 
                    '$push': {'items': items}
                })
            status, message = 'success', ''
        except Exception, ex:
            print ex
            status, message = 'error', str(ex)
    def do_request(self):
        self._identifier = request.args.get('identifier')
        if request.method != 'POST':
            res = DB.app_collection.find_one({'identifier':self._identifier})
            if not res:
                return self._view.error("应用集不存在")
            #语言选项
            langs = DB.client_support_language.find()
            self._view.assign('lang_options', list(langs))

            #国家选项
            countries = DB.country.find()
            self._view.assign('country_options', list(countries))

            self._view.assign('search_use', 'collection')
            self._view.assign('app_collection', res)

            return self._view.render('app_collection_item_add')

        try:
            app = DB.AppBase.find_one({'_id':ObjectId(request.form['_id'])})
            if app is None:
                raise Exception("应用不存在")

            item_id = '%s%s' % (int(time.time()), random.randint(1000, 9999))
            try:
                rating = app['averageUserRating']
            except:
                rating = 0
            try:
                download_version = app['downloadVersion']
            except:
                download_version = ''
            #check if items already in app_collection
            print(DB.app_collection.find({'identifier':self._identifier, "items":\
                 {"$elemMatch": {"trackName": app['trackName']}}}).count())
            i_collection = list(DB.app_collection.find({'identifier':self._identifier, "items":{"$elemMatch": {"trackName": app['trackName']}}}))
            if len(i_collection) != 0:
                items = i_collection[0]["items"]
                for item in items:
                    if item["trackName"] == app['trackName']:
                        temp_language = item["language"]
                        for language in request.form.getlist('language'):
                            if language not in temp_language:
                                item["language"].append(language)
                DB.app_collection.update({'identifier':request.args.get('identifier')}, {'$set':{'items':items}})
                return self._view.ajax_response('success', '', '')

            items = {
                'id': int(item_id),
                'sort':int(request.form['sort']),
                'language':request.form.getlist('language'),
                'country':request.form.getlist('country'),
                'trackName':app['trackName'],
                'cnname': app.get('cnname', ""),
                'arname': app.get('arname', ""),
                'averageUserRating': rating,
                'icon': artworkUrl512_to_114_icon(app['artworkUrl512']),
                'ID': str(app['_id']),
                'bundleId': app['bundleId'],
                'size': file_size_format(app['fileSizeBytes']),
                'version': download_version
            }

            DB.app_collection.update({'identifier':request.args.get('identifier')}, {'$push':{'items':items}})
            status, message = 'success', ''
        except Exception, ex:
            status, message = 'error', str(ex)