diff --git a/addons/website/tests/test_requests.py b/addons/website/tests/test_requests.py index 127aea274d5..e0309c9ab4b 100644 --- a/addons/website/tests/test_requests.py +++ b/addons/website/tests/test_requests.py @@ -41,6 +41,9 @@ class CrawlSuite(unittest2.TestSuite): starting the crawl """ + at_install = False + post_install = True + def __init__(self, user=None, password=None): super(CrawlSuite, self).__init__() @@ -108,14 +111,23 @@ class CrawlSuite(unittest2.TestSuite): for link in doc.xpath('//a[@href]'): href = link.get('href') + parts = urlparse.urlsplit(href) + # href with any fragment removed + href = urlparse.urlunsplit(( + parts.scheme, + parts.netloc, + parts.path, + parts.query, + '' + )) + # avoid repeats, even for links we won't crawl no need to # bother splitting them if we've already ignored them # previously if href in seen: continue seen.add(href) - parts = urlparse.urlsplit(href) - + # FIXME: handle relative link (not parts.path.startswith /) if parts.netloc or \ not parts.path.startswith('/') or \ parts.path == '/web' or\ diff --git a/addons/website_crm/controllers/main.py b/addons/website_crm/controllers/main.py index 163e3ee9793..e3662ef40a0 100644 --- a/addons/website_crm/controllers/main.py +++ b/addons/website_crm/controllers/main.py @@ -23,38 +23,29 @@ class contactus(http.Controller): if kwargs.get(field): values[field] = kwargs.pop(field) values.update(kwargs=kwargs.items()) - print values return request.website.render("website.contactus", values) @http.route(['/crm/contactus'], type='http', auth="public", website=True, multilang=True) def contactus(self, description=None, partner_name=None, phone=None, contact_name=None, email_from=None, name=None, **kwargs): - post = {} - post['description'] = description - post['partner_name'] = partner_name - post['phone'] = phone - post['contact_name'] = contact_name - post['email_from'] = email_from - post['name'] = name - - required_fields = ['contact_name', 'email_from', 'description'] - error = set() - values = dict((key, post.get(key)) for key in post) - values['error'] = error + post = { + 'description': description, + 'partner_name': partner_name, + 'phone': phone, + 'contact_name': contact_name, + 'email_from': email_from, + 'name': name or contact_name, + 'user_id': False, + } # fields validation - for field in required_fields: - if not post.get(field): - error.add(field) + error = set(field for field in ['contact_name', 'email_from', 'description'] + if not post.get(field)) + + values = dict(post, error=error) if error: values.update(kwargs=kwargs.items()) return request.website.render("website.contactus", values) - # if not given: subject is contact name - if not post.get('name'): - post['name'] = post.get('contact_name') - - post['user_id'] = False - try: post['channel_id'] = request.registry['ir.model.data'].get_object_reference(request.cr, SUPERUSER_ID, 'crm', 'crm_case_channel_website')[1] except ValueError: diff --git a/addons/website_event_sale/controllers/main.py b/addons/website_event_sale/controllers/main.py index 2db874cf5b7..0a677517646 100644 --- a/addons/website_event_sale/controllers/main.py +++ b/addons/website_event_sale/controllers/main.py @@ -83,7 +83,6 @@ class website_event(website_event): def _add_event(self, event_name="New Event", context={}, **kwargs): try: - print kwargs dummy, res_id = request.registry.get('ir.model.data').get_object_reference(request.cr, request.uid, 'event_sale', 'product_product_event') context['default_event_ticket_ids'] = [[0,0,{ 'name': _('Subscription'), diff --git a/addons/website_event_track/controllers/event.py b/addons/website_event_track/controllers/event.py index 60d4bbd390d..373ade03ad9 100644 --- a/addons/website_event_track/controllers/event.py +++ b/addons/website_event_track/controllers/event.py @@ -18,19 +18,17 @@ # along with this program. If not, see . # ############################################################################## +import collections + +import datetime +import re + +import pytz +import werkzeug.utils import openerp from openerp.addons.web import http from openerp.addons.web.http import request -from openerp.addons.website.controllers.main import Website as controllers -import datetime - -import re -import werkzeug.utils - -controllers = controllers() -import pytz -from pytz import timezone class website_event(http.Controller): @http.route(['/event//track/'], type='http', auth="public", website=True, multilang=True) @@ -79,24 +77,21 @@ class website_event(http.Controller): # TODO: not implemented @http.route(['/event//agenda'], type='http', auth="public", website=True, multilang=True) def event_agenda(self, event, tag=None, **post): - comp = lambda x: (x.date, bool(x.location_id)) - event.track_ids.sort(lambda x,y: cmp(comp(x), comp(y))) + days_tracks = collections.defaultdict(lambda: []) + for track in sorted(event.track_ids, key=lambda x: (x.date, bool(x.location_id))): + if not track.date: continue + days_tracks[track.date[:10]].append(track) days = {} - days_nbr = {} - for track in event.track_ids: - if not track.date: continue - days.setdefault(track.date[:10], []) - days[track.date[:10]].append(track) - - for d in days: - days_nbr[d] = len(days[d]) - days[d] = self._prepare_calendar(event, days[d]) + days_tracks_count = {} + for day, tracks in days_tracks.iteritems(): + days_tracks_count[day] = len(tracks) + days[day] = self._prepare_calendar(event, tracks) return request.website.render("website_event_track.agenda", { 'event': event, 'days': days, - 'days_nbr': days_nbr, + 'days_nbr': days_tracks_count, 'tag': tag }) diff --git a/addons/website_forum/static/src/css/website_forum.css b/addons/website_forum/static/src/css/website_forum.css index b90c1786e24..75befd62b1c 100644 --- a/addons/website_forum/static/src/css/website_forum.css +++ b/addons/website_forum/static/src/css/website_forum.css @@ -94,3 +94,7 @@ a.no-decoration { font: 1.2em "Helvetica Neue", Helvetica, Arial, sans-serif !important; height: 1.2em !important; } + +button.btn-link.text-muted { + color: #999999; +} diff --git a/addons/website_forum/static/src/css/website_forum.sass b/addons/website_forum/static/src/css/website_forum.sass index f8e46f06b79..d800d293de8 100644 --- a/addons/website_forum/static/src/css/website_forum.sass +++ b/addons/website_forum/static/src/css/website_forum.sass @@ -74,3 +74,6 @@ a.no-decoration .text-tags .text-tag .text-button font: 1.2em "Helvetica Neue", Helvetica, Arial, sans-serif !important height: 1.2em !important + +button.btn-link.text-muted + color: #999 diff --git a/addons/website_forum/static/src/js/website_forum.js b/addons/website_forum/static/src/js/website_forum.js index e84e76e14fa..0b45d4311c1 100644 --- a/addons/website_forum/static/src/js/website_forum.js +++ b/addons/website_forum/static/src/js/website_forum.js @@ -3,7 +3,7 @@ $(document).ready(function () { $('.vote_up ,.vote_down').on('click', function (ev) { ev.preventDefault(); var $link = $(ev.currentTarget); - openerp.jsonRpc($link.attr('href'), 'call', {}) + openerp.jsonRpc($link.data('href'), 'call', {}) .then(function (data) { if (data['error']){ if (data['error'] == 'own_post'){ @@ -47,7 +47,7 @@ $(document).ready(function () { $('.accept_answer').on('click', function (ev) { ev.preventDefault(); var $link = $(ev.currentTarget); - openerp.jsonRpc($link.attr('href'), 'call', {}).then(function (data) { + openerp.jsonRpc($link.data('href'), 'call', {}).then(function (data) { if (data['error']) { if (data['error'] == 'anonymous_user'){ var $warning = $('
'+ @@ -83,7 +83,7 @@ $(document).ready(function () { $('.favourite_question').on('click', function (ev) { ev.preventDefault(); var $link = $(ev.currentTarget); - openerp.jsonRpc($link.attr('href'), 'call', {}).then(function (data) { + openerp.jsonRpc($link.data('href'), 'call', {}).then(function (data) { if (data) { $link.addClass("forum_favourite_question") } else { @@ -96,7 +96,7 @@ $(document).ready(function () { $('.comment_delete').on('click', function (ev) { ev.preventDefault(); var $link = $(ev.currentTarget); - openerp.jsonRpc($link.attr('href'), 'call', {}).then(function (data) { + openerp.jsonRpc($link.data('href'), 'call', {}).then(function (data) { $link.parents('.comment').first().remove(); }); return true; diff --git a/addons/website_forum/views/website_forum.xml b/addons/website_forum/views/website_forum.xml index c73486d7d39..fbda6a40532 100644 --- a/addons/website_forum/views/website_forum.xml +++ b/addons/website_forum/views/website_forum.xml @@ -20,6 +20,14 @@ + + +