1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 """
20 Modul zarzadzania zapytaniami do bazy danych.
21
22 Umozliwia wykonanie zapytania SQL dla wybranych elementow.
23
24 Dostepne znaczniki
25 ==================
26
27 1. B{TABLE} - Tabela do ktorej nalezy wstawic dane.
28 - I{name} - Nazwa tabeli
29 """
30
31 from django.core.management.base import CommandError
32 from ajango.core.generable import Generable
33 from ajango.core.hybrid import Hybrid
34 from ajango.database import get_table_by_name
37 """ Obiekt odpowiedzi. """
41 """ Pobierz odpowiedni element. """
42 return self.data.serializable_value(key)
44 """ Ustawienie danych. """
45 self.data = data
46
47 -class Query(Hybrid, Generable):
48 """ Obiekt zapytania. """
50 self.xml_name = "QUERY"
51 self.xml_permited = ["TABLE"]
52 self.table = ""
53 self.models = None
54 self._table_object = None
55 Hybrid.__init__(self, param)
57 """ Inicjalizacja z danych XML. """
58 pass
60 """ Inicjalizacja ze zmiennej slownikowej. """
61 self.table = param['table']
62 - def check(self, name, xmldoc_elem):
63 """ Odczytanie nodow wewnetrznych. """
64 if name == "TABLE":
65 if self.table != "":
66 raise CommandError("There are only one table name.")
67 self.table = xmldoc_elem.getAttribute('name')
69 """ Ustawienie modelu. """
70 self.models = models
71 - def execute(self, view, view_name='view'):
72 """ Wykonanie zadan obiektu. """
73 view.add_import("models", ".")
74 view.add_import("Query", "ajango.database.query")
75 view.add_line("query = Query({ 'table': %r })" % self.table)
76 view.add_line("query.set_models(models)")
77 view.add_line("%s.set_query(query)" % view_name)
79 """ Zwraca obiekt tabeli zgodny z biblioteka minidom. """
80 if self._table_object == None:
81 self._table_object = get_table_by_name(self.table, self.models)
82 return self._table_object
83 @staticmethod
85 """ Czesc wspolna dla metod pobierajacych dane 'get'. """
86 results = []
87 for elem in elems:
88 results.append(Result(elem))
89 return results
91 """ Pobiera dane na podstawie filtra. """
92 table = self._get_table_object()
93 id_param = option['id']
94 elems = table.objects.filter(id=id_param)
95 return Query._get_base(elems)
101
103 """ Klasa wprowadzajaca dane do bazy. """
105 self.table = table
106 self.models = None
107 self._table_object = None
108 self.data = None
110 """ Ustawienie modelu. """
111 self.models = models
113 """ Zwraca obiekt tabeli zgodny z biblioteka minidom. """
114 if self._table_object == None:
115 self._table_object = get_table_by_name(self.table, self.models)
116 return self._table_object
117 - def create_from_post(self, post):
118 """ Wprowadz do bazy dane na podstawie odpowiedzi formularza. """
119 table = self._get_table_object()
120 table_inputs = []
121 for elem in post.keys():
122 if elem == 'view_id' or elem.find('middlewaretoken') > -1:
123 continue
124 table_inputs.append(elem)
125 data = table()
126 for elem in table_inputs:
127 setattr(data, elem, post[elem])
128 self.data = data
130 """ Zapisanie danych do bazy. """
131 self.data.save()
132
134 """ Klasa edytujaca dane do bazy. """
135 - def __init__(self, table, editable_ob):
136 self.table = table
137 self.editable_ob = editable_ob
138 - def edit_with_post(self, post):
139 """ Wprowadz do bazy dane na podstawie odpowiedzi formularza. """
140 table_inputs = []
141 for elem in post.keys():
142 if elem == 'view_id' or elem.find('middlewaretoken') > -1 or elem == 'identity':
143 print ("Element pominiety: %s" % elem)
144 continue
145 print("Element: %s " % elem)
146 table_inputs.append(elem)
147 for elem in table_inputs:
148 setattr(self.editable_ob, elem, post[elem])
150 """
151 Ustawienie modelu. (metoda przestarzala)
152 """
153 pass
155 """ Zapisanie danych do bazy. """
156 self.editable_ob.save()
157