That branch's work was completed merged into versions/next 
=> https://gitlab.com/Michael.Price/mayan-edms/commits/versions/next


On Tuesday, March 6, 2018 at 10:09:31 AM UTC-4, LeVon Smoker wrote:
>
> Michael,
>
> Is it possible to get read access to 
> https://gitlab.com/Michael.Price/mayan-edms/commits/feature/pagesearch_testing
> ?
>
> On Friday, March 2, 2018 at 10:13:05 AM UTC-5, LeVon Smoker wrote:
>>
>> Thanks!!
>>
>> On Thursday, March 1, 2018 at 10:56:31 PM UTC-5, Michael Price wrote:
>>>
>>> The fix for the cabinet pagination was easy. Just make CabinetDetailView 
>>> a subclass of DocumentListView instead of TemplateView. In the 
>>> cabinet_details.html remove the lines {% with document_list as object_list 
>>> %} and {% endwith %} This makes the template display the paginated 
>>> object_list provided by DocumentListView and not the raw list of documents 
>>> in the document_list variable.
>>>
>>> On Thursday, March 1, 2018 at 7:06:03 PM UTC-4, Michael Price wrote:
>>>>
>>>> Found the root of the problem. DocumentPage is registered with the 
>>>> permission inheritance but the model returned during page searches is not 
>>>> DocumentPage but DocumentPageResult. DocumentPageResult has not permission 
>>>> inheritance relationship to Document. That is the reason no pages are 
>>>> returned unless you are an admin user. 
>>>>
>>>> The fix involves a few steps:
>>>>
>>>> 1- Add a permission relationship between DocumentPageResult and 
>>>> Document. This causes an error. The error is caused because the 
>>>> inheritance 
>>>> system only allows database fields or functions, doesn't support related 
>>>> references. In this case a related references is needed: 
>>>> DocumentPageResult 
>>>> -> DocumentVersion -> Document. The related field must allow something 
>>>> like 
>>>> 'document_version__document".
>>>> 2- Add a function to navigate a related reference down to the actual 
>>>> model instance being referenced. This function turns the string 
>>>> 'document_version__document" to the instance of Document being referenced.
>>>> 3- Update the AccessControlList.objects.filter_by_access method to use 
>>>> the return_related instead of the simple getattr.
>>>>
>>>> This solution allows filtering the queryset at the database instead of 
>>>> using callable function for each instance in the queryset which is much 
>>>> faster and cleaner.
>>>>
>>>> My code in the branch 'feature/pagesearch_testing' at 
>>>> https://gitlab.com/Michael.Price/mayan-edms/commits/feature/pagesearch_testing.
>>>>  
>>>> Added a 4 tests for document and document page searching with and without 
>>>> the document view permissions and they pass with no problem. I think every 
>>>> app that has a searchable object should have a test_search test suit.
>>>>
>>>> Even after months of working on the code I'm still amazed at how well 
>>>> written Mayan is. Kudos to Roberto for making something so far ahead than 
>>>> anything else I've seen in the Django market. 
>>>>
>>>> I'll take a stab at the Cabinet pagination problem.
>>>>
>>>> Just helping until Roberto is back in full swing :)
>>>>
>>>> On Thursday, March 1, 2018 at 3:13:27 PM UTC-4, [email protected] 
>>>> wrote:
>>>>>
>>>>> I was referring to Mayan's custom permission inheritance which is 
>>>>> handled by the acls.classes.ModelPermission class. This is different than 
>>>>> the model inheritance used by Django which is limited to just database 
>>>>> fields and methods. Django's model inheritance is meant to emulate 
>>>>> Python's 
>>>>> class inheritance whose purpose is reduce repetition of code. Mayan 
>>>>> permission inheritance should be called permission relationships instead 
>>>>> to 
>>>>> better reflect its purpose.
>>>>>
>>>>> Mayan uses two method of the ModelPermission to determine how an 
>>>>> object inherit permission from another. In the documents.apps file it is 
>>>>> using the .register_inheritance to correlate the DocumentPage and the 
>>>>> Document model.
>>>>>
>>>>>         ModelPermission.register_inheritance(
>>>>>             model=DocumentPage, related='document',
>>>>>         )
>>>>>
>>>>> Before that it is using the .register_proxy to correlate the Document 
>>>>> model with the DocumentType model. I don't understand the difference. I'm 
>>>>> tying to figure it out before bothering Roberto for an explanation.
>>>>>
>>>>> On Thursday, March 1, 2018 at 10:14:50 AM UTC-4, LeVon Smoker wrote:
>>>>>>
>>>>>> Yes. This specific case is with the DocumentPageResult model which 
>>>>>> inherits from DocumentPage which inherits from the standard Django model 
>>>>>> not the Document model. DocumentPage as a 'document' property which I 
>>>>>> used 
>>>>>> for my workaround.
>>>>>>
>>>>>> Maybe there's a way to trick the function into using the document 
>>>>>> property in certain cases.
>>>>>>
>>>>>> And while I have your attention, (I think) pagination needs to be 
>>>>>> added to the Cabinets details views and Index views. I ran into a 
>>>>>> situation 
>>>>>> where a Cabinet had over 1000 documents and the browser could not handle 
>>>>>> rendering all of those thumbnails...
>>>>>>
>>>>>> And thank you for picking up this great project.
>>>>>>
>>>>>> On Wednesday, February 28, 2018 at 8:00:39 PM UTC-5, 
>>>>>> [email protected] wrote:
>>>>>>>
>>>>>>> So to summarize, the document search works but the page search is 
>>>>>>> broken, using that permissions scheme?
>>>>>>>
>>>>>>> Mayan's permission system supports permission inheritance. That 
>>>>>>> means that if an object is a child object, it will inherit the 
>>>>>>> permission 
>>>>>>> requirements of its parent. If you hold the view permission for a 
>>>>>>> document 
>>>>>>> type, you automatically have that same permission for all the documents 
>>>>>>> of 
>>>>>>> that type and all the pages of the documents of that type. By what you 
>>>>>>> are 
>>>>>>> describing it seems the pages are not inheriting the permissions of 
>>>>>>> their 
>>>>>>> parent documents.
>>>>>>>
>>>>>>> On Tuesday, January 30, 2018 at 4:07:20 PM UTC-4, Ray Hendricks 
>>>>>>> wrote:
>>>>>>>>
>>>>>>>> I have two document types "Default" and "Personal"
>>>>>>>>
>>>>>>>> I have two roles "Default Owner" and "Personal Owner"
>>>>>>>>
>>>>>>>> I have two Groups "Work" and "Personal"
>>>>>>>>
>>>>>>>> Jim is a member of the group "Work" and Kelly is a member of the 
>>>>>>>> group "Personal"
>>>>>>>>
>>>>>>>> The Group "Personal" is a member of the Role "Personal Owner" and 
>>>>>>>> the Group "Work" is a member of  the the Role "Default Owner"
>>>>>>>>
>>>>>>>> This works in that Jim can't view "Personal" documents but Jim also 
>>>>>>>> can't search pages (he can search documents though).  Is this expected 
>>>>>>>> behavior?
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"Mayan EDMS" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to