~widelands-dev/widelands-website/trunk

« back to all changes in this revision

Viewing changes to wiki/models.py

  • Committer: kaputtnik
  • Date: 2019-06-14 18:40:56 UTC
  • mfrom: (532.1.31 widelands)
  • Revision ID: kaputtnik-20190614184056-l0ha8pm5zais9mxk
Adapted code for use with python 3.6

Show diffs side-by-side

added added

removed removed

Lines of Context:
3
3
 
4
4
# Google Diff Match Patch library
5
5
# http://code.google.com/p/google-diff-match-patch
6
 
from diff_match_patch import diff_match_patch
 
6
from .diff_match_patch import diff_match_patch
7
7
 
8
8
from django.db import models
9
9
from django.conf import settings
35
35
    markup_choices = settings.WIKI_MARKUP_CHOICES
36
36
except AttributeError:
37
37
    markup_choices = (
38
 
        ('crl', _(u'Creole')),
39
 
        ('rst', _(u'reStructuredText')),
40
 
        ('txl', _(u'Textile')),
41
 
        ('mrk', _(u'Markdown')),
 
38
        ('crl', _('Creole')),
 
39
        ('rst', _('reStructuredText')),
 
40
        ('txl', _('Textile')),
 
41
        ('mrk', _('Markdown')),
42
42
    )
43
43
 
44
44
 
45
45
class Article(models.Model):
46
46
    """A wiki page reflecting the actual revision."""
47
 
    title = models.CharField(_(u"Title"), max_length=50, unique=True)
48
 
    content = models.TextField(_(u"Content"))
49
 
    summary = models.CharField(_(u"Summary"), max_length=150,
 
47
    title = models.CharField(_("Title"), max_length=50, unique=True)
 
48
    content = models.TextField(_("Content"))
 
49
    summary = models.CharField(_("Summary"), max_length=150,
50
50
                               null=True, blank=True)
51
 
    markup = models.CharField(_(u"Content Markup"), max_length=3,
 
51
    markup = models.CharField(_("Content Markup"), max_length=3,
52
52
                              choices=markup_choices,
53
53
                              null=True, blank=True)
54
54
    creator = models.ForeignKey(User, verbose_name=_('Article Creator'),
65
65
    tags = TagField()
66
66
 
67
67
    class Meta:
68
 
        verbose_name = _(u'Article')
69
 
        verbose_name_plural = _(u'Articles')
 
68
        verbose_name = _('Article')
 
69
        verbose_name_plural = _('Articles')
70
70
        app_label = 'wiki'
71
71
        default_permissions = ('change', 'add',)
72
72
        ordering = ['title']
116
116
        changeset = self.changeset_set.get(revision=to_revision)
117
117
        return changeset.compare_to(from_revision)
118
118
 
119
 
    def __unicode__(self):
 
119
    def __str__(self):
120
120
        return self.title
121
121
 
122
122
 
134
134
class ChangeSet(models.Model):
135
135
    """A report of an older version of some Article."""
136
136
 
137
 
    article = models.ForeignKey(Article, verbose_name=_(u"Article"))
 
137
    article = models.ForeignKey(Article, verbose_name=_("Article"))
138
138
 
139
139
    # Editor identification -- logged
140
 
    editor = models.ForeignKey(User, verbose_name=_(u'Editor'),
 
140
    editor = models.ForeignKey(User, verbose_name=_('Editor'),
141
141
                               null=True)
142
142
 
143
143
    # Revision number, starting from 1
144
 
    revision = models.IntegerField(_(u"Revision Number"))
 
144
    revision = models.IntegerField(_("Revision Number"))
145
145
 
146
146
    # How to recreate this version
147
 
    old_title = models.CharField(_(u"Old Title"), max_length=50, blank=True)
148
 
    old_markup = models.CharField(_(u"Article Content Markup"), max_length=3,
 
147
    old_title = models.CharField(_("Old Title"), max_length=50, blank=True)
 
148
    old_markup = models.CharField(_("Article Content Markup"), max_length=3,
149
149
                                  choices=markup_choices,
150
150
                                  null=True, blank=True)
151
 
    content_diff = models.TextField(_(u"Content Patch"), blank=True)
 
151
    content_diff = models.TextField(_("Content Patch"), blank=True)
152
152
 
153
 
    comment = models.TextField(_(u"Editor comment"), blank=True)
154
 
    modified = models.DateTimeField(_(u"Modified at"), default=datetime.now)
155
 
    reverted = models.BooleanField(_(u"Reverted Revision"), default=False)
 
153
    comment = models.TextField(_("Editor comment"), blank=True)
 
154
    modified = models.DateTimeField(_("Modified at"), default=datetime.now)
 
155
    reverted = models.BooleanField(_("Reverted Revision"), default=False)
156
156
 
157
157
    objects = ChangeSetManager()
158
158
 
159
159
    class Meta:
160
 
        verbose_name = _(u'Change set')
161
 
        verbose_name_plural = _(u'Change sets')
 
160
        verbose_name = _('Change set')
 
161
        verbose_name_plural = _('Change sets')
162
162
        get_latest_by = 'modified'
163
163
        ordering = ('-revision',)
164
164
        app_label = 'wiki'
165
165
 
166
 
    def __unicode__(self):
167
 
        return u'#%s' % self.revision
 
166
    def __str__(self):
 
167
        return '#%s' % self.revision
168
168
 
169
169
    def get_absolute_url(self):
170
170
        if self.article.group is None:
245
245
        return content
246
246
 
247
247
    def compare_to(self, revision_from):
248
 
        other_content = u""
249
 
        if revision_from > 0:
 
248
        other_content = ""
 
249
        if int(revision_from) > 0:
250
250
            other_content = ChangeSet.objects.filter(
251
251
                article=self.article, revision__lte=revision_from).order_by('-revision')[0].get_content()
252
252
        diffs = dmp.diff_main(other_content, self.get_content())
253
 
        dmp.diff_cleanupSemantic(diffs)
 
253
        #dmp.diff_cleanupSemantic(diffs)
254
254
        return dmp.diff_prettyHtml(diffs)