Example #1
0
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'
Example #2
0
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"
Example #3
0
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
Example #4
0
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'
Example #5
0
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)
Example #7
0
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
Example #8
0
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'))
Example #9
0
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
Example #10
0
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
Example #11
0
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
Example #12
0
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
Example #13
0
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
Example #14
0
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
Example #15
0
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
Example #16
0
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"
Example #17
0
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
Example #18
0
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
Example #19
0
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
Example #20
0
    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()
Example #21
0
    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'
Example #23
0
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请求'})
Example #24
0
		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'