def test_create_template(sample_service, sample_user, template_type, subject): data = { 'name': 'Sample Template', 'template_type': template_type, 'content': "Template content", 'service': sample_service, 'created_by': sample_user } if subject: data.update({'subject': subject}) template = Template(**data) dao_create_template(template) assert Template.query.count() == 1 assert len(dao_get_all_templates_for_service(sample_service.id)) == 1 assert dao_get_all_templates_for_service(sample_service.id)[0].name == 'Sample Template' assert dao_get_all_templates_for_service(sample_service.id)[0].process_type == 'normal'
def test_update_template(sample_service, sample_user): data = { "name": "Sample Template", "template_type": "sms", "content": "Template content", "service": sample_service, "created_by": sample_user, } template = Template(**data) dao_create_template(template) created = dao_get_all_templates_for_service(sample_service.id)[0] assert created.name == "Sample Template" created.name = "new name" dao_update_template(created) assert dao_get_all_templates_for_service( sample_service.id)[0].name == "new name"
def test_create_template_with_reply_to(sample_service, sample_user): letter_contact = create_letter_contact(sample_service, 'Edinburgh, ED1 1AA') data = { 'name': 'Sample Template', 'template_type': "letter", 'content': "Template content", 'service': sample_service, 'created_by': sample_user, 'reply_to': letter_contact.id, } template = Template(**data) dao_create_template(template) assert dao_get_all_templates_for_service( sample_service.id)[0].reply_to == letter_contact.id
def test_update_template(sample_service, sample_user): data = { 'name': 'Sample Template', 'template_type': "sms", 'content': "Template content", 'service': sample_service, 'created_by': sample_user } template = Template(**data) dao_create_template(template) created = dao_get_all_templates_for_service(sample_service.id)[0] assert created.name == 'Sample Template' created.name = 'new name' dao_update_template(created) assert dao_get_all_templates_for_service( sample_service.id)[0].name == 'new name'
def test_template_postage_constraint_on_update(sample_service, sample_user): data = { "name": "Sample Template", "template_type": "letter", "content": "Template content", "service": sample_service, "created_by": sample_user, "postage": "second", } template = Template(**data) dao_create_template(template) created = dao_get_all_templates_for_service(sample_service.id)[0] assert created.name == "Sample Template" created.postage = "third" with pytest.raises(expected_exception=SQLAlchemyError): dao_update_template(created)
def test_template_postage_constraint_on_update(sample_service, sample_user): data = { 'name': 'Sample Template', 'template_type': "letter", 'content': "Template content", 'service': sample_service, 'created_by': sample_user, 'postage': 'second' } template = Template(**data) dao_create_template(template) created = dao_get_all_templates_for_service(sample_service.id)[0] assert created.name == 'Sample Template' created.postage = 'third' with pytest.raises(expected_exception=SQLAlchemyError): dao_update_template(created)
def create_custom_template(service, user, template_config_name, template_type, content="", subject=None): template = Template.query.get(current_app.config[template_config_name]) if not template: data = { "id": current_app.config[template_config_name], "name": template_config_name, "template_type": template_type, "content": content, "service": service, "created_by": user, "subject": subject, "archived": False, } template = Template(**data) db.session.add(template) db.session.add(create_history(template, TemplateHistory)) db.session.commit() return template
def restore_structure_of_db(): full_backup_to_restore = Template.find_by_name( 'full_Ewa').json_template['instances'] Activity.delete_all_objects_by_current_user() Category.delete_all_objects_by_current_user() for single_record in full_backup_to_restore: if not Category.find_by_name(single_record['category']): new_category = Category(category=single_record['category'], username_id=current_user.id) db.session.add(new_category) db.session.commit() new_activity = Activity(name=single_record['activity'], category_id=Category.find_by_name( single_record['category']).id, username_id=current_user.id) db.session.add(new_activity) db.session.commit() return redirect(url_for('backup_structure_of_db'))
def sample_template(notify_db, notify_db_session, template_name="Template Name", template_type="sms", content="This is a template", service=None): if service is None: service = sample_service(notify_db, notify_db_session) sample_api_key(notify_db, notify_db_session, service=service) data = { 'name': template_name, 'template_type': template_type, 'content': content, 'service': service } template = Template(**data) save_model_template(template) return template
def create_custom_template(service, user, template_config_name, template_type, content='', subject=None): template = Template.query.get(current_app.config[template_config_name]) if not template: data = { 'id': current_app.config[template_config_name], 'name': template_config_name, 'template_type': template_type, 'content': content, 'service': service, 'created_by': user, 'subject': subject, 'archived': False } template = Template(**data) db.session.add(template) db.session.add(create_history(template, TemplateHistory)) db.session.commit() return template
def sample_template(notify_db_session): user = create_user() service = create_service(service_permissions=[EMAIL_TYPE, SMS_TYPE], check_if_service_exists=True) data = { 'name': 'Template Name', 'template_type': 'sms', 'content': 'This is a template:\nwith a newline', 'service': service, 'created_by': user, 'archived': False, 'hidden': False, 'process_type': 'normal' } template = Template(**data) dao_create_template(template) return template
def test_create_template_with_reply_to(sample_service, sample_user): letter_contact = create_letter_contact(sample_service, "Edinburgh, ED1 1AA") data = { "name": "Sample Template", "template_type": "letter", "content": "Template content", "service": sample_service, "created_by": sample_user, "reply_to": letter_contact.id, "postage": "second", } template = Template(**data) dao_create_template(template) assert dao_get_all_templates_for_service( sample_service.id)[0].reply_to == letter_contact.id
def sample_template( notify_db, notify_db_session, template_name="Template Name", template_type="sms", content="This is a template:\nwith a newline", archived=False, hidden=False, subject_line='Subject', user=None, service=None, created_by=None, process_type='normal', permissions=[EMAIL_TYPE, SMS_TYPE] ): if user is None: user = create_user() if service is None: service = Service.query.filter_by(name='Sample service').first() if not service: service = create_service(service_permissions=permissions, check_if_service_exists=True) if created_by is None: created_by = create_user() data = { 'name': template_name, 'template_type': template_type, 'content': content, 'service': service, 'created_by': created_by, 'archived': archived, 'hidden': hidden, 'process_type': process_type } if template_type in ['email', 'letter']: data.update({ 'subject': subject_line }) if template_type == 'letter': data['postage'] = 'second' template = Template(**data) dao_create_template(template) return template
def sample_template( notify_db, notify_db_session, template_name="Template Name", template_type="sms", content="This is a template:\nwith a newline", archived=False, hidden=False, subject_line="Subject", user=None, service=None, created_by=None, process_type="normal", permissions=[EMAIL_TYPE, SMS_TYPE], ): if user is None: user = create_user() if service is None: service = Service.query.filter_by(name="Sample service").first() if not service: service = create_service(service_permissions=permissions, check_if_service_exists=True) if created_by is None: created_by = create_user() data = { "name": template_name, "template_type": template_type, "content": content, "service": service, "created_by": created_by, "archived": archived, "hidden": hidden, "process_type": process_type, } if template_type in ["email", "letter"]: data.update({"subject": subject_line}) if template_type == "letter": data["postage"] = "second" template = Template(**data) dao_create_template(template) return template
def get_precompiled_letter_template(service_id): template = Template.query.filter_by(service_id=service_id, template_type=LETTER_TYPE, hidden=True).first() if template is not None: return template template = Template( name='Pre-compiled PDF', created_by=get_user_by_id(current_app.config['NOTIFY_USER_ID']), service_id=service_id, template_type=LETTER_TYPE, hidden=True, subject='Pre-compiled PDF', content='', ) dao_create_template(template) return template
def test_create_template(sample_service, sample_user, template_type, subject): data = { "name": "Sample Template", "template_type": template_type, "content": "Template content", "service": sample_service, "created_by": sample_user, } if template_type == "letter": data["postage"] = "second" if subject: data.update({"subject": subject}) template = Template(**data) dao_create_template(template) assert Template.query.count() == 1 assert len(dao_get_all_templates_for_service(sample_service.id)) == 1 assert dao_get_all_templates_for_service( sample_service.id)[0].name == "Sample Template" assert dao_get_all_templates_for_service( sample_service.id)[0].process_type == "normal"
def sample_template( notify_db, notify_db_session, template_name="Template Name", template_type="sms", content="This is a template:\nwith a newline", archived=False, hidden=False, subject_line='Subject', user=None, service=None, created_by=None, process_type='normal', permissions=[EMAIL_TYPE, SMS_TYPE] ): if user is None: user = create_user() if service is None: service = sample_service(notify_db, notify_db_session, permissions=permissions) if created_by is None: created_by = create_user() data = { 'name': template_name, 'template_type': template_type, 'content': content, 'service': service, 'created_by': created_by, 'archived': archived, 'hidden': hidden, 'process_type': process_type } if template_type in ['email', 'letter']: data.update({ 'subject': subject_line }) template = Template(**data) dao_create_template(template) return template
def create_template( service, template_type=SMS_TYPE, template_name=None, subject='Template subject', content='Dear Sir/Madam, Hello. Yours Truly, The Government.\n', reply_to=None, hidden=False): data = { 'name': template_name or '{} Template Name'.format(template_type), 'template_type': template_type, 'content': content, 'service': service, 'created_by': service.created_by, 'reply_to': reply_to, 'hidden': hidden } if template_type != SMS_TYPE: data['subject'] = subject template = Template(**data) dao_create_template(template) return template
def test_dao_update_template_reply_to_some_to_none(sample_service, sample_user): letter_contact = create_letter_contact(sample_service, 'Edinburgh, ED1 1AA') data = { 'name': 'Sample Template', 'template_type': "letter", 'content': "Template content", 'service': sample_service, 'created_by': sample_user, 'service_letter_contact_id': letter_contact.id } template = Template(**data) dao_create_template(template) created = Template.query.get(template.id) dao_update_template_reply_to(template_id=created.id, reply_to=None) updated = Template.query.get(template.id) assert updated.reply_to is None assert updated.version == 2 assert updated.updated_at history = TemplateHistory.query.filter_by(id=created.id, version=2).one() assert history.service_letter_contact_id is None assert history.updated_at == updated.updated_at
def post(self, template): data = json.loads(request.data.decode()) existing = Template.query.filter_by(name=template) try: if existing.first(): raise InvalidUsage("Template exists") except InvalidUsage as error: response = Response(json.dumps(error.to_dict())) response.status_code = error.status_code return response t = Template(name=template, content=data["content"]) save_models([t]) if strtobool(data.get('default') or "false"): dt = DefaultTemplate.query.one() dt.template_id = t.id save_models([dt]) return list_templates()
def update_templates(self): res = requests.get( 'https://api.weixin.qq.com/cgi-bin/template/get_all_private_template', dict(access_token=self.token.access_token)).json() templates_id = [] for template_item in res["template_list"]: if '订阅模板消息' in template_item['title']: # 订阅模板消息,默认的去掉 continue templates_id.append(template_item["template_id"]) template = Template.query.filter_by( template_id=template_item["template_id"]).first() if template is None: # 添加 template = Template(template_id=template_item['template_id'], content=template_item['content'], title=template_item['title'], industry='{} - {}'.format( template_item["primary_industry"], template_item["deputy_industry"])) db.session.add(template) else: # 更新 template.template_id = template_item["template_id"] template.content = template_item["content"] template.title = template_item["title"] template.industry = '{} - {}'.format( template_item["primary_industry"], template_item["deputy_industry"]) templates_id.sort() for template in Template.query.all(): idx = bisect_left(templates_id, template.template_id) if idx >= len( templates_id) or templates_id[idx] != template.template_id: db.session.delete(template) db.session.commit()
def setUp(self): TestFactory.setUp(self) data = Template(descripcion="default", body="<div></div>") db.session.add(data) db.session.commit() self.path = '/templates'
def sponsor_task(): #需要登录 if not current_user.is_active: headers = request.headers se = Session.query.filter_by(sid=int(headers['session_id']), uid=int(headers['user_id'])).first() if se == None: print('session is not connected') return json.dumps({'errmsg': '没有建立会话或者会话信息出错'}) user = User.query.filter_by(id=se.uid).first() login_user(user) if request.method == 'POST': #获得post来的task数据 json_data = json.loads(request.data) print(json_data) if 'title' not in json_data or 'pay' not in json_data: return json.dumps({'errmsg': '没有传递title或者没有传递pay'}) task = Task( title=json_data['title'], sponsor=current_user, type=json_data['type'] if 'type' in json_data else '问卷', start_time=datetime.strptime(json_data['start_time'], '%Y-%m-%dT%H:%M:%S.%fZ') if 'start_time' in json_data else datetime.now(), end_time=datetime.strptime(json_data['end_time'], '%Y-%m-%dT%H:%M:%S.%fZ') if 'end_time' in json_data else datetime.now() + timedelta(days=10), pay=json_data['pay'] if 'pay' in json_data else 0, detail=json_data['detail'] if 'detail' in json_data else None, receiver_limit=json_data['receiver_limit'] if 'receiver_limit' in json_data else 1, received_number=json_data['received_number'] if 'received_number' in json_data else 0, extra_content=json_data['extra_content'] if 'extra_content' in json_data else None, state=0, # images = json_data['images'].encode() if 'images'in json_data else b'' ) #如果账户余额不足则返回错误 paySum = task.pay * task.receiver_limit if paySum > current_user.exMoney: return json.dumps({'errmsg': '账户余额不足'}) task.template = Template() task.template.questions = json_data[ 'questions'] if 'questions' in json_data else [] task.template.options = json_data[ 'options'] if 'options' in json_data else [] task.template.types = json_data[ 'types'] if 'types' in json_data else [] #任务发布成功,则提前扣除发布者的金额 current_user.exMoney = current_user.exMoney - paySum current_user.expend = current_user.expend + paySum #提交 db.session.add(task) db.session.commit() print('sponsor task {}!'.format(task.id)) return json.dumps(task.id) return json.dumps({'errmsg': '没有使用POST请求'})
self.app = create_app('testing') self.app_context = self.app.app_context() self.app_context.push() #用flask提供的测试客户端进行测试 self.client = app.test_client() self.runner = app.test_cli_runner() #创建数据库 db.create_all() #添加管理员账号 admin_user = User(email='*****@*****.**', name='系统管理员', username='******') admin_user.set_password('admin') #添加普通用户 normal_user = User(name='普通用户', username='******') normal_user.set_password('12345') #添加模板 tem1 = Template(id=1,name='模板1') tem2 = Template(id=1,name='模板2') tem3 = Template(id=1,name='模板3') #添加仓库 t1 = Depot(id=1,name='竞品仓',template_id=1) t2 = Depot(id=1,name='固定资产仓',template_id=2) t3 = Depot(id=1,name='低值易损耗仓',template_id=3) #添加图书 book = Book(booknumber=1,bookname='测试',numbers=1,prices=1.1,position='测试') db.session.add_all([admin_user,normal_user,tem1,tem2,tem3,t1,t2,t3,book]) db.session.commit() #使用普通用户登录 def login(self, name=None, password=None): if name is None and password is None: name = 'normal'