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, lonevi...@gmail.com 
>>> 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, 
>>>>> lonevi...@gmail.com 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 mayan-edms+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to