351 Commits

Author SHA1 Message Date
dandds
24b2d95f03 Application members should not see deleted applications.
This updates the `Portfolios.for_user` method to screen out deleted
ApplicationRole entities. For extra assurance, we also mark application
roles as disabled when they are deleted.
2019-08-15 10:20:30 -04:00
leigh-mil
e59e3b959c Add listener to User model to record permission set updates and update user audit log template 2019-08-13 16:36:38 -04:00
leigh-mil
feb24b8e16 Break class method for ccpo perms into two methods instead of switching on a kwarg to determine if perms are given or removed 2019-08-09 11:08:23 -04:00
leigh-mil
5b008e044a Add tests 2019-08-09 10:50:34 -04:00
richard-dds
8fce880ae6
Merge pull request #1013 from dod-ccpo/fix-cancel-button
Update TO form cancel button behavior
2019-08-09 09:50:38 -04:00
richard-dds
f042b12416 Real assertion in TO delete test 2019-08-08 16:26:59 -04:00
richard-dds
02900ff771 Allow TOs to be deleted, along with their associated CLINs 2019-08-08 16:03:42 -04:00
dandds
9fc6514d80 Clean up defunct upload and CRL logic.
- Applies our previous CSP namespacing pattern to the upload classes.
- Removes code and config for previous uploader implementation.
- Removes Attachment model's ability to upload files directly and
  adjusts tests that expected that behavior.
2019-08-08 13:20:27 -04:00
leigh-mil
90ae235cd0 Create query to get all CCPO users 2019-08-05 16:04:31 -04:00
dandds
bd8a469e93 Fix tests that were broken by a fixture CRL expiring.
Adjust the broken tests to use our dynamic fixtures for PKI files. Some
tests still rely on these fixtures, but this is a minimal patch to get
the test suite passing again. Eventually all tests should use the pytest
fixtures.
2019-07-10 11:11:49 -04:00
leigh-mil
c1383e1ec7 Delete unneeded tests 2019-06-20 14:28:56 -04:00
dandds
94d8680361 Do not return deactivated portfolios in Portfolios.for_user 2019-06-19 10:39:42 -04:00
George Drummond
4d7ad667b7
Remove Portfolios.can_revoke_access_for 2019-06-13 15:49:36 -04:00
George Drummond
490907257b
Remove Portfolios.revoke_access 2019-06-13 15:48:39 -04:00
George Drummond
cad43af455
Portfolio archiving 2019-06-11 11:30:37 -04:00
richard-dds
30ef2a67ef Fix bug in application member deletion 2019-06-10 16:43:47 -04:00
richard-dds
ee46fb2320 Formatting 2019-06-10 15:34:01 -04:00
richard-dds
40b599d1d0 Fix rebase conflicts 2019-06-10 15:33:30 -04:00
richard-dds
6eb64d4aae Add test for TaskOrders.sort 2019-06-10 15:16:26 -04:00
leigh-mil
46cd8f3762 Fix tests and formatting 2019-06-10 12:36:57 -04:00
leigh-mil
36200e01ad Create CLINs when creating a TO 2019-06-10 12:29:54 -04:00
dandds
bd4f2b3dde Delete unused Applications domain method and invitation service 2019-06-05 15:02:22 -04:00
dandds
fa50c01e48 New backend flow for application invitations.
Like portfolio invitations, now a user is not associated with an
application role until they accept the associated invitation.
- domain method for inviting user to application
- change application route for inviting a member
- ApplicationRole model knows user name from invitation
2019-06-05 15:02:22 -04:00
leigh-mil
91e41199b7 Update TO form based on new model 2019-06-05 12:58:33 -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
dandds
df06d1b62f Use application_role_id on environment_roles.
In the future, an `application_invitation1 will not refer to a `user` until
someone accepts the invitation; they'll only reference an
`application_role`. When a user is invited to an application, the
inviter can specify the environments the invitee should have access to.
For this to be possible, an `environment_role` should reference an
`application_role`, because no `user` entity will be known at that time.

In addition to updating all the models and domain methods necessary for
this change, this commit deletes unused code and tests that were
dependent on `environment_roles` having a `user_id` foreign key.
2019-05-31 11:21:20 -04:00
dandds
43ea922218 Simplify environment role updates in app settings.
Use ApplicationRole.id instead of User.id in forms. This eliminates the
need for the function that checks whether a user is in a given
application, because looking up the application role will raise an error
if the user is not.
2019-05-24 13:35:00 -04:00
dandds
129f5e3031 Rewrite function that builds form data for app environment roles form.
- Adds a property to ApplicationRole model so that it knows its related
  EnvironmentRole models.
- Rewrite the form data builder in the routes file so that it loops the
  application members and their environment roles to build the data
  structure.
2019-05-24 13:34:53 -04:00
dandds
a332d1432e Use application_role.id to reference users in team page forms.
Membership in a resource should be decoupled from the users table.
2019-05-23 10:13:57 -04:00
George Drummond
da6ac57812
Merge pull request #836 from dod-ccpo/sidebar
Applications users were invited to were not showing in the portfolios sidebar
2019-05-22 15:22:05 -04:00
leigh-mil
a1eb7ec935 Make sure all log events have portfolio and app ids (where applicable) 2019-05-22 13:08:44 -04:00
leigh-mil
b3ecd1658c Add application_id column to AuditEvent
Use application_id and portfolio_id if the resource is a portfolio in AuditableMixin
Clean up some residual references to workspace
2019-05-22 13:08:44 -04:00
George Drummond
a9fac1ca59
Add in missing test 2019-05-22 11:19:14 -04:00
dandds
8add5b4e22 Filter deleted environment roles from top-level domain method. 2019-05-21 14:08:14 -04:00
dandds
f7c3fe572b Raise error if CRL download fails.
The download method for Libcloud objects returns a boolean, which means
that our CRL download could fail silently. The RackspaceCRLProvider
would not raise an error until it tried to open the full path for the
downloaded resource. This checks the return status of the download call
and raises an error if the download failed. For reference:

https://libcloud.readthedocs.io/en/latest/storage/api.html#libcloud.storage.base.StorageDriver.download_object
2019-05-15 14:38:33 -04:00
George Drummond
b8ea1349b2
Merge pull request #817 from dod-ccpo/delete-user-from-application
Delete an application member
2019-05-14 15:45:32 -04:00
George Drummond
9927b22783
Disable rather than delete application_roles 2019-05-14 15:26:51 -04:00
George Drummond
4aea264026
Avoid double lookup 2019-05-14 11:37:33 -04:00
George Drummond
27a4ef12c6
Delete an application member 2019-05-14 11:07:08 -04:00
leigh-mil
546e04555d Update role div height
Move serialization into the route
change member.role to member.role_name in form and route
Return 400 for invalid form submission
2019-05-14 11:00:14 -04:00
leigh-mil
319cc17c1c Start vue component for edit-environment-role 2019-05-14 10:58:22 -04:00
leigh-mil
addf2e97a1 Update form to nest all envs in one form 2019-05-14 10:58:22 -04:00
leigh-mil
060c6834bf Add save button and temp member role toggle to env member form 2019-05-14 10:58:22 -04:00
dandds
2435f91b13
Merge pull request #809 from dod-ccpo/resource-finder
Resource finder
2019-05-10 06:07:45 -04:00
Montana
d5307b440f Make user_id required and add post tests
- raise an exception in ApplicationRoles.get()
- permission_sets is not changed if bad data is sent
2019-05-07 16:21:17 -04:00
Montana
526bcb1661 Update tests 2019-05-07 09:31:04 -04:00
dandds
42b912d4cb Look up major database resources in a before_request hook.
A `before_request` hook queries the database for portfolios, requests,
and task orders based on the route arguments. The resources are added as
attributes on `g`. The portfolio context processor and the access
decorator now rely on those resources being available on `g`.

WIP: find major resources in before_request hook, apply to g

WIP: use g.portfolio for portfolio context processor

WIP: the access decorator should rely on the resources being available on g
2019-05-06 16:32:55 -04:00
dandds
0da0f6a0ae WIP: use team form for application team page 2019-05-06 15:15:03 -04:00
dandds
8bd945d0d4 Applications.for_user returns user's portfolio applications.
The method has been updated to that, given a user and portfolio, it
returns the portfolio applications for which the user has an application
role.
2019-05-03 17:11:57 -04:00