Thanks for this! Will see how to add it as a core parser.
Take a look at the document renaming app
(https://gitlab.com/mayan-edms/document_renaming) might have some things
you can use too for your needs.
On Monday, April 24, 2017 at 11:54:47 AM UTC-4, MacRobb Simpson wrote:
>
> I just ran into this today, and thought someone else might be able to use
> it.
>
> I have need of an 'auto-increment' metadata column - When adding a new
> document, if the field is blank, it should grab the next available number
> and use that.
>
> I implemented this using a Parser:
>
> 1. Edit apps/metadata/models.py and edit class MetadataType. Replace:
>
> if self.parser:
>> parser = import_string(self.parser)()
>> value = parser.parse(value)
>>
>
> with:
>
>> if self.parser:
>> parser = import_string(self.parser)()
>> parser.metadata_field = self #Rob - pass parent to parser
>> value = parser.parse(value)
>>
>
> Now, the metadata instance is available within the parser class.
>
> 2. Edit apps/metadata/parsers.py and add metadata_field = None after the
> class header:
>
>> class MetadataParser(object):
>> metadata_field = None
>>
>
> 3. Add your parser code to the same file, after your other parsers:
>
> class AutoIncrementID(MetadataParser):
>> def execute(self, input_data):
>> if input_data != '':
>> return str(int(input_data))
>>
>> from .models import DocumentMetadata
>> from django.db.models import Max
>> return
>> str(int(DocumentMetadata.objects.filter(metadata_type=self.metadata_field).aggregate(Max('value'))['value__max'])+1)
>>
>>
>>
>
> 4. Register the new parser(bottom of the file, with the other similar
> lines):
>
>> MetadataParser.register(AutoIncrementID)
>>
>
> Now, you can create a metadata type, assign the new AutoIncrementID
> parser(I suggest creating an Integer Validator for checking this too).
>
> When you add/edit a Docunment with this metadata type, if you manually
> enter a value it will accept it. If you leave the field blank, it will
> force the next available number on it.
>
> Hope this helps someone!
>
> -Rob
>
--
---
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.