Issue #56, remove document version fields 'release_level' and 'serial'
This commit is contained in:
@@ -6,7 +6,7 @@ from django.conf import settings
|
|||||||
from django.core.files.base import File
|
from django.core.files.base import File
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
|
|
||||||
from documents.literals import VERSION_UPDATE_MAJOR, RELEASE_LEVEL_FINAL
|
from documents.literals import VERSION_UPDATE_MAJOR
|
||||||
from documents.models import Document, DocumentType
|
from documents.models import Document, DocumentType
|
||||||
from django_gpg.literals import SIGNATURE_STATE_VALID
|
from django_gpg.literals import SIGNATURE_STATE_VALID
|
||||||
from django_gpg.runtime import gpg
|
from django_gpg.runtime import gpg
|
||||||
@@ -44,8 +44,6 @@ class DocumentTestCase(TestCase):
|
|||||||
new_version_data = {
|
new_version_data = {
|
||||||
'comment': 'test comment 1',
|
'comment': 'test comment 1',
|
||||||
'version_update': VERSION_UPDATE_MAJOR,
|
'version_update': VERSION_UPDATE_MAJOR,
|
||||||
'release_level': RELEASE_LEVEL_FINAL,
|
|
||||||
'serial': 0,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
self.document.new_version(file=File(file_object, name='mayan_11_1.pdf.gpg'), **new_version_data)
|
self.document.new_version(file=File(file_object, name='mayan_11_1.pdf.gpg'), **new_version_data)
|
||||||
@@ -57,8 +55,6 @@ class DocumentTestCase(TestCase):
|
|||||||
new_version_data = {
|
new_version_data = {
|
||||||
'comment': 'test comment 2',
|
'comment': 'test comment 2',
|
||||||
'version_update': VERSION_UPDATE_MAJOR,
|
'version_update': VERSION_UPDATE_MAJOR,
|
||||||
'release_level': RELEASE_LEVEL_FINAL,
|
|
||||||
'serial': 0,
|
|
||||||
}
|
}
|
||||||
with open(TEST_DOCUMENT_PATH) as file_object:
|
with open(TEST_DOCUMENT_PATH) as file_object:
|
||||||
self.document.new_version(file=File(file_object), **new_version_data)
|
self.document.new_version(file=File(file_object), **new_version_data)
|
||||||
|
|||||||
@@ -143,16 +143,16 @@ class_permissions(Document, [PERMISSION_DOCUMENT_DELETE,
|
|||||||
PERMISSION_HISTORY_VIEW])
|
PERMISSION_HISTORY_VIEW])
|
||||||
|
|
||||||
document_search = SearchModel('documents', 'Document', permission=PERMISSION_DOCUMENT_VIEW, serializer=DocumentSerializer)
|
document_search = SearchModel('documents', 'Document', permission=PERMISSION_DOCUMENT_VIEW, serializer=DocumentSerializer)
|
||||||
document_search.add_model_field('document_type__name', label=_(u'Document type'))
|
|
||||||
|
|
||||||
# TODO: move these to their respective apps
|
# TODO: move these to their respective apps
|
||||||
|
# Moving these to other apps cause an ImportError; circular import?
|
||||||
|
document_search.add_model_field('document_type__name', label=_(u'Document type'))
|
||||||
document_search.add_model_field('versions__mimetype', label=_(u'MIME type'))
|
document_search.add_model_field('versions__mimetype', label=_(u'MIME type'))
|
||||||
document_search.add_model_field('versions__filename', label=_(u'Filename'))
|
document_search.add_model_field('versions__filename', label=_(u'Filename'))
|
||||||
document_search.add_model_field('metadata__metadata_type__name', label=_(u'Metadata type'))
|
document_search.add_model_field('metadata__metadata_type__name', label=_(u'Metadata type'))
|
||||||
document_search.add_model_field('metadata__value', label=_(u'Metadata value'))
|
document_search.add_model_field('metadata__value', label=_(u'Metadata value'))
|
||||||
document_search.add_model_field('versions__pages__content', label=_(u'Content'))
|
document_search.add_model_field('versions__pages__content', label=_(u'Content'))
|
||||||
document_search.add_model_field('description', label=_(u'Description'))
|
document_search.add_model_field('description', label=_(u'Description'))
|
||||||
document_search.add_related_field('comments', 'Comment', 'comment', 'object_pk', label=_(u'Comments'))
|
|
||||||
|
|
||||||
namespace = StatisticNamespace(name='documents', label=_(u'Documents'))
|
namespace = StatisticNamespace(name='documents', label=_(u'Documents'))
|
||||||
namespace.add_statistic(DocumentStatistics(name='document_stats', label=_(u'Document tendencies')))
|
namespace.add_statistic(DocumentStatistics(name='document_stats', label=_(u'Document tendencies')))
|
||||||
|
|||||||
@@ -93,14 +93,12 @@ class APIDocumentVersionCreateView(generics.CreateAPIView):
|
|||||||
major=serializer.object.major,
|
major=serializer.object.major,
|
||||||
minor=serializer.object.minor,
|
minor=serializer.object.minor,
|
||||||
micro=serializer.object.micro,
|
micro=serializer.object.micro,
|
||||||
release_level=serializer.object.release_level,
|
|
||||||
serial=serializer.object.serial
|
|
||||||
)
|
)
|
||||||
except DocumentVersion.DoesNotExist:
|
except DocumentVersion.DoesNotExist:
|
||||||
self.object = serializer.save(force_insert=True)
|
self.object = serializer.save(force_insert=True)
|
||||||
else:
|
else:
|
||||||
return Response(
|
return Response(
|
||||||
{'non_field_errors': 'A version with the same major, minor, micro, release_level and serial values already exist for this document.'},
|
{'non_field_errors': 'A version with the same major, minor and micro values already exist for this document.'},
|
||||||
status=status.HTTP_400_BAD_REQUEST
|
status=status.HTTP_400_BAD_REQUEST
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -13,8 +13,7 @@ from common.widgets import TextAreaDiv
|
|||||||
from .models import (Document, DocumentType, DocumentPage,
|
from .models import (Document, DocumentType, DocumentPage,
|
||||||
DocumentPageTransformation, DocumentTypeFilename,
|
DocumentPageTransformation, DocumentTypeFilename,
|
||||||
DocumentVersion)
|
DocumentVersion)
|
||||||
from .literals import (DEFAULT_ZIP_FILENAME, RELEASE_LEVEL_CHOICES,
|
from .literals import DEFAULT_ZIP_FILENAME
|
||||||
RELEASE_LEVEL_FINAL)
|
|
||||||
from .widgets import DocumentPagesCarouselWidget, DocumentPageImageWidget
|
from .widgets import DocumentPagesCarouselWidget, DocumentPageImageWidget
|
||||||
|
|
||||||
|
|
||||||
@@ -143,20 +142,6 @@ class DocumentForm(forms.ModelForm):
|
|||||||
choices=DocumentVersion.get_version_update_choices(document.latest_version)
|
choices=DocumentVersion.get_version_update_choices(document.latest_version)
|
||||||
)
|
)
|
||||||
|
|
||||||
self.fields['release_level'] = forms.ChoiceField(
|
|
||||||
label=_(u'Release level'),
|
|
||||||
choices=RELEASE_LEVEL_CHOICES,
|
|
||||||
initial=RELEASE_LEVEL_FINAL,
|
|
||||||
)
|
|
||||||
|
|
||||||
self.fields['serial'] = forms.IntegerField(
|
|
||||||
label=_(u'Release level serial'),
|
|
||||||
initial=0,
|
|
||||||
widget=forms.widgets.TextInput(
|
|
||||||
attrs={'style': 'width: auto;'}
|
|
||||||
),
|
|
||||||
)
|
|
||||||
|
|
||||||
self.fields['comment'] = forms.CharField(
|
self.fields['comment'] = forms.CharField(
|
||||||
label=_(u'Comment'),
|
label=_(u'Comment'),
|
||||||
required=False,
|
required=False,
|
||||||
@@ -172,8 +157,6 @@ class DocumentForm(forms.ModelForm):
|
|||||||
cleaned_data['new_version_data'] = {
|
cleaned_data['new_version_data'] = {
|
||||||
'comment': self.cleaned_data.get('comment'),
|
'comment': self.cleaned_data.get('comment'),
|
||||||
'version_update': self.cleaned_data.get('version_update'),
|
'version_update': self.cleaned_data.get('version_update'),
|
||||||
'release_level': self.cleaned_data.get('release_level'),
|
|
||||||
'serial': self.cleaned_data.get('serial'),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Always return the full collection of cleaned data.
|
# Always return the full collection of cleaned data.
|
||||||
@@ -191,8 +174,6 @@ class DocumentForm_edit(DocumentForm):
|
|||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super(DocumentForm_edit, self).__init__(*args, **kwargs)
|
super(DocumentForm_edit, self).__init__(*args, **kwargs)
|
||||||
if kwargs['instance'].latest_version:
|
if kwargs['instance'].latest_version:
|
||||||
self.fields.pop('serial')
|
|
||||||
self.fields.pop('release_level')
|
|
||||||
self.fields.pop('version_update')
|
self.fields.pop('version_update')
|
||||||
self.fields.pop('comment')
|
self.fields.pop('comment')
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -5,20 +5,6 @@ PICTURE_ERROR_MEDIUM = u'1297211435_error.png'
|
|||||||
PICTURE_UNKNOWN_SMALL = u'1299549572_unknown2.png'
|
PICTURE_UNKNOWN_SMALL = u'1299549572_unknown2.png'
|
||||||
PICTURE_UNKNOWN_MEDIUM = u'1299549805_unknown.png'
|
PICTURE_UNKNOWN_MEDIUM = u'1299549805_unknown.png'
|
||||||
|
|
||||||
RELEASE_LEVEL_FINAL = 1
|
|
||||||
RELEASE_LEVEL_ALPHA = 2
|
|
||||||
RELEASE_LEVEL_BETA = 3
|
|
||||||
RELEASE_LEVEL_RC = 4
|
|
||||||
RELEASE_LEVEL_HF = 5
|
|
||||||
|
|
||||||
RELEASE_LEVEL_CHOICES = (
|
|
||||||
(RELEASE_LEVEL_FINAL, _(u'Final')),
|
|
||||||
(RELEASE_LEVEL_ALPHA, _(u'Alpha')),
|
|
||||||
(RELEASE_LEVEL_BETA, _(u'Beta')),
|
|
||||||
(RELEASE_LEVEL_RC, _(u'Release candidate')),
|
|
||||||
(RELEASE_LEVEL_HF, _(u'Hotfix')),
|
|
||||||
)
|
|
||||||
|
|
||||||
VERSION_UPDATE_MAJOR = u'major'
|
VERSION_UPDATE_MAJOR = u'major'
|
||||||
VERSION_UPDATE_MINOR = u'minor'
|
VERSION_UPDATE_MINOR = u'minor'
|
||||||
VERSION_UPDATE_MICRO = u'micro'
|
VERSION_UPDATE_MICRO = u'micro'
|
||||||
|
|||||||
@@ -0,0 +1,139 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from south.utils import datetime_utils as datetime
|
||||||
|
from south.db import db
|
||||||
|
from south.v2 import SchemaMigration
|
||||||
|
from django.db import models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(SchemaMigration):
|
||||||
|
|
||||||
|
def forwards(self, orm):
|
||||||
|
# Removing unique constraint on 'DocumentVersion', fields ['document', 'major', 'minor', 'micro', 'release_level', 'serial']
|
||||||
|
db.delete_unique(u'documents_documentversion', ['document_id', 'major', 'minor', 'micro', 'release_level', 'serial'])
|
||||||
|
|
||||||
|
# Deleting field 'DocumentVersion.serial'
|
||||||
|
db.delete_column(u'documents_documentversion', 'serial')
|
||||||
|
|
||||||
|
# Deleting field 'DocumentVersion.release_level'
|
||||||
|
db.delete_column(u'documents_documentversion', 'release_level')
|
||||||
|
|
||||||
|
# Adding unique constraint on 'DocumentVersion', fields ['document', 'major', 'minor', 'micro']
|
||||||
|
db.create_unique(u'documents_documentversion', ['document_id', 'major', 'minor', 'micro'])
|
||||||
|
|
||||||
|
|
||||||
|
def backwards(self, orm):
|
||||||
|
# Removing unique constraint on 'DocumentVersion', fields ['document', 'major', 'minor', 'micro']
|
||||||
|
db.delete_unique(u'documents_documentversion', ['document_id', 'major', 'minor', 'micro'])
|
||||||
|
|
||||||
|
# Adding field 'DocumentVersion.serial'
|
||||||
|
db.add_column(u'documents_documentversion', 'serial',
|
||||||
|
self.gf('django.db.models.fields.PositiveIntegerField')(default=0),
|
||||||
|
keep_default=False)
|
||||||
|
|
||||||
|
# Adding field 'DocumentVersion.release_level'
|
||||||
|
db.add_column(u'documents_documentversion', 'release_level',
|
||||||
|
self.gf('django.db.models.fields.PositiveIntegerField')(default=1),
|
||||||
|
keep_default=False)
|
||||||
|
|
||||||
|
# Adding unique constraint on 'DocumentVersion', fields ['document', 'major', 'minor', 'micro', 'release_level', 'serial']
|
||||||
|
db.create_unique(u'documents_documentversion', ['document_id', 'major', 'minor', 'micro', 'release_level', 'serial'])
|
||||||
|
|
||||||
|
|
||||||
|
models = {
|
||||||
|
u'auth.group': {
|
||||||
|
'Meta': {'object_name': 'Group'},
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||||
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||||
|
},
|
||||||
|
u'auth.permission': {
|
||||||
|
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
|
||||||
|
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
|
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||||
|
},
|
||||||
|
u'auth.user': {
|
||||||
|
'Meta': {'object_name': 'User'},
|
||||||
|
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||||
|
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||||
|
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
|
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||||
|
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||||
|
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||||
|
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
|
||||||
|
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||||
|
},
|
||||||
|
u'contenttypes.contenttype': {
|
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||||
|
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||||
|
},
|
||||||
|
u'documents.document': {
|
||||||
|
'Meta': {'ordering': "['-date_added']", 'object_name': 'Document'},
|
||||||
|
'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||||
|
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'document_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'documents'", 'null': 'True', 'to': u"orm['documents.DocumentType']"}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'uuid': ('django.db.models.fields.CharField', [], {'max_length': '48', 'blank': 'True'})
|
||||||
|
},
|
||||||
|
u'documents.documentpage': {
|
||||||
|
'Meta': {'ordering': "['page_number']", 'object_name': 'DocumentPage'},
|
||||||
|
'content': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'document_version': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'pages'", 'to': u"orm['documents.DocumentVersion']"}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'page_label': ('django.db.models.fields.CharField', [], {'max_length': '40', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'page_number': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1', 'db_index': 'True'})
|
||||||
|
},
|
||||||
|
u'documents.documentpagetransformation': {
|
||||||
|
'Meta': {'ordering': "('order',)", 'object_name': 'DocumentPageTransformation'},
|
||||||
|
'arguments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'document_page': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['documents.DocumentPage']"}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'order': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0', 'null': 'True', 'db_index': 'True', 'blank': 'True'}),
|
||||||
|
'transformation': ('django.db.models.fields.CharField', [], {'max_length': '128'})
|
||||||
|
},
|
||||||
|
u'documents.documenttype': {
|
||||||
|
'Meta': {'ordering': "['name']", 'object_name': 'DocumentType'},
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '32'})
|
||||||
|
},
|
||||||
|
u'documents.documenttypefilename': {
|
||||||
|
'Meta': {'ordering': "['filename']", 'object_name': 'DocumentTypeFilename'},
|
||||||
|
'document_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['documents.DocumentType']"}),
|
||||||
|
'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
|
'filename': ('django.db.models.fields.CharField', [], {'max_length': '128', 'db_index': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'documents.documentversion': {
|
||||||
|
'Meta': {'unique_together': "(('document', 'major', 'minor', 'micro'),)", 'object_name': 'DocumentVersion'},
|
||||||
|
'checksum': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'comment': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'document': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'versions'", 'to': u"orm['documents.Document']"}),
|
||||||
|
'encoding': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'file': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
|
||||||
|
'filename': ('django.db.models.fields.CharField', [], {'default': "u''", 'max_length': '255', 'db_index': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'major': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
|
||||||
|
'micro': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
|
||||||
|
'mimetype': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'minor': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
|
||||||
|
'timestamp': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'})
|
||||||
|
},
|
||||||
|
u'documents.recentdocument': {
|
||||||
|
'Meta': {'ordering': "('-datetime_accessed',)", 'object_name': 'RecentDocument'},
|
||||||
|
'datetime_accessed': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
|
||||||
|
'document': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['documents.Document']"}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']"})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
complete_apps = ['documents']
|
||||||
@@ -30,8 +30,7 @@ from mimetype.api import get_mimetype
|
|||||||
|
|
||||||
from .events import HISTORY_DOCUMENT_CREATED
|
from .events import HISTORY_DOCUMENT_CREATED
|
||||||
from .exceptions import NewDocumentVersionNotAllowed
|
from .exceptions import NewDocumentVersionNotAllowed
|
||||||
from .literals import (RELEASE_LEVEL_CHOICES, RELEASE_LEVEL_FINAL,
|
from .literals import (VERSION_UPDATE_MAJOR, VERSION_UPDATE_MICRO,
|
||||||
VERSION_UPDATE_MAJOR, VERSION_UPDATE_MICRO,
|
|
||||||
VERSION_UPDATE_MINOR)
|
VERSION_UPDATE_MINOR)
|
||||||
from .managers import (DocumentPageTransformationManager, DocumentTypeManager,
|
from .managers import (DocumentPageTransformationManager, DocumentTypeManager,
|
||||||
RecentDocumentManager)
|
RecentDocumentManager)
|
||||||
@@ -187,7 +186,7 @@ class Document(models.Model):
|
|||||||
def size(self):
|
def size(self):
|
||||||
return self.latest_version.size
|
return self.latest_version.size
|
||||||
|
|
||||||
def new_version(self, file, user=None, comment=None, version_update=None, release_level=None, serial=None):
|
def new_version(self, file, user=None, comment=None, version_update=None):
|
||||||
logger.debug('creating new document version')
|
logger.debug('creating new document version')
|
||||||
# TODO: move this restriction to a signal processor of the checkouts app
|
# TODO: move this restriction to a signal processor of the checkouts app
|
||||||
if not self.is_new_versions_allowed(user=user):
|
if not self.is_new_versions_allowed(user=user):
|
||||||
@@ -202,8 +201,6 @@ class Document(models.Model):
|
|||||||
major=new_version_dict.get('major'),
|
major=new_version_dict.get('major'),
|
||||||
minor=new_version_dict.get('minor'),
|
minor=new_version_dict.get('minor'),
|
||||||
micro=new_version_dict.get('micro'),
|
micro=new_version_dict.get('micro'),
|
||||||
release_level=release_level,
|
|
||||||
serial=serial,
|
|
||||||
comment=comment,
|
comment=comment,
|
||||||
)
|
)
|
||||||
new_version.save()
|
new_version.save()
|
||||||
@@ -316,8 +313,8 @@ class DocumentVersion(models.Model):
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
def get_version_update_choices(document_version):
|
def get_version_update_choices(document_version):
|
||||||
return (
|
return (
|
||||||
(VERSION_UPDATE_MAJOR, _(u'Major %(major)i.%(minor)i, (new release)') % document_version.get_new_version_dict(VERSION_UPDATE_MAJOR)),
|
(VERSION_UPDATE_MAJOR, _(u'Major %(major)i.%(minor)i.%(micro)i, (new release)') % document_version.get_new_version_dict(VERSION_UPDATE_MAJOR)),
|
||||||
(VERSION_UPDATE_MINOR, _(u'Minor %(major)i.%(minor)i, (some updates)') % document_version.get_new_version_dict(VERSION_UPDATE_MINOR)),
|
(VERSION_UPDATE_MINOR, _(u'Minor %(major)i.%(minor)i.%(micro)i, (some updates)') % document_version.get_new_version_dict(VERSION_UPDATE_MINOR)),
|
||||||
(VERSION_UPDATE_MICRO, _(u'Micro %(major)i.%(minor)i.%(micro)i, (fixes)') % document_version.get_new_version_dict(VERSION_UPDATE_MICRO))
|
(VERSION_UPDATE_MICRO, _(u'Micro %(major)i.%(minor)i.%(micro)i, (fixes)') % document_version.get_new_version_dict(VERSION_UPDATE_MICRO))
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -333,8 +330,6 @@ class DocumentVersion(models.Model):
|
|||||||
major = models.PositiveIntegerField(verbose_name=_(u'Mayor'), default=1)
|
major = models.PositiveIntegerField(verbose_name=_(u'Mayor'), default=1)
|
||||||
minor = models.PositiveIntegerField(verbose_name=_(u'Minor'), default=0)
|
minor = models.PositiveIntegerField(verbose_name=_(u'Minor'), default=0)
|
||||||
micro = models.PositiveIntegerField(verbose_name=_(u'Micro'), default=0)
|
micro = models.PositiveIntegerField(verbose_name=_(u'Micro'), default=0)
|
||||||
release_level = models.PositiveIntegerField(choices=RELEASE_LEVEL_CHOICES, default=RELEASE_LEVEL_FINAL, verbose_name=_(u'Release level'))
|
|
||||||
serial = models.PositiveIntegerField(verbose_name=_(u'Serial'), default=0)
|
|
||||||
timestamp = models.DateTimeField(verbose_name=_(u'Timestamp'), auto_now_add=True)
|
timestamp = models.DateTimeField(verbose_name=_(u'Timestamp'), auto_now_add=True)
|
||||||
comment = models.TextField(blank=True, verbose_name=_(u'Comment'))
|
comment = models.TextField(blank=True, verbose_name=_(u'Comment'))
|
||||||
|
|
||||||
@@ -346,7 +341,7 @@ class DocumentVersion(models.Model):
|
|||||||
checksum = models.TextField(blank=True, null=True, verbose_name=_(u'Checksum'), editable=False)
|
checksum = models.TextField(blank=True, null=True, verbose_name=_(u'Checksum'), editable=False)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
unique_together = ('document', 'major', 'minor', 'micro', 'release_level', 'serial')
|
unique_together = ('document', 'major', 'minor', 'micro')
|
||||||
verbose_name = _(u'Document version')
|
verbose_name = _(u'Document version')
|
||||||
verbose_name_plural = _(u'Document version')
|
verbose_name_plural = _(u'Document version')
|
||||||
|
|
||||||
@@ -379,13 +374,7 @@ class DocumentVersion(models.Model):
|
|||||||
"""
|
"""
|
||||||
Return the formatted version information
|
Return the formatted version information
|
||||||
"""
|
"""
|
||||||
vers = [u'%i.%i' % (self.major, self.minor), ]
|
return u'%i.%i.%i' % (self.major, self.minor, self.micro)
|
||||||
|
|
||||||
if self.micro:
|
|
||||||
vers.append(u'.%i' % self.micro)
|
|
||||||
if self.release_level != RELEASE_LEVEL_FINAL:
|
|
||||||
vers.append(u'%s%i' % (self.get_release_level_display(), self.serial))
|
|
||||||
return u''.join(vers)
|
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ from django.test import TestCase
|
|||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
from rest_framework.test import APIClient
|
from rest_framework.test import APIClient
|
||||||
|
|
||||||
from .literals import VERSION_UPDATE_MAJOR, RELEASE_LEVEL_FINAL
|
from .literals import VERSION_UPDATE_MAJOR
|
||||||
from .models import Document, DocumentType
|
from .models import Document, DocumentType
|
||||||
|
|
||||||
TEST_ADMIN_PASSWORD = 'test_admin_password'
|
TEST_ADMIN_PASSWORD = 'test_admin_password'
|
||||||
@@ -59,8 +59,6 @@ class DocumentTestCase(TestCase):
|
|||||||
new_version_data = {
|
new_version_data = {
|
||||||
'comment': 'test comment 1',
|
'comment': 'test comment 1',
|
||||||
'version_update': VERSION_UPDATE_MAJOR,
|
'version_update': VERSION_UPDATE_MAJOR,
|
||||||
'release_level': RELEASE_LEVEL_FINAL,
|
|
||||||
'serial': 0,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
new_version = self.document.new_version(file=File(file_object, name='mayan_11_1.pdf.gpg'), **new_version_data)
|
new_version = self.document.new_version(file=File(file_object, name='mayan_11_1.pdf.gpg'), **new_version_data)
|
||||||
@@ -70,8 +68,6 @@ class DocumentTestCase(TestCase):
|
|||||||
new_version_data = {
|
new_version_data = {
|
||||||
'comment': 'test comment 2',
|
'comment': 'test comment 2',
|
||||||
'version_update': VERSION_UPDATE_MAJOR,
|
'version_update': VERSION_UPDATE_MAJOR,
|
||||||
'release_level': RELEASE_LEVEL_FINAL,
|
|
||||||
'serial': 0,
|
|
||||||
}
|
}
|
||||||
with open(TEST_DOCUMENT_PATH) as file_object:
|
with open(TEST_DOCUMENT_PATH) as file_object:
|
||||||
new_version = self.document.new_version(file=File(file_object), **new_version_data)
|
new_version = self.document.new_version(file=File(file_object), **new_version_data)
|
||||||
|
|||||||
Reference in New Issue
Block a user