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