Commit Graph

297 Commits

Author SHA1 Message Date
Roberto Rosario
862c3ff568 PEP8 style cleanups
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
2019-03-18 04:43:31 -04:00
Roberto Rosario
7aa4b480d7 Fix failing ACL test
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2019-03-16 21:55:47 -04:00
Roberto Rosario
c152156a11 Refactor metadata app API
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2019-03-15 04:49:51 -04:00
Roberto Rosario
4b444a75cc Add support for multi access filtering
This change allows filtering a queryset by multiple permission
following a logic operator to define the relationship.

Example: In order to access an instance of MetadataTypeDocumentType
the document type view and metadata type view permissions are
required. The computation for this access control can now be
coded using .restrict_queryset_by_accesses. Custom permission
checking in the view is no longer required.

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2019-03-05 20:30:26 -04:00
Roberto Rosario
378511aea3 Finish fixing failing ACL app tests
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2019-03-04 16:20:12 -04:00
Roberto Rosario
2cfd4a9095 Add new ACL app API tests
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2019-03-03 20:02:36 -04:00
Roberto Rosario
2a67cf271e Refactor ACL app API
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2019-03-02 16:03:29 -04:00
Roberto Rosario
0cbd9e0d45 ACLs: Make get_inherited_permissions recursive
Update .get_inherited_permissions() to grab the permissions
of an object up the parent tree. Also add the role
permissions. Finally filter all the permissions by those
that apply to the object.

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2019-03-02 01:51:23 -04:00
Roberto Rosario
68c67abaa3 Improve how to get queryset from a content type
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2019-02-22 03:58:48 -04:00
Roberto Rosario
18e5ee1e4f ACL app updates
Update the ACL permission view to use the new AddRemoveView.

Add ACL created and ACL edit events.

Add permission adding and removal accesors to the ACL model.

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2019-02-14 02:30:51 -04:00
Roberto Rosario
27517c04f2 Fix ACL action tests
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2019-02-06 00:51:26 -04:00
Roberto Rosario
e5cd5a40c3 Improve ACL navigation
Update the ACL delete icon for uniformity.

Insert both the ACL and object in the view to also
display the ACL permissions and delete view when
viewing the ACL of an object.

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2019-02-01 04:15:16 -04:00
Roberto Rosario
65d75dafde Fix and improve test for the ACL app
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2019-01-30 17:11:15 -04:00
Roberto Rosario
46812ab3d3 Fix ACL filtering case #3
Test case #3: Generic Foreign Key, multiple ContentTypes + object
IDs.

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2019-01-30 17:09:46 -04:00
Roberto Rosario
4ba2d375af Update generic view and check access interfaces
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2019-01-30 03:54:10 -04:00
Roberto Rosario
ef5e0c2d86 Remove last usage of .filter_by_access()
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2019-01-29 04:18:02 -04:00
Roberto Rosario
c09b58894b Update views to import from common.generics
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2019-01-28 05:39:44 -04:00
Roberto Rosario
9261b6e687 Remove deprecation comment
With the removal of the support for a related field in
.restrict_queryset() the deprecation comment can now be
removed.

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2019-01-28 04:52:05 -04:00
Roberto Rosario
382995ae40 Update ACLs app
Remove support for passing a related field argument when
checking for access for restricting a queryset.

Remove a duplicate permission check.

Fix bug when filtering the direct ACL for an object,
the ACL query was filtering by the ACL ID instead of the
object ID.

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2019-01-25 01:18:44 -04:00
Roberto Rosario
9203977261 Update all links to the new Link class interface
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2019-01-25 01:13:53 -04:00
Roberto Rosario
354ea434ae Add keyword arguments to the ACLs app code
Rename all instance of `pk` or `acl_pk` to `acl_id`
to match the preferred URL parameter naming conventions of
using `id` instead of `pk`.

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2019-01-19 00:09:09 -04:00
Roberto Rosario
5d7f810477 Refactor the access control computation
Rewrite the ACL queryset filtering to move most of the
computation to the database manager view the ORM.

Add support for cascading access control checking.

Update the .check_access() method to work as a front
end of the new .restrict_queryset method. The workflow
for access control now follow Django convention of
first generating a queryset and then attempt to .get()
the desired element of the queryset.

This update also allows restricting a queryset by related
fields which can be Generic Foreign Keys.

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2019-01-19 00:05:21 -04:00
Roberto Rosario
65ccbd3b7b Reorganize reusable test code
Extract test views and user code into their own separate test case
mixins. Append TestCase to test case mixins with base test code
to differentiate them from test mixins with reusable view calls.

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2019-01-03 14:49:48 -04:00
Roberto Rosario
a77528862f Sort imports of ACLs app
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2019-01-02 03:05:04 -04:00
Roberto Rosario
dfd548bf62 Update ACL app to compy with MERC 5 and 6
Update the entire with keyword arguments. Update the views
to comply with MERC 6 by returning error 404 on access
failure. API are untouched. Add icon to the ACL delete
button. Add additional view tests. Use the new filtered
choice form to display a select2 enabled role selection
widget. Update the ACL creation view to not redirect to an
existing ACL in case of duplication but to instead stop
and display an error with a suggestion to the user
to instead edit the existing ACL.

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2019-01-02 02:48:19 -04:00
Roberto Rosario
8e0a2bbdbc Move the base test ACL mixin to the ACLs app
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2019-01-02 02:44:50 -04:00
Roberto Rosario
e687430cf0 Use new icon classes, improve URLs layouts
Use the new icon classes to add custom icons. Improve
the URL schemes of some apps for uniformity.

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2018-12-27 04:46:56 -04:00
Roberto Rosario
79cba7abe1 Improve the resolve_attribute function
Update the arguments of the function to be full length and more explicit.
Use exceptions to find the correct way of using the attribute of the
object passed instead of trying to use introspection.
Add support for passing key word arguments to the attribute being
resolved even if it is a class method.

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2018-12-21 23:41:38 -04:00
Roberto Rosario
798446f362 Add klass argument to get_object_or_404 usage
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2018-12-16 01:55:33 -04:00
Roberto Rosario
0e86f2ad8a Refactor the model accesors
Refactor the accesors to behave like methods instead of properties.
This means all accesors will be prepended with the string
"get_" and will include a set of parenthesis.

Improve the ModeAttribute class to use the method's
short_description. This commit also adds support for a
new method .help_text attribute has been added.

Move accessors to their own module, named "methods.py".

Remove the PropertyHelper class as the accessors no longer
need it.

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2018-12-15 04:49:40 -04:00
Roberto Rosario
8c63ef4c69 Styling: PermissionNamespace keyword arguments
Add keyword arguments to all called instances of PermissionNamespace.
Sort name and label arguments.

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2018-12-14 21:58:38 -04:00
Roberto Rosario
34443a715c Tests: Remove unused override_settings
Now that the automatic OCR, parsing and file metadata processing
are turned off by the test setting file, these overrides in the
tests are not needed anymore.

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2018-12-14 03:12:42 -04:00
Roberto Rosario
15180e95bf Styling: Add keyword arguments to add_to_class usage
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2018-12-14 02:44:50 -04:00
Roberto Rosario
503af584d5 Migrations: Remove superfluous code comments
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2018-12-14 02:35:24 -04:00
Roberto Rosario
1efec6bd41 Navigation: Related field support to SourceColumn
Add support to the SourceColumn class to resolve related fields
using the double underscore as separator. Columns that use related
no longer have to use throw away lambdas.

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2018-12-14 02:15:49 -04:00
Roberto Rosario
e83f6e55a0 Permission: Permission reference to property
Convert the volatile permission reference in the stored permission
model from a method to a property to allow future caching optimization.

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2018-12-12 23:12:52 -04:00
Roberto Rosario
55a30379bd Various apps: Sort imports
Run imports as per Mayan EDMS best practices.

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2018-12-06 01:57:24 -04:00
Roberto Rosario
8e69178e07 Project: Switch to full app paths
Instead of inserting the path of the apps into the Python app,
the apps are now referenced by their full import path.

This app name claves with external or native Python libraries.
Example: Mayan statistics app vs. Python new statistics library.

Every app reference is now prepended with 'mayan.apps'.

Existing config.yml files need to be updated manually.

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
2018-12-05 02:04:20 -04:00
Roberto Rosario
b04b205fb6 Add docstrings for almost all models
Also adds docstring to some managers and model methods.

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
2018-11-24 22:56:35 -04:00
Roberto Rosario
5a8455bfc2 Update translation files.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
2018-10-29 13:24:07 -04:00
Roberto Rosario
a99b044555 Code style improvement. Test code consolidation. PEP8 cleanups.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
2018-10-06 02:13:36 -04:00
Roberto Rosario
26ac7de70b Synchronize and compile translations
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
2018-09-26 22:50:48 -04:00
Roberto Rosario
3c2557fb47 Update translation source files.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
2018-09-26 22:29:54 -04:00
Roberto Rosario
a986b58338 Prepare release files.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
2018-09-17 18:52:26 -04:00
Roberto Rosario
ac07d4a63f Add more icons to links.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
2018-09-17 03:09:04 -04:00
Roberto Rosario
4d53c9aec7 Code clean up.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
2018-09-17 02:54:47 -04:00
Roberto Rosario
55930689bb Update language files.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
2018-09-12 03:45:51 -04:00
Roberto Rosario
4eab4670be Unify tests that use upload documents. Add explicit mode when opening a file.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
2018-09-06 03:38:17 -04:00
Roberto Rosario
41b8d6157a Update tests to rely less on view response text.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
2018-08-30 03:50:37 -04:00
Roberto Rosario
600fa16d8c Add empty result text to the user events views. Add icon to the acls create link.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
2018-08-26 06:57:10 -04:00