django-helpdesk/helpdesk/migrations/0020_depickle_user_settings.py
2025-03-22 15:29:19 -10:00

99 lines
4.0 KiB
Python

# Generated by Django 2.0.7 on 2018-10-19 14:11
from django.db import migrations, models
import helpdesk.models
def unpickle_settings(settings_pickled):
# return a python dictionary representing the pickled data.
try:
import pickle
except ImportError:
import cPickle as pickle
try:
# Python 2 support
from base64 import urlsafe_b64decode as b64decode
except ImportError:
# Python 3 support
from base64 import decodebytes as b64decode
try:
return pickle.loads(b64decode(settings_pickled.encode("utf-8")))
except Exception:
return {}
def move_old_values(apps, schema_editor):
UserSettings = apps.get_model("helpdesk", "UserSettings")
db_alias = schema_editor.connection.alias
for user_settings in UserSettings.objects.using(db_alias).all():
if user_settings.settings_pickled:
settings_dict = unpickle_settings(user_settings.settings_pickled)
for setting, value in settings_dict.items():
user_settings.__setattr__(setting, value)
class Migration(migrations.Migration):
dependencies = [
("helpdesk", "0019_ticket_secret_key"),
]
operations = [
migrations.AddField(
model_name="usersettings",
name="email_on_ticket_assign",
field=models.BooleanField(
default=helpdesk.models.email_on_ticket_assign_default,
help_text="If you are assigned a ticket via the web, do you want to receive an e-mail?",
verbose_name="E-mail me when assigned a ticket?",
),
),
migrations.AddField(
model_name="usersettings",
name="email_on_ticket_change",
field=models.BooleanField(
default=helpdesk.models.email_on_ticket_change_default,
help_text="If you're the ticket owner and the ticket is changed via the web by somebody else, do you want to receive an e-mail?",
verbose_name="E-mail me on ticket change?",
),
),
migrations.AddField(
model_name="usersettings",
name="login_view_ticketlist",
field=models.BooleanField(
default=helpdesk.models.login_view_ticketlist_default,
help_text="Display the ticket list upon login? Otherwise, the dashboard is shown.",
verbose_name="Show Ticket List on Login?",
),
),
migrations.AddField(
model_name="usersettings",
name="tickets_per_page",
field=models.IntegerField(
choices=[(10, "10"), (25, "25"), (50, "50"), (100, "100")],
default=helpdesk.models.tickets_per_page_default,
help_text="How many tickets do you want to see on the Ticket List page?",
verbose_name="Number of tickets to show per page",
),
),
migrations.AddField(
model_name="usersettings",
name="use_email_as_submitter",
field=models.BooleanField(
default=helpdesk.models.use_email_as_submitter_default,
help_text="When you submit a ticket, do you want to automatically use your e-mail address as the submitter address? You can type a different e-mail address when entering the ticket if needed, this option only changes the default.",
verbose_name="Use my e-mail address when submitting tickets?",
),
),
migrations.AlterField(
model_name="usersettings",
name="settings_pickled",
field=models.TextField(
blank=True,
help_text="DEPRECATED! This is a base64-encoded representation of a pickled Python dictionary. Do not change this field via the admin.",
null=True,
verbose_name="DEPRECATED! Settings Dictionary DEPRECATED!",
),
),
migrations.RunPython(move_old_values),
]