def get_item_value(self, resource, context, item, column): item_brain, item_resource = item #if column == 'description': # return item_resource.get_property('description') if column == 'review': return item_resource.get_title(), context.get_link(item_resource) elif column == 'product': product = item_resource.parent.parent return product.get_title(), context.get_link(product) elif column == 'author': author = item_resource.get_property('author') if author: user = context.root.get_resource('/users/%s' % author) return user.get_title(), context.get_link(user) return MSG(u'Anonymous'), None elif column == 'remote_ip': return item_resource.get_property('remote_ip') elif column == 'note': return item_resource.get_property('note') elif column == 'ctime': ctime = item_resource.get_property('ctime') accept = context.accept_language return format_datetime(ctime, accept) #elif column == 'images': # namespace = {'images': item_resource.get_images(context)} # events = XMLParser(""" # <a href="${image/src}/;download" target="_blank" stl:repeat="image images" # rel="fancybox"> # <img src="${image/src}/;thumb?width=50&height=50"/> # </a> # """, stl_namespaces) # return stl(events=events, namespace=namespace) return SearchTableFolder_View.get_item_value(self, resource, context, item, column)
def get_item_value(self, resource, context, item, column): item_brain, item_resource = item # Default columns if column == "name": name = item_brain.name return name, name elif column == "title": return item_resource.get_title(), context.get_link(item_resource) elif column == "backlinks": abspath = item_resource.get_canonical_path() search = context.root.search(links=str(abspath)) return len(search), "%s/;backlinks" % context.get_link(item_resource) # Guess from schema schema = item_resource.get_metadata_schema() computed_schema = getattr(item_resource, "computed_schema", {}) if schema.has_key(column): datatype = schema[column] value = item_resource.get_property(column) if issubclass(datatype, Enumerate): return datatype.get_value(value) elif issubclass(datatype, Boolean): return bool_to_img(value) elif issubclass(datatype, DateTime): if value is None: return u"-" accept = context.accept_language return format_datetime(value, accept) return value # Computed columns elif computed_schema.has_key(column): return getattr(item_resource, column) # Other column proxy = super(SearchTableFolder_View, self) return proxy.get_item_value(resource, context, item, column)
def get_namespace(self, context): # Build namespace namespace = { 'author': self.get_namespace_author(context), 'href': context.get_link(self), 'images': self.get_images(context) } for key in ['title', 'note', 'advantages', 'disadvantages']: namespace[key] = self.get_property(key) # Add informations about product product = self.parent.parent namespace['product'] = { 'link': context.get_link(product), 'title': product.get_title() } # Context here = context.resource namespace['is_on_user_view'] = here.class_id == 'user' namespace['is_on_product_view'] = here.class_id == 'product' # Description description = self.get_property('description').encode('utf-8') description = XMLContent.encode(description) namespace['description'] = XMLParser(description.replace( '\n', '<br/>')) # ctime ctime = self.get_property('ctime') accept = context.accept_language namespace['ctime'] = format_datetime(ctime, accept) # Recommendation recommended = self.get_property('recommended') or 0 namespace['recommendation'] = bool(int(recommended)) return namespace
def get_namespace(self, context): # Build namespace namespace = {'author': self.get_namespace_author(context), 'href': context.get_link(self), 'images': self.get_images(context)} for key in ['title', 'note', 'advantages', 'disadvantages']: namespace[key] = self.get_property(key) # Add informations about product product = self.parent.parent namespace['product'] = {'link': context.get_link(product), 'title': product.get_title()} # Context here = context.resource namespace['is_on_user_view'] = here.class_id == 'user' namespace['is_on_product_view'] = here.class_id == 'product' # Description description = self.get_property('description').encode('utf-8') description = XMLContent.encode(description) namespace['description'] = XMLParser(description.replace('\n', '<br/>')) # ctime ctime = self.get_property('ctime') accept = context.accept_language namespace['ctime'] = format_datetime(ctime, accept) # Recommendation recommended = self.get_property('recommended') or 0 namespace['recommendation'] = bool(int(recommended)) return namespace
def get_item_value(self, resource, context, item, column): item_brain, item_resource = item # Default columns if column == 'name': name = item_brain.name return name, name elif column == 'title': return item_resource.get_title(), context.get_link(item_resource) elif column == 'backlinks': abspath = item_resource.get_canonical_path() search = context.root.search(links=str(abspath)) return len( search), '%s/;backlinks' % context.get_link(item_resource) # Guess from schema schema = item_resource.get_metadata_schema() computed_schema = getattr(item_resource, 'computed_schema', {}) if schema.has_key(column): datatype = schema[column] value = item_resource.get_property(column) if issubclass(datatype, Enumerate): return datatype.get_value(value) elif issubclass(datatype, Boolean): return bool_to_img(value) elif issubclass(datatype, DateTime): if value is None: return u'-' accept = context.accept_language return format_datetime(value, accept) return value # Computed columns elif computed_schema.has_key(column): return getattr(item_resource, column) # Other column proxy = super(SearchTableFolder_View, self) return proxy.get_item_value(resource, context, item, column)
def get_record_namespace(self, context, record): get_value = self.handler.get_record_value namespace = {'id': record.id, 'complete_id': '%s-%s' % (self.parent.name, record.id), 'payment_mode': self.parent.name} # Base namespace for key in self.handler.record_properties.keys(): namespace[key] = get_value(record, key) # Amount amount = get_value(record, 'amount') namespace['amount'] = format_price(amount) # User users = context.root.get_resource('users') username = get_value(record, 'user') or '0' user = users.get_resource(username) namespace['username'] = username namespace['user_title'] = user.get_title() namespace['user_email'] = user.get_property('email') # State namespace['advance_state'] = None # Timestamp accept = context.accept_language value = self.handler.get_record_value(record, 'ts') namespace['ts'] = format_datetime(value, accept) return namespace
def get_item_value(self, resource, context, item, column): handler = resource.handler if column == 'user': user_name = handler.get_record_value(item, 'user') user = context.root.get_resource('users/%s' % user_name) return user.get_title(), '../%s' % user_name elif column == 'ts': ts = handler.get_record_value(item, 'ts') return format_datetime(ts, context.accept_language)
def get_namespace_messages(self, context): messages = [] get_value = self.handler.get_record_value for record in self.handler.get_records(): author = get_value(record, 'author') author = context.root.get_resource('/users/%s' % author) ts = get_value(record, 'ts') message = get_value(record, 'message').replace('\n', '<br/>') messages.append({'id': record.id, 'author': author.get_title(), 'message': XMLParser(message.encode('utf-8')), 'private': get_value(record, 'private'), 'seen': get_value(record, 'seen'), 'ts': format_datetime(ts, context.accept_language)}) return messages
def get_record_namespace(self, context, record): namespace = {} # Id namespace['id'] = record.id namespace['shipping_mode'] = self.parent.get_title() # Complete id namespace['complete_id'] = '%s-%s' % (self.parent.name, record.id) # Base namespace for key in self.handler.record_properties.keys(): namespace[key] = self.handler.get_record_value(record, key) # State namespace['state'] = ShippingStates.get_value(namespace['state']) # Timestamp accept = context.accept_language value = self.handler.get_record_value(record, 'ts') namespace['ts'] = format_datetime(value, accept) return namespace
def get_item_value(self, resource, context, item, column): if column == 'numero': state = item.workflow_state href = './;order_view?id=%s' % item.name name = item.get_reference() return XMLParser(numero_template % (states_color[state], href, name)) elif column == 'state': state = item.workflow_state state_title = states[state].gettext().encode('utf-8') href = './;order_view?id=%s' % item.name return XMLParser(numero_template % (states_color[state], href, state_title)) elif column == 'total_price': price = item.get_property(column) return format_price(price) elif column == 'creation_datetime': value = item.get_property(column) accept = context.accept_language return format_datetime(value, accept=accept) return BrowseForm.get_item_value(self, resource, context, item, column)
def get_namespace(self, context): root = context.root # Get dynamic user values dynamic_user_value = ResourceDynamicProperty() dynamic_user_value.schema = self.get_dynamic_schema() dynamic_user_value.resource = self # Module shop_module = ModuleLoader() shop_module.context = context shop_module.here = self # Get modules items modules_items = [] search = context.root.search(is_shop_user_module=True) for brain in search.get_documents(): shop_user_module = root.get_resource(brain.abspath) modules_items.append({ 'name': shop_user_module.element_name, 'title': shop_user_module.element_title, 'href': shop_user_module.element_name, 'img': shop_user_module.class_icon48 }) # Ctime ctime = self.get_property('ctime') accept = context.accept_language # ACLS ac = self.get_access_control() is_authenticated = ac.is_authenticated(context.user, self) is_owner = context.user is not None and context.user.name == self.name # Build namespace return { 'name': self.name, 'link': context.get_link(self), 'module': shop_module, 'dynamic_user_value': dynamic_user_value, 'is_owner': is_owner, 'is_authenticated': is_authenticated, 'ctime': format_datetime(ctime, accept) if ctime else None, # XXX Why ? 'items': self.base_items + modules_items }
def set_value(self, resource, context, name, form): proxy = super(WikiPage_Edit, self) if name == 'data': proxy.set_value(resource, context, name, form) # Warn about syntax errors message = None try: html = resource.view.GET(resource, context) except SystemMessage, e: # Critical message = ERR_SYNTAX_ERROR(error=e.message) else: # Non-critical if 'class="system-message"' in html: message = ERR_SYNTAX_WARNING else: accept = context.accept_language time = format_datetime(datetime.now(), accept=accept) message = messages.MSG_CHANGES_SAVED2(time=time) # Keep it to override context.message later context.wiki_message = message # Save even if broken return False
def get_namespace(self, context): root = context.root # Get dynamic user values dynamic_user_value = ResourceDynamicProperty() dynamic_user_value.schema = self.get_dynamic_schema() dynamic_user_value.resource = self # Module shop_module = ModuleLoader() shop_module.context = context shop_module.here = self # Get modules items modules_items = [] search = context.root.search(is_shop_user_module=True) for brain in search.get_documents(): shop_user_module = root.get_resource(brain.abspath) modules_items.append( {'name': shop_user_module.element_name, 'title': shop_user_module.element_title, 'href': shop_user_module.element_name, 'img': shop_user_module.class_icon48}) # Ctime ctime = self.get_property('ctime') accept = context.accept_language # ACLS ac = self.get_access_control() is_authenticated = ac.is_authenticated(context.user, self) is_owner = context.user is not None and context.user.name == self.name # Build namespace return {'name': self.name, 'link': context.get_link(self), 'module': shop_module, 'dynamic_user_value': dynamic_user_value, 'is_owner': is_owner, 'is_authenticated': is_authenticated, 'ctime': format_datetime(ctime, accept) if ctime else None, # XXX Why ? 'items': self.base_items + modules_items}
def get_namespace(self, resource, context): # Get some resources shop = get_shop(resource) addresses = shop.get_resource('addresses').handler # Build namespace namespace = resource.get_namespace(context) for key in ['is_payed', 'is_sent']: namespace[key] = resource.get_property(key) # States namespace['is_canceled'] = resource.get_statename() == 'cancel' namespace['state'] = {'title': states[resource.workflow_state], 'color': states_color[resource.workflow_state]} namespace['transitions'] = SelectWidget('transition').to_html(Order_Transitions, None) # Bill has_bill = resource.get_resource('bill', soft=True) is not None namespace['has_bill'] = has_bill has_order = resource.get_resource('order', soft=True) is not None namespace['has_order'] = has_order # Order creation_datetime = resource.get_property('creation_datetime') namespace['order'] = { 'id': resource.name, 'date': format_datetime(creation_datetime, context.accept_language)} for key in ['shipping_price', 'total_price', 'total_weight']: namespace['order'][key] =resource.get_property(key) namespace['order']['shipping_way'] = ShippingWaysEnumerate.get_value( resource.get_property('shipping')) namespace['order']['payment_way'] = PaymentWaysEnumerate.get_value( resource.get_property('payment_mode')) # Delivery and shipping addresses get_address = addresses.get_record_namespace delivery_address = resource.get_property('delivery_address') bill_address = resource.get_property('bill_address') namespace['delivery_address'] = get_address(delivery_address) namespace['bill_address'] = get_address(bill_address) # Price for key in ['shipping_price', 'total_price']: price = resource.get_property(key) namespace[key] = format_price(price) # Messages messages = resource.get_resource('messages') namespace['messages'] = messages.get_namespace_messages(context) # Payments (We show last payment) namespace['payments'] = [] payments = shop.get_resource('payments') for payment_way, payment_record in payments.get_payments_records(context, resource.name): payment_table = payment_way.get_resource('payments').handler # Get specific view (useless now ?) view = payment_way.order_edit_view view = view( payment_way=payment_way, payment_table=payment_table, record=payment_record, id_payment=payment_record.id) view = view.GET(resource, context) # Details details = [] for name, datatype in payment_table.record_properties.items(): if name in ('resource_validator', 'state', 'ref', 'user'): continue value = payment_table.get_record_value(payment_record, name) if issubclass(datatype, Enumerate): value = datatype.get_value(value) details.append({'title': getattr(datatype, 'title', name), 'value': value}) # Is payed ? is_payed = payment_table.get_record_value(payment_record, 'state') # BUild namespace namespace['payments'].append({'is_payed': is_payed, 'title': payment_way.get_title(), 'details': details, 'state': payment_table.get_record_value(payment_record, 'state'), 'view': view}) namespace['last_payment'] = namespace['payments'][0] namespace['payment_ways'] = SelectWidget('payment_way', has_empty_option=False).to_html(PaymentWaysEnumerate, resource.get_property('payment_way')) # Shippings is_sent = resource.get_property('is_sent') shippings = shop.get_resource('shippings') shipping_way = resource.get_property('shipping') if shipping_way == 'default': shippings_records = None else: shipping_way_resource = shop.get_resource('shippings/%s/' % shipping_way) shippings_records = shippings.get_shippings_records(context, resource.name) if is_sent: view = None if shippings_records: # We show last delivery last_delivery = shippings_records[0] edit_record_view = shipping_way_resource.order_edit_view view = edit_record_view.GET(resource, shipping_way_resource, last_delivery, context) elif shippings_records is None and shipping_way == 'default': view = None else: # We have to add delivery add_record_view = shipping_way_resource.order_add_view if add_record_view: view = add_record_view.GET(shipping_way_resource, context) else: view = None namespace['shipping_ways'] = SelectWidget('shipping_way', has_empty_option=False).to_html(ShippingWaysEnumerate, shipping_way) namespace['shipping'] = {'is_sent': is_sent, 'view': view} return namespace
def get_pub_datetime_formatted(self, language=None): pub_datetime = self.get_pub_datetime() if pub_datetime is None: return None return format_datetime(self.get_pub_datetime())
def format_datetime(self, datetime, tz=None): datetime = self.fix_tzinfo(datetime, tz) # Ok return format_datetime(datetime, accept=self.accept_language)
def get_namespace(self, resource, context): # Get some resources shop = get_shop(resource) addresses = shop.get_resource('addresses').handler # Build namespace namespace = resource.get_namespace(context) for key in ['is_payed', 'is_sent']: namespace[key] = resource.get_property(key) # States namespace['is_canceled'] = resource.get_statename() == 'cancel' namespace['state'] = { 'title': states[resource.workflow_state], 'color': states_color[resource.workflow_state] } namespace['transitions'] = SelectWidget('transition').to_html( Order_Transitions, None) # Bill has_bill = resource.get_resource('bill', soft=True) is not None namespace['has_bill'] = has_bill has_order = resource.get_resource('order', soft=True) is not None namespace['has_order'] = has_order # Order creation_datetime = resource.get_property('creation_datetime') namespace['order'] = { 'id': resource.name, 'date': format_datetime(creation_datetime, context.accept_language) } for key in ['shipping_price', 'total_price', 'total_weight']: namespace['order'][key] = resource.get_property(key) namespace['order']['shipping_way'] = ShippingWaysEnumerate.get_value( resource.get_property('shipping')) namespace['order']['payment_way'] = PaymentWaysEnumerate.get_value( resource.get_property('payment_mode')) # Delivery and shipping addresses get_address = addresses.get_record_namespace delivery_address = resource.get_property('delivery_address') bill_address = resource.get_property('bill_address') namespace['delivery_address'] = get_address(delivery_address) namespace['bill_address'] = get_address(bill_address) # Price for key in ['shipping_price', 'total_price']: price = resource.get_property(key) namespace[key] = format_price(price) # Messages messages = resource.get_resource('messages') namespace['messages'] = messages.get_namespace_messages(context) # Payments (We show last payment) namespace['payments'] = [] payments = shop.get_resource('payments') for payment_way, payment_record in payments.get_payments_records( context, resource.name): payment_table = payment_way.get_resource('payments').handler # Get specific view (useless now ?) view = payment_way.order_edit_view view = view(payment_way=payment_way, payment_table=payment_table, record=payment_record, id_payment=payment_record.id) view = view.GET(resource, context) # Details details = [] for name, datatype in payment_table.record_properties.items(): if name in ('resource_validator', 'state', 'ref', 'user'): continue value = payment_table.get_record_value(payment_record, name) if issubclass(datatype, Enumerate): value = datatype.get_value(value) details.append({ 'title': getattr(datatype, 'title', name), 'value': value }) # Is payed ? is_payed = payment_table.get_record_value(payment_record, 'state') # BUild namespace namespace['payments'].append({ 'is_payed': is_payed, 'title': payment_way.get_title(), 'details': details, 'state': payment_table.get_record_value(payment_record, 'state'), 'view': view }) namespace['last_payment'] = namespace['payments'][0] namespace['payment_ways'] = SelectWidget( 'payment_way', has_empty_option=False).to_html( PaymentWaysEnumerate, resource.get_property('payment_way')) # Shippings is_sent = resource.get_property('is_sent') shippings = shop.get_resource('shippings') shipping_way = resource.get_property('shipping') if shipping_way == 'default': shippings_records = None else: shipping_way_resource = shop.get_resource('shippings/%s/' % shipping_way) shippings_records = shippings.get_shippings_records( context, resource.name) if is_sent: view = None if shippings_records: # We show last delivery last_delivery = shippings_records[0] edit_record_view = shipping_way_resource.order_edit_view view = edit_record_view.GET(resource, shipping_way_resource, last_delivery, context) elif shippings_records is None and shipping_way == 'default': view = None else: # We have to add delivery add_record_view = shipping_way_resource.order_add_view if add_record_view: view = add_record_view.GET(shipping_way_resource, context) else: view = None namespace['shipping_ways'] = SelectWidget( 'shipping_way', has_empty_option=False).to_html(ShippingWaysEnumerate, shipping_way) namespace['shipping'] = {'is_sent': is_sent, 'view': view} return namespace
def get_namespace(self, resource, context): root = context.root # Get user user = resource # Get user class shop = get_shop(resource) group = user.get_group(context) # Build namespace namespace = {} infos = [] for key, title in [('gender', MSG(u'Gender')), ('firstname', MSG(u'Firstname')), ('lastname', MSG(u'Lastname')), ('email', MSG(u'Email')), ('user_language', MSG(u'User language')), ('phone1', MSG(u'Phone1')), ('phone2', MSG(u'Phone2'))]: infos.append({'title': title, 'value': user.get_property(key), 'public': True}) # Is enabled ? value = bool_to_img(user.get_property('is_enabled')) infos.append({'title': MSG(u'Enabled ?'), 'value': value, 'public': True}) # Group infos.append({'title': MSG(u'Group'), 'value': group.get_title(), 'public': True}) # Schema schema = group.get_resource('schema').handler for record in schema.get_records(): name = schema.get_record_value(record, 'name') title = schema.get_record_value(record, 'title') public = schema.get_record_value(record, 'is_public') infos.append({'title': title, 'value': user.get_property(name), 'public': public}) namespace['infos'] = infos # Customer connections namespace['connections'] = [] accept = context.accept_language connections = shop.get_resource('customers/authentification_logs').handler for record in connections.search(user=user.name): ts = connections.get_record_value(record, 'ts') dt = format_datetime(ts, accept) namespace['connections'].append(dt) namespace['connections'].sort(reverse=True) # Customer payments payments = shop.get_resource('payments') namespace['payments'] = payments.get_payments_informations( context, user=user.name) # Customer orders namespace['orders'] = [] query = PhraseQuery('customer_id', user.name) results = root.search(query) nb_orders = 0 for brain in results.get_documents(): order = root.get_resource(brain.abspath) nb_orders += 1 namespace['orders'].append( {'id': brain.name, 'href': resource.get_pathto(order), 'amount': order.get_property('total_price')}) namespace['nb_orders'] = nb_orders # Customer addresses namespace['addresses'] = [] addresses = shop.get_resource('addresses').handler for record in addresses.search(user=user.name): namespace['addresses'].append( addresses.get_record_namespace(record.id)) return namespace