示例#1
0
文件: frag.py 项目: umeboshi2/mslemon
class FragViewer(BaseViewer):
    def __init__(self, request):
        BaseViewer.__init__(self, request)
        self.contacts = ContactManager(self.request.db)
        
        self._dispatch_table = dict(
            usercontactlist=self.list_user_contacts,
            globalcontactlist=self.list_global_contacts,
            contactlist=self.list_contacts,
            receivedcallscalendar=self.received_calls_calendar,)
        self.context = self.request.matchdict['context']
        self._view = self.context
        self.dispatch()

    def _contact_name_filter(self, query, id):
        Contact = self.contacts.base
        q = self.contacts.query()
        if id != 'ALL':
            q = q.filter(Contact.lastname.like('%s%%' % id))
        return q.order_by(Contact.lastname)

    def _render_contact_list(self, contacts):
        env = dict(contacts=contacts)
        template = 'mslemon:templates/consult/contact-list.mako'
        self.response = self.render(template, env)
        
    def list_user_contacts(self):
        id = self.request.matchdict['id']
        user_id = self.get_current_user_id()
        q = self.contacts.get_by_user_query(user_id)
        q = self._contact_name_filter(q, id)
        contacts = q.all()
        self._render_contact_list(contacts)
        
    def list_global_contacts(self):
        id = self.request.matchdict['id']
        q = self.contacts.get_global_query()
        q = self._contact_name_filter(q, id)
        contacts = q.all()
        self._render_contact_list(contacts)

        
    def list_contacts(self):
        self.list_user_contacts()
        

    def received_calls_calendar(self):
        template = 'mslemon:templates/consult/calendar-phone.mako'
        default_view = 'agendaDay'
        event_source = self.request.route_url(
            'consult_json', context='receivedcalls', id='calls')
        env = dict(default_view=default_view,
                   event_source=event_source,)
        content = self.render(template, env)
        self.response = content
示例#2
0
文件: frag.py 项目: umeboshi2/mslemon
 def __init__(self, request):
     BaseViewer.__init__(self, request)
     self.contacts = ContactManager(self.request.db)
     
     self._dispatch_table = dict(
         usercontactlist=self.list_user_contacts,
         globalcontactlist=self.list_global_contacts,
         contactlist=self.list_contacts,
         receivedcallscalendar=self.received_calls_calendar,)
     self.context = self.request.matchdict['context']
     self._view = self.context
     self.dispatch()
示例#3
0
    def __init__(self, request):
        BaseViewer.__init__(self, request)
        prepare_main_layout(self.request)
        self.clients = ClientManager(self.request.db)
        self.contacts = ContactManager(self.request.db)
        self._dispatch_table = dict(
            list=self.list_clients,
            add=self.add_client,
            delete=self.delete_client,
            confirmdelete=self.confirm_delete_client,
            editclient=self.edit_client,
            viewclient=self.view_client,
        )
        self.context = self.request.matchdict["context"]
        self._view = self.context

        menu = BaseMenu()
        menu.set_header("Actions")
        url = self.url(context="add", id="somebody")
        menu.append_new_entry("Add Client", url)
        self.layout.options_menus = dict(actions=menu)

        self.dispatch()
示例#4
0
class ClientViewer(BaseViewer):
    def __init__(self, request):
        BaseViewer.__init__(self, request)
        prepare_main_layout(self.request)
        self.clients = ClientManager(self.request.db)
        self.contacts = ContactManager(self.request.db)
        self._dispatch_table = dict(
            list=self.list_clients,
            add=self.add_client,
            delete=self.delete_client,
            confirmdelete=self.confirm_delete_client,
            editclient=self.edit_client,
            viewclient=self.view_client,
        )
        self.context = self.request.matchdict["context"]
        self._view = self.context

        menu = BaseMenu()
        menu.set_header("Actions")
        url = self.url(context="add", id="somebody")
        menu.append_new_entry("Add Client", url)
        self.layout.options_menus = dict(actions=menu)

        self.dispatch()

    def list_clients(self):
        clients = self.clients.all()
        env = dict(clients=clients)
        template = "mslemon:templates/consult/listclients.mako"
        self.layout.content = self.render(template, env)

    def _make_form(self):
        schema = AddClientSchema()
        clist = self.contacts.all()
        choices = [(c.id, "%s %s" % (c.firstname, c.lastname)) for c in clist]
        schema["contact"].widget = make_select_widget(choices)
        form = deform.Form(schema, buttons=("submit",))
        self.layout.resources.deform_auto_need(form)
        return schema, form

    def add_client(self):
        schema, form = self._make_form()
        if "submit" in self.request.POST:
            controls = self.request.POST.items()
            self.layout.subheader = "Client Submitted"
            try:
                data = form.validate(controls)
            except deform.ValidationFailure, e:
                self.layout.content = e.render()
                return
            name = data["name"]
            contact_id = int(data["contact"])
            address = data["address"]
            description = data["description"]
            c = self.clients.add(name, contact_id, address, description)
            content = "<p>Client %s added.</p>" % c.name
            self.layout.content = content
            return
        rendered = form.render()
        self.layout.content = rendered
        self.layout.subheader = "Add a Client"