示例#1
0
文件: manage.py 项目: zeus911/kpush
def pushntf(title, content, silent, appid, appkey, all, alias, str_tags_or):
    """
    python manage.py pushntf "t" "c" -k 7d357c9b4ce1414fb27f077b54fb5a8f -g "a, b" -g c
    :param title:
    :param content:
    :param appid:
    :param appkey:
    :param alias:
    :param str_tags_or:
    :return:
    """
    from share.push_helper import PushHelper

    if not (all or alias or str_tags_or):
        # 起码要指定一个
        print 'please special one at least: --all, --alias, --tags'
        return

    if not appid:
        if not appkey:
            print 'if appid is None, appkey should not be None'
            return
        else:
            appinfo = get_appinfo_by_appkey(appkey)
            if not appinfo:
                print 'appkey is invalid'
                return
            else:
                appid = appinfo['appid']

    push_helper = PushHelper()

    # 这样获取到的tags是个string
    if str_tags_or:
        tags_or = []
        for str_tags in str_tags_or:
            tags_or.append(re.split(r'\s*,\s*', str_tags))
    else:
        tags_or = None

    query = {}

    if not all:
        if alias is not None:
            query['alias'] = alias

        if tags_or is not None:
            query['tags_or'] = tags_or
            
    notification_id, users = push_helper.push_notification(
        title, content, appid, query=query, silent=silent
    )

    print 'notification_id: %s\nusers: %s' % (notification_id, users)
    statntf(notification_id, True)
示例#2
0
def pushntf(title, content, silent, appid, appkey, all, alias, str_tags_or):
    """
    python manage.py pushntf "t" "c" -k 7d357c9b4ce1414fb27f077b54fb5a8f -g "a, b" -g c
    :param title:
    :param content:
    :param appid:
    :param appkey:
    :param alias:
    :param str_tags_or:
    :return:
    """
    from share.push_helper import PushHelper

    if not (all or alias or str_tags_or):
        # 起码要指定一个
        print "please special one at least: --all, --alias, --tags"
        return

    if not appid:
        if not appkey:
            print "if appid is None, appkey should not be None"
            return
        else:
            appinfo = get_appinfo_by_appkey(appkey)
            if not appinfo:
                print "appkey is invalid"
                return
            else:
                appid = appinfo["appid"]

    push_helper = PushHelper()

    # 这样获取到的tags是个string
    if str_tags_or:
        tags_or = []
        for str_tags in str_tags_or:
            tags_or.append(re.split(r"\s*,\s*", str_tags))
    else:
        tags_or = None

    query = {}

    if not all:
        if alias is not None:
            query["alias"] = alias

        if tags_or is not None:
            query["tags_or"] = tags_or

    notification_id, users = push_helper.push_notification(title, content, appid, query=query, silent=silent)

    print "notification_id: %s\nusers: %s" % (notification_id, users)
    statntf(notification_id, True)
示例#3
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)
示例#4
0
文件: admin.py 项目: Ladyia/kpush
    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)
示例#5
0
文件: frontend.py 项目: Ladyia/kpush
def push_api():
    """
    push的api
    {
        title
        content
        silent
        query
    }
    :return:
    """
    from share.api_utils import unpack_api_data
    from share.push_helper import PushHelper

    appinfo, json_data = unpack_api_data(request.get_data())

    if appinfo is None or json_data is None:
        return jsonify(
            ret=proto.RET_INVALID_PARAMS,
            error=u'签名验证失败',
        )

    query = json_data.get('query')
    if not query:
        return jsonify(
            ret=proto.RET_INVALID_PARAMS,
            error=u'query参数不存在',
        )

    if not (query.get('all') or query.get('alias') or query.get('tags_or')):
        return jsonify(
            ret=proto.RET_INVALID_PARAMS,
            error=u'query参数不合法, 请至少指定all/alias/tags_or其中一个',
        )

    if not json_data.get('title') or not json_data.get('content'):
        return jsonify(
            ret=proto.RET_INVALID_PARAMS,
            error=u'请指定title和content',
        )

    real_query = dict()
    if not query.get('all'):
        if query.get('alias') is not None:
            real_query['alias'] = query.get('alias')

        if query.get('tags_or') is not None:
            real_query['tags_or'] = query.get('tags_or')

    push_helper = PushHelper()
    notification_id, dst_uids = push_helper.push_notification(
        json_data.get('title'),
        json_data.get('content'),
        appinfo['appid'],
        query=real_query,
        silent=json_data.get('silent')
    )

    return jsonify(
        ret=0,
        notification_id=notification_id,
        dst_uids=len(dst_uids),
    )