Source code for stoqlib.gui.editors.callseditor
# -*- coding: utf-8 -*-
# vi:si:et:sw=4:sts=4:ts=4
##
## Copyright (C) 2011 Async Open Source <http://www.async.com.br>
## All rights reserved
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU Lesser General Public License as published by
## the Free Software Foundation; either version 2 of the License, or
## (at your option) any later version.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU Lesser General Public License for more details.
##
## You should have received a copy of the GNU Lesser General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., or visit: http://www.gnu.org/.
##
## Author(s): Stoq Team <stoq-devel@async.com.br>
##
from stoqlib.api import api
from stoqlib.domain.person import Calls, LoginUser, Person
from stoqlib.gui.base.dialogs import run_dialog
from stoqlib.gui.editors.baseeditor import BaseEditor
from stoqlib.lib.dateutils import localtoday
from stoqlib.lib.translation import stoqlib_gettext
_ = stoqlib_gettext
[docs]class CallsEditor(BaseEditor):
model_type = Calls
model_name = _("Calls")
gladefile = 'CallsEditor'
help_section = 'client-call'
proxy_widgets = ('date',
'person_combo',
'description',
'message',
'attendant')
size = (400, 300)
def __init__(self, store, model, person, person_type):
self.person = person
self.person_type = person_type
BaseEditor.__init__(self, store, model)
# If person is not None, this means we already are in this person
# details dialog. No need for this option
if person:
self.details_button.hide()
self.details_button.set_sensitive(self.model.person is not None)
if self.model.person:
self.set_description(_('Call to %s') % self.model.person.name)
else:
self.set_description(_('call'))
[docs] def create_model(self, store):
return Calls(date=localtoday().date(),
description=u'',
message=u'',
person=self.person,
attendant=api.get_current_user(self.store),
store=store)
[docs] def setup_proxies(self):
self._fill_attendant_combo()
self._fill_person_combo()
self.proxy = self.add_proxy(self.model, self.proxy_widgets)
def _fill_person_combo(self):
if self.model.person:
self.person_combo.prefill([(self.model.person.name,
self.model.person)])
self.person_combo.set_sensitive(False)
else:
# Get only persons of person_type by joining with the table
query = (self.person_type.person_id == Person.id)
persons = self.store.find(Person, query)
self.person_combo.prefill(api.for_combo(persons, attr='name'))
def _fill_attendant_combo(self):
login_users = self.store.find(LoginUser)
self.attendant.prefill(api.for_person_combo(login_users))
[docs] def on_person_combo__changed(self, combo):
self.details_button.set_sensitive(combo.read() is not None)