fnp
/
redakcja.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixes
[redakcja.git]
/
src
/
dvcs
/
models.py
diff --git
a/src/dvcs/models.py
b/src/dvcs/models.py
index
adaf795
..
978f072
100644
(file)
--- a/
src/dvcs/models.py
+++ b/
src/dvcs/models.py
@@
-3,9
+3,11
@@
#
from datetime import datetime
import os.path
#
from datetime import datetime
import os.path
+from zlib import compress, decompress
from django.contrib.auth.models import User
from django.core.files.base import ContentFile
from django.contrib.auth.models import User
from django.core.files.base import ContentFile
+from django.core.files.storage import FileSystemStorage
from django.db import models, transaction
from django.db.models.base import ModelBase
from django.utils.text import format_lazy
from django.db import models, transaction
from django.db.models.base import ModelBase
from django.utils.text import format_lazy
@@
-14,7
+16,6
@@
import merge3
from django.conf import settings
from dvcs.signals import post_commit, post_publishable
from django.conf import settings
from dvcs.signals import post_commit, post_publishable
-from dvcs.storage import GzipFileSystemStorage
class Tag(models.Model):
class Tag(models.Model):
@@
-93,7
+94,7
@@
class Change(models.Model):
unique_together = ['tree', 'revision']
def __str__(self):
unique_together = ['tree', 'revision']
def __str__(self):
- return
u"Id: %r, Tree %r, Parent %r, Data: %s" % (self.id, self.tree_id, self.parent_id, self.data
)
+ return
"rev. {} @ {}".format(self.revision, self.created_at
)
def author_str(self):
if self.author:
def author_str(self):
if self.author:
@@
-119,11
+120,17
@@
class Change(models.Model):
self.revision = tree_rev + 1
return super(Change, self).save(*args, **kwargs)
self.revision = tree_rev + 1
return super(Change, self).save(*args, **kwargs)
+ def save_text(self, text, **kwargs):
+ self.data.save(
+ '',
+ ContentFile(compress(text.encode('utf-8'))),
+ **kwargs
+ )
+
def materialize(self):
def materialize(self):
- f = self.data.storage.open(self.data)
- text = f.read()
- f.close()
- return str(text, 'utf-8')
+ with self.data.open('rb') as f:
+ content = f.read()
+ return decompress(content).decode('utf-8')
def merge_with(self, other, author=None,
author_name=None, author_email=None,
def merge_with(self, other, author=None,
author_name=None, author_email=None,
@@
-146,7
+153,7
@@
class Change(models.Model):
author_name=author_name,
author_email=author_email,
description=description)
author_name=author_name,
author_email=author_email,
description=description)
- merge_node.
data.save('', ContentFile(result)
)
+ merge_node.
save_text(result
)
return merge_node
def revert(self, **kwargs):
return merge_node
def revert(self, **kwargs):
@@
-178,7
+185,7
@@
def create_tag_model(model):
def create_change_model(model):
name = model.__name__ + 'Change'
def create_change_model(model):
name = model.__name__ + 'Change'
- repo =
Gzip
FileSystemStorage(location=model.REPO_PATH)
+ repo = FileSystemStorage(location=model.REPO_PATH)
class Meta(Change.Meta):
app_label = model._meta.app_label
class Meta(Change.Meta):
app_label = model._meta.app_label
@@
-280,7
+287,7
@@
class Document(models.Model, metaclass=DocumentMeta):
description=kwargs.get('description', ''), publishable=publishable, parent=parent)
change.tags.set(tags)
description=kwargs.get('description', ''), publishable=publishable, parent=parent)
change.tags.set(tags)
- change.
data.save('', ContentFile(text.encode('utf-8'))
)
+ change.
save_text(text
)
change.save()
if self.head:
change.save()
if self.head: