;;; some utilities for merging plists
(defun plist-nunion (new-props plist)
- (loop for cons on new-props
- for i from 1
- when (oddp i)
+ (loop for cons on new-props by #'cddr
do (setf (getf plist (first cons)) (second cons))
finally (return plist)))
(defmethod default-attributes ((model t))
(append (mapcar #'(lambda (s) (cons (car s) (gen-pslot (if (meta-model:foreign-key-p model (car s))
- 'ucw::foreign-key
(cadr s))
(string (car s)) (car s))))
(meta-model:list-slot-types model))
:accessor use-instance-class-p
:initform t)
(initializedp :initform nil)
- (modifiedp :accessor modifiedp :initform nil)))
+ (modifiedp :accessor modifiedp :initform nil)
+ (modifications :accessor modifications :initform nil)))
(defmethod attributes :around ((self mewa))
(setf (slots self) (find-slot-presentations self)))
-(defmethod render-on :around ((res response) (self mewa))
- (unless (slot-value self 'initializedp)
- (initialize-slots self))
- (setf (slot-value self 'initializedp) t)
- (call-next-method))
-
(defmethod make-presentation ((object t) &key (type :viewer) (initargs nil))
(let* ((p (make-instance 'mewa-object-presentation))
type))
(plist-union initargs (cddr a)))))
(setf (slot-value i 'instance) object)
+ (initialize-slots i)
+ (setf (slot-value i 'initializedp) t)
i))