Создание нового приёма готово
This commit is contained in:
parent
ac0a237b19
commit
4359ab54db
|
@ -162,7 +162,7 @@ def create_open_patient_win(patient_id):
|
||||||
patient_list = builder.get_object('patient_list')
|
patient_list = builder.get_object('patient_list')
|
||||||
class OpenPatientWinHandler:
|
class OpenPatientWinHandler:
|
||||||
def show_edit_patient_win(self, *a):
|
def show_edit_patient_win(self, *a):
|
||||||
edit_patient_win = create_edit_patient_win(patient_id, patient_list)
|
edit_patient_win = create_edit_patient_win(patient_id)
|
||||||
w.destroy()
|
w.destroy()
|
||||||
edit_patient_win.show_all()
|
edit_patient_win.show_all()
|
||||||
b.add_from_file(open_patient_win_file)
|
b.add_from_file(open_patient_win_file)
|
||||||
|
@ -179,7 +179,7 @@ def create_edit_patient_win(patient_id):
|
||||||
class EditPatientWinHandler:
|
class EditPatientWinHandler:
|
||||||
def edit_patient_win_close(self, *args):
|
def edit_patient_win_close(self, *args):
|
||||||
w.destroy()
|
w.destroy()
|
||||||
open_patient_win = create_open_patient_win(patient_id, patient_list)
|
open_patient_win = create_open_patient_win(patient_id)
|
||||||
open_patient_win.show_all()
|
open_patient_win.show_all()
|
||||||
def only_digits(self, entry):
|
def only_digits(self, entry):
|
||||||
text = entry.get_text()
|
text = entry.get_text()
|
||||||
|
@ -240,6 +240,7 @@ def create_new_patient_win():
|
||||||
def create_choose_patient_win(new_reception_b):
|
def create_choose_patient_win(new_reception_b):
|
||||||
b = Gtk.Builder()
|
b = Gtk.Builder()
|
||||||
patient_cont = new_reception_b.get_object('patient')
|
patient_cont = new_reception_b.get_object('patient')
|
||||||
|
save_button = new_reception_b.get_object('save_button')
|
||||||
patient_filter = ConditionalFilter(search_patients)
|
patient_filter = ConditionalFilter(search_patients)
|
||||||
class ChoosePatientWinHandler:
|
class ChoosePatientWinHandler:
|
||||||
def patient_filter_changed(self, filter_widget):
|
def patient_filter_changed(self, filter_widget):
|
||||||
|
@ -247,13 +248,26 @@ def create_choose_patient_win(new_reception_b):
|
||||||
self.patient_list_unselected()
|
self.patient_list_unselected()
|
||||||
pl.invalidate_filter()
|
pl.invalidate_filter()
|
||||||
def patient_list_selected(self, *a):
|
def patient_list_selected(self, *a):
|
||||||
accept_button = b.get_object('accept_button')
|
|
||||||
enable_widget([accept_button])
|
enable_widget([accept_button])
|
||||||
def patient_list_unselected(self, *a):
|
def patient_list_unselected(self, *a):
|
||||||
accept_button = b.get_object('accept_button')
|
|
||||||
disable_widget([accept_button])
|
disable_widget([accept_button])
|
||||||
|
def submit(self, button):
|
||||||
|
from mods.receptions import NewReceptionPatientLabel
|
||||||
|
row = pl.get_selected_row()
|
||||||
|
for c in patient_cont.get_children():
|
||||||
|
patient_cont.remove(c)
|
||||||
|
patient_label = NewReceptionPatientLabel()
|
||||||
|
patient_label.props.db_id = row.props.db_id
|
||||||
|
patient_label.set_markup(f'<span size="xx-large">{row.props.fio}</span>')
|
||||||
|
patient_cont.pack_start(patient_label, True, True, 0)
|
||||||
|
patient_cont.reorder_child(patient_label, 0)
|
||||||
|
patient_cont.show_all()
|
||||||
|
enable_widget([save_button])
|
||||||
|
w.destroy()
|
||||||
|
|
||||||
b.add_from_file(choose_patient_win_file)
|
b.add_from_file(choose_patient_win_file)
|
||||||
b.connect_signals(ChoosePatientWinHandler())
|
b.connect_signals(ChoosePatientWinHandler())
|
||||||
|
accept_button = b.get_object('accept_button')
|
||||||
pl = b.get_object('patient_list')
|
pl = b.get_object('patient_list')
|
||||||
pl.set_sort_func(patient_sort_func)
|
pl.set_sort_func(patient_sort_func)
|
||||||
pl.set_filter_func(patient_filter_func_factory(patient_filter, b))
|
pl.set_filter_func(patient_filter_func_factory(patient_filter, b))
|
||||||
|
|
|
@ -1,12 +1,17 @@
|
||||||
import gi
|
import gi
|
||||||
gi.require_version('Gtk', '3.0')
|
gi.require_version('Gtk', '3.0')
|
||||||
from gi.repository import Gtk, GObject, Gdk
|
from gi.repository import Gtk, GObject, Gdk
|
||||||
from mods.db import db, Reception
|
from mods.db import db, Reception, Patient
|
||||||
from mods.files import new_reception_win_file, reception_row_ui_str, reception_list_settings_win_file
|
from mods.files import new_reception_win_file, reception_row_ui_str, reception_list_settings_win_file
|
||||||
from mods.settings import s_get_reception_list, s_set_reception_list
|
from mods.settings import s_get_reception_list, s_set_reception_list
|
||||||
from mods.root import builder
|
from mods.root import builder
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
|
|
||||||
|
def add_reception(patient_id, reception_dt):
|
||||||
|
with db.atomic():
|
||||||
|
patient = Patient.get_by_id(patient_id)
|
||||||
|
return Reception.create(patient=patient, time=reception_dt)
|
||||||
|
|
||||||
def get_reception_timelist(rec_date):
|
def get_reception_timelist(rec_date):
|
||||||
s = s_get_reception_list()
|
s = s_get_reception_list()
|
||||||
dstart = datetime(rec_date.year, rec_date.month, rec_date.day, s.day_start[0], s.day_start[1])
|
dstart = datetime(rec_date.year, rec_date.month, rec_date.day, s.day_start[0], s.day_start[1])
|
||||||
|
@ -36,11 +41,11 @@ class ReceptionRow(Gtk.ListBoxRow):
|
||||||
self._scheduled = value
|
self._scheduled = value
|
||||||
class NewReceptionPatientLabel(Gtk.Label):
|
class NewReceptionPatientLabel(Gtk.Label):
|
||||||
@GObject.Property
|
@GObject.Property
|
||||||
def patient_db_id(self):
|
def db_id(self):
|
||||||
return self._patient_db_id
|
return self._db_id
|
||||||
@patient_db_id.setter
|
@db_id.setter
|
||||||
def db_id_setter(self, value):
|
def db_id_setter(self, value):
|
||||||
self._patient_db_id = value
|
self._db_id = value
|
||||||
|
|
||||||
def build_reception_row(reception_datetime):
|
def build_reception_row(reception_datetime):
|
||||||
b = Gtk.Builder()
|
b = Gtk.Builder()
|
||||||
|
@ -50,9 +55,10 @@ def build_reception_row(reception_datetime):
|
||||||
b.get_object('hour').set_text(reception_datetime.strftime('%H'))
|
b.get_object('hour').set_text(reception_datetime.strftime('%H'))
|
||||||
b.get_object('minute').set_text(reception_datetime.strftime('%M'))
|
b.get_object('minute').set_text(reception_datetime.strftime('%M'))
|
||||||
with db.atomic():
|
with db.atomic():
|
||||||
reception = Reception.select().where(Reception.time == reception_datetime)
|
q = Reception.select().where(Reception.time == reception_datetime)
|
||||||
row = ReceptionRow()
|
row = ReceptionRow()
|
||||||
if len(reception):
|
if len(q):
|
||||||
|
reception = q.get()
|
||||||
row.props.scheduled = True
|
row.props.scheduled = True
|
||||||
row.props.db_id = reception.id
|
row.props.db_id = reception.id
|
||||||
reception_cont = b.get_object('reception_cont')
|
reception_cont = b.get_object('reception_cont')
|
||||||
|
@ -77,11 +83,18 @@ def create_new_reception_win():
|
||||||
from mods.patients import create_choose_patient_win
|
from mods.patients import create_choose_patient_win
|
||||||
choose_patient_win = create_choose_patient_win(b)
|
choose_patient_win = create_choose_patient_win(b)
|
||||||
choose_patient_win.show_all()
|
choose_patient_win.show_all()
|
||||||
|
def save_reception(self, button):
|
||||||
|
pat_label = patient_cont.get_children()[0]
|
||||||
|
if pat_label.props.db_id < 0:
|
||||||
|
return
|
||||||
|
rec = add_reception(pat_label.props.db_id, row.props.datetime)
|
||||||
|
w.destroy()
|
||||||
|
redraw_reception_list(row.props.datetime)
|
||||||
b.add_from_file(new_reception_win_file)
|
b.add_from_file(new_reception_win_file)
|
||||||
b.connect_signals(NewReceptionWinHandler())
|
b.connect_signals(NewReceptionWinHandler())
|
||||||
#####
|
#####
|
||||||
patient_label = NewReceptionPatientLabel()
|
patient_label = NewReceptionPatientLabel()
|
||||||
patient_label.props.patient_db_id = -1
|
patient_label.props.db_id = -1
|
||||||
#patient_label.set_markup('<span size="xx-large">test</span>')
|
#patient_label.set_markup('<span size="xx-large">test</span>')
|
||||||
#####
|
#####
|
||||||
patient_cont = b.get_object('patient')
|
patient_cont = b.get_object('patient')
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
<property name="sensitive">False</property>
|
<property name="sensitive">False</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="receives_default">True</property>
|
<property name="receives_default">True</property>
|
||||||
|
<signal name="clicked" handler="submit" swapped="no"/>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkImage">
|
<object class="GtkImage">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
|
|
|
@ -15,10 +15,12 @@
|
||||||
<property name="title" translatable="yes">Новый приём</property>
|
<property name="title" translatable="yes">Новый приём</property>
|
||||||
<property name="show_close_button">True</property>
|
<property name="show_close_button">True</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton">
|
<object class="GtkButton" id="save_button">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
|
<property name="sensitive">False</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="receives_default">True</property>
|
<property name="receives_default">True</property>
|
||||||
|
<signal name="clicked" handler="save_reception" swapped="no"/>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkImage">
|
<object class="GtkImage">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
|
|
Loading…
Reference in New Issue