Add api_token field to log entries

This commit is contained in:
Raphael Michel
2017-10-11 00:07:47 +02:00
parent f342e46f53
commit 07473f854e
3 changed files with 37 additions and 2 deletions

View File

@@ -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'),
),
]

View File

@@ -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()

View File

@@ -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='{}')