bsw/jbe@0: Delegation = mondelefant.new_class() bsw/jbe@0: Delegation.table = 'delegation' bsw/jbe@0: bsw/jbe@0: Delegation:add_reference{ bsw/jbe@0: mode = 'm1', bsw/jbe@0: to = "Member", bsw/jbe@0: this_key = 'truster_id', bsw/jbe@0: that_key = 'id', bsw/jbe@0: ref = 'truster', bsw/jbe@0: } bsw/jbe@0: bsw/jbe@0: Delegation:add_reference{ bsw/jbe@0: mode = 'm1', bsw/jbe@0: to = "Member", bsw/jbe@0: this_key = 'trustee_id', bsw/jbe@0: that_key = 'id', bsw/jbe@0: ref = 'trustee', bsw/jbe@0: } bsw/jbe@0: bsw/jbe@0: Delegation:add_reference{ bsw/jbe@0: mode = 'm1', bsw@599: to = "Unit", bsw@599: this_key = 'unit_id', bsw@599: that_key = 'id', bsw@599: ref = 'unit', bsw@599: } bsw@599: bsw@599: Delegation:add_reference{ bsw@599: mode = 'm1', bsw/jbe@0: to = "Area", bsw/jbe@0: this_key = 'area_id', bsw/jbe@0: that_key = 'id', bsw/jbe@0: ref = 'area', bsw/jbe@0: } bsw/jbe@0: bsw/jbe@0: Delegation:add_reference{ bsw/jbe@0: mode = 'm1', bsw/jbe@0: to = "Issue", bsw/jbe@0: this_key = 'issue_id', bsw/jbe@0: that_key = 'id', bsw/jbe@0: ref = 'issue', bsw/jbe@0: } bsw/jbe@0: bsw@248: function Delegation:by_pk(truster_id, unit_id, area_id, issue_id) bsw/jbe@0: local selector = self:new_selector():optional_object_mode() bsw/jbe@0: selector:add_where{ "truster_id = ?", truster_id } bsw@248: if unit_id then bsw@248: selector:add_where{ "unit_id = ?", unit_id } bsw@248: else bsw@248: selector:add_where("unit_id ISNULL") bsw@248: end bsw/jbe@0: if area_id then bsw/jbe@0: selector:add_where{ "area_id = ?", area_id } bsw/jbe@0: else bsw/jbe@0: selector:add_where("area_id ISNULL") bsw/jbe@0: end bsw/jbe@0: if issue_id then bsw/jbe@0: selector:add_where{ "issue_id = ? ", issue_id } bsw/jbe@0: else bsw/jbe@0: selector:add_where("issue_id ISNULL ") bsw/jbe@0: end bsw/jbe@0: return selector:exec() bsw@248: end bsw@558: bsw@558: function Delegation:selector_for_broken(member_id) bsw@558: return Delegation:new_selector() bsw@605: :left_join("issue", nil, "issue.id = delegation.issue_id") bsw@605: :add_where("issue.id ISNULL OR issue.closed ISNULL") bsw@558: :join("member", nil, "delegation.trustee_id = member.id") bsw@558: :add_where{"delegation.truster_id = ?", member_id} bsw@558: :add_where{"member.active = 'f' OR (member.last_activity IS NULL OR age(member.last_activity) > ?::interval)", config.delegation_warning_time } bsw@558: end bsw@558: