-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathmodels.py
74 lines (60 loc) · 2.3 KB
/
models.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import json
from django.db import models
from django.utils.safestring import mark_safe
from django.contrib.auth.models import User
from dashboard.gadgets import open_gadget
from dashboard.xml_utils import read_value_from_xml_field
class Dashboard(models.Model):
name = models.CharField(max_length=1024)
slug = models.SlugField(unique=True)
layout = models.TextField(null=True, blank=True)
user = models.ForeignKey(User, null=True, blank=True, on_delete=models.CASCADE)
def __unicode__(self):
return self.name
class Meta:
unique_together = (('name', 'user'),)
db_table = 'dashboard'
class DashboardItem(models.Model):
dashboard = models.ForeignKey(Dashboard, on_delete=models.CASCADE)
gadget = models.TextField()
column_number = models.IntegerField()
position = models.IntegerField()
colour = models.TextField(null=True, blank=False)
title = models.TextField(null=True, blank=False)
collapsed = models.BooleanField()
modifier = models.TextField(null=True, blank=False)
active = models.BooleanField()
class Meta:
db_table = 'dashboard_item'
def get_colour(self):
if self.colour is not None:
return self.colour
return open_gadget(self.gadget).gadget_info()['colour']
def get_icon(self):
return open_gadget(self.gadget).gadget_info()['icon']
def get_extra_fields(self):
fields = open_gadget(self.gadget).gadget_info()['fields']
new_fields = {}
for field in fields:
value = read_value_from_xml_field(field['id'], self.modifier)
if value != '':
field['value'] = value
new_fields[field['id']] = value
return new_fields
def get_extra_fields_json(self):
fields = open_gadget(self.gadget).gadget_info()['fields']
new_fields = []
for field in fields:
value = read_value_from_xml_field(field['id'], self.modifier)
if value != '':
field['value'] = value
new_fields.append(field)
return mark_safe(json.dumps(new_fields))
def get_collapsed_style(self):
if self.collapsed:
return ' collapsed'
else:
return ''
def make_html_id(self):
html_id = "id%d" % self.id
return html_id