Example #1
0
    def list(self):
        """
        返回主界面
        :return:
        """
        special = request.args.get("special")

        appinfo_list = get_appinfo_list(sort=[("appid", -1)])

        return self.render("admin/appinfo/index.html", appinfo_list=appinfo_list, special=special)
Example #2
0
    def list(self):
        """
        返回主界面
        :return:
        """
        page = request.args.get('page', type=int) or 1
        special = request.args.get('special')

        per_page = current_app.config['ADMIN_PAGE_PER_SIZE']

        appinfo_list = get_appinfo_list()

        appid2package = dict([(appinfo['appid'], appinfo['package'])
                              for appinfo in appinfo_list])

        notification_table = kit.mongo_client.get_default_database()[
            current_app.config['MONGO_TB_NOTIFICATION']]

        src_notification_list = notification_table.find(dict()).sort([('id', -1)]). \
            skip(per_page * (page-1)).limit(per_page)

        notification_list = []
        for src_notification in src_notification_list:
            notification = dict()
            notification.update(src_notification)
            notification['package'] = appid2package.get(notification['appid'])

            notification_stat = notification.get('stat')

            if notification_stat:
                notification_stat['recv_rate'] = 0 if notification_stat['dst'] == 0 else\
                    1.0 * notification_stat['recv'] / notification_stat['dst']
                notification_stat['recv_rate'] = '%.02f%%' % (
                    notification_stat['recv_rate'] * 100)

                notification_stat['click_rate'] = 0 if notification_stat['recv'] == 0 else \
                    1.0 * notification_stat['click'] / notification_stat['recv']
                notification_stat['click_rate'] = '%.02f%%' % (
                    notification_stat['click_rate'] * 100)

                notification_list.append(notification)

        total_count = notification_table.find().count()
        pagination = Pagination(css_framework='bootstrap3',
                                per_page=per_page,
                                page=page,
                                total=total_count,
                                record_name='notification_list')
        # print pagination.total, pagination.css_framework, pagination.page, pagination.total_pages

        return self.render('admin/notification/index.html',
                           notification_list=notification_list,
                           pagination=pagination,
                           special=special)
Example #3
0
    def list(self):
        """
        返回主界面
        :return:
        """
        special = request.args.get('special')

        appinfo_list = get_appinfo_list(sort=[('appid', -1)])

        return self.render('admin/appinfo/index.html',
                           appinfo_list=appinfo_list, special=special)
Example #4
0
    def list(self):
        """
        返回主界面
        :return:
        """
        special = request.args.get('special')

        appinfo_list = get_appinfo_list(sort=[('appid', -1)])

        return self.render('admin/appinfo/index.html',
                           appinfo_list=appinfo_list,
                           special=special)
Example #5
0
    def list(self):
        """
        返回主界面
        :return:
        """
        page = request.args.get("page", type=int) or 1
        special = request.args.get("special")

        per_page = current_app.config["ADMIN_PAGE_PER_SIZE"]

        appinfo_list = get_appinfo_list()

        appid2package = dict([(appinfo["appid"], appinfo["package"]) for appinfo in appinfo_list])

        notification_table = kit.mongo_client.get_default_database()[current_app.config["MONGO_TB_NOTIFICATION"]]

        src_notification_list = (
            notification_table.find(dict()).sort([("id", -1)]).skip(per_page * (page - 1)).limit(per_page)
        )

        notification_list = []
        for src_notification in src_notification_list:
            notification = dict()
            notification.update(src_notification)
            notification["package"] = appid2package.get(notification["appid"])

            notification_stat = notification.get("stat")

            if notification_stat:
                notification_stat["recv_rate"] = (
                    0 if notification_stat["dst"] == 0 else 1.0 * notification_stat["recv"] / notification_stat["dst"]
                )
                notification_stat["recv_rate"] = "%.02f%%" % (notification_stat["recv_rate"] * 100)

                notification_stat["click_rate"] = (
                    0
                    if notification_stat["recv"] == 0
                    else 1.0 * notification_stat["click"] / notification_stat["recv"]
                )
                notification_stat["click_rate"] = "%.02f%%" % (notification_stat["click_rate"] * 100)

                notification_list.append(notification)

        total_count = notification_table.find().count()
        pagination = Pagination(
            css_framework="bootstrap3", per_page=per_page, page=page, total=total_count, record_name="notification_list"
        )
        # print pagination.total, pagination.css_framework, pagination.page, pagination.total_pages

        return self.render(
            "admin/notification/index.html", notification_list=notification_list, pagination=pagination, special=special
        )
Example #6
0
    def create(self):
        """
        发送
        :return:
        """

        form = NotificationCreateForm()

        # 获取所有appinfo
        appinfo_list = get_appinfo_list()

        # 默认是未选中状态
        form.appid.choices = [(0, '')]
        form.appid.choices.extend([(appinfo['appid'], appinfo['package'])
                                   for appinfo in appinfo_list])

        if form.validate_on_submit():
            query = dict()

            if not form.all.data:
                if not form.alias.data and not form.tags.data:
                    form.all.errors.append(u'所有人/别名/标签请至少选择一个')
                    form.alias.errors.append(u'所有人/别名/标签请至少选择一个')
                    form.tags.errors.append(u'所有人/别名/标签请至少选择一个')
                    return self.render('admin/notification/index.html',
                                       form=form)

                if form.alias.data:
                    query['alias'] = form.alias.data

                if form.tags.data:
                    query['tags_or'] = [re.split(r'\s*,\s*', form.tags.data)]

            push_helper = PushHelper()
            notification_id, dst_users = push_helper.push_notification(
                form.title.data,
                form.content.data,
                form.appid.data,
                query=query,
                silent=form.silent.data)
            if notification_id is not None and dst_users is not None:
                return redirect(
                    url_for('adminnotificationview.list',
                            special=notification_id))
            else:
                flash(u'发送失败', 'error')
                return self.render('admin/notification/index.html', form=form)

        return self.render('admin/notification/index.html', form=form)
Example #7
0
    def list(self):
        """
        返回主界面
        :return:
        """
        page = request.args.get('page', type=int) or 1
        special = request.args.get('special')

        per_page = current_app.config['ADMIN_PAGE_PER_SIZE']

        appinfo_list = get_appinfo_list()

        appid2package = dict([(appinfo['appid'], appinfo['package']) for appinfo in appinfo_list])

        notification_table = kit.mongo_client.get_default_database()[current_app.config['MONGO_TB_NOTIFICATION']]

        src_notification_list = notification_table.find(dict()).sort([('id', -1)]). \
            skip(per_page * (page-1)).limit(per_page)

        notification_list = []
        for src_notification in src_notification_list:
            notification = dict()
            notification.update(src_notification)
            notification['package'] = appid2package.get(notification['appid'])

            notification_stat = notification.get('stat')

            if notification_stat:
                notification_stat['recv_rate'] = 0 if notification_stat['dst'] == 0 else\
                    1.0 * notification_stat['recv'] / notification_stat['dst']
                notification_stat['recv_rate'] = '%.02f%%' % (notification_stat['recv_rate'] * 100)

                notification_stat['click_rate'] = 0 if notification_stat['recv'] == 0 else \
                    1.0 * notification_stat['click'] / notification_stat['recv']
                notification_stat['click_rate'] = '%.02f%%' % (notification_stat['click_rate'] * 100)

                notification_list.append(notification)

        total_count = notification_table.find().count()
        pagination = Pagination(css_framework='bootstrap3',
                                per_page=per_page,
                                page=page, total=total_count, record_name='notification_list')
        # print pagination.total, pagination.css_framework, pagination.page, pagination.total_pages

        return self.render('admin/notification/index.html',
                           notification_list=notification_list, pagination=pagination, special=special)
Example #8
0
    def create(self):
        """
        发送
        :return:
        """

        form = NotificationCreateForm()

        # 获取所有appinfo
        appinfo_list = get_appinfo_list()

        # 默认是未选中状态
        form.appid.choices = [(0, '')]
        form.appid.choices.extend([(appinfo['appid'], appinfo['package']) for appinfo in appinfo_list])

        if form.validate_on_submit():
            query = dict()

            if not form.all.data:
                if not form.alias.data and not form.tags.data:
                    form.all.errors.append(u'所有人/别名/标签请至少选择一个')
                    form.alias.errors.append(u'所有人/别名/标签请至少选择一个')
                    form.tags.errors.append(u'所有人/别名/标签请至少选择一个')
                    return self.render('admin/notification/index.html', form=form)

                if form.alias.data:
                    query['alias'] = form.alias.data

                if form.tags.data:
                    query['tags_or'] = [
                        re.split(r'\s*,\s*', form.tags.data)
                    ]

            push_helper = PushHelper()
            notification_id, dst_users = push_helper.push_notification(
                form.title.data, form.content.data, form.appid.data,
                query=query, silent=form.silent.data)
            if notification_id is not None and dst_users is not None:
                return redirect(url_for('adminnotificationview.list', special=notification_id))
            else:
                flash(u'发送失败', 'error')
                return self.render('admin/notification/index.html', form=form)

        return self.render('admin/notification/index.html', form=form)