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)
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)