2017-12-27 21:11:20 +00:00
|
|
|
import random
|
|
|
|
import string
|
|
|
|
|
|
|
|
from django.core.exceptions import ObjectDoesNotExist
|
|
|
|
from django.db import connection
|
|
|
|
|
|
|
|
from .models import Setting
|
|
|
|
|
|
|
|
|
|
|
|
def generate_password(length=32):
|
2017-12-28 19:44:01 +00:00
|
|
|
chars = string.ascii_letters + string.digits + string.punctuation
|
2017-12-27 21:11:20 +00:00
|
|
|
rng = random.SystemRandom()
|
2017-12-28 19:44:01 +00:00
|
|
|
return ''.join([rng.choice(chars) for i in range(length)])
|
|
|
|
|
2017-12-27 21:11:20 +00:00
|
|
|
|
|
|
|
def get_len(rawqueryset):
|
|
|
|
"""
|
|
|
|
Adds/Overrides a dynamic implementation of the length protocol to the
|
|
|
|
definition of RawQuerySet.
|
|
|
|
"""
|
|
|
|
def __len__(self):
|
|
|
|
params = ['{}'.format(p) for p in self.params]
|
2017-12-28 19:44:01 +00:00
|
|
|
sql = ''.join(('SELECT COUNT(*) FROM (',
|
|
|
|
rawqueryset.raw_query.format(tuple(params)),
|
|
|
|
') B;'))
|
2017-12-27 21:11:20 +00:00
|
|
|
cursor = connection.cursor()
|
|
|
|
cursor.execute(sql)
|
|
|
|
row = cursor.fetchone()
|
|
|
|
return row[0]
|
|
|
|
return __len__
|
|
|
|
|
2017-12-28 19:44:01 +00:00
|
|
|
|
2017-12-27 21:11:20 +00:00
|
|
|
def get_setting(name):
|
|
|
|
setting = Setting.objects.get(name=name)
|
|
|
|
return setting.get()
|
|
|
|
|
2017-12-28 19:44:01 +00:00
|
|
|
|
2017-12-27 21:11:20 +00:00
|
|
|
def set_setting(name, value, setting_type=None):
|
|
|
|
setting_types = {'Integer': 0, 'Float': 1, 'String': 2, 'Bool': 3}
|
|
|
|
try:
|
|
|
|
setting = Setting.objects.get(name=name)
|
|
|
|
setting.data = str(value)
|
|
|
|
if setting_type in setting_types:
|
|
|
|
setting.setting_type = setting_types[setting_type]
|
|
|
|
setting.save()
|
|
|
|
except ObjectDoesNotExist:
|
|
|
|
if setting_type in setting_types:
|
|
|
|
Setting.objects.create(name=name,
|
|
|
|
setting_type=setting_types[setting_type],
|
|
|
|
data=str(value))
|
|
|
|
else:
|
2017-12-28 19:44:01 +00:00
|
|
|
error_msg = 'New settings need type (Integer, Float, String, Bool)'
|
2017-12-27 21:11:20 +00:00
|
|
|
raise TypeError(error_msg)
|
|
|
|
return
|