Ejemplo n.º 1
0
def test_with_variables():
    assert (
        translate("testing.example_with_variables", {"name": "Alice"})
        == "Hello, Alice!"
    )

    assert translate("testing.example_with_variables", {"name": "Bob"}) == "Hello, Bob!"
Ejemplo n.º 2
0
def test_clin_form_pop_dates_within_contract_dates():
    CONTRACT_START_DATE = app.config.get("CONTRACT_START_DATE")
    CONTRACT_END_DATE = app.config.get("CONTRACT_END_DATE")

    invalid_start = CONTRACT_START_DATE - relativedelta(months=1)
    invalid_end = CONTRACT_END_DATE + relativedelta(months=1)
    invalid_clin = factories.CLINFactory.create(start_date=invalid_start,
                                                end_date=invalid_end)
    clin_form = CLINForm(obj=invalid_clin)

    assert not clin_form.validate()
    assert (translate(
        "forms.task_order.pop_errors.range",
        {
            "start": CONTRACT_START_DATE.strftime("%b %d, %Y"),
            "end": CONTRACT_END_DATE.strftime("%b %d, %Y"),
        },
    )) in clin_form.start_date.errors
    assert (translate(
        "forms.task_order.pop_errors.range",
        {
            "start": CONTRACT_START_DATE.strftime("%b %d, %Y"),
            "end": CONTRACT_END_DATE.strftime("%b %d, %Y"),
        },
    )) in clin_form.end_date.errors

    valid_start = CONTRACT_START_DATE + relativedelta(months=1)
    valid_end = CONTRACT_END_DATE - relativedelta(months=1)
    valid_clin = factories.CLINFactory.create(start_date=valid_start,
                                              end_date=valid_end)
    valid_clin_form = CLINForm(obj=valid_clin)
    assert valid_clin_form.validate()
Ejemplo n.º 3
0
class SignatureForm(BaseForm):
    signature = BooleanField(
        translate("task_orders.sign.digital_signature_description"),
        validators=[Required()],
    )
    confirm = BooleanField(
        translate("task_orders.sign.confirmation_description"), validators=[Required()],
    )
Ejemplo n.º 4
0
class NameAndDescriptionForm(BaseForm):
    name = StringField(
        label=translate("forms.application.name_label"), validators=[Required()]
    )
    description = TextAreaField(
        label=translate("forms.application.description_label"),
        validators=[Optional()],
        filters=[lambda x: x or None],
    )
Ejemplo n.º 5
0
class CLINForm(FlaskForm):
    jedi_clin_type = SelectField(
        translate("task_orders.form.clin_type_label"),
        choices=JEDI_CLIN_TYPES,
        coerce=coerce_enum,
    )

    number = StringField(label=translate("task_orders.form.clin_number_label"),
                         validators=[Optional()])
    start_date = DateField(
        translate("task_orders.form.pop_start"),
        description=translate("task_orders.form.pop_example"),
        format="%m/%d/%Y",
        validators=[validate_date_in_range],
    )
    end_date = DateField(
        translate("task_orders.form.pop_end"),
        description=translate("task_orders.form.pop_example"),
        format="%m/%d/%Y",
        validators=[validate_date_in_range],
    )
    total_amount = DecimalField(
        label=translate("task_orders.form.total_funds_label"),
        validators=[
            NumberRange(
                0,
                MAX_CLIN_AMOUNT,
                translate(
                    "forms.task_order.clin_funding_errors.funding_range_error"
                ),
            )
        ],
    )
    obligated_amount = DecimalField(
        label=translate("task_orders.form.obligated_funds_label"),
        validators=[
            validate_funding,
            NumberRange(
                0,
                MAX_CLIN_AMOUNT,
                translate(
                    "forms.task_order.clin_funding_errors.funding_range_error"
                ),
            ),
        ],
    )

    def validate(self, *args, **kwargs):
        valid = super().validate(*args, **kwargs)

        if (self.start_date.data and self.end_date.data
                and self.start_date.data > self.end_date.data):
            self.start_date.errors.append(
                translate("forms.task_order.pop_errors.date_order"))
            valid = False

        return valid
Ejemplo n.º 6
0
class TaskOrderForm(BaseForm):
    number = StringField(
        label=translate("forms.task_order.number_description"))
    pdf = FormField(
        AttachmentForm,
        label=translate("task_orders.form.supporting_docs_size_limit"),
        description=translate("task_orders.form.supporting_docs_size_limit"),
    )
    clins = FieldList(FormField(CLINForm))
Ejemplo n.º 7
0
class PortfolioForm(BaseForm):
    name = StringField(
        translate("forms.portfolio.name_label"),
        validators=[
            Length(
                min=4,
                max=100,
                message=translate("forms.portfolio.name_length_validation_message"),
            )
        ],
    )
Ejemplo n.º 8
0
def test_clin_form_dollar_amounts_out_of_range():
    invalid_clin = factories.CLINFactory.create(
        total_amount=-1,
        obligated_amount=1000000001,
        start_date=datetime.date(2019, 9, 15),
        end_date=datetime.date(2020, 9, 14),
    )
    invalid_clin_form = CLINForm(obj=invalid_clin)
    assert not invalid_clin_form.validate()
    assert (
        translate("forms.task_order.clin_funding_errors.funding_range_error")
    ) in invalid_clin_form.total_amount.errors
    assert (
        translate("forms.task_order.clin_funding_errors.funding_range_error")
    ) in invalid_clin_form.obligated_amount.errors
Ejemplo n.º 9
0
def formatted_flash(message_name, **message_args):
    config = MESSAGES[message_name]

    title = translate(config["title"],
                      message_args) if config["title"] else None
    message = translate(config["message"],
                        message_args) if config["message"] else None
    actions = (translate(config["actions"], message_args)
               if config.get("actions") else None)

    flash({
        "title": title,
        "message": message,
        "actions": actions
    }, config["category"])
Ejemplo n.º 10
0
def test_portfolio_admin_screen_when_ppoc(client, user_session):
    portfolio = PortfolioFactory.create()
    user_session(portfolio.owner)
    response = client.get(url_for("portfolios.admin", portfolio_id=portfolio.id))
    assert response.status_code == 200
    assert portfolio.name in response.data.decode()
    assert translate("fragments.ppoc.update_btn").encode("utf8") in response.data
Ejemplo n.º 11
0
def ListItemsUnique(
        message=translate("forms.validators.list_items_unique_message")):
    def _list_items_unique(form, field):
        if len(field.data) > len(set(field.data)):
            raise ValidationError(message)

    return _list_items_unique
Ejemplo n.º 12
0
def Name(message=translate("forms.validators.name_message")):
    def _name(form, field):
        match = re.match(r"[\w \,\.\'\-]+", field.data)
        if not match or match.group() != field.data:
            raise ValidationError(message)

    return _name
Ejemplo n.º 13
0
Archivo: jobs.py Proyecto: v1psta/atst
def do_create_environment(csp: CloudProviderInterface, environment_id=None):
    environment = Environments.get(environment_id)

    with claim_for_update(environment) as environment:

        if environment.cloud_id is not None:
            # TODO: Return value for this?
            return

        user = environment.creator

        # we'll need to do some checking in this job for cases where it's retrying
        # when a failure occured after some successful steps
        # (e.g. if environment.cloud_id is not None, then we can skip first step)

        # credentials either from a given user or pulled from config?
        # if using global creds, do we need to log what user authorized action?
        atat_root_creds = csp.root_creds()

        # user is needed because baseline root account in the environment will
        # be assigned to the requesting user, open question how to handle duplicate
        # email addresses across new environments
        csp_environment_id = csp.create_environment(atat_root_creds, user,
                                                    environment)
        environment.cloud_id = csp_environment_id
        db.session.add(environment)
        db.session.commit()

        body = render_email("emails/application/environment_ready.txt",
                            {"environment": environment})
        app.mailer.send([environment.creator.email],
                        translate("email.environment_ready"), body)
Ejemplo n.º 14
0
class EnvironmentsForm(BaseForm):
    environment_names = FieldList(
        StringField(label=translate("forms.application.environment_names_label")),
        validators=[
            ListItemRequired(
                message=translate(
                    "forms.application.environment_names_required_validation_message"
                )
            ),
            ListItemsUnique(
                message=translate(
                    "forms.application.environment_names_unique_validation_message"
                )
            ),
        ],
    )
Ejemplo n.º 15
0
def validate_funding(form, field):
    if (isinstance(form.total_amount.data, Number)
            and isinstance(field.data, Number)
            and form.total_amount.data < field.data):
        raise ValidationError(
            translate(
                "forms.task_order.clin_funding_errors.obligated_amount_error"))
Ejemplo n.º 16
0
def test_home_route(client, user_session):
    user = UserFactory.create()
    user_session(user)

    response = client.get(url_for("atst.home"))

    assert response.status_code == 200
    assert translate("home.add_portfolio_button_text").encode("utf8") in response.data
Ejemplo n.º 17
0
def IsNumber(message=translate("forms.validators.is_number_message")):
    def _is_number(form, field):
        try:
            int(field.data)
        except (ValueError, TypeError):
            raise ValidationError(message)

    return _is_number
Ejemplo n.º 18
0
def send_portfolio_invitation(invitee_email, inviter_name, token):
    body = render_template("emails/portfolio/invitation.txt",
                           owner=inviter_name,
                           token=token)
    send_mail.delay(
        [invitee_email],
        translate("email.portfolio_invite", {"inviter_name": inviter_name}),
        body,
    )
Ejemplo n.º 19
0
def test_portfolio_index_without_existing_portfolios(client, user_session):
    user = UserFactory.create()
    user_session(user)

    response = client.get(url_for("portfolios.portfolios"))

    assert response.status_code == 200
    assert (translate("portfolios.index.empty.start_button").encode("utf8")
            in response.data)
Ejemplo n.º 20
0
def send_application_invitation(invitee_email, inviter_name, token):
    body = render_template("emails/application/invitation.txt",
                           owner=inviter_name,
                           token=token)
    send_mail.delay(
        [invitee_email],
        translate("email.application_invite", {"inviter_name": inviter_name}),
        body,
    )
Ejemplo n.º 21
0
def ListItemRequired(
        message=translate("forms.validators.list_item_required_message"),
        empty_values=("", None),
):
    def _list_item_required(form, field):
        non_empty_values = [v for v in field.data if v not in empty_values]
        if len(non_empty_values) == 0:
            raise ValidationError(message)

    return _list_item_required
Ejemplo n.º 22
0
def test_portfolio_index_with_existing_portfolios(client, user_session):
    portfolio = PortfolioFactory.create()
    user_session(portfolio.owner)

    response = client.get(url_for("portfolios.portfolios"))

    assert response.status_code == 200
    assert portfolio.name.encode("utf8") in response.data
    assert (translate("portfolios.index.empty.start_button").encode("utf8")
            not in response.data)
Ejemplo n.º 23
0
    def validate(self, *args, **kwargs):
        valid = super().validate(*args, **kwargs)

        if (self.start_date.data and self.end_date.data
                and self.start_date.data > self.end_date.data):
            self.start_date.errors.append(
                translate("forms.task_order.pop_errors.date_order"))
            valid = False

        return valid
Ejemplo n.º 24
0
class AttachmentForm(BaseForm):
    filename = HiddenField(
        id="attachment_filename",
        validators=[
            Length(max=100, message=translate("forms.attachment.filename.length_error"))
        ],
    )
    object_name = HiddenField(
        id="attachment_object_name",
        validators=[
            Length(
                max=40, message=translate("forms.attachment.object_name.length_error")
            )
        ],
    )
    accept = ".pdf,application/pdf"

    def validate(self, *args, **kwargs):
        return super().validate(*args, **{**kwargs, "flash_invalid": False})
Ejemplo n.º 25
0
class NewForm(FlaskForm):
    first_name = StringField(
        label=translate("forms.new_member.first_name_label"), validators=[Required()]
    )
    last_name = StringField(
        label=translate("forms.new_member.last_name_label"), validators=[Required()]
    )
    email = EmailField(
        translate("forms.new_member.email_label"), validators=[Required(), Email()]
    )
    phone_number = TelField(
        translate("forms.new_member.phone_number_label"),
        validators=[Optional(), PhoneNumber()],
    )
    phone_ext = StringField("Extension")
    dod_id = StringField(
        translate("forms.new_member.dod_id_label"),
        validators=[Required(), Length(min=10), IsNumber()],
    )
Ejemplo n.º 26
0
def PhoneNumber(message=translate("forms.validators.phone_number_message")):
    def _is_phone_number(form, field):
        digits = re.sub(r"\D", "", field.data)
        if len(digits) not in [5, 10]:
            raise ValidationError(message)

        match = re.match(r"[\d\-\(\) ]+", field.data)
        if not match or match.group() != field.data:
            raise ValidationError(message)

    return _is_phone_number
Ejemplo n.º 27
0
def ListItemRequired(
    message=translate("forms.validators.list_item_required_message"),
    empty_values=[None],
):
    def _list_item_required(form, field):
        non_empty_values = [
            v for v in field.data if (v not in empty_values and re.search(r"\S", v))
        ]
        if len(non_empty_values) == 0:
            raise ValidationError(message)

    return _list_item_required
Ejemplo n.º 28
0
def test_clin_form_obligated_greater_than_total():
    invalid_clin = factories.CLINFactory.create(
        total_amount=0,
        obligated_amount=1,
        start_date=datetime.date(2019, 9, 15),
        end_date=datetime.date(2020, 9, 14),
    )
    invalid_clin_form = CLINForm(obj=invalid_clin)
    assert not invalid_clin_form.validate()
    assert (
        translate("forms.task_order.clin_funding_errors.obligated_amount_error"
                  )) in invalid_clin_form.obligated_amount.errors
Ejemplo n.º 29
0
class PortfolioCreationForm(PortfolioForm):
    defense_component = SelectMultipleField(
        choices=SERVICE_BRANCHES,
        widget=ListWidget(prefix_label=False),
        option_widget=CheckboxInput(),
        validators=[
            InputRequired(
                message=translate(
                    "forms.portfolio.defense_component.validation_message"
                )
            )
        ],
    )
Ejemplo n.º 30
0
def test_portfolio_admin_screen_when_not_ppoc(client, user_session):
    portfolio = PortfolioFactory.create()
    user = UserFactory.create()
    permission_sets = PermissionSets.get_many(
        [PermissionSets.EDIT_PORTFOLIO_ADMIN, PermissionSets.VIEW_PORTFOLIO_ADMIN]
    )
    PortfolioRoleFactory.create(
        portfolio=portfolio, user=user, permission_sets=permission_sets
    )
    user_session(user)
    response = client.get(url_for("portfolios.admin", portfolio_id=portfolio.id))
    assert response.status_code == 200
    assert portfolio.name in response.data.decode()
    assert translate("fragments.ppoc.update_btn").encode("utf8") not in response.data