diff --git a/src/pretix/base/migrations/0079_auto_20171010_2117.py b/src/pretix/base/migrations/0079_auto_20171010_2117.py new file mode 100644 index 0000000000..ca7dc1db0c --- /dev/null +++ b/src/pretix/base/migrations/0079_auto_20171010_2117.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.5 on 2017-10-10 21:17 +from __future__ import unicode_literals + +import django.db.models.deletion +import i18nfield.fields +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('pretixbase', '0078_auto_20171003_1650'), + ] + + operations = [ + migrations.AddField( + model_name='logentry', + name='api_token', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='pretixbase.TeamAPIToken'), + ), + migrations.AlterField( + model_name='event', + name='name', + field=i18nfield.fields.I18nCharField(max_length=200, verbose_name='Event name'), + ), + migrations.AlterField( + model_name='item', + name='category', + field=models.ForeignKey(blank=True, help_text='If you have many products, you can optionally sort them into categories to keep things organized.', null=True, on_delete=django.db.models.deletion.PROTECT, related_name='items', to='pretixbase.ItemCategory', verbose_name='Category'), + ), + ] diff --git a/src/pretix/base/models/base.py b/src/pretix/base/models/base.py index 7655f48aaa..137b3c1af9 100644 --- a/src/pretix/base/models/base.py +++ b/src/pretix/base/models/base.py @@ -36,7 +36,7 @@ def cached_file_delete(sender, instance, **kwargs): class LoggingMixin: - def log_action(self, action, data=None, user=None): + def log_action(self, action, data=None, user=None, api_token=None): """ Create a LogEntry object that is related to this object. See the LogEntry documentation for details. @@ -53,7 +53,9 @@ class LoggingMixin: event = self elif hasattr(self, 'event'): event = self.event - l = LogEntry(content_object=self, user=user, action_type=action, event=event) + if not user.is_authenticated: + user = None + l = LogEntry(content_object=self, user=user, action_type=action, event=event, api_token=api_token) if data: l.data = json.dumps(data, cls=CustomJSONEncoder) l.save() diff --git a/src/pretix/base/models/log.py b/src/pretix/base/models/log.py index 748585146e..0241f8987a 100644 --- a/src/pretix/base/models/log.py +++ b/src/pretix/base/models/log.py @@ -35,6 +35,7 @@ class LogEntry(models.Model): content_object = GenericForeignKey('content_type', 'object_id') datetime = models.DateTimeField(auto_now_add=True, db_index=True) user = models.ForeignKey('User', null=True, blank=True, on_delete=models.PROTECT) + api_token = models.ForeignKey('TeamAPIToken', null=True, blank=True, on_delete=models.PROTECT) event = models.ForeignKey('Event', null=True, blank=True, on_delete=models.CASCADE) action_type = models.CharField(max_length=255) data = models.TextField(default='{}')