diff options
| author | Thibault Delavallée <tde@openerp.com> | 2014-06-12 16:33:33 +0200 |
|---|---|---|
| committer | Thibault Delavallée <tde@openerp.com> | 2014-06-12 16:33:33 +0200 |
| commit | a3cfed18094e75ff123ee1695c0a1dff3e111a28 (patch) | |
| tree | 85d448898e32e925d3b2d63a5ab58a5520006b27 | |
| parent | 74168c4e9d1527cfdd62aae5e37ca3bfd4f584c3 (diff) | |
[IMP] website_forum: added management and support of private profile (unpublished partners).
| -rw-r--r-- | addons/website_forum/controllers/main.py | 12 | ||||
| -rw-r--r-- | addons/website_forum/models/res_users.py | 2 | ||||
| -rw-r--r-- | addons/website_forum/views/res_users.xml | 18 | ||||
| -rw-r--r-- | addons/website_forum/views/website_forum.xml | 97 |
4 files changed, 81 insertions, 48 deletions
diff --git a/addons/website_forum/controllers/main.py b/addons/website_forum/controllers/main.py index 81cbfdcadc8..d2f86625e70 100644 --- a/addons/website_forum/controllers/main.py +++ b/addons/website_forum/controllers/main.py @@ -444,10 +444,10 @@ class WebsiteForum(http.Controller): User = request.registry['res.users'] step = 30 - tag_count = User.search(cr, SUPERUSER_ID, [('karma', '>', 1)], count=True, context=context) + tag_count = User.search(cr, SUPERUSER_ID, [('karma', '>', 1), ('website_published', '=', True)], count=True, context=context) pager = request.website.pager(url="/forum/%s/users" % slug(forum), total=tag_count, page=page, step=step, scope=30) - obj_ids = User.search(cr, SUPERUSER_ID, [('karma', '>', 1)], limit=step, offset=pager['offset'], order='karma DESC', context=context) + obj_ids = User.search(cr, SUPERUSER_ID, [('karma', '>', 1), ('website_published', '=', True)], limit=step, offset=pager['offset'], order='karma DESC', context=context) # put the users in block of 3 to display them as a table users = [[] for i in range(len(obj_ids)/3+1)] for index, user in enumerate(User.browse(cr, SUPERUSER_ID, obj_ids, context=context)): @@ -496,9 +496,9 @@ class WebsiteForum(http.Controller): Data = request.registry["ir.model.data"] user = User.browse(cr, SUPERUSER_ID, user_id, context=context) - if not user.exists() or (user_id != request.session.uid and user.karma < 1): - return werkzeug.utils.redirect("/forum/%s" % slug(forum)) - + values = self._prepare_forum_values(forum=forum, **post) + if not user.exists() or (user_id != request.session.uid and (not user.website_published or user.karma < 1)): + return request.website.render("website_forum.private_profile", values) # questions and answers by user user_questions, user_answers = [], [] user_post_ids = Post.search( @@ -549,13 +549,11 @@ class WebsiteForum(http.Controller): post['users'] = 'True' - values = self._prepare_forum_values(**post) values.update({ 'uid': uid, 'user': user, 'main_object': user, 'searches': post, - 'forum': forum, 'questions': user_questions, 'answers': user_answers, 'followed': followed, diff --git a/addons/website_forum/models/res_users.py b/addons/website_forum/models/res_users.py index 5d05f1f3bf3..fa59b8155d7 100644 --- a/addons/website_forum/models/res_users.py +++ b/addons/website_forum/models/res_users.py @@ -9,7 +9,7 @@ class Users(osv.Model): init_res = super(Users, self).__init__(pool, cr) self.SELF_WRITEABLE_FIELDS = list(set( self.SELF_WRITEABLE_FIELDS + \ - ['country_id', 'city', 'website', 'website_description'])) + ['country_id', 'city', 'website', 'website_description', 'website_published'])) return init_res def _get_user_badge_level(self, cr, uid, ids, name, args, context=None): diff --git a/addons/website_forum/views/res_users.xml b/addons/website_forum/views/res_users.xml index 40aa30ecefc..73d82e17784 100644 --- a/addons/website_forum/views/res_users.xml +++ b/addons/website_forum/views/res_users.xml @@ -11,6 +11,24 @@ <field name="signature" position="after"> <field name="karma" string="Forum Karma"/> </field> + <xpath expr="//div[contains(@class, 'oe_right oe_button_box')]" position="inside"> + <br/> + <field name="website_published" class="pull-right" widget="website_button"/> + </xpath> + </field> + </record> + + <!-- Update user prefrence form!--> + <record id="view_users_form_simple_modif_forum" model="ir.ui.view"> + <field name="name">res.users.preferences.form</field> + <field name="model">res.users</field> + <field name="inherit_id" ref="base.view_users_form_simple_modif"/> + <field name="arch" type="xml"> + <group name="preferences" position="before"> + <div style="margin-top: 19px;"> + <field name="website_published" class="pull-right" widget="website_button"/> + </div> + </group> </field> </record> diff --git a/addons/website_forum/views/website_forum.xml b/addons/website_forum/views/website_forum.xml index a38c1a0756c..5a5eda9ba64 100644 --- a/addons/website_forum/views/website_forum.xml +++ b/addons/website_forum/views/website_forum.xml @@ -754,49 +754,63 @@ </t> </template> +<!--Private profile--> +<template id="private_profile"> + <t t-call="website_forum.header"> + <h1 class="mt32">This profile is private!</h1> + <p> + <a t-attf-href="/forum/#{slug(forum)}">Return to the question list.</a> + </p> + </t> +</template> + <template id="edit_profile"> <t t-call="website_forum.header"> - <h3>Edit Profile </h3> - <div class="col-md-2"> - <img class="img img-responsive img-circle" t-attf-src="/forum/user/#{user.id}/avatar"/> + <h3>Edit Profile + <t t-call="website.publish_management"> + <t t-set="object" t-value="user"/> + </t> + </h3> + <div class="col-md-2"> + <img class="img img-responsive img-circle" t-attf-src="/forum/user/#{user.id}/avatar"/> + </div> + <form t-attf-action="/forum/#{slug(forum)}/user/#{slug(user)}/save" method="post" role="form" class="form-horizontal"> + <input name="user_id" t-att-value="user.id" type="hidden"/> + <label class="col-md-2 control-label mb16" for="user.name">Real name</label> + <div class="col-md-7 mb16"> + <input type="text" class="col-md-7 mb16 form-control" name="name" required="True" t-attf-value="#{user.name}"/> + </div> + <label class="col-md-2 control-label mb16" for="user.partner_id.website">Website</label> + <div class="col-md-7 mb16"> + <input type="text" class="form-control" name="website" t-attf-value="#{user.partner_id.website or ''}"/> </div> - <form t-attf-action="/forum/#{slug(forum)}/user/#{slug(user)}/save" method="post" role="form" class="form-horizontal"> - <input name="user_id" t-att-value="user.id" type="hidden"/> - <label class="col-md-2 control-label mb16" for="user.name">Real name</label> - <div class="col-md-7 mb16"> - <input type="text" class="col-md-7 mb16 form-control" name="name" required="True" t-attf-value="#{user.name}"/> - </div> - <label class="col-md-2 control-label mb16" for="user.partner_id.website">Website</label> - <div class="col-md-7 mb16"> - <input type="text" class="form-control" name="website" t-attf-value="#{user.partner_id.website or ''}"/> - </div> - <label class="col-md-4 control-label mb16" for="user.partner_id.email">Email</label> - <div class="col-md-7 mb16"> - <input type="text" class="form-control" name="email" required="True" t-attf-value="#{user.partner_id.email}"/> - </div> - <label class="col-md-4 control-label mb16" for="user.partner_id.city">City</label> - <div class="col-md-7 mb16"> - <input type="text" class="form-control" name="city" t-attf-value="#{user.partner_id.city or ''}"/> - </div> - <label class="col-md-4 control-label mb16" for="contact_name">Country</label> - <div class="col-md-7 mb16"> - <select class="form-control" name="country"> - <option value="">Country...</option> - <t t-foreach="countries or []" t-as="country"> - <option t-att-value="country.id" t-att-selected="country.id == user.partner_id.country_id.id"><t t-esc="country.name"/></option> - </t> - </select> - </div> - <!--Note: using website_description fiels instead of using commnt firld of partner--> - <label class="col-md-4 control-label mb16" for="user.partner_id.website_description">Biography</label> - <div class="col-md-7 mb16"> - <textarea name="description" style="min-height: 120px" required="True" - class="form-control"><t t-esc="user.partner_id.website_description"/></textarea> - </div> - <div class="col-sm-offset-4 col-md-4 mb16"> - <button class="btn btn-primary btn-lg">Update</button> - </div> - </form> + <label class="col-md-4 control-label mb16" for="user.partner_id.email">Email</label> + <div class="col-md-7 mb16"> + <input type="text" class="form-control" name="email" required="True" t-attf-value="#{user.partner_id.email}"/> + </div> + <label class="col-md-4 control-label mb16" for="user.partner_id.city">City</label> + <div class="col-md-7 mb16"> + <input type="text" class="form-control" name="city" t-attf-value="#{user.partner_id.city or ''}"/> + </div> + <label class="col-md-4 control-label mb16" for="contact_name">Country</label> + <div class="col-md-7 mb16"> + <select class="form-control" name="country"> + <option value="">Country...</option> + <t t-foreach="countries or []" t-as="country"> + <option t-att-value="country.id" t-att-selected="country.id == user.partner_id.country_id.id"><t t-esc="country.name"/></option> + </t> + </select> + </div> + <!--Note: using website_description fiels instead of using commnt firld of partner--> + <label class="col-md-4 control-label mb16" for="user.partner_id.website_description">Biography</label> + <div class="col-md-7 mb16"> + <textarea name="description" style="min-height: 120px" required="True" + class="form-control"><t t-esc="user.partner_id.website_description"/></textarea> + </div> + <div class="col-sm-offset-4 col-md-4 mb16"> + <button class="btn btn-primary btn-lg">Update</button> + </div> + </form> </t> </template> @@ -805,6 +819,9 @@ <h1 class="mt0 page-header"> <span t-field="user.name"/> <small>profile</small> + <t t-call="website.publish_management" groups="base.group_website_publisher"> + <t t-set="object" t-value="user"/> + </t> </h1> <div class="row"> <div class="col-sm-2"> |
