예제 #1
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
예제 #2
0
파일: forms.py 프로젝트: egon0/Adlibre-DMS
Built based on code of Django Snippet: Dynamic Django form.
http://djangosnippets.org/snippets/714/
"""

from django import forms
from django.core.exceptions import ValidationError
from django.conf import settings
import datetime

from forms_representator import setFormFields
from forms_representator import setFormData
from adlibre.date_converter import date_standardized

CUSTOM_ERRORS = {
    'NUMBER': 'Must be Number. (example "123456")',
    'DATE': 'Must be in valid Date format. (example "%s")' % date_standardized('2012-12-30'),
    'UPPER': 'This field should be uppercase.'
}


class DocumentUploadForm(forms.Form):
    file = forms.FileField()


class BarcodePrintedForm(forms.Form):
    printed = forms.CharField(required=True,widget=forms.HiddenInput)

    def __init__(self, *args, **kwargs):
        super(BarcodePrintedForm, self).__init__(*args, **kwargs)
        self.fields['printed'].initial = 'printed'
예제 #3
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
예제 #4
0
import logging

from forms_representator import SEARCH_STRING_REPR
from forms_representator import get_mdts_for_docrule
from security import SEC_GROUP_NAMES

from core.parallel_keys import ParallelKeysManager
from mdt_manager import MetaDataTemplateManager
from dmscouch.models import CouchDocument
from adlibre.date_converter import date_standardized

log = logging.getLogger('dms.mdtui.views')

DATE_RANGE_CONSTANTS = {
    'min': unicode(date_standardized('1960-01-01')),
    'max': unicode(date_standardized('2100-01-01')),
    }

def cleanup_document_keys(document_keys):
    """
    Cleaning up key/value pairs that have empty values from CouchDB search request
    """
    if document_keys:
        del_list = []
        for key, value in document_keys.iteritems():
            if not value:
                del_list.append(key)
        for key in del_list:
            del document_keys[key]
    return document_keys
예제 #5
0
import logging

from forms_representator import SEARCH_STRING_REPR
from forms_representator import get_mdts_for_docrule
from security import SEC_GROUP_NAMES

from core.parallel_keys import ParallelKeysManager
from mdt_manager import MetaDataTemplateManager
from dmscouch.models import CouchDocument
from adlibre.date_converter import date_standardized

log = logging.getLogger('dms.mdtui.views')

DATE_RANGE_CONSTANTS = {
    'min': unicode(date_standardized('1960-01-01')),
    'max': unicode(date_standardized('2100-01-01')),
}


def cleanup_document_keys(document_keys):
    """
    Cleaning up key/value pairs that have empty values from CouchDB search request
    """
    if document_keys:
        del_list = []
        for key, value in document_keys.iteritems():
            if not value:
                del_list.append(key)
        for key in del_list:
            del document_keys[key]
예제 #6
0
from django import forms
from django.core.exceptions import ValidationError
from django.conf import settings
import datetime

from forms_representator import setFormFields
from forms_representator import setFormData
from adlibre.date_converter import date_standardized

CUSTOM_ERRORS = {
    'NUMBER':
    'Must be Number. (example "123456")',
    'DATE':
    'Must be in valid Date format. (example "%s")' %
    date_standardized('2012-12-30'),
    'UPPER':
    'This field should be uppercase.'
}


class DocumentUploadForm(forms.Form):
    file = forms.FileField()


class BarcodePrintedForm(forms.Form):
    printed = forms.CharField(required=True, widget=forms.HiddenInput)

    def __init__(self, *args, **kwargs):
        super(BarcodePrintedForm, self).__init__(*args, **kwargs)
        self.fields['printed'].initial = 'printed'