Example #1
0
    def upload_single_file(self, file_object, filename=None, use_file_name=False, document_type=None, metadata_dict_list=None, user=None, document=None, new_version_data=None):
        if not document:
            document = Document()
            if document_type:
                document.document_type = document_type
            document.save()            

            if metadata_dict_list:
                save_metadata_list(metadata_dict_list, document, create=True)
            warnings = update_indexes(document)

            if user:
                document.add_as_recent_document_for_user(user)
                create_history(HISTORY_DOCUMENT_CREATED, document, {'user': user})
            else:
                create_history(HISTORY_DOCUMENT_CREATED, document)
        else:
            if use_file_name:
                filename = None
            else:
                filename = filename if filename else document.latest_version.filename

        if not new_version_data:
            new_version_data = {}
            
        new_version = document.new_version(file=file_object, **new_version_data)
        if filename:
            new_version.filename = filename
            new_version.save()

        transformations, errors = self.get_transformation_list()

        new_version.apply_default_transformations(transformations)
Example #2
0
    def upload_single_file(self,
                           file_object,
                           filename=None,
                           use_file_name=False,
                           document_type=None,
                           metadata_dict_list=None,
                           user=None,
                           document=None,
                           new_version_data=None):
        new_document = not document

        if not document:
            document = Document()
            if document_type:
                document.document_type = document_type
            document.save()

            apply_default_acls(document, user)

            if user:
                document.add_as_recent_document_for_user(user)
                create_history(HISTORY_DOCUMENT_CREATED, document,
                               {'user': user})
            else:
                create_history(HISTORY_DOCUMENT_CREATED, document)
        else:
            if use_file_name:
                filename = None
            else:
                filename = filename if filename else document.latest_version.filename

        if not new_version_data:
            new_version_data = {}

        try:
            new_version = document.new_version(file=file_object,
                                               user=user,
                                               **new_version_data)
        except Exception:
            # Don't leave the database in a broken state
            # document.delete()
            transaction.rollback()
            raise

        if filename:
            document.rename(filename)

        transformations, errors = self.get_transformation_list()

        new_version.apply_default_transformations(transformations)
        #TODO: new HISTORY for version updates

        if metadata_dict_list and new_document:
            # Only do for new documents
            save_metadata_list(metadata_dict_list, document, create=True)
            warnings = update_indexes(document)

        return document
Example #3
0
 def save(self, *args, **kwargs):
     if not self.pk:
         self.checkout_datetime = datetime.datetime.now()
     result = super(DocumentCheckout, self).save(*args, **kwargs)
     create_history(
         HISTORY_DOCUMENT_CHECKED_OUT,
         source_object=self.document,
         data={"user": self.user_object, "document": self.document},
     )
     return result
Example #4
0
File: models.py Project: x3n0/mayan
 def save(self, *args, **kwargs):
     if not self.pk:
         self.checkout_datetime = datetime.datetime.now()
     result = super(DocumentCheckout, self).save(*args, **kwargs)
     create_history(HISTORY_DOCUMENT_CHECKED_OUT,
                    source_object=self.document,
                    data={
                        'user': self.user_object,
                        'document': self.document
                    })
     return result
Example #5
0
    def upload_single_file(self, file_object, filename=None, use_file_name=False, document_type=None, metadata_dict_list=None, user=None, document=None, new_version_data=None, description=None):
        new_document = not document

        if not document:
            document = Document()
            if document_type:
                document.document_type = document_type

            if description:
                document.description = description

            document.save()

            apply_default_acls(document, user)

            if user:
                document.add_as_recent_document_for_user(user)
                create_history(HISTORY_DOCUMENT_CREATED, document, {'user': user})
            else:
                create_history(HISTORY_DOCUMENT_CREATED, document)
        else:
            if use_file_name:
                filename = None
            else:
                filename = filename if filename else document.latest_version.filename

            if description:
                document.description = description
                document.save()

        if not new_version_data:
            new_version_data = {}

        new_version = document.new_version(file=file_object, user=user, **new_version_data)

        if filename:
            document.rename(filename)

        transformations, errors = self.get_transformation_list()

        new_version.apply_default_transformations(transformations)
        # TODO: new HISTORY for version updates

        if metadata_dict_list and new_document:
            # Only do for new documents
            save_metadata_list(metadata_dict_list, document, create=True)
            warnings = update_indexes(document)
Example #6
0
def document_edit(request, document_id):
    check_permissions(request.user, [PERMISSION_DOCUMENT_PROPERTIES_EDIT])

    document = get_object_or_404(Document, pk=document_id)

    if request.method == 'POST':
        old_document = copy.copy(document)
        form = DocumentForm_edit(request.POST, instance=document)
        if form.is_valid():
            warnings = delete_indexes(document)
            if request.user.is_staff or request.user.is_superuser:
                for warning in warnings:
                    messages.warning(request, warning)

            document.file_filename = form.cleaned_data['new_filename']
            document.description = form.cleaned_data['description']

            if 'document_type_available_filenames' in form.cleaned_data:
                if form.cleaned_data['document_type_available_filenames']:
                    document.file_filename = form.cleaned_data['document_type_available_filenames'].filename

            document.save()
            create_history(HISTORY_DOCUMENT_EDITED, document, {'user': request.user, 'diff': return_diff(old_document, document, ['file_filename', 'description'])})
            RecentDocument.objects.add_document_for_user(request.user, document)

            messages.success(request, _(u'Document "%s" edited successfully.') % document)

            warnings = update_indexes(document)
            if request.user.is_staff or request.user.is_superuser:
                for warning in warnings:
                    messages.warning(request, warning)

            return HttpResponseRedirect(document.get_absolute_url())
    else:
        form = DocumentForm_edit(instance=document, initial={
            'new_filename': document.file_filename})

    return render_to_response('generic_form.html', {
        'form': form,
        'object': document,
    }, context_instance=RequestContext(request))
Example #7
0
    def upload_single_file(self, file_object, filename=None, document_type=None, metadata_dict_list=None, user=None):
        transformations, errors = self.get_transformation_list()
        document = Document(file=file_object)
        if document_type:
            document.document_type = document_type
        document.save()
        if filename:
            document.file_filename = filename
            document.save()    

        document.apply_default_transformations(transformations)

        if metadata_dict_list:
            save_metadata_list(metadata_dict_list, document, create=True)
        warnings = update_indexes(document)

        if user:
            document.add_as_recent_document_for_user(user)
            create_history(HISTORY_DOCUMENT_CREATED, document, {'user': user})
        else:
            create_history(HISTORY_DOCUMENT_CREATED, document)
Example #8
0
    def check_in_document(self, document, user=None):
        try:
            document_checkout = self.model.objects.get(document=document)
        except self.model.DoesNotExist:
            raise DocumentNotCheckedOut
        else:
            if user:
                if self.document_checkout_info(document).user_object != user:
                    create_history(HISTORY_DOCUMENT_FORCEFUL_CHECK_IN,
                                   source_object=document,
                                   data={
                                       'user': user,
                                       'document': document
                                   })
                else:
                    create_history(HISTORY_DOCUMENT_CHECKED_IN,
                                   source_object=document,
                                   data={
                                       'user': user,
                                       'document': document
                                   })
            else:
                create_history(HISTORY_DOCUMENT_AUTO_CHECKED_IN,
                               source_object=document,
                               data={'document': document})

            document_checkout.delete()
Example #9
0
    def check_in_document(self, document, user=None):
        try:
            document_checkout = self.model.objects.get(document=document)
        except self.model.DoesNotExist:
            raise DocumentNotCheckedOut
        else:
            if user:
                if self.document_checkout_info(document).user_object != user:
                    create_history(HISTORY_DOCUMENT_FORCEFUL_CHECK_IN, source_object=document, data={'user': user, 'document': document})
                else:
                    create_history(HISTORY_DOCUMENT_CHECKED_IN, source_object=document, data={'user': user, 'document': document})
            else:
                create_history(HISTORY_DOCUMENT_AUTO_CHECKED_IN, source_object=document, data={'document': document})

            document_checkout.delete()