Ejemplo n.º 1
0
    def handle(self, *args, **options):
        quiet = options.get('quiet', False)
        if not quiet:
            self.stdout.write("Export of DMS MDT's command called.\n")

        # Try and Fetch all mdts
        manager = MetaDataTemplateManager()
        mdts = manager.get_all_mdts()
        # Validating all OK
        if not mdts:
            if not quiet:
                self.stderr.write('DMS has no MDT-s.')
            return

        for mdt_link in mdts.itervalues():

            filename = mdt_link['mdt_id']
            mdt_instance = manager.get_mdts_by_name([filename, ])
            filename += '.json'
            file_obj = open(os.path.join(filename), 'w+')
            file_obj.seek(0)
            mdt_obj = mdt_instance['1']
            try:
                del mdt_obj["doc_type"]
            except KeyError:
                pass
            mdt_jsoned = json.dumps(mdt_obj, sort_keys=True, indent=4)
            file_obj.write(mdt_jsoned)
            if not quiet:
                self.stderr.write('Exported to file: %s\n'% filename)

        if not quiet:
            self.stdout.write("Exporting %s MDT's" % str(len(mdts)))
            self.stdout.write('\n')
Ejemplo n.º 2
0
def make_mdt_select_form(user=None, required=True):
    """
    Special method to construct custom MDTSearchSelectForm
    suggests MDT's for search that only restricted by user Docrule permissions.
    E.g.:
    'MDT1' is shown in MDTSearchSelectForm only if:
    'MDT1' has connected 'docrule1' AND 'user', that is provided to method,
    has permission to interact with this DocumentTypeRule ('docrule1' in our case).
    """
    # Fetching all mdts that have more than 1 docrule
    mdt_m = MetaDataTemplateManager()
    all_mdts = {}
    try:
        couch_mdts = mdt_m.get_all_mdts()
        # Filtering with more than 1 docrule count
        if couch_mdts:
            for mdt_id, mdt in couch_mdts.iteritems():
                mdt_docrules = mdt['docrule_id']
                if mdt_docrules.__len__() > 1:
                    all_mdts[mdt_id] = mdt
    except RequestError:
        # No CouchDB
        pass
    filtered_mdts = {}
    # Filtering MDT's displaying only permitted ones for provided user
    if not user.is_superuser and all_mdts:
        allowed_docrules_pks = list_permitted_docrules_pks(user)
        # Filtering all_mdts by only allowed ones
        for mdt in all_mdts:
            mdt_docrules = all_mdts[mdt]['docrule_id']
            for docrule_id in mdt_docrules:
                if docrule_id in allowed_docrules_pks:
                    filtered_mdts[mdt] = all_mdts[mdt]
    # listing mdts to display in form by number, mdt_id
    if filtered_mdts:
        mdt_choices = [(mdt, all_mdts[mdt]['mdt_id'])
                       for mdt in filtered_mdts.iterkeys()]
    else:
        mdts_list = [mdt for mdt in all_mdts.iterkeys()]
        mdt_choices = [(mdt, all_mdts[mdt]['mdt_id']) for mdt in mdts_list]
    mdt_choices.sort()

    # Constructing form
    class MDTSelectForm(forms.Form):
        mdt = forms.ChoiceField(choices=mdt_choices,
                                label=SEARCH_STRING_REPR['MDT_SEARCH'],
                                required=required)

    return MDTSelectForm
Ejemplo n.º 3
0
def make_mdt_select_form(user=None, required=True):
    """
    Special method to construct custom MDTSearchSelectForm
    suggests MDT's for search that only restricted by user Docrule permissions.
    E.g.:
    'MDT1' is shown in MDTSearchSelectForm only if:
    'MDT1' has connected 'docrule1' AND 'user', that is provided to method,
    has permission to interact with this DocumentTypeRule ('docrule1' in our case).
    """
    # Fetching all mdts that have more than 1 docrule
    mdt_m = MetaDataTemplateManager()
    all_mdts = {}
    try:
        couch_mdts = mdt_m.get_all_mdts()
        # Filtering with more than 1 docrule count
        if couch_mdts:
            for mdt_id, mdt in couch_mdts.iteritems():
                mdt_docrules = mdt['docrule_id']
                if mdt_docrules.__len__() > 1:
                    all_mdts[mdt_id] = mdt
    except RequestError:
        # No CouchDB
        pass
    filtered_mdts = {}
    # Filtering MDT's displaying only permitted ones for provided user
    if not user.is_superuser and all_mdts:
        allowed_docrules_pks = list_permitted_docrules_pks(user)
        # Filtering all_mdts by only allowed ones
        for mdt in all_mdts:
            mdt_docrules = all_mdts[mdt]['docrule_id']
            for docrule_id in mdt_docrules:
                if docrule_id in allowed_docrules_pks:
                    filtered_mdts[mdt] = all_mdts[mdt]
    # listing mdts to display in form by number, mdt_id
    if filtered_mdts:
        mdt_choices = [(mdt, all_mdts[mdt]['mdt_id']) for mdt in filtered_mdts.iterkeys()]
    else:
        mdts_list = [mdt for mdt in all_mdts.iterkeys()]
        mdt_choices = [(mdt, all_mdts[mdt]['mdt_id']) for mdt in mdts_list]
    mdt_choices.sort()

    # Constructing form
    class MDTSelectForm(forms.Form):
        mdt = forms.ChoiceField(choices=mdt_choices, label=SEARCH_STRING_REPR['MDT_SEARCH'], required=required)

    return MDTSelectForm