widelands-dev team mailing list archive
-
widelands-dev team
-
Mailing list archive
-
Message #14899
[Merge] lp:~widelands-dev/widelands-website/cleanup_ip_address_field into lp:widelands-website
kaputtnik has proposed merging lp:~widelands-dev/widelands-website/cleanup_ip_address_field into lp:widelands-website.
Commit message:
Remove the use of an IPAddressField from wiki, wlimages and pybb
Requested reviews:
Widelands Developers (widelands-dev)
Related bugs:
Bug #1780536 in Widelands Website: "Add a GDPR (german: DSGVO) to the website"
https://bugs.launchpad.net/widelands-website/+bug/1780536
For more details, see:
https://code.launchpad.net/~widelands-dev/widelands-website/cleanup_ip_address_field/+merge/356061
As far i can see the IPAddressField was stored without a specific reason, except allowing to post anonymously, which we don't allow at all.
This branch removes that field from wiki, wlimages and pybb.
Removing this field from threadedcomments will be done in a different branch, because the changes are too big for this branch.
--
Your team Widelands Developers is requested to review the proposed merge of lp:~widelands-dev/widelands-website/cleanup_ip_address_field into lp:widelands-website.
=== modified file 'pybb/admin.py'
--- pybb/admin.py 2017-04-29 19:52:28 +0000
+++ pybb/admin.py 2018-10-03 11:14:32 +0000
@@ -84,7 +84,7 @@
),
(_('Additional options'), {
'classes': ('collapse',),
- 'fields': (('created', 'updated'), 'user_ip')
+ 'fields': (('created', 'updated'),)
}
),
(_('Message'), {
=== modified file 'pybb/forms.py'
--- pybb/forms.py 2018-04-07 09:48:02 +0000
+++ pybb/forms.py 2018-10-03 11:14:32 +0000
@@ -25,7 +25,6 @@
self.user = kwargs.pop('user', None)
self.topic = kwargs.pop('topic', None)
self.forum = kwargs.pop('forum', None)
- self.ip = kwargs.pop('ip', None)
super(AddPostForm, self).__init__(*args, **kwargs)
if self.topic:
@@ -54,7 +53,7 @@
topic_is_new = False
topic = self.topic
- post = Post(topic=topic, user=self.user, user_ip=self.ip,
+ post = Post(topic=topic, user=self.user,
markup=self.cleaned_data['markup'],
body=self.cleaned_data['body'])
post.save(*args, **kwargs)
=== added file 'pybb/migrations/0003_remove_post_user_ip.py'
--- pybb/migrations/0003_remove_post_user_ip.py 1970-01-01 00:00:00 +0000
+++ pybb/migrations/0003_remove_post_user_ip.py 2018-10-03 11:14:32 +0000
@@ -0,0 +1,19 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.12 on 2018-10-02 19:31
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('pybb', '0002_auto_20161001_2046'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='post',
+ name='user_ip',
+ ),
+ ]
=== modified file 'pybb/models.py'
--- pybb/models.py 2018-04-08 14:40:17 +0000
+++ pybb/models.py 2018-10-03 11:14:32 +0000
@@ -203,7 +203,6 @@
body = models.TextField(_('Message'))
body_html = models.TextField(_('HTML version'))
body_text = models.TextField(_('Text version'))
- user_ip = models.GenericIPAddressField(_('User IP'), default='')
hidden = models.BooleanField(_('Hidden'), blank=True, default=False)
class Meta:
=== modified file 'pybb/views.py'
--- pybb/views.py 2018-04-08 14:40:17 +0000
+++ pybb/views.py 2018-10-03 11:14:32 +0000
@@ -20,7 +20,6 @@
from pybb import settings as pybb_settings
from pybb.orm import load_related
-from wl_utils import get_real_ip
from check_input.models import SuspiciousInput
try:
@@ -154,7 +153,7 @@
quote = quote_text(post.body, post.user, 'markdown')
form = build_form(AddPostForm, request, topic=topic, forum=forum,
- user=request.user, ip=get_real_ip(request),
+ user=request.user,
initial={'markup': 'markdown', 'body': quote})
if form.is_valid():
=== modified file 'templates/wiki/edit.html'
--- templates/wiki/edit.html 2017-01-15 12:03:04 +0000
+++ templates/wiki/edit.html 2018-10-03 11:14:32 +0000
@@ -77,7 +77,6 @@
{{ form.content_type }}
{{ form.object_id }}
{{ form.action }}
- {{ form.user_ip }}
<div>
<input id="id_preview" type="button" value="{% trans "Preview" %}" />
=== modified file 'templates/wiki/history.html'
--- templates/wiki/history.html 2016-04-26 16:10:04 +0000
+++ templates/wiki/history.html 2018-10-03 11:14:32 +0000
@@ -99,11 +99,7 @@
{{ change.modified|custom_date:user }}
</td>
<td>
- {% if change.is_anonymous_change %}
- {{ change.editor_ip }}
- {% else %}
{{ change.editor|user_link }}
- {% endif %}
</td>
<td class="italic">
{% if change.comment %}'{{ change.comment }}'{% endif %}
=== modified file 'wiki/admin.py'
--- wiki/admin.py 2017-12-03 11:43:47 +0000
+++ wiki/admin.py 2018-10-03 11:14:32 +0000
@@ -21,11 +21,7 @@
list_filter = ('title',)
ordering = ['-last_update']
fieldsets = (
- (None, {'fields': ('title', 'content', 'markup')}),
- ('Creator', {'fields': ('creator', 'creator_ip'),
- 'classes': ('collapse', 'wide')}),
- # ('Group', {'fields': ('object_id', 'content_type'),
- # 'classes': ('collapse', 'wide')}),
+ (None, {'fields': ('title', 'content', 'creator', 'markup')}),
)
raw_id_fields = ('creator',)
inlines = [InlineImages]
@@ -41,13 +37,11 @@
list_filter = ('article__title',)
ordering = ('-modified',)
fieldsets = (
- ('Article', {'fields': ('article',)}),
+ ('Article', {'fields': ('article', 'editor')}),
('Differences', {'fields': ('old_title', 'old_markup',
'content_diff')}),
('Other', {'fields': ('comment', 'modified', 'revision', 'reverted'),
'classes': ('collapse', 'wide')}),
- ('Editor', {'fields': ('editor', 'editor_ip'),
- 'classes': ('collapse', 'wide')}),
)
raw_id_fields = ('editor',)
=== modified file 'wiki/forms.py'
--- wiki/forms.py 2017-04-29 19:56:32 +0000
+++ wiki/forms.py 2018-10-03 11:14:32 +0000
@@ -22,7 +22,6 @@
summary = forms.CharField(widget=forms.Textarea)
comment = forms.CharField(required=False)
- user_ip = forms.CharField(widget=forms.HiddenInput)
content_type = forms.ModelChoiceField(
queryset=ContentType.objects.all(),
@@ -35,8 +34,7 @@
class Meta:
model = Article
- exclude = ('creator', 'creator_ip',
- 'group', 'created_at', 'last_update')
+ exclude = ('creator', 'group', 'created_at', 'last_update')
def clean_title(self):
"""Check for some errors regarding the title:
@@ -92,7 +90,6 @@
def save(self, *args, **kwargs):
# 0 - Extra data
- editor_ip = self.cleaned_data['user_ip']
comment = self.cleaned_data['comment']
# 2 - Save the Article
@@ -102,7 +99,6 @@
editor = getattr(self, 'editor', None)
group = getattr(self, 'group', None)
if self.is_new:
- article.creator_ip = editor_ip
if editor is not None:
article.creator = editor
article.group = group
@@ -113,6 +109,6 @@
# 4 - Create new revision
changeset = article.new_revision(
self.old_content, self.old_title, self.old_markup,
- comment, editor_ip, editor)
+ comment, editor)
return article, changeset
=== added file 'wiki/migrations/0003_auto_20180918_0836.py'
--- wiki/migrations/0003_auto_20180918_0836.py 1970-01-01 00:00:00 +0000
+++ wiki/migrations/0003_auto_20180918_0836.py 2018-10-03 11:14:32 +0000
@@ -0,0 +1,27 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.12 on 2018-09-18 08:36
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('wiki', '0002_auto_20161218_1056'),
+ ]
+
+ operations = [
+ migrations.AlterModelOptions(
+ name='article',
+ options={'default_permissions': ('change', 'add'), 'ordering': ['title'], 'verbose_name': 'Article', 'verbose_name_plural': 'Articles'},
+ ),
+ migrations.RemoveField(
+ model_name='article',
+ name='creator_ip',
+ ),
+ migrations.RemoveField(
+ model_name='changeset',
+ name='editor_ip',
+ ),
+ ]
=== modified file 'wiki/models.py'
--- wiki/models.py 2018-05-02 06:33:13 +0000
+++ wiki/models.py 2018-10-03 11:14:32 +0000
@@ -53,8 +53,6 @@
null=True, blank=True)
creator = models.ForeignKey(User, verbose_name=_('Article Creator'),
null=True)
- creator_ip = models.GenericIPAddressField(_('IP Address of the Article Creator'),
- blank=True, null=True)
created_at = models.DateTimeField(default=datetime.now)
last_update = models.DateTimeField(blank=True, null=True)
@@ -93,7 +91,7 @@
return self.images.all()
def new_revision(self, old_content, old_title, old_markup,
- comment, editor_ip, editor):
+ comment, editor):
"""Create a new ChangeSet with the old content."""
content_diff = diff(self.content, old_content)
@@ -101,7 +99,6 @@
cs = ChangeSet.objects.create(
article=self,
comment=comment,
- editor_ip=editor_ip,
editor=editor,
old_title=old_title,
old_markup=old_markup,
@@ -109,10 +106,10 @@
return cs
- def revert_to(self, revision, editor_ip, editor=None):
+ def revert_to(self, revision, editor=None):
"""Revert the article to a previuos state, by revision number."""
changeset = self.changeset_set.get(revision=revision)
- changeset.reapply(editor_ip, editor)
+ changeset.reapply(editor)
def compare(self, from_revision, to_revision):
"""Compares to revisions of this article."""
@@ -139,10 +136,9 @@
article = models.ForeignKey(Article, verbose_name=_(u"Article"))
- # Editor identification -- logged or anonymous
+ # Editor identification -- logged
editor = models.ForeignKey(User, verbose_name=_(u'Editor'),
null=True)
- editor_ip = models.GenericIPAddressField(_(u"IP Address of the Editor"))
# Revision number, starting from 1
revision = models.IntegerField(_(u"Revision Number"))
@@ -185,7 +181,7 @@
def is_anonymous_change(self):
return self.editor is None
- def reapply(self, editor_ip, editor):
+ def reapply(self, editor):
"""Return the Article to this revision."""
# XXX Would be better to exclude reverted revisions
@@ -218,7 +214,8 @@
old_content=old_content, old_title=old_title,
old_markup=old_markup,
comment='Reverted to revision #%s' % self.revision,
- editor_ip=editor_ip, editor=editor)
+ editor=editor
+ )
self.save()
=== modified file 'wiki/views.py'
--- wiki/views.py 2018-04-08 14:40:17 +0000
+++ wiki/views.py 2018-10-03 11:14:32 +0000
@@ -300,15 +300,13 @@
return redirect(new_article)
elif request.method == 'GET':
- user_ip = get_real_ip(request)
# TODO(Franku): Never worked IMHO
# lock = cache.get(title, None)
# if lock is None:
# lock = ArticleEditLock(title, request)
# lock.create_message(request)
-
- initial = {'user_ip': user_ip}
+ initial = {}
if group_slug is not None:
initial.update({'content_type': group_ct.id,
'object_id': group.id})
@@ -493,9 +491,9 @@
except Article.DoesNotExist:
# No existing article found -> reverting possible
if request.user.is_authenticated:
- article.revert_to(revision, get_real_ip(request), request.user)
+ article.revert_to(revision, request.user)
else:
- article.revert_to(revision, get_real_ip(request))
+ article.revert_to(revision)
return redirect(article)
# An article with this name exists
messages.error(
=== modified file 'wlimages/admin.py'
--- wlimages/admin.py 2016-12-13 18:28:51 +0000
+++ wlimages/admin.py 2018-10-03 11:14:32 +0000
@@ -31,7 +31,7 @@
actions = [delete_with_file]
fieldsets = (
(None, {'fields': ('image', 'name', 'date_submitted', 'revision')}),
- (_('Upload data:'), {'fields': ('user', 'editor_ip')}),
+ (_('Uploaded by:'), {'fields': ('user',)}),
(_('Content object:'), {
'fields': (('content_type', 'content_object'), 'object_id')}),
)
=== added file 'wlimages/migrations/0003_remove_image_editor_ip.py'
--- wlimages/migrations/0003_remove_image_editor_ip.py 1970-01-01 00:00:00 +0000
+++ wlimages/migrations/0003_remove_image_editor_ip.py 2018-10-03 11:14:32 +0000
@@ -0,0 +1,19 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.12 on 2018-09-18 09:01
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('wlimages', '0002_remove_image_url'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='image',
+ name='editor_ip',
+ ),
+ ]
=== modified file 'wlimages/models.py'
--- wlimages/models.py 2016-12-13 18:28:51 +0000
+++ wlimages/models.py 2018-10-03 11:14:32 +0000
@@ -24,6 +24,7 @@
def create(self, **keyw):
"""Makes sure that no image/revision pair is already in the
database."""
+ print('franku in create')
if 'name' not in keyw or 'revision' not in keyw:
raise IntegrityError('needs name and revision as keywords')
@@ -32,12 +33,12 @@
return super(ImageManager, self).create(**keyw)
- def create_and_save_image(self, user, image, content_type, object_id, ip):
+ def create_and_save_image(self, user, image, content_type, object_id):
# Use Django's get_valid_name() to get a safe filename
storage = FileSystemStorage()
safe_filename = storage.get_valid_name(image.name)
im = self.create(content_type=content_type, object_id=object_id,
- user=user, revision=1, name=image.name, editor_ip=ip)
+ user=user, revision=1, name=image.name)
path = '%swlimages/%s' % (MEDIA_ROOT, safe_filename)
destination = open(path, 'wb')
@@ -69,8 +70,6 @@
# User Field
user = models.ForeignKey(User)
- editor_ip = models.GenericIPAddressField(
- _('IP address'), null=True, blank=True)
# Date Fields
date_submitted = models.DateTimeField(
=== modified file 'wlimages/views.py'
--- wlimages/views.py 2018-04-03 05:18:03 +0000
+++ wlimages/views.py 2018-10-03 11:14:32 +0000
@@ -4,7 +4,6 @@
from django.shortcuts import get_object_or_404, render
from models import Image
-from wl_utils import get_real_ip
from forms import UploadImageForm
@@ -31,7 +30,7 @@
form = UploadImageForm(request.POST, request.FILES)
if form.is_valid(): # All validation rules pass
Image.objects.create_and_save_image(user=request.user, image=request.FILES['imagename'],
- content_type=ContentType.objects.get(pk=content_type), object_id=object_id, ip=get_real_ip(request))
+ content_type=ContentType.objects.get(pk=content_type), object_id=object_id)
return HttpResponseRedirect(next) # Redirect after POST
else:
form = UploadImageForm() # An unbound form
Follow ups