[REF][MOV]Macros on their own packages, small fixes
This commit is contained in:
parent
2f5b50dcef
commit
a66309faa1
@ -17,7 +17,7 @@
|
||||
|
||||
" Odoo macros and helpers "
|
||||
|
||||
(require [hy-odoo.macros [if-python2]])
|
||||
(require [hy-odoo.macros.general [if-python2]])
|
||||
(import [os [path]]
|
||||
[hy-odoo.xml_base [xmlroot xmln]])
|
||||
|
||||
@ -31,30 +31,6 @@
|
||||
value (if (string? value) f"'{value}'" value))
|
||||
(return f"('{field}', '{op}', {value})")))
|
||||
|
||||
(defmacro o-cmod [model-name] `(. cls env [~model-name]))
|
||||
(defmacro o-mod [model-name] `(. self env [~model-name]))
|
||||
(defmacro o-cref [ref-name] `((. cls env ref) ~ref-name))
|
||||
(defmacro o-ref [ref-name] `((. self env ref) ~ref-name))
|
||||
|
||||
(defmacro hydm [hy-domain]
|
||||
"Generate Odoo domain from Hy like tuple domain"
|
||||
(setv op (second hy-domain)
|
||||
field (mangle (nth hy-domain 2))
|
||||
value (nth hy-domain 3))
|
||||
`(, ~field ~op ~value))
|
||||
|
||||
(defmacro hydict [dic]
|
||||
"Generate dict with mangled keys, from HyDict list"
|
||||
(setv mangled-dic
|
||||
(list
|
||||
(map
|
||||
(fn [pair]
|
||||
(if (even? (nth pair 0))
|
||||
(mangle (nth pair 1))
|
||||
(nth pair 1)))
|
||||
(enumerate dic))))
|
||||
`{~@mangled-dic})
|
||||
|
||||
; XML helpers functions and macros
|
||||
|
||||
(defn odoo [children] (xmlroot (xmln "odoo" {} children)))
|
||||
@ -171,37 +147,6 @@
|
||||
(field-inherit inherit)
|
||||
(field-arch arch)]))
|
||||
|
||||
; Odoo ORM macros
|
||||
|
||||
(defmacro/g! compute-fn [field dependencies body]
|
||||
"Macro to make computed definition smoother"
|
||||
(setv fname f"_compute_{(mangle field)}" descr f"Computes {field}"
|
||||
dependencies (list (map mangle dependencies)))
|
||||
(import [hy.models [HySymbol]])
|
||||
`(with-decorator (.depends api ~@dependencies)
|
||||
(defn ~(HySymbol fname) [self]
|
||||
~descr
|
||||
~body)))
|
||||
|
||||
(defmacro compute-field [fname body]
|
||||
"Takes fname Symbol and body to create computed field"
|
||||
(setv fn-name f"_compute_{(mangle fname)}")
|
||||
`(setv ~fname (~@body :compute ~fn-name)))
|
||||
|
||||
; Backend macros
|
||||
|
||||
(defmacro __ [sentence] `((py "_") ~sentence))
|
||||
|
||||
(defmacro logger []
|
||||
`(do
|
||||
(import logging)
|
||||
(setv _logger (.getLogger logging --name--))))
|
||||
|
||||
(defmacro pdb []
|
||||
`(do
|
||||
(import [pdb [set-trace]])
|
||||
(set-trace)))
|
||||
|
||||
; Hy-related helpers
|
||||
|
||||
(defn modulehytopy [module-path hy-files]
|
||||
|
@ -17,7 +17,8 @@
|
||||
|
||||
" XML helpers and macros "
|
||||
|
||||
(require [hy-odoo.macros [if-python2 ustr-cast]])
|
||||
(require [hy-odoo.macros.general [if-python2 ustr-cast]])
|
||||
(require [hy-odoo.macros.odoo [pdb]])
|
||||
(import [collections [namedtuple]]
|
||||
[functools [partial]]
|
||||
[os [path]]
|
||||
@ -40,12 +41,12 @@
|
||||
"Handling of children (ie non root) XML Nodes with/o text and subchildren
|
||||
(recursive)"
|
||||
(cond [(string? children) (setv (. parent text) children)]
|
||||
[(instance? XMLDictElement children
|
||||
[(instance? XMLDictElement children)
|
||||
(do
|
||||
(setv attrs (dfor [k v] (.items (. children attrs)) [(ustr-cast k) (ustr-cast v)]))
|
||||
(setv new-parent (.SubElement ET parent (. children tag) attrs)
|
||||
subchildren (.children children))
|
||||
(when subchildren) (xmlchild new-parent subchildren)))]
|
||||
subchildren (. children children))
|
||||
(when subchildren) (xmlchild new-parent subchildren))]
|
||||
[(instance? list children) (list( map (partial xmlchild parent) children))]
|
||||
[True (raise (TypeError "Invalid arguments for xmlchild"))]))
|
||||
|
||||
@ -60,7 +61,7 @@
|
||||
|
||||
(defn xml-write [filepath tree]
|
||||
"Write XML file according to filepath and given tree"
|
||||
(when (.endswith filepath ".py")
|
||||
(when (.endswith filepath ".hy")
|
||||
(if-python2
|
||||
(do
|
||||
(import [xml.etree.ElementTree :as ET]
|
||||
@ -69,6 +70,6 @@
|
||||
(.parseString minidom (.tostring ET tree)))))
|
||||
(setv output-xml (.decode (.tostring ET tree) "utf-8")))
|
||||
(setv output-path (.split (.abspath path filepath) "/")
|
||||
(cut output-path -1) (.replace (last output-path) ".py" "_views.xml")
|
||||
(cut output-path -1) [(.replace (last output-path) ".hy" "_views.xml")]
|
||||
output-path (.join "/" output-path))
|
||||
(with [output-file (open output-path "w")] (.write output-file output-xml))))
|
||||
|
Loading…
x
Reference in New Issue
Block a user