collectstatic failes on various test suite files which are not needed to
install Mayan EDMS. Switch over to preparestatic, which contains a
predefined ignore list.
Add deletion of Python3 cache files to the clean target.
Allowing passing extra arguments to the test targets.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Allow passing runtime queryset to FilteredPrimaryKeyRelatedField
using a method name via the source_queryset_method attribute
or a default method name of "get_<field_name>_queryset".
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
FilteredPrimaryKeyRelatedField is a subclass of PrimaryKeyRelatedField
that filters its queryset by a permission.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Setting expected_content_type to None will now disable
the reponse HTTP content type checking. Added
to allow API tests to be a subclass of the test view test
case and support all the mixins without having to declare
them separately.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
For tests that required using two test permission, like
the tests for .restrict_queryset_by_accesses().
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
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>
Don't delete test models at the end of the test case.
Failed test cases don't execute the tearDown() method.
Instead perform model registry cleanup before creating
any new test model.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add type casting to ExternalObjectListSerializerMixin via
the external_object_list_pk_type option.
Add an ExternalObjectSerializeMixin for related objects.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
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>
Convert the API to use viewsets.
The search function is now a service of the search model
resource.
The simple and advance search are now the same service. The
difference is determined by the URL query. A ?q= means a
simple search. For advanced search pass the search model
fields in the URL query, example: ?q=document_type__label=
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Reduce repeated code.
Add support for passing query string dictionary to
the test client.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Normalize API base names.
Update ViewSet base class, model classes are not needed
the OCR API views.
Split API tests into content and submit tests.
Puntuate view test strings.
Make use of success and title strings.
Make use of external object mixin in document type
settings view.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add additional API and view tests.
Add success and multi document titles strings.
Make use of external mixin in the document type submit view.
Puntuate all view text strings.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Use viewsets for the events app API.
Use new link badge support for the unread notification
count display.
Remove AJAX workers support now that it is now needed
anymore.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Update serializers to be a subclass of
LazyExtraFieldsHyperlinkedModelSerializer to allow adding
more fields remotely.
Update URL fields to use MultiKwargHyperlinkedIdentityField.
Rename URL fields for uniformity.
Signed-off-by: Roberto Rosario <Roberto.Rosario.Gonzalez@mayan-edms.com>
Update the API routers registration to not duplicate
the document's URL parameter definition.
Signed-off-by: Roberto Rosario <Roberto.Rosario.Gonzalez@mayan-edms.com>
This refactor adds two new endpoints to view the OCR
content of versions and documents.
Signed-off-by: Roberto Rosario <Roberto.Rosario.Gonzalez@mayan-edms.com>
These views allow accesing the tags list of a document as
well as attaching or removing tags in bulk.
The URLs for tag list, attach and remove are added to the
DocumentSerializer.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
This class is a mixin of LazyExtraFieldsSerializerMixin and
serializers.HyperlinkedModelSerializer. It allows adding fields
to a 3rd party app serializer without having to import the serializer.
Referencing is done using the dotted path of the serializer.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Rename the get_menu_links and get_menus_links to
navigation_resolve_menu.
Change the return value of the menu resolving to include
the resolved object.
Update the links display templates to show which object the
links belong to when there is more than one object.
Update the links display templates to show which menu
the links belong to when there is more than one menu.
Remove the sidebar menu and unify its links with the
secondary menu.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
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>
Make sure to always used the base filtered source queryset.
Remove the grouped attribute which is subclass specific.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
View that use the MultipleObjectMixin can now fully operate
as single object or multiple object views.
Add the self.view_mode_single and self.view_mode_multiple flags.
Add support for single, singular and plural titles and success
messages via:
success_message_single, success_message_singular,
sucess_message_plural, title_single, title_singular and
title_plural class attributes.
Insert object_list and object as attributes of the view class
to avoid calling the queryset again.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Use the new AddRemove View for the Role's group and
permissions views as well as the Group's role views.
Convert the API to use viewsets.
Add more tests.
Add role created and edited events.
Add event subscription support to roles.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add a new view based on AssignRemove with extra features
and filtering. AddRemoveView also has two new buttons:
Add all, Remove all.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
- Update groups add, remove and users add, remove methods trigger
only one event on the parent method and multiple on the child method.
- Add missing group_list, _add, _remove permissions.
- Monkey patch Django's User and Group model save method to
trigger the creation and edited events.
- Monkeypatch user sorting to silence warnings.
- Improve test mixins to allow reuse of view and API view
requests.
- Finish adding all API tests.
- Add events test from API view requests.
- Remove event commits from views.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
- Add back support for API views but using the
api_urlpatterns list. Needed for the current user
API until a dynamic route router is implemented that
can allow a viewset action to specify its entire URL.
- Make sure the user is authenticated before
trying to the user permissions.
- Improve how external_object_list options are read from
the class.
- None authenticated users will get a blank queryset if the
view doesn't require a permission.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Remove the APIRoot view.
Remove the Endpoint class.
Remove the EndpointSerializer.
Move API documentation generation from the root urls module
to the app's urls module.
Update the app API URL generation to be based on viewsets
instead of an custom api_urls list.
Remove MayanObjectPermissionsFilter and replace it with
MayanViewSetObjectPermissionsFilter which allows mapping
a required permission to a specific viewset action.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Sort arguments.
Fix failing tests.
Sort view classes.
Replace get_object() with self.object in the delete and
edit views.
Use ExternalObjectMixin to simplify views.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Instead of calculating these values in the dispatch
method, add new methods to calculate and insert the values of
next_url and previous_url in the context.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add support to sort a model column by a field
other than the one being displayed.
Fix the missing column issue in the list subtemplate.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Convert half the widget to HTML widgets.
Rename links and views to use the nomeclature _template_
and _instance_ to differenciate between index instances
and index templates.
Update URL parameters to use the "_id" form.
Add more tests.
Add model permission inheritance to the IndexTemplateNode,
and IndexInstanceNode models.
Remove the level and document count display from the
instance node. Display instead the total items.
Use a FilteredSelectionForm subclass to display the list
of index templates to rebuild.
Add missing icons.
Add keyword arguments to links.
Modernize tests to use the document test mixin.
Update the permission requirements for the index template
document type selection screen. The document type view
permission is now required in addition to the index
template edit permission.
Use ExternalObjectMixin to reduce the code in all views.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Only override success_url if self.get_post_object_action_url()
provides an alternative.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Update permission variable name from
"permission_document_metadata_" to "permission_metadata_".
Fix failing tests.
Add test for same metadata type mixin.
Split metadata add and remove test into test for GET and
POST requests.
Remove use of urlencode and instead use furl.
Simplify view using self.action_count and
self.action_id_list.
Use ExternalObjectMixin to remove repeated code.
Move the repeated code to test for all documents to
be of the same type into its own mixin.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add translatable label to the label admin method.
Add access association from DocumentVersionDriverEntry to
document version.
Enclose process method and event commit in a transaction.
Update process method to not error out if EXIF tool
is not found.
Update views and tests to use ExternalObjectMixin and
comply with MERCs 5 and 6.
Signed-off-by: Roberto Rosario <Roberto.Rosario.Gonzalez@gmail.com>
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>
Don't cache the entire converter class to lower memory usage.
Instead a get_converter_class() function is now provided to
load the converter backend class.
Add model permission inheritance to transformations to
removel custom permission checking code in the views.
User keyword arguments.
Update URL parameters to the '_id' form.
Add missing edit and delete icons. Improve the create
icon using composition.
Update add to comply with MERCs 5 and 6.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Use the new document pre save hooks to disable the
new version upload link via external functions.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add support for new pre save hooks.
Hooks are now lists of functions instead of dictionaries.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add post_object_action_url property to redirect the view after
all items in the queryset have been processed.
Add the exception instance in the error message context.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Change "checkin" usage to "check_in".
Update URL parameters to the "_id" form.
Add support to checkout and check in multiple documents.
Optimize queries that used an ID list of documents for
filtering using values_list('pk', flat=True). These
queries now use .values('pk') as a subquery.
Add pre save hooks to block new document version uploads.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
When there is no HTTP referer fallback to
common.settings_home_view instead of LOGIN_REDIRECT_URL.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add icons for the workflow runtime proxy views.
Fix failing tests.
Convert runtime proxy links to use the new list facet menu.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add keyword arguments.
Update view resolutions and URL parameters to the '_id' form.
Remove code from create and edit subclasses and user
the super class error checking.
Cache the view object instead of using .get_object()
every time.
Movernize tests.
Update views to comply with MERCs 5 and 6.
Split UserTestMixin into mixins for Groups and Users tests.
Add super delete and detail tests.
Remove redundant superuser filtering from views.
Add transactions to views that also commit events.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Normally the MultipleObjectMixin class view only allows
id_list from the GET request. This is updated to allow
that query from POST requests like those produced by the
view tests.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Update the URL nomeclature for uniformity.
Add document transformation link tests and improve
the transformation view tests.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
SourceColums that don't specify an attibute or function
will receive the instance itself instead.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Remove the widget from the model.
Add keyword arguments.
Separate form widgets from html widgets. HTML widgets now go
in the html_widgets module.
Update the TagMultipleSelectionForm class to be a subclass of
FilteredSelectionForm.
Move Select2 specific JavaScript from the appearence app to the
tags app.
Update tag attachment and removal view names.
Modernize tests.
Add more tests.
Consolidate repeated test code into test mixins.
Update views to comply with MERCs 5 and 6.
Use uniform nomeclature for URLs.
Update URLs parameters to use the '_id' form.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Update the check_permission interface usage.
Use the model's default_manager instead of the explicit
.objects manager.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Rename the DeletedDocument proxy model to a TrashedDocument.
Rename the deleted_document views to trashed_document.
Rename the document and deleted_document URL parameters to
trashed_document.
Update URL parameters to the '_id' form.
Add keyword arguments.
Update use of .filter_by_access().
Enclose trashed document restore method in a transaction.
Sort arguments.
Update app for compliance with MERCs 5 and 6.
Add document page view tests.
Add favorite document view tests.
Movernize tests.
Replace use of urlencode with furl.
Update views to use ExternalObjectMixin.
Refactor the document and version download views.
Rename the DocumentDocumentTypeEditView to DocumentChangeTypeView.
Move the trashed document views to their own module.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add keyword arguments.
Sort arguments.
Unify the ObjectListPermissionFilterMixin and
ObjectPermissionCheckMixin into the RestrictedQuerysetMixin.
Add MultipleObjectDownloadView.
Update SingleObjectDownloadView to do queryset filtering.
The method that returns the base queryset for views is
now named get_source_queryset().
The views now use .get_object_list as a multi object
homologous of get_object. The queryset returned by
.get_object_list is restricted by access.
Make MultipleObjectMixin a subclass of Django's
SingleObjectMixin to reduce repeated code.
All generic views are now imported from common.generics and not
from common.views.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
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>
Add keyword arguments.
Remove source column functions and move their code to the model.
Use the FilteredSelectionForm for the key selection in the
document version signing view.
Update the field definition of the DetailForm subclasses
to use the new internface.
Update URL parameters to use the "_id" form.
Update views filtering to comply with MERC 6.
Move repeated test code to its own test mixin.
Update links to work with the new Link class interface.
Modernize tests.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Update the SingleObject Delete, Detail and Download views
to force use of a get_object_list method instead of allowing
subclasses to override the get_queryset method and bypass
the object permission checks.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add a new mixin to monkey patch the Model class to
force each newly created model instance to use a randomly
generated primary key.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
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>
Remove Link class support for multiple permissions. Accept
only one permission for each link. Remove support for the
permission related field.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Instead of class attributes, make a generic reusable the
FormOption class and update the DetailForm to use a Meta
class for options.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Fix displaying the name of the subclass when the
queryset is missing.
Add support for passing a new argument to specify
if the field is required or not.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
With the interface finalized, replace .filter_by_access() in
the generic view mixins with restrict_queryset().
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Change the app view namespace from 'document_states' to
'workflows'.
Add missing icons.
Improve view names.
Split views into 3 modules: workflows views, runtime proxy views
and instance views.
Update views to comply with new MERCs 5 and 6.
Fix failing tests.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Sort methods. Update use of .filter_by_access() to
.restrict_queryset().
Change the method to so the final object
filtering. Instead of expressing the pk list and remove the
duplicated using a set, pass the queryset as a subquery to
the object filter. This moves the processing to the database
instead of holding a list of an unknown number of primary
keys in the memory.
Add keyword arguments.
Update tests to use the latest user test case mixin interface.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Sort arguments. Add keyword arguments. Update URL parameters
to the '_id' form. Remove use of .check_access() from views.
Sort methods.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add keyword arguments. Sort imports. Move settings and test
literals to their own module.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add keyword arguments. Update URLs for uniformity.
Update URL parameters to the '_id' form. Update
views to remove use of .check_access(). Fix escape
sequence warning in migration 0005.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add keyword arguments. Update URL parameters to the '_id' form.
Movernize tests and update them to use the latest test case
improvements.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Update URL parameters to the "_id" forms. Add keyword arguments.
Remove use of is_path in the DOCUMENT_PARSING_PDFTOTEXT_PATH
setting.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add keyword arguments to all calls. Rename URL parameters to be
explicit ("key_id"). Add key delete view test. Update tests
to use a mixin for repeated key creation code. Grant permissions
and access the proper way using self.grant_permission and
self.grant_access.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add keyword arguments to links and test views.
Update URL parameters to use the _id form.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add keyword arguments to the app links.
Remove use of `raise_404`.
Update URL parameters to use document_id and comment_id.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Improve the configuration process of the FilteredSelectionForm form
by adding Meta child class support. The child Meta class
is defined in FilteredSelectionFormOptions.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Remove explict support for raising 404 error when the
object access fails.
The new method to use is to restrict the queryset using
the .restrict_queryset manager method and then .get() the
desired object. If the object access control failed then
the desired object will not be found in the queryset
and an error 404 will be raised. The end result is the same:
error 404, the method to raise the error is what differs now.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Update the API entries for content types and templates to use
viewsets and the new api_router_entries URL registraion
method.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add the get_related_field function to resolve a
model's related field reference by a path separate
by Django's default field separator '__'.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add the mayan.apps.common.warnings module with an
initial InterfaceWarning warning class used to mark
use of deprecated internal interfaces.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
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>
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>
Move the code to purge obsolete permissions from the management
command to the StoredPermission default manager.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add a new class method named check_user_permission.
This method is smaller as it only accepts a single permission
instead of a single or a list of permission like check_permissions
does. check_user_permission is meant to replace check_permissions.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Convert the user permission check from a double Python loop
to a single ORM query.
Add methods to the Role model to grant or revoke permissions.
Rename the method requester_has_this to user_has_this for clarity.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Rename migration 0011_auto_20181229_0738 to 0012_auto_20181229_0738
to avoid conflict with an existing 0011_* migration.
Signed-off-by: Roberto Rosario <Roberto.Rosario.Gonzalez@gmail.com>
Calculate the Template hash from the content actually returned.
Remove the newlines as these are irrelevant for HTML.
Signed-off-by: Roberto Rosario <Roberto.Rosario.Gonzalez@gmail.com>
Improve the configuration process of the FilteredSelectionForm form
by adding Meta child class support. The child Meta class
is defined in FilteredSelectionFormOptions.
Signed-off-by: Roberto Rosario <Roberto.Rosario.Gonzalez@gmail.com>
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>
Add support to override settings of the FilteredSelectionForm
via subclass attributes. Add keyword arguments to calls.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Modernize tests. Use the FilteredSelectionForm in the view
to add new cabinets to documents. Add missing icons.
Rename some view names to be more consistent.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Modernize view tests by using self.<method> instead of
self.client.method. Reduce repetition of reverse method with literal
view name usage.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add a mixin to ease the amount of code and imports required
for views that extract the content type from URL parameters.
Improve ExternalObjectViewMixin by adding a new class attribute
"external_object_pk_url_kwargs" to mechanize URL parameter
extraction. The external_object_pk_url_kwargs maps model
attributes using during manager get or filter from URL parameters.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add an extra step before creation of the instance to validate
for duplication. Add the error_message_duplicate class
attribute to allow customization of the error message.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
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>
Addionally the permission workflow is updated to work in a
reciprocal manner. In order to attach a tag, the user's role
will need the tag attach permissions for both, the document
and the tag.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add keyword arguments to URL definitions and reverse resolution.
Raise HTTP error 404 instead of 403 to reduce the information
divulged. Add view tests.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Use a dynamic subclass instead that always deconstructs to a fake
subclass with a __eq__ method that always returns True. This should
trick makemigrations into never creating a new migrations for
changes to the storage class or the arguments.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Wrap storages directly connected to file model fields to avoid
Django triggering a migration change when an attribute of the
storage is changed, like the location.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add new icons for the apps: Document comments, documents, file metadata,
parsing and OCR.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
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>
Improve the code that restores the menu state after a refresh.
Add hover styling for menu sub links. Add an active class
for the menu sub links and JavaScript to assign it to the
link clicked or restored.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add new icon classes based on Font Awesome that support
layering, masking and combining glyphs.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Update the class to disable displaying the column label by default
and only so when the include_label argument is True.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Increase the width of the border for hightlighted panels.
Add a hover shadow to selectable panels.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add an additional method to obtain the request when it is
not available from the context.
Add support for SourceColumn resolution of inherited
sub models.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Update usage of SourceColumns in the sources app.
Move some colum definitions from the view to the app
module using SourceColumn instances.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Update the JavaScript dependency installation code to handle scoped
packages. The code is also updated to use pathlib's Path.
Move the JavaScript dependency installation to its own app named
dependencies.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Remove the HTML based MultiItemForm and use a Bootstrap dropdown
menu for the bulk actions list.
Add a text message explaining that items must be selected in
other to activate the bulk action menu.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Update UI code to display a fixed location sidebar. The sidebar is
also of a fixed width instead of being a certain number columns
wide. The action dropdown is also now in a fixed location.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Change the left hand side menu designation to be the 'main'
menu from 'sidebar', the menu at the top goes from 'main'
to 'topside'. All menus are referenced by their name only
and the fragment 'menu' is dropped from all as it is obvious
that they are menus and the Menu class doesn't supply any
other kind of object.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add code to detect the current URL and open the parent of
the menu entry that correlates to it.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Since tables row height can't be controlled using CSS (they
will always resize to the size of their elements), this commit
adds a table cell container whose size can be controlled from
the view. This way big thumbnail images won't break the appearance
of the table.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Move the current user detail and edit views from the common app
to the user_management app. Add the user created and edited events.
Add an user detail view.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Update template code to display the resolved attribute's absolute_url
and if it doesn't provide it, fallback to display the main object's
absolute_url.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
The SourceColumn class has now the ability to render a link's
absolute_url, turn this on for the document parsing error and
OCR error list columns and remove the document_link widget.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add a separator under the setup link in the system menu.
Fix the user menu separator which is at the top of the username
and should be udner it.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add a new argument to the SourceColumn class to flag a column as
sortable. The SourceColum will generate a request querystring to
be used as the table header archor href. The SingleObjectListView
will capture the querystring and call the order_by on the queryset
to sort it.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Improve the method of slicing the document list to produce
a queryset that can be further sorted.
Add a new date added column to the recently added document list.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Remove the variable multi_select_item_properties and the
get_encoded_parameter custom filter.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Allow passing a widget class to SourceColumn. This makes
using lambdas to render model column unnecesary and are
mostly removed too.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Disable the link to view an user's (or current user)
group list if the user is a superuser or staff.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Compute the SourceColumn at definition instead of doing it
during the resolve method. This move the label calculation
from the rendering to the startup.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add the new generic list and generic list items toolbar which allow
switching the list display mode.
This toolbar also includes a stylized button to select and deselect
all items emulating the check-all checkbox.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Update the invalid document template to use the new font awesome
defitions.
Increase the size of the default template.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Update the code of some SourceColumn invocations to be model methods
instead of lambda wapped functions.
Move the translated labels to the models too.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add a red alert for faster visual scanning. Place the
status code output in the same line as the initial message to
save some vertical space for debug output.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
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>
Add support for selecting a document from the UI by just clicking
on the title of the body of the card, not just on the checkbox
next to the title.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add a left side menu navigation style. The main app navigation links
will be displayed here. The notification, user and system tools are now
displayed at the top navigation bar.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Update sourcs to accept a test argument to their check methods.
This is to allow for explicit test behavior like running the
check method code even when the source is disabled and to
not deleted downloaded content during a test.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
This widget will allow displaying HTML anchor buttons inside
the forms. It uses by default the navigation instance template
from the navigation app.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Convert the calculate form title template into a template tag.
The result of the template tag is applied as the title property
of the <H3> HTML tag allowing users to view the full title on
mouse hover if the title was truncated.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add a HTTP status code display. If status code is 0 assume
there is a communication error and display such.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Update the way settings are loaded. Instead of loading the
entire config file now settings are loaded from the config
file on demand when the cache misses.
Improve the smart settings classes tests and add another test
for the config file loading.
Add support for variable config file path.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Update the Key model's sign_file method to raise the NeedPassphrase
exception when GPG has no terminal available and not just when the
GPG backend specifically asks for a passphrase.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
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>
Add keyword arguments to all called instances of PermissionNamespace.
Sort name and label arguments.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Merge all document type selection forms into a single smarter form
that can perform permission filtering and allow single or multiple
selections.
This commit also add the document type selection for submit
view to the file metadata app.
This commit also updates the document type selection views
for the OCR, document parsing, and upload wizard to use
the new document type selection form and removes their
respective document type selection forms.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Split the documents/forms.py into sub modules for each logical
unit: types, document, pages, versions.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
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>
The base test file now turns off OCR, parsing and file metadata
processing. Apps that rely on those must now turn them on
explicitly.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add the file metadata app. This app uses binary wrappers called drivers
to extract properties from the file of documents. The default driver
uses the exiftool to extract the EXIF record from JPEG images.
The exiftool can also extra some properties from other files like
PDFs, office files and sound file.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
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>
Add message body display when the Django debug flag is True.
Add a CSS to simulate the appearence and legibility of the
debug message.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Remove markup in the base.html template to render the Actions dropdown
and use instead the built in navigation/generic_navigation.html
template.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add icons to document version action links. Add icons to
detached and embedded signing action links.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Remove the fade in animation in document thumbnails. Tweak
the match height refresh interval to reduce scrollbar
jitter in Firefox. Change the fancybox display animation from
zoom to fade in.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
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>
The document parsing was being turned off in the OCR tests
by setting the binary to an invalid value. A proper way
to disable automatic parsing was added in a previous commit
and this commit updates the test case class to use that method.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Update some view tests in the tags, sources and linking apps
to use the test case classes provided by the common app.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Instead of capturing the form save exceptions in the subclass
let the base class do the work.
Use the base class get_instance_extra_data method to avoid
some code repetition.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Update the generic single object create and edit views to display
critical exceptions instead of just raising them and stoping
execution. The should allow removing duplicated exception to message
code in subclasses of these views.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
These features were for Celery 4.2.1, since this version
has a regression, version 4.1.1 is used instead.
The version 4.2.1 features are removed also and implemented
in code.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Upgrade Celery version used from 3.1.26 to 4.1.1. The following
settings have been renamed: CELERY_ALWAYS_EAGER to
CELERY_TASK_ALWAYS_EAGER, BROKER_URL to CELERY_BROKER_URL.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Pillow was being initialized on import. This commit
moves the initialization to the __init__ method of the
Python backend subclass.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Squash together the following migrations:
- Common: 0010 to 0011
- Documents: 0029 to 0037
- Documents: 0042 to 0043
- Tags: 0001 to 0008
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Extract the new smart file caching code from the common app
and convert it into its own new app called file_caching.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Split the .model module from the document app into separate
modules by purpose. The new modules containing the documents
app models are: document_models.py, document_page_models.py,
document_type_models.py, and document_version_models.py.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Prepend "operation_" to the data migration functions
for clear purpose. Add keyword arguments to the RunPython
migration opration.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Several tests cause errors on purpose to test behaviors.
This commit mute these tests setting their debug level
to critical or by using a context manager to null their
stdout descriptor.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Change the use of the list/zip combinarion to generate
the full list of metadata lookup choices to a generator.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Incorporate the external django-autoadmin app as a core app
and convert it into a Mayan app. This change adds the new
settings: "COMMON_AUTOADMIN_EMAIL", "AUTOADMIN_PASSWORD", and
"AUTOADMIN_USERNAME".
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Add a new view to display the events of the current user.
The link to this view is added to the user menu in the main menu
bar.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
The HOME_VIEW setting is not a Django setting but a setting from the
common app. Move the HOME_VIEW to the COMMON namespace and rename it
to COMMON_HOME_VIEW.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Use Python's platform library to detect the operating system and
use different default paths for the binary dependencies.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Update which Document model manager the new version upload task
uses to fetch the document. Changing to the passthrough manager
allows the task to access document stubs which is the expected
behavior as new document with no versions are considered stubs.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Update the django_gpg app to work with the latest version of the
python-gnupg package (0.4.3).
The python-gnupg now returns a more clear error message to
differentiate between a bad passphrase and a missing passphrase.
This improments allows the django_gpg to simplify its error
message parsing and remove the literals:
"ERROR_MSG_NEED_PASSPHRASE" and "ERROR_MSG_GOOD_PASSPHRASE".
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Rename the setting "SIGNATURES_STORAGE_BACKEND" to
"DOCUMENT_SIGNATURES_STORAGE_BACKEND" and the setting
"SIGNATURES_STORAGE_BACKEND_ARGUMENTS" to
"DOCUMENT_SIGNATURES_STORAGE_BACKEND_ARGUMENTS". This is
to differentiate these from the settings of the django_gpg
app.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Remove the SIGNATURES_GPG_HOME settings. The GPG keys are no longer
stored in disk but in the database itself making this setting obsolete.
This changed happened several versions ago and this removal doesn't affect
any code path.
Add two new settings to the app: SIGNATURES_GPG_BACKEND and
SIGNATURES_GPG_BACKEND_ARGUMENTS. These settings allow changing the
GPG backend that the app will use.
Remove the settings SIGNATURES_GPG_PATH. The path to the GPG binary
is now passed via the SIGNATURES_GPG_BACKEND_ARGUMENTS.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
The get_page method had support to return the image in
base64 format. This feature is no longer used by any
other app.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
The get_page method had support to return the image in
base64 format. This feature is no longer used by any
other app.
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
Change the use of string_concat with format_lazy.
string_concat is deprecated in Django 1.11 and removed in
Django 2.1.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Update the type checking from using Django's six port
to use direct list and tuple instance checking.
Needed for Python 3.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Update the OCR app to use the document image cache instead
of trying to read the image file directly from
the document storage.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
The SearchModel class no longer returns an elapsed time
value. Update the tests and views that expect this removed
variable.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Add filter(is_stub) to the default Document model manager.
Now only the Passthrough manager can access document stubs.
Remove the explicit filtering of stubs from code that obtains
the queryset from the default document manager.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Reduce the document thumbnail fadein animation length
to speed up display of resolved thumbnails.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
New log formatter that color the output depending on the log
level of the message. The default palette handles: INFO,
SUCCESS, ERROR, DEBUG and CRITICAL.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
New log formatter that color the output depending on the log
level of the message. The default palette handles: INFO,
SUCCESS, ERROR, DEBUG and CRITICAL.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
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>
Add a setting callback to update the size of the document
cache when the DOCUMENTS_CACHE_MAXIMUM_SIZE setting is
updated.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Execute the prune method of a cache when its properties
are changed. This ensures the size of the cache matches
the maximum size set when last saved.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Settings can be provided with a function via the new
"post_edit_function" argument. This function will be called
when the setting's value is updated. The function will only
receive one argument: The instance of the setting being
changed.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
With the creation of the new general use file Cache system
the old DocumentPageCachedImage model and manager are no longer
needed. This commit removed the model and the manager, and add
a migration to remove any data in the model before removing it
from the database.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Add additional classes to split existing classes that are too complex.
Remove search timming.
Add query explainer.
Move literals to their own module.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Add retry to race condition in intermediate image generation.
Remove DB index from cache file size field.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Working implementation with three levels of organization per cache.
Cache -> Partition -> File.
Current non blocking lock for the intermediate file generation needs
to be replaced to a blocking lock.
Needs tests.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
The settings/base.py file is expeting a dictionary of configuration
options. If there is no config.yml, return and empty dictionary
instead of a None result.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Make sure the no-result template looks the same when included from
all the parent templates.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Add a delay to the image error handler attachment code to avoid
triggering a false image error event. This is cause when the error
handler is attached before the image is assigned a src attribute.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Add the new list facet navigation menu. Used to provide facets
to the list subtemplate. The list facet allows separating the object
action links from the object navigation links. The list facet
links are displayed before the list object links on the list
subtemplate. In the object views, the list facet menu behaves
exactly the same as the form facet menu.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Refactor the workflow preview generation to work as a
background task API service. Solves GitLab issue #532.
The image generation runs as an out of process task
ensuring that the HTTP request is never compromised.
A new task queue named "document_states_fast" was created.
The settings WORKFLOWS_IMAGE_CACHE_TIME,
WORKFLOWS_IMAGE_CACHE_STORAGE_BACKEND,
WORKFLOWS_IMAGE_CACHE_STORAGE_BACKEND_ARGUMENTS we added.
Images generated are stored by default under /mayan/media/workflows.
The Dockerfile and deployment instructions are updated
to include the new queue.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Fix the way the form CSS contained in the media attribute
is rendered. This is now an interator and not a single value.
Replace the current method with a for loop.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Add section to outline common pitfalls when installing.
Reference GitLab issue #487.
Update installation instructons to use the setting
MAYAN_DATABASES instead of the old MAYAN_DATABASE_*.
Unify the installation instructions by converting the
chapters into partials that are now included in the
topic file.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Increase the default value of the index mirroring cache timeout
from 10 seconds to 5 minutes. Since version 3.1.5, mirror
cache invalidation is tied to index updates. This makes the
timeout less relevant. The purpose of the cache timeout is
now avoid runaway memory usage.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Add support for subfolder scanning to watch folders. Closes
GitLab issue #498.
This commit adds a new field to watch folders called
"include_subdirectories".
The directory walk was also updated to use pathlib2.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Add support to the mailing profiles for specifying a "from"
address. Closes GitLab issue #522.
This commit adds a new backend class property "class_fields"
which differs from the normal "fields" property. The "class_fields"
property specifies which of the backend fields will be used to
initialize a backend's driver class. This is to avoid passing
fields that the driver doesn't expect and getting an error.
When sending emails, the "send" method will attempt to get
a "from" key from the backend data and use that when sending
emails. If no "from" key is found a None is passes. Django's
behavior in this situation dictates that the "from" value will
then be taken from the DEFAULT_FROM_EMAIL setting.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Delay the usage and initialization of Django settings
by removing their reference from the "save_configuration"
method declaration.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Fix formatting of the versioning section
and turn the list of version examples into a table.
Add further examples for minor and micro releases.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Add two new custom password validators. One ensures
passwords have a minimum number of uppercase letters and the
other ensures passwords have a minimum amount of numbers.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Cleanup the Sphinx configuration file to comply with PEP8.
Enable the viewcode and autodoc extensions to start adding
code snippets in code.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Revert how the OCR and document parsing generators end
their iteration. Originally they issue an empty return,
then a blank yield was added. This commit reverts the
blank yield and restores the original 'return' behavior.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Add the 'content' attribute to documents to allow access
to a document's parsed content for indexing and other purposes.
Fixes the document parsing indexing failing test.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Add the 'ocr_content' attribute to documents to allow access
to a document's OCR content for indexing and other purposes.
Fixes the OCR indexing failing test.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Jinja2 doesn't support the {% empty %} node, instead it uses
the {% else %} node for the same purpose.
Fixed the tag indexing failing test.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Settings with lazy values are now more carefully checked
and converteed before serializing them.
Previously only the entire value was checked to see if it
was a promise. Now the value is checked to see if it is a
list or tuple and its members checked to see if they are
promises.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Expose new Django settings via the UI: AUTH_PASSWORD_VALIDATORS,
DEBUG, DEFAULT_FROM_EMAIL, INTERNAL_IPS, LANGUAGES,
LANGUAGE_CODE, STATIC_URL, STATICFILES_STORAGE,
TIME_ZONE, WSGI_APPLICATION.
Expose a new Celery setting via the UI: CELERY_ALWAYS_EAGER.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Refactor the initial environment settings and configuration file loading
fixing some issues loading Django settings.
Consolidate all database settings into a new single setting
called "DATABASES". This mirrors Django database setting
structure. This changes makes it possible to use configure
multiple databases and database routers from the environment
variables or configuration file.
Remove usage of django-environ. Only a small set of the
features provided by django-environ were being used.
Variable typecasting is now only YAML. YAML parsing
is implemented in code.
Previously the initial setting code added all settings
it found into the global symbol table. Now the settings
found are matched to a explicit list of allowed settings.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Update the default values of the settings which pass
arguments to backends to be valid Python values and not
YAML strings.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Change the CONVERTER_GRAPHICS_BACKEND_CONFIG settings
to CONVERTER_GRAPHICS_BACKEND_ARGUMENTS for uniformity
and to convey it real purpose which is initializing a backend.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Currently the link to navigate back to the settings
namespace is registered as an action when it is a link.
This commits changes it to a link in the facet menu.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Instead of passing strings as arguments to backends, all settings must
be formatted according to YAML specifications. This is to remove the
need to add separate YAML parsing to each backend argument in each
app that needs it. Argument passing to backends is not fully
uniform.
Users need to update their config files.
Example:
DOCUMENTS_STORAGE_BACKEND_ARGUMENTS: '{location: /home/rosarior/development/mayan-edms/mayan/media/document_storage}'
must be changed to:
DOCUMENTS_STORAGE_BACKEND_ARGUMENTS:
location: /home/rosarior/development/mayan-edms/mayan/media/document_storage
Example 2:
CONVERTER_GRAPHICS_BACKEND_CONFIG: ' { libreoffice_path: /usr/bin/libreoffice, pdftoppm_dpi:
300, pdftoppm_format: jpeg, pdftoppm_path: /usr/bin/pdftoppm, pdfinfo_path:
/usr/bin/pdfinfo, pillow_format: JPEG } '
must be changed to:
CONVERTER_GRAPHICS_BACKEND_CONFIG:
libreoffice_path: /usr/bin/libreoffice
pdftoppm_dpi: 300
pdftoppm_format: jpeg
pdftoppm_path: /usr/bin/pdftoppm
pdfinfo_path: /usr/bin/pdfinfo
pillow_format: JPEG
Example 3:
OCR_BACKEND_ARGUMENTS: ''
must be changed to:
OCR_BACKEND_ARGUMENTS: {}
Settings that need to be updated are:
- COMMON_SHARED_STORAGE_ARGUMENTS
- CONVERTER_GRAPHICS_BACKEND_CONFIG
- DOCUMENTS_CACHE_STORAGE_BACKEND_ARGUMENTS
- DOCUMENTS_STORAGE_BACKEND_ARGUMENTS
- OCR_BACKEND_ARGUMENTS
- SIGNATURES_STORAGE_BACKEND_ARGUMENTS
- SOURCES_STAGING_FILE_CACHE_STORAGE_BACKEND_ARGUMENTS
The following error will appear in the console if a setting is not yet
updated to this new format::
TypeError: type object argument after ** must be a mapping, not str
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Update mentions of MIDDLEWARE_CLASSES to MIDDLEWARE in the
development and testing settings.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Use Jinja2 to render the templates of the indexing,
workflows, smart links, user mailer and metadata apps.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Adds JavaScript support to monitor keypresses or mouse events
of forms with the classes .form-hotkey-enter or form-hotkey-double-click,
and trigger the click event of the button with the CSS class
.btn-hotkey-default.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Make the custom middleware provided by Mayan to use the
MiddlewareMixin provide by Django. This make the middleware
classes behave like classes or callables. This change ensures
compatibility with Django 2.x.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Move the development URL definitions for Rosetta and Debug toolbar
to a separate URL file. Convert the single urls.py to a module to
allow multiple URL files to be used.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Add support to pass serialized transformation lists to the
document page generation task.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
Invalid document template is now served or included from
a specific template file. Documents with invalid
API image URLs now return None instead of the template code
specific '#'. The new template is called invalid_document.html.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
@@ -126,13 +126,13 @@ Defaults to `None`. This optional environment variable is used to set the hostna
Defaults to `None`. This optional environment variable is used to set the port number to use when connecting to the database. An empty string means the default port. Not used with SQLite. For more information read the pertinent Django documentation page: [Settings, PORT](https://docs.djangoproject.com/en/1.11/ref/settings/#port)
### `MAYAN_BROKER_URL`
### `MAYAN_CELERY_BROKER_URL`
Defaults to 'redis://127.0.0.1:6379/0'. This optional environment variable is determines the broker that Celery will use to relay task messages between the frontend code and the background workers. For more information read the pertinent Celery Kombu documentation page: [Broker URL](http://kombu.readthedocs.io/en/latest/userguide/connections.html#connection-urls)
This Docker image supports using Redis and RabbitMQ as brokers.
Caveat: If the `MAYAN_BROKER_URL` and `MAYAN_CELERY_RESULT_BACKEND` environment variables are specified, the built-in Redis server inside the container will be disabled.
Caveat: If the `MAYAN_CELERY_BROKER_URL` and `MAYAN_CELERY_RESULT_BACKEND` environment variables are specified, the built-in Redis server inside the container will be disabled.
### `MAYAN_CELERY_RESULT_BACKEND`
@@ -140,7 +140,7 @@ Defaults to 'redis://127.0.0.1:6379/0'. This optional environment variable is de
This Docker image supports using Redis and RabbitMQ as result backends.
Caveat: If the `MAYAN_BROKER_URL` and `MAYAN_CELERY_RESULT_BACKEND` environment variables are specified, the built-in Redis server inside the container will be disabled.
Caveat: If the `MAYAN_CELERY_BROKER_URL` and `MAYAN_CELERY_RESULT_BACKEND` environment variables are specified, the built-in Redis server inside the container will be disabled.
@@ -126,13 +126,13 @@ Defaults to `None`. This optional environment variable is used to set the hostna
Defaults to `None`. This optional environment variable is used to set the port number to use when connecting to the database. An empty string means the default port. Not used with SQLite. For more information read the pertinent Django documentation page: [Settings, PORT](https://docs.djangoproject.com/en/1.11/ref/settings/#port)
### `MAYAN_BROKER_URL`
### `MAYAN_CELERY_BROKER_URL`
Defaults to 'redis://127.0.0.1:6379/0'. This optional environment variable is determines the broker that Celery will use to relay task messages between the frontend code and the background workers. For more information read the pertinent Celery Kombu documentation page: [Broker URL](http://kombu.readthedocs.io/en/latest/userguide/connections.html#connection-urls)
This Docker image supports using Redis and RabbitMQ as brokers.
Caveat: If the `MAYAN_BROKER_URL` and `MAYAN_CELERY_RESULT_BACKEND` environment variables are specified, the built-in Redis server inside the container will be disabled.
Caveat: If the `MAYAN_CELERY_BROKER_URL` and `MAYAN_CELERY_RESULT_BACKEND` environment variables are specified, the built-in Redis server inside the container will be disabled.
### `MAYAN_CELERY_RESULT_BACKEND`
@@ -140,7 +140,7 @@ Defaults to 'redis://127.0.0.1:6379/0'. This optional environment variable is de
This Docker image supports using Redis and RabbitMQ as result backends.
Caveat: If the `MAYAN_BROKER_URL` and `MAYAN_CELERY_RESULT_BACKEND` environment variables are specified, the built-in Redis server inside the container will be disabled.
Caveat: If the `MAYAN_CELERY_BROKER_URL` and `MAYAN_CELERY_RESULT_BACKEND` environment variables are specified, the built-in Redis server inside the container will be disabled.
Use API tokens to avoid sending the username and password on every request. Obtain a token by making a POST request to ``/api/auth/token/obtain/?format=json``::
@@ -83,6 +83,43 @@ moment this could cause problems is when running South migrations during
upgrades, if a migration fails the database structure is left in a transitory
state and has to be reverted manually before trying again.
_mysql_exceptions. OperationalError: (1267, "Illegal mix of collations (latin1_swedish_ci, IMPLICIT) and (utf8_general_ci, COERCIBLE) for operation ‘='”)
_mysql_exceptions. OperationalError: (1267, "Illegal mix of collations (latin1_swedish_ci, IMPLICIT) and (utf8_general_ci, COERCIBLE) for operation ‘='”)
@@ -83,9 +81,7 @@ msgstr "API URL ukazujući na listu dozvola za ovu listu kontrole pristupa."
msgid ""
"API URL pointing to a permission in relation to the access control list to "
"which it is attached. This URL is different than the canonical workflow URL."
msgstr ""
"URL API koji ukazuje na dozvolu u vezi sa listom kontrole pristupa kojoj je "
"priložena. Ova URL adresa se razlikuje od kanonskog URL-a za radni tok."
msgstr "URL API koji ukazuje na dozvolu u vezi sa listom kontrole pristupa kojoj je priložena. Ova URL adresa se razlikuje od kanonskog URL-a za radni tok."
#: serializers.py:87
msgid "Primary key of the new permission to grant to the access control list."
@@ -100,9 +96,7 @@ msgstr "Nema takve dozvole: %s"
msgid ""
"Comma separated list of permission primary keys to grant to this access "
"control list."
msgstr ""
"Lista odvojenih primarnih ključeva za razdvajanje sa komandom dodeljuje se "
"ovoj listi kontrola pristupa."
msgstr "Lista odvojenih primarnih ključeva za razdvajanje sa komandom dodeljuje se ovoj listi kontrola pristupa."
#: serializers.py:138
msgid "Primary keys of the role to which this access control list binds to."
@@ -163,7 +157,8 @@ msgid "Object ID"
msgstr "ID objekta"
#: workflow_actions.py:37
msgid "Numeric identifier of the object for which the access will be modified."
msgid ""
"Numeric identifier of the object for which the access will be modified."
msgstr "Numerički identifikator objekta za koji će se pristup mijenjati."
#: workflow_actions.py:42
@@ -177,8 +172,7 @@ msgstr "Uloge čiji će pristup biti modifikovan."
#: workflow_actions.py:51
msgid ""
"Permissions to grant/revoke to/from the role for the object selected above."
msgstr ""
"Dozvole za dodeljivanje / poništavanje / od uloge za gore izabrani objekat."
msgstr "Dozvole za dodeljivanje / poništavanje / od uloge za gore izabrani objekat."
"Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-"
"edms/language/de_DE/)\n"
"Language: de_DE\n"
"Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: de_DE\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: apps.py:15 links.py:37
@@ -42,7 +41,7 @@ msgstr "Löschen"
msgid "New ACL"
msgstr "Neue Berechtigung"
#: managers.py:61 managers.py:102
#: managers.py:57 managers.py:96
#, python-format
msgid "Insufficient access for: %s"
msgstr "Unzureichende Berechtigung für: %s"
@@ -58,8 +57,7 @@ msgstr "Berechtigungseinträge"
#: models.py:60
#, python-format
msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\""
msgstr ""
"Berechtigungen \"%(permissions)s\" von Rolle \"%(role)s\" für \"%(object)s\""
msgstr "Berechtigungen \"%(permissions)s\" von Rolle \"%(role)s\" für \"%(object)s\""
#: models.py:77
msgid "None"
@@ -86,15 +84,11 @@ msgstr "API URL für die Liste der Berechtigungen dieser ACL"
msgid ""
"API URL pointing to a permission in relation to the access control list to "
"which it is attached. This URL is different than the canonical workflow URL."
msgstr ""
"API URL für die Berechtigung in Beziehung zur Zugriffsberechtigungsliste der "
"sie zugeordnet ist. Diese URL unterscheidet sich von der normalen Workflow "
"URL."
msgstr "API URL für die Berechtigung in Beziehung zur Zugriffsberechtigungsliste der sie zugeordnet ist. Diese URL unterscheidet sich von der normalen Workflow URL."
#: serializers.py:87
msgid "Primary key of the new permission to grant to the access control list."
msgstr ""
"Primärschlüssel der neuen Berechtigung für die Zugriffsberechtigungsliste."
msgstr "Primärschlüssel der neuen Berechtigung für die Zugriffsberechtigungsliste."
msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\""
msgstr ""
"Permisos \"%(permissions)s\" para el rol \"%(role)s\" para \"%(object)s\""
msgstr "Permisos \"%(permissions)s\" para el rol \"%(role)s\" para \"%(object)s\""
#: models.py:77
msgid "None"
@@ -79,24 +77,17 @@ msgstr "Ver LCAs"
#: serializers.py:24 serializers.py:132
msgid ""
"API URL pointing to the list of permissions for this access control list."
msgstr ""
"URL de la API que apunta a la lista de permisos para esta lista de control "
"de acceso."
msgstr "URL de la API que apunta a la lista de permisos para esta lista de control de acceso."
#: serializers.py:57
msgid ""
"API URL pointing to a permission in relation to the access control list to "
"which it is attached. This URL is different than the canonical workflow URL."
msgstr ""
"URL de la API que apunta a un permiso en relación con la lista de control "
"de acceso a la que está conectado. Esta URL es diferente de la URL canónica "
"de flujo de trabajo."
msgstr "URL de la API que apunta a un permiso en relación con la lista de control de acceso a la que está conectado. Esta URL es diferente de la URL canónica de flujo de trabajo."
#: serializers.py:87
msgid "Primary key of the new permission to grant to the access control list."
msgstr ""
"Llave primaria del nuevo permiso para conceder a la lista de control de "
"acceso."
msgstr "Llave primaria del nuevo permiso para conceder a la lista de control de acceso."
#: serializers.py:111 serializers.py:187
#, python-format
@@ -107,15 +98,11 @@ msgstr "No existe el permiso: %s"
msgid ""
"Comma separated list of permission primary keys to grant to this access "
"control list."
msgstr ""
"Lista separada por comas de las llaves primarias de permisos para conceder a "
"esta lista de control de acceso."
msgstr "Lista separada por comas de las llaves primarias de permisos para conceder a esta lista de control de acceso."
#: serializers.py:138
msgid "Primary keys of the role to which this access control list binds to."
msgstr ""
"Las llaves primarias de los roles a los que se vincula esta lista de control "
"de acceso."
msgstr "Las llaves primarias de los roles a los que se vincula esta lista de control de acceso."
#: views.py:77
#, python-format
@@ -135,9 +122,7 @@ msgstr "No hay LCAs para este objeto"
msgid ""
"ACL stands for Access Control List and is a precise method to control user "
"access to objects in the system."
msgstr ""
"LCA significa Lista de Control de Acceso y es un método preciso para "
"controlar el acceso de los usuarios a los objetos en el sistema."
msgstr "LCA significa Lista de Control de Acceso y es un método preciso para controlar el acceso de los usuarios a los objetos en el sistema."
#: views.py:155
#, python-format
@@ -174,7 +159,8 @@ msgid "Object ID"
msgstr "ID de objeto"
#: workflow_actions.py:37
msgid "Numeric identifier of the object for which the access will be modified."
msgid ""
"Numeric identifier of the object for which the access will be modified."
msgstr "Identificador numérico del objeto para el que se modificará el acceso."
"Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/"
"fr/)\n"
"Language: fr\n"
"Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: apps.py:15 links.py:37
@@ -41,7 +40,7 @@ msgstr "Suppression"
msgid "New ACL"
msgstr "Nouveau droit"
#: managers.py:61 managers.py:102
#: managers.py:57 managers.py:96
#, python-format
msgid "Insufficient access for: %s"
msgstr "Droits d'accès insuffisants pour : %s"
@@ -57,8 +56,7 @@ msgstr "Autorisations d'accès"
#: models.py:60
#, python-format
msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\""
msgstr ""
"Autorisations \"%(permissions)s\" du rôle \"%(role)s\" pour \"%(object)s\""
msgstr "Autorisations \"%(permissions)s\" du rôle \"%(role)s\" pour \"%(object)s\""
#: models.py:77
msgid "None"
@@ -79,24 +77,17 @@ msgstr "Voir les droits"
#: serializers.py:24 serializers.py:132
msgid ""
"API URL pointing to the list of permissions for this access control list."
msgstr ""
"URL de l'API pointant vers la liste des autorisations pour cette liste de "
"contrôle d'accès."
msgstr "URL de l'API pointant vers la liste des autorisations pour cette liste de contrôle d'accès."
#: serializers.py:57
msgid ""
"API URL pointing to a permission in relation to the access control list to "
"which it is attached. This URL is different than the canonical workflow URL."
msgstr ""
"URL de l'API pointant vers une autorisation en relation avec la liste de "
"contrôle d'accès à laquelle elle est attachée. Cette URL est différente de "
"l'URL du flux de travail canonique."
msgstr "URL de l'API pointant vers une autorisation en relation avec la liste de contrôle d'accès à laquelle elle est attachée. Cette URL est différente de l'URL du flux de travail canonique."
#: serializers.py:87
msgid "Primary key of the new permission to grant to the access control list."
msgstr ""
"Clé principale de la nouvelle autorisation à accorder à la liste de contrôle "
"d'accès."
msgstr "Clé principale de la nouvelle autorisation à accorder à la liste de contrôle d'accès."
#: serializers.py:111 serializers.py:187
#, python-format
@@ -107,14 +98,11 @@ msgstr "Aucune autorisation de ce genre : %s"
msgid ""
"Comma separated list of permission primary keys to grant to this access "
"control list."
msgstr ""
"Liste séparée par des virgules des clés primaires d'autorisation à accorder "
"à cette liste de contrôle d'accès."
msgstr "Liste séparée par des virgules des clés primaires d'autorisation à accorder à cette liste de contrôle d'accès."
#: serializers.py:138
msgid "Primary keys of the role to which this access control list binds to."
msgstr ""
"Clés primaires du rôle auquel cette liste de contrôle d'accès se rattache."
msgstr "Clés primaires du rôle auquel cette liste de contrôle d'accès se rattache."
#: views.py:77
#, python-format
@@ -171,10 +159,9 @@ msgid "Object ID"
msgstr "Identifiant de l'objet"
#: workflow_actions.py:37
msgid "Numeric identifier of the object for which the access will be modified."
msgstr ""
"Identifiant numérique de l'objet pour lequel les droits d'accès vont être "
"modifiés."
msgid ""
"Numeric identifier of the object for which the access will be modified."
msgstr "Identifiant numérique de l'objet pour lequel les droits d'accès vont être modifiés."
#: workflow_actions.py:42
msgid "Roles"
@@ -187,8 +174,7 @@ msgstr "Rôles pour lesquels les droits d'accès vont être modifiés."
#: workflow_actions.py:51
msgid ""
"Permissions to grant/revoke to/from the role for the object selected above."
msgstr ""
"Autorisations à accorder/révoquer au rôle pour l'objet sélectionné ci-dessus."
msgstr "Autorisations à accorder/révoquer au rôle pour l'objet sélectionné ci-dessus."
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
#
# Translators:
# Marco Camplese <marco.camplese.mc@gmail.com>, 2016-2017
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-04-09 02:06-0400\n"
"POT-Creation-Date: 2018-10-29 12:42-0400\n"
"PO-Revision-Date: 2018-09-08 08:06+0000\n"
"Last-Translator: Roberto Rosario\n"
"Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/"
"language/it/)\n"
"Language: it\n"
"Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: apps.py:15 links.py:37
@@ -39,7 +38,7 @@ msgstr "Cancella"
msgid "New ACL"
msgstr "Nuova ACL"
#: managers.py:61 managers.py:102
#: managers.py:57 managers.py:96
#, python-format
msgid "Insufficient access for: %s"
msgstr ""
@@ -82,10 +81,7 @@ msgstr "URL delle API che punta alla lista controllo accessi"
msgid ""
"API URL pointing to a permission in relation to the access control list to "
"which it is attached. This URL is different than the canonical workflow URL."
msgstr ""
"API URL che indica una autorizzazione in relazione all'elenco di controllo "
"di accesso a cui è associato. Questo URL è diverso dall'originale canonico "
"URL."
msgstr "API URL che indica una autorizzazione in relazione all'elenco di controllo di accesso a cui è associato. Questo URL è diverso dall'originale canonico URL."
#: serializers.py:87
msgid "Primary key of the new permission to grant to the access control list."
@@ -100,9 +96,7 @@ msgstr "Nessun permesso: %s"
msgid ""
"Comma separated list of permission primary keys to grant to this access "
"control list."
msgstr ""
"Lista separata da virgole delle chiavi primarie dei permessi per garantire "
"l'accesso alle liste di controllo"
msgstr "Lista separata da virgole delle chiavi primarie dei permessi per garantire l'accesso alle liste di controllo"
#: serializers.py:138
msgid "Primary keys of the role to which this access control list binds to."
@@ -163,7 +157,8 @@ msgid "Object ID"
msgstr ""
#: workflow_actions.py:37
msgid "Numeric identifier of the object for which the access will be modified."
msgid ""
"Numeric identifier of the object for which the access will be modified."
msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\""
msgstr ""
"Permissies \"%(permissions)s\" voor gebruikersrol \"%(role)s\" voor "
"\"%(object)s\""
msgstr "Permissies \"%(permissions)s\" voor gebruikersrol \"%(role)s\" voor \"%(object)s\""
#: models.py:77
msgid "None"
@@ -86,37 +83,26 @@ msgstr "UPI URL wijzend naar de permissielijst voor deze toegangscontrolelijst"
msgid ""
"API URL pointing to a permission in relation to the access control list to "
"which it is attached. This URL is different than the canonical workflow URL."
msgstr ""
"UPI URL wijzend naar een permissie gerelateerd aan de toegangscontrolelijst "
"waarvan het een aanhangsel is. Dit URL is anders dan de canonical Workflow "
"URL"
msgstr "UPI URL wijzend naar een permissie gerelateerd aan de toegangscontrolelijst waarvan het een aanhangsel is. Dit URL is anders dan de canonical Workflow URL"
#: serializers.py:87
msgid "Primary key of the new permission to grant to the access control list."
msgstr ""
"Primaire sleutel van de nieuwe permissie om toegang te geven tot de "
"toeganscontrolelijst"
msgstr "Primaire sleutel van de nieuwe permissie om toegang te geven tot de toeganscontrolelijst"
#: serializers.py:111 serializers.py:187
#, python-format
msgid "No such permission: %s"
msgstr ""
"Permissie niet gevonden: %s\n"
"\n"
"Alternative translation: Permissie bestaat niet (Permission does not exist)"
msgstr "Permissie niet gevonden: %s\n\nAlternative translation: Permissie bestaat niet (Permission does not exist)"
#: serializers.py:126
msgid ""
"Comma separated list of permission primary keys to grant to this access "
"control list."
msgstr ""
"Kommagescheiden lijst van primaire permissie sleutels om toegang te geven "
"tot deze toegangscontrole lijst"
msgstr "Kommagescheiden lijst van primaire permissie sleutels om toegang te geven tot deze toegangscontrole lijst"
#: serializers.py:138
msgid "Primary keys of the role to which this access control list binds to."
msgstr ""
"Primaire Sleutel van de rol waar deze togangscontrolelijst aan gekoppeld is. "
msgstr "Primaire Sleutel van de rol waar deze togangscontrolelijst aan gekoppeld is. "
#: views.py:77
#, python-format
@@ -173,7 +159,8 @@ msgid "Object ID"
msgstr "voorwerp identificatie"
#: workflow_actions.py:37
msgid "Numeric identifier of the object for which the access will be modified."
msgid ""
"Numeric identifier of the object for which the access will be modified."
msgstr "Nummer van het voorwerp waarvoor de toegang wordt gewijzigd"
#: workflow_actions.py:42
@@ -187,9 +174,7 @@ msgstr "Gebruikersrol waarvoor de toegang wordt gewijzigd"
#: workflow_actions.py:51
msgid ""
"Permissions to grant/revoke to/from the role for the object selected above."
msgstr ""
"Permissies to geven/verwijderen naar/van de rol voor het geselecteerde "
"object hierboven "
msgstr "Permissies to geven/verwijderen naar/van de rol voor het geselecteerde object hierboven "
msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\""
msgstr ""
"Permissões \"%(permissions)s\" do papel \"%(role)s\" para \"%(object)s\""
msgstr "Permissões \"%(permissions)s\" do papel \"%(role)s\" para \"%(object)s\""
#: models.py:77
msgid "None"
@@ -70,32 +67,26 @@ msgstr "Listas de controle de acesso"
#: permissions.py:10
msgid "Edit ACLs"
msgstr "Editar Controle de Acesso \"ACLs\""
msgstr "Editar regras"
#: permissions.py:13
msgid "View ACLs"
msgstr "Visualizar Controle de Acesso \"ACLs\""
msgstr "Visualizar regras"
#: serializers.py:24 serializers.py:132
msgid ""
"API URL pointing to the list of permissions for this access control list."
msgstr ""
"API URL apontando para a lista de permissões para esta lista de controle de "
"acesso."
msgstr "API URL apontando para a lista de permissões para esta lista de controle de acesso."
#: serializers.py:57
msgid ""
"API URL pointing to a permission in relation to the access control list to "
"which it is attached. This URL is different than the canonical workflow URL."
msgstr ""
"API URL apontando para uma permissão em relação à lista de controle de "
"acesso à qual ela está anexada. Esse URL é diferente do URL de fluxo de "
"trabalho canônico."
msgstr "API URL apontando para uma permissão em relação à lista de controle de acesso à qual ela está anexada. Esse URL é diferente do URL de fluxo de trabalho canônico."
#: serializers.py:87
msgid "Primary key of the new permission to grant to the access control list."
msgstr ""
"Chave primária da nova permissão para aceder à lista de controle de acesso."
msgstr "Chave primária da nova permissão para conceder à lista de controle de acesso."
#: serializers.py:111 serializers.py:187
#, python-format
@@ -106,14 +97,11 @@ msgstr "Sem permissão: %s"
msgid ""
"Comma separated list of permission primary keys to grant to this access "
"control list."
msgstr ""
"Lista de chaves primárias de permissão separadas por vírgulas para conceder "
"a esta lista de controle de acesso."
msgstr "Lista de chaves primárias de permissão separadas por vírgulas para conceder a esta lista de controle de acesso."
#: serializers.py:138
msgid "Primary keys of the role to which this access control list binds to."
msgstr ""
"As chaves primárias da função a que esta lista de controle de acesso se liga."
msgstr "As chaves primárias da função a que esta lista de controle de acesso se liga."
#: views.py:77
#, python-format
@@ -127,15 +115,13 @@ msgstr "Apagar ACL: %s"
#: views.py:148
msgid "There are no ACLs for this object"
msgstr "Não há Controle de Acesso \"ACLs\" para este objeto"
msgstr ""
#: views.py:151
msgid ""
"ACL stands for Access Control List and is a precise method to control user "
"access to objects in the system."
msgstr ""
"ACL significa Lista de Controle de Acesso - \"Acess Control List\" - e é um "
"método preciso para controlar o acesso do usuário a objetos do sistema."
#: views.py:155
#, python-format
@@ -161,39 +147,38 @@ msgstr "As permissões inativas foram herdadas de um objeto precedente."
#: workflow_actions.py:25
msgid "Object type"
msgstr "Tipo do objeto"
msgstr ""
#: workflow_actions.py:28
msgid "Type of the object for which the access will be modified."
msgstr "Tipo do objeto cujo acesso será modificado."
msgstr ""
#: workflow_actions.py:34
msgid "Object ID"
msgstr "ID do objeto"
msgstr ""
#: workflow_actions.py:37
msgid "Numeric identifier of the object for which the access will be modified."
msgstr "Identificador numérico do objeto cujo acesso será modificado."
msgid ""
"Numeric identifier of the object for which the access will be modified."
msgstr ""
#: workflow_actions.py:42
msgid "Roles"
msgstr "Papéis"
msgstr "Regras"
#: workflow_actions.py:44
msgid "Roles whose access will be modified."
msgstr "Papéis cujo acesso será modificado."
msgstr ""
#: workflow_actions.py:51
msgid ""
"Permissions to grant/revoke to/from the role for the object selected above."
msgstr ""
"Permissões a serem concedidas/revogadas para o papel em relação ao objeto "
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.