Commit Graph

129 Commits

Author SHA1 Message Date
graham-dds
108f65f928 Use pendulum for datetime operations when possible
Currently, we use both Python's built-in datetime library and Pendulum
to do datetime operations. For the sake of consistency, we should try to
stick to one library for datetimes. We could have used either, but
Pendulum has a more ergonomic API, so I decided to go with it when
possible.

The places where were we didn't / couldn't replace datetime are:
- checking instances of datetimes. Pendulum's objects are subclasses of
  python native datetime objects, so it's still useful to import
  datetime in those cases of using is_instance()
- WTForms date validators expect datetime style string formats --
  Pendulum has its own format for formatting/ parsing strings. As such,
  our custom validator DateRange needs to use datetime.stptime() to
  account for this format.
2020-02-17 10:38:52 -05:00
leigh-mil
d550b4108e Remove update ppoc route from the blueprint and skip related tests 2020-01-17 10:49:05 -05:00
leigh-mil
4f345b462f Add resend invite form/modal, update routes and tests as necessary. 2020-01-17 10:49:05 -05:00
leigh-mil
56c213285f Add route to update portfolio manager perms, add modal form to update in the UI 2020-01-17 10:49:05 -05:00
leigh-mil
05e7dab673 Delete ppoc related tests 2020-01-17 10:49:05 -05:00
leigh-mil
975d3d243b Delete tests and route associated with old portfolio member perms form 2020-01-10 10:25:55 -05:00
leigh-mil
79b2773852 Portfolio manager invite updates:
- Update the form to use BooleanFields for the permissions and make the
form more similar to the Application Members form
- Use MemberFormTemplate macro in the portfolio settings template
- fix tests affected by the form changes
2020-01-10 10:25:55 -05:00
leigh-mil
667554dba4 Update styling on portfolio admin page, update portfolio form to include description 2020-01-06 15:55:07 -05:00
leigh-mil
8710028256 Fix factories and seed sample script
Update display of defense component on portfolio settings page
2020-01-06 13:08:57 -05:00
leigh-mil
2b884f2c85 Remove route, tests, and template code for deleting a portfolio 2019-12-18 12:22:14 -05:00
graham-dds
a097a0ce61 Refactor New Portfolio page according to designs.
New designs call for a streamlined New Portfolio page, with far
fewer input options. This commit refactors that page according to those
designs.

Some of the route functions in this commit refer to a "step 1" of creating
a new Portfolio. Though there is no "step 2" right now, the designs call
for a multistep flow for Portfolio creation process, so this commit sets
the stage for that.
2019-12-13 13:17:30 -05:00
leigh-mil
74ff581570 Remove route for /portfolios 2019-12-03 15:43:06 -05:00
graham-dds
0303434561 First pass at new reporting designs
This commit lays out the genral structure and provides necessary
data for the new reporting page designs.

Some of the data generated by the report domain classes (including
the mock CSP reporting class) was modified to fit new designs. This also
included removing data that was no longer necessary. Part of the newly
mocked data includes the idea of "expended" data per CLIN or task order.
This was was mocked simply by using a 75% of the obligated funds fo a
given object. Tests were also written for these new/ modifed reporting
functions.

As for the front end, this commit only focuses on the high-level markup
layout. This includes splitting the large reporting index page into
smaller component templates for each of the major sections of the report.
2019-11-25 13:12:35 -05:00
dandds
d62027b2e7 Merge pull request #1046 from dod-ccpo/tests-debug
Enable debug mode in tests.
2019-09-03 16:08:42 -04:00
dandds
883947b75f Enable debug mode in tests.
Debug mode allows route integration tests to raise explicit exceptions on
errors, instead of returning error pages. Some portions of the test
suite need to be able to ignore exceptions (the response is not under
test) so they use a separate pytest fixture version of the app and
client that are configured with debug disabled, as it would be in
production.
2019-08-30 15:32:57 -04:00
dandds
d7478e322a Use Celery instead of RQ.
Celery provides a more robust set of queueing options for both tasks and
worker processes. Updates include:
- infrastructure necessary to run Celery, including celery entrypoint
- backgrounded functions are now imported directly from atst.jobs
- update tests as-needed
- update kubernetes worker pod command
2019-08-29 09:33:47 -04:00
George Drummond
cad43af455 Portfolio archiving 2019-06-11 11:30:37 -04:00
richard-dds
fd159a2d80 Remove start_time assertion 2019-06-10 15:15:39 -04:00
richard-dds
783281fade Merge pull request #853 from dod-ccpo/nav-changes
Portfolio navigation changes
2019-06-04 15:29:29 -04:00
richard-dds
0920d0bf81 Fix test 2019-06-04 14:12:53 -04:00
George Drummond
f7562714cb Add New Portfolio Workflow 2019-06-04 13:10:42 -04:00
dandds
4f8e9cddc8 Merge portfolio members routes with invitations.
`portfolios.create_member` now just sends an invitation, so it should be
with the invitation routes. This also de-duplicates the function for
sending a portfolio invitation email.
2019-06-03 15:57:49 -04:00
dandds
c085db23d7 New invitation backend for portfolio invitations.
Portfolio invitations do not associate a user entity until the
invitation has been accepted. User info, including DOD ID, is held on
the invitation itself. When a user accepts and invitation, their user
entry is associated with the corresponding `portfolio_role` entry.

The same change will be applied to `application_role` and application
invitations. For now, small changes have been made to
application-related methods so that that flow works as-is.
2019-06-03 15:57:49 -04:00
leigh-mil
7bec073f78 Delete things related to deleted columns and table 2019-05-31 13:07:03 -04:00
leigh-mil
7e8407ba1d Use portfolio_role_id in delete member url instead of user_id 2019-05-29 15:59:19 -04:00
dandds
4c4796ecc3 Merge pull request #841 from dod-ccpo/ppoc-role-id
Use portfolio_role.id for updating primary point of contact.
2019-05-23 10:11:33 -04:00
dandds
e3ace36466 Use portfolio_role.id for updating primary point of contact.
Our forms should rely on role IDs for displaying user information on the
portfolio page. This way they are decoupled from user table data and can
eventually rely on invitation user data where an invitation has been
sent but a user does not exist yet.
2019-05-22 15:59:04 -04:00
George Drummond
6487fe91ba Applications users were invited to were not showing in the portfolios
sidebar
2019-05-22 11:19:13 -04:00
dandds
c8682c0897 Use portfolio_role entity to display and update portfolio member info.
Previously, we were encoding the portfolio_role.user_id as part of the
form data for the portfolio admin page. This was convenient because it
allowed us to easily determine certain display attributes in the
template. Instead, we should rely on the PortfolioRole as the source of
truth for member information. This commit adds:

- Portfolio.owner_role to return the PortfolioRole of the owner
- explicitly passes the PortfolioRole IDs for the PPoC and current user
  to the template
- PortfolioRole.full_name for deriving the member name
2019-05-16 08:04:48 -04:00
dandds
3c1f4ac6df Standardize token argument in routes.
- `token` becomes `portfolio_token` in routes.
- Find relevant portfolio from token in `before_request` hook, like
  other routes.
2019-05-06 16:35:33 -04:00
George Drummond
360dab0a32 Add in check for removing the PPoC 2019-05-03 13:51:53 -04:00
George Drummond
f003baad7c Failing test 2019-05-03 13:46:46 -04:00
dandds
dd0b184bc2 extract new member form into standalone form class 2019-04-30 14:41:55 -04:00
dandds
c4ad7b4378 Make portfolio invitation specific to portfolio
- add a base domain class
- extract shared model code to mixin
- rename invitation classes
- invitation model relationship to portfolio_role name is now more
  generic "role"
2019-04-30 14:41:55 -04:00
dandds
78ba6afba0 rename and rearrange some portfolio route functions 2019-04-22 07:20:08 -04:00
dandds
782a532c32 reorganize task order routes 2019-04-22 07:20:07 -04:00
dandds
849c5d4b58 Rearrange and rename application routes.
- move application routes to their own Flask blueprint
- squash application routes to be resource-specific
- reorganize application routes
2019-04-22 07:19:30 -04:00
dandds
c223bff09c Remove unused portfolio routes 2019-04-18 09:50:53 -04:00
George Drummond
52669a0265 Use access specs 2019-04-17 13:52:06 -04:00
George Drummond
769867c6a9 Display app users view only table 2019-04-17 13:25:45 -04:00
Montana
d9c3cf340f Pass users' roles to the template 2019-04-17 11:06:37 -04:00
dandds
c1df245800 Scope access to applications, task orders, and environment roles.
These resources should be scoped to the portfolio when accessed from
route functions.
2019-04-16 14:18:53 -04:00
dandds
dac764ab82 route for deleting an application 2019-04-15 15:58:38 -04:00
Montana
4f2cb4d4a2 Test environment_obj 2019-04-11 15:54:56 -04:00
leigh-mil
51a5929b52 Check if member is PPoC before updating perms 2019-04-09 08:42:35 -04:00
George Drummond
090e13f083 Update Point of Contact 2019-04-08 13:31:00 -04:00
George Drummond
48d9506f96 Merge pull request #730 from dod-ccpo/archive-portfolio-member
Remove Portfolio User
2019-04-03 13:06:41 -04:00
Montana
27e2f81ba0 Only test resend invite link for one officer 2019-04-03 11:33:20 -04:00
George Drummond
83b071bf20 Get changes working with merged PRs 2019-04-03 10:32:03 -04:00
George Drummond
dee14b98be Remove portfolio permissions when role is disabled 2019-04-03 09:43:40 -04:00