Ejemplo n.º 1
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)
Ejemplo n.º 2
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)