diff --git a/addons/website/models/ir_qweb.py b/addons/website/models/ir_qweb.py index bb2062bad92..d553acf363a 100644 --- a/addons/website/models/ir_qweb.py +++ b/addons/website/models/ir_qweb.py @@ -21,6 +21,7 @@ from lxml import etree, html from PIL import Image as I import openerp.modules +import openerp from openerp.osv import orm, fields from openerp.tools import ustr, DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT from openerp.addons.web.http import request @@ -197,6 +198,7 @@ class ManyToOne(orm.AbstractModel): matches = self.pool[column._obj].name_search( cr, uid, name=element.text_content().strip(), context=context) # FIXME: no match? More than 1 match? + print element.text_content().strip() assert len(matches) == 1 return matches[0][0] @@ -349,3 +351,43 @@ class RelativeDatetime(orm.AbstractModel): ] # get formatting from ir.qweb.field.relative but edition/save from datetime + + +class Contact(orm.AbstractModel): + _name = 'website.qweb.field.contact' + _inherit = ['website.qweb.field', 'website.qweb.field.many2one'] + + def from_html(self, cr, uid, model, column, element, context=None): + # FIXME: this behavior is really weird, what if the user wanted to edit the name of the related thingy? Should m2os really be editable without a widget? + divs = element.xpath(".//div") + for div in divs: + if div != divs[0]: + div.getparent().remove(div) + return super(Contact, self).from_html(cr, uid, model, column, element, context=context) + + def record_to_html(self, cr, uid, field_name, record, column, options=None, context=None): + opf = options.get('fields') or ["name", "address", "phone", "mobile", "fax", "email"] + + if not getattr(record, field_name): + return None + + id = getattr(record, field_name).id + field_browse = self.pool[column._obj].browse(cr, openerp.SUPERUSER_ID, id, context={"show_address": True}) + value = werkzeug.utils.escape( field_browse.name_get()[0][1] ) + + IMD = self.pool["ir.model.data"] + model, id = IMD.get_object_reference(cr, uid, "website", "contact") + view = self.pool["ir.ui.view"].browse(cr, uid, id, context=context) + + html = view.render({ + 'name': value.split("\n")[0], + 'address': werkzeug.utils.escape("\n".join(value.split("\n")[1:])), + 'phone': field_browse.phone, + 'mobile': field_browse.mobile, + 'fax': field_browse.fax, + 'email': field_browse.email, + 'fields': opf, + 'options': options + }, engine='website.qweb', context=context) + + return html diff --git a/addons/website/static/src/css/website.css b/addons/website/static/src/css/website.css index d62a3b9b371..5d0f452863f 100644 --- a/addons/website/static/src/css/website.css +++ b/addons/website/static/src/css/website.css @@ -496,3 +496,10 @@ table.well tr td { .oe_demo div a { color: white; } + +address .fa.fa-mobile-phone { + margin: 0 3px 0 2px; +} +address .fa.fa-file-text-o { + margin-right: 1px; +} diff --git a/addons/website/static/src/css/website.sass b/addons/website/static/src/css/website.sass index 8329ef09070..a08aee8cfd1 100644 --- a/addons/website/static/src/css/website.sass +++ b/addons/website/static/src/css/website.sass @@ -372,3 +372,9 @@ table.well tr font-weight: bold a color: white + +address + .fa.fa-mobile-phone + margin: 0 3px 0 2px + .fa.fa-file-text-o + margin-right: 1px diff --git a/addons/website/views/website_templates.xml b/addons/website/views/website_templates.xml index 4ac6730ad1d..2ba72fc581e 100644 --- a/addons/website/views/website_templates.xml +++ b/addons/website/views/website_templates.xml @@ -686,5 +686,20 @@ Sitemap: sitemap.xml + diff --git a/addons/website_event/views/website_event.xml b/addons/website_event/views/website_event.xml index 619d4143864..884fbd6b235 100644 --- a/addons/website_event/views/website_event.xml +++ b/addons/website_event/views/website_event.xml @@ -336,19 +336,10 @@ -
- -
+
@@ -366,15 +357,10 @@

Organizer

-
- -
+
diff --git a/addons/website_hr_recruitment/controllers/main.py b/addons/website_hr_recruitment/controllers/main.py index 0c617524d94..c287f971ed8 100644 --- a/addons/website_hr_recruitment/controllers/main.py +++ b/addons/website_hr_recruitment/controllers/main.py @@ -17,7 +17,11 @@ class website_hr_recruitment(http.Controller): '/jobs/office/' ], type='http', auth="public", multilang=True) def jobs(self, department=None, office=None): - jobs = self._browse_jobs([]) + JobsObj = request.registry['hr.job'] + jobpost_ids = JobsObj.search(request.cr, request.uid, [], + order="website_published desc,no_of_recruitment desc", + context=request.context) + jobs = JobsObj.browse(request.cr, request.uid, jobpost_ids, context=dict(request.context, show_address=True, no_tag_br=True)) departments = set() offices = set() @@ -28,12 +32,12 @@ class website_hr_recruitment(http.Controller): offices.add(job.address_id) if department or office: - domain = [] - if department: - domain.append(('department_id','=', department.id)) - if office: - domain.append(('address_id','=', office.id)) - jobs = self._browse_jobs(domain) + _jobs = [] + for job in jobs: + if (department and job.department_id.id == department.id) or \ + (office and job.address_id.id == office.id): + _jobs.add(job) + jobs = _jobs return request.website.render("website_hr_recruitment.index", { 'jobs': jobs, @@ -97,11 +101,3 @@ class website_hr_recruitment(http.Controller): }, context=request.context) return request.redirect("/job/detail/%s/?enable_editor=1" % job_id) - - def _browse_jobs(self, domain): - Jobs = request.registry['hr.job'] - jobpost_ids = Jobs.search(request.cr, request.uid, domain, - order="website_published desc,no_of_recruitment desc", - context=request.context) - jobs = Jobs.browse(request.cr, request.uid, jobpost_ids, context=request.context) - return jobs diff --git a/addons/website_hr_recruitment/views/website_hr_recruitment.xml b/addons/website_hr_recruitment/views/website_hr_recruitment.xml index 40819142856..7d49f41782d 100644 --- a/addons/website_hr_recruitment/views/website_hr_recruitment.xml +++ b/addons/website_hr_recruitment/views/website_hr_recruitment.xml @@ -67,13 +67,12 @@ -
- - - - , - not published -
+ + not published
@@ -112,9 +111,11 @@

-

- , -
+