Documentation ¶
Index ¶
- Constants
- Variables
- func DecodeResult(buf io.Reader, result interface{}) error
- type ActionReason
- type Attendance
- type Client
- func (c *Client) FetchEmployee(userId int, sid string) (*Employee, error)
- func (c Client) Login(login, password string) (*Session, error)
- func (c Client) ReadAllAttendances(sid string, uid int) ([]Attendance, error)
- func (c *Client) ReadAllLeaves(sid string, uid int) ([]Leave, error)
- func (c *Client) SearchEmployee(searchString string, sid string) (*Employee, error)
- type Date
- type Employee
- type Filter
- type JsonRpcError
- type JsonRpcRequest
- type JsonRpcResponse
- type Leave
- type LeaveType
- type ReadModelRequest
- type Session
Constants ¶
const ( DateFormat = "2006-01-02" TimeFormat = "15:04:05" DateTimeFormat = DateFormat + " " + TimeFormat )
Variables ¶
var (
ErrInvalidCredentials = errors.New("invalid credentials")
)
Functions ¶
func DecodeResult ¶
DecodeResult takes a buffer, decodes the intermediate JsonRpcResponse and then the contained "result" field into "result".
Types ¶
type ActionReason ¶
func (ActionReason) MarshalJSON ¶
func (reason ActionReason) MarshalJSON() ([]byte, error)
func (*ActionReason) String ¶
func (reason *ActionReason) String() string
func (*ActionReason) UnmarshalJSON ¶
func (reason *ActionReason) UnmarshalJSON(b []byte) error
type Attendance ¶
type Attendance struct { // ID is an unique ID for each attendance entry ID int `json:"id,omitempty"` // DateTime is the entry timestamp in UTC // Format: '2006-01-02 15:04:05' DateTime *Date `json:"name,omitempty"` // Action is either "sign_in" or "sign_out" Action string `json:"action,omitempty"` // Reason describes the "action reason" from Odoo. // // Example raw values returned from Odoo: // * `false` (if no specific reason given) // * `[1, "Outside office hours"]` // * `[2, "Outside office hours"]` // * `[3, "Sick / Medical Consultation"]` // * `[4, "Sick / Medical Consultation"]` // * `[5, "Authorities"]` // * `[6, "Authorities"]` // * `[27, "Requested Public Service"]` // * `[28, "Requested Public Service"]` // // NOTE: This field has special meaning when calculating the overtime. Reason *ActionReason `json:"action_desc,omitempty"` }
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client is the base struct that holds information required to talk to Odoo
func (*Client) FetchEmployee ¶ added in v0.3.0
FetchEmployee fetches an Employee for the given user ID. Returns nil if not found.
func (Client) Login ¶
Login tries to authenticate the user against Odoo. It returns a session if authentication was successful, or an error if the credentials were wrong, encoding or sending the request, or decoding the request failed.
func (Client) ReadAllAttendances ¶
func (c Client) ReadAllAttendances(sid string, uid int) ([]Attendance, error)
func (*Client) ReadAllLeaves ¶ added in v0.2.0
func (*Client) SearchEmployee ¶ added in v0.3.0
SearchEmployee searches for an Employee with the given searchString in the Employee.Name. If multiple employees are found, the first is returned. Returns nil if none found.
type Date ¶ added in v0.2.0
Date is an Odoo-specific format of a timestamp
func (Date) IsWithinMonth ¶ added in v0.2.0
func (Date) MarshalJSON ¶ added in v0.2.0
func (*Date) UnmarshalJSON ¶ added in v0.2.0
type Filter ¶
type Filter []interface{}
Filter to use in queries, usually in the format of [predicate, operator, value], eg ["employee_id.user_id.id", "=", 123]
type JsonRpcError ¶
type JsonRpcRequest ¶
type JsonRpcRequest struct { // ID should be a randomly generated value, either as a string or int. The // server will return this value in the response. ID string `json:"id,omitempty"` // Jsonrpc is always set to "2.0" Jsonrpc string `json:"jsonrpc,omitempty"` // Method to call, usually just "call" Method string `json:"method,omitempty"` // Params includes the actual request payload. Params interface{} `json:"params,omitempty"` }
JsonRpcRequest represents a generic json-rpc request
func NewJsonRpcRequest ¶
func NewJsonRpcRequest(params interface{}) *JsonRpcRequest
NewJsonRpcRequest returns a JSON RPC request with its protocol fileds populated:
* "id" will be set to a random UUID * "jsonrpc" will be set to "2.0" * "method" will be set to "call" * "params" will be set to whatever was passed in
type JsonRpcResponse ¶
type JsonRpcResponse struct { // ID that was sent with the request ID string `json:"id,omitempty"` // Jsonrpc is always set to "2.0" Jsonrpc string `json:"jsonrpc,omitempty"` // Result payload Result *json.RawMessage `json:"result,omitempty"` // Optional eror field Error *JsonRpcError `json:"error,omitempty"` }
type Leave ¶
type Leave struct { // ID is an unique ID for each leave entry ID int `json:"id"` // DateFrom is the starting timestamp of the leave in UTC // Format: DateTimeFormat DateFrom *Date `json:"date_from"` // DateTo is the ending timestamp of the leave in UTC // Format: DateTimeFormat DateTo *Date `json:"date_to"` // Type describes the "leave type" from Odoo. // // Example raw values returned from Odoo: // * `false` (if no specific reason given) // * `[4, "Unpaid"]` // * `[5, "Military Service"]` // * `[7, "Special Occasions"]` // * `[9, "Public Holiday"]` // * `[16, "Legal Leaves 2020"]` // * `[17, "Legal Leaves 2021"]` Type *LeaveType `json:"holiday_status_id,omitempty"` // State is the leave request state. // Example raw values returned from Odoo: // * `draft` (To Submit) // * `confirm` (To Approve) // * `validate` (Approved) State string `json:"state,omitempty"` }
func (Leave) SplitByDay ¶ added in v0.2.0
type LeaveType ¶ added in v0.2.0
func (LeaveType) MarshalJSON ¶ added in v0.2.0
func (*LeaveType) UnmarshalJSON ¶ added in v0.2.0
type ReadModelRequest ¶
type ReadModelRequest struct { Model string `json:"model,omitempty"` Domain []Filter `json:"domain,omitempty"` Fields []string `json:"fields,omitempty"` Limit int `json:"limit,omitempty"` Offset int `json:"offset,omitempty"` }
ReadModelRequest is used as "params" in requests to "dataset/search_read" endpoints.
type Session ¶
type Session struct { // ID is the session ID. // Is always set, no matter the authentication outcome. ID string `json:"session_id,omitempty"` // UID is the user's ID as an int, or the boolean `false` if authentication // failed. UID int `json:"uid,omitempty"` // Username is usually set to the LoginName that was sent in the request. // Is always set, no matter the authentication outcome. Username string `json:"username,omitempty"` }
Session information