Ejemplo n.º 1
0
 def render(self, context):
     try:
         item = self.key_item.resolve(context)
         dict = self.keys_dict.resolve(context)
         value = dict[item]
         # Special rendering for 'date' variable in search
         if item == u'date':
             date = dict[u'date']
             if u'end_date' in dict:
                 end_date = dict[u'end_date']
                 item = u'Indexing Date: (from: ' + unicode(
                     date) + u' to: ' + unicode(end_date) + u')'
                 return item
             else:
                 # Normal rendering for indexes
                 item = u'Indexing Date'
         if item == u'description':
             item = u'Description'
         if item == u'docrule_id':
             item = u'Document Type'
             id = value
             dman = DocumentTypeRuleManager()
             docrule = dman.get_docrule_by_id(id)
             value = docrule.get_title()
         if not value.__class__.__name__ == 'tuple':
             resp_string = unicode(item) + u': ' + unicode(value)
         else:
             resp_string = unicode(item) + u': (from: ' + unicode(
                 value[0]) + u' to: ' + unicode(value[1]) + u')'
         return resp_string
     except template.VariableDoesNotExist:
         return ''
Ejemplo n.º 2
0
    def test_13_api_files_list(self):
        """Refs #1434 TEST: API file list url

        Added response JSON parsing check to existing files list test"""
        fixed_codes = [
            u'ADL-0001',
            u'ADL-0002',
            u'ADL-1111',
            u'ADL-1234',
            u'ADL-1983',
            u'ADL-1984',
            u'ADL-1985',
            u'ADL-2222',
        ]
        self.client.login(username=self.username, password=self.password)
        dman = DocumentTypeRuleManager()
        docrule = dman.get_docrule_by_name('Adlibre Invoices')
        mapping = DoccodePluginMapping.objects.get(doccode=docrule.get_id())
        url = reverse("api_file_list", kwargs={'id_rule': mapping.pk})
        response = self.client.get(url)
        data = json.loads(response.content)
        current_files_list = [d['name'] for d in data]
        for code in fixed_codes:
            if not code in current_files_list:
                raise AssertionError('File code absent in list! Code: %s' %
                                     code)
Ejemplo n.º 3
0
    def test_13_api_files_list(self):
        """Refs #1434 TEST: API file list url

        Added response JSON parsing check to existing files list test"""
        fixed_codes = [
            u'ADL-0001',
            u'ADL-0002',
            u'ADL-1111',
            u'ADL-1234',
            u'ADL-1983',
            u'ADL-1984',
            u'ADL-1985',
            u'ADL-2222',
        ]
        self.client.login(username=self.username, password=self.password)
        dman = DocumentTypeRuleManager()
        docrule = dman.get_docrule_by_name('Adlibre Invoices')
        mapping = DoccodePluginMapping.objects.get(doccode=docrule.get_id())
        url = reverse("api_file_list", kwargs={'id_rule': mapping.pk})
        response = self.client.get(url)
        data = json.loads(response.content)
        current_files_list = [d['name'] for d in data]
        for code in fixed_codes:
            if not code in current_files_list:
                raise AssertionError('File code absent in list! Code: %s' % code)
Ejemplo n.º 4
0
 def render(self, context):
     try:
         item = self.key_item.resolve(context)
         dict = self.keys_dict.resolve(context)
         value = dict[item]
         # Special rendering for 'date' variable in search
         if item == u'date':
             date = dict[u'date']
             if u'end_date' in dict:
                 end_date = dict[u'end_date']
                 item = u'Indexing Date: (from: ' + unicode(date) + u' to: ' + unicode(end_date) + u')'
                 return item
             else:
                 # Normal rendering for indexes
                 item = u'Indexing Date'
         if item == u'description':
             item = u'Description'
         if item == u'docrule_id':
             item = u'Document Type'
             id = value
             dman = DocumentTypeRuleManager()
             docrule = dman.get_docrule_by_id(id)
             value = docrule.get_title()
         if not value.__class__.__name__ == 'tuple':
             resp_string = unicode(item) + u': ' + unicode(value)
         else:
             resp_string = unicode(item) + u': (from: ' + unicode(value[0]) + u' to: ' + unicode(value[1]) + u')'
         return resp_string
     except template.VariableDoesNotExist:
         return ''
Ejemplo n.º 5
0
 def test_13_api_files_list(self):
     self.client.login(username=self.username, password=self.password)
     dman = DocumentTypeRuleManager()
     docrule = dman.get_docrule_by_name('Adlibre Invoices')
     mapping = DoccodePluginMapping.objects.get(doccode=docrule.get_id())
     url = reverse("api_file_list", kwargs={'id_rule': mapping.pk})
     response = self.client.get(url)
     self.assertContains(response, 'ADL-1234')
Ejemplo n.º 6
0
def export_to_csv(search_keys, sec_keys_names, documents):
    """Helper to produce proper CSV file for search results export"""
    dman = DocumentTypeRuleManager()
    # Cleaning Up documents
    docs = {}
    for document in documents:
        docs[document.id] = document._doc
    # Init response CSV file
    response = HttpResponse(content_type='text/csv')
    response['Content-Disposition'] = 'attachment; filename=search_results.csv'
    writer = csv.writer(response)
    # Writing table headers
    counter = ['File', ] + ['Date'] + ['Username'] + ['Description', ] + sec_keys_names + ['Type', ]
    writer.writerow(counter)
    # Writing each file's data into appropriate rows
    for name, doc in docs.iteritems():
        doc_sec_keys = []
        for sec_key in sec_keys_names:
            try:
                # Adding secondary key's value for doc
                doc_sec_keys.append(unicode(doc['mdt_indexes'][sec_key]).encode('utf8'))
            except KeyError:
                # No value exists
                doc_sec_keys.append('Not given',)
        # Converting date to Y-m-d format
        cr_date = date_standardized(re.sub("T\d{2}:\d{2}:\d{2}Z", "", doc['metadata_created_date']))
        # Catching Document's type rule to name it in export
        # This way should not produce SQL DB requests (Uses DocumentTypeRuleManagerInstance for this)
        docrule = dman.get_docrule_by_id(doc['metadata_doc_type_rule_id'])
        docrule_name = docrule.get_title()
        # Final row adding
        doc_row = [unicode(name).encode('utf8'), ] + [cr_date, ] + [unicode(doc['metadata_user_name']).encode('utf8'), ]+ [unicode(doc['metadata_description']).encode('utf8')] + doc_sec_keys + [unicode(docrule_name).encode('utf8'),]
        writer.writerow(doc_row)

    # Appending search request parameters into CSV
    writer.writerow('\r\n')
    writer.writerow(['Search with Keys:'])
    writer.writerow(['Key','Value'])
    for item, value in search_keys.iteritems():
        if item == u'date':
            item = u'Indexing Date'
        if item == u'end_date':
            item = u'Indexing Date to'
        if item == u'description':
            item = u'Description'
        if item == u'docrule_id':
            item = u'Document Type'
            id = value
            docrule = dman.get_docrule_by_id(id)
            value = docrule.get_title()
        if not value.__class__.__name__ == 'tuple':
            writer.writerow([unicode(item).encode('utf8'), unicode(value).encode('utf8')])
        else:
            writer.writerow(unicode(item).encode('utf8') + u': (from: ' + unicode(value[0]).encode('utf8') + u' to: ' + unicode(value[1]).encode('utf8') + u')')
    return response
Ejemplo n.º 7
0
 def render(self, context):
     try:
         item = self.key_item.resolve(context)
         try:
             int(item)
         except: return 'None'
         dman = DocumentTypeRuleManager()
         docrule = dman.get_docrule_by_id(item)
         value = docrule.get_title()
         value = unicode(value).capitalize()
         return value
     except template.VariableDoesNotExist:
         return ''
Ejemplo n.º 8
0
 def render(self, context):
     try:
         item = self.key_item.resolve(context)
         try:
             int(item)
         except:
             return 'None'
         dman = DocumentTypeRuleManager()
         docrule = dman.get_docrule_by_id(item)
         value = docrule.get_title()
         value = unicode(value).capitalize()
         return value
     except template.VariableDoesNotExist:
         return ''
Ejemplo n.º 9
0
def export_to_csv(search_keys, sec_keys_names, documents):
    """Helper to produce proper CSV file for search results export"""
    dman = DocumentTypeRuleManager()
    # Cleaning Up documents
    docs = {}
    for document in documents:
        docs[document.id] = document._doc
    # Init response CSV file
    response = HttpResponse(content_type='text/csv')
    response['Content-Disposition'] = 'attachment; filename=search_results.csv'
    writer = csv.writer(response)
    # Writing table headers
    counter = [
        'File',
    ] + ['Date'] + ['Username'] + [
        'Description',
    ] + sec_keys_names + [
        'Type',
    ]
    writer.writerow(counter)
    # Writing each file's data into appropriate rows
    for name, doc in docs.iteritems():
        doc_sec_keys = []
        for sec_key in sec_keys_names:
            try:
                # Adding secondary key's value for doc
                doc_sec_keys.append(
                    unicode(doc['mdt_indexes'][sec_key]).encode('utf8'))
            except KeyError:
                # No value exists
                doc_sec_keys.append('Not given', )
        # Converting date to Y-m-d format
        cr_date = date_standardized(
            re.sub("T\d{2}:\d{2}:\d{2}Z", "", doc['metadata_created_date']))
        # Catching Document's type rule to name it in export
        # This way should not produce SQL DB requests (Uses DocumentTypeRuleManagerInstance for this)
        docrule = dman.get_docrule_by_id(doc['metadata_doc_type_rule_id'])
        docrule_name = docrule.get_title()
        # Final row adding
        doc_row = [
            unicode(name).encode('utf8'),
        ] + [
            cr_date,
        ] + [
            unicode(doc['metadata_user_name']).encode('utf8'),
        ] + [unicode(doc['metadata_description']).encode('utf8')
             ] + doc_sec_keys + [
                 unicode(docrule_name).encode('utf8'),
             ]
        writer.writerow(doc_row)

    # Appending search request parameters into CSV
    writer.writerow('\r\n')
    writer.writerow(['Search with Keys:'])
    writer.writerow(['Key', 'Value'])
    for item, value in search_keys.iteritems():
        if item == u'date':
            item = u'Indexing Date'
        if item == u'end_date':
            item = u'Indexing Date to'
        if item == u'description':
            item = u'Description'
        if item == u'docrule_id':
            item = u'Document Type'
            id = value
            docrule = dman.get_docrule_by_id(id)
            value = docrule.get_title()
        if not value.__class__.__name__ == 'tuple':
            writer.writerow(
                [unicode(item).encode('utf8'),
                 unicode(value).encode('utf8')])
        else:
            writer.writerow(
                unicode(item).encode('utf8') + u': (from: ' +
                unicode(value[0]).encode('utf8') + u' to: ' +
                unicode(value[1]).encode('utf8') + u')')
    return response