[MERGE]: Merged with lp:openobject-addons

bzr revid: atp@tinyerp.com-20120921051507-vozcjdsnm0i8d76l
This commit is contained in:
Atul Patel (OpenERP)
2012-09-21 10:45:07 +05:30
70 changed files with 889 additions and 692 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
.oe_employee_vignette {
padding: 8px 0;
padding: 8px 8px;
min-height: 100px;
}
+1 -3
View File
@@ -132,8 +132,6 @@
display: none;
white-space: normal;
padding: 8px;
background: #eee;
border-top: 1px solid #ccc;
}
.openerp div.oe_mail_thread_action:after {
@@ -201,7 +199,7 @@
.openerp .oe_mail_msg_email {
padding: 8px;
background: white;
border-top: 1px solid #ccc;
border-top: 1px solid #ebebeb;
}
.openerp div.oe_mail_thread_subthread .oe_mail_msg_comment {
-1
View File
@@ -185,5 +185,4 @@ class note_base_config_settings(osv.osv_memory):
_columns = {
'module_note_pad': fields.boolean('Use collaborative pads (etherpad)'),
'group_note_fancy': fields.boolean('Use fancy layouts for notes', implied_group='note.group_note_fancy'),
'group_note_tags': fields.boolean('Allow setting tags on notes', implied_group='note.group_note_tags'),
}
+14 -36
View File
@@ -4,28 +4,27 @@
<record model="note.stage" id="demo_note_stage_01">
<field name="name">Today</field>
<field name="sequence">1</field>
<field name="user_id" eval="ref('base.user_demo')"/>
<field name="user_id" ref="base.user_demo"/>
</record>
<record model="note.stage" id="demo_note_stage_02">
<field name="name">Tomorrow</field>
<field name="sequence">2</field>
<field name="user_id" eval="ref('base.user_demo')"/>
<field name="user_id" ref="base.user_demo"/>
</record>
<record model="note.stage" id="demo_note_stage_03">
<field name="name">Later</field>
<field name="sequence">3</field>
<field name="user_id" eval="ref('base.user_demo')"/>
<field name="user_id" ref="base.user_demo"/>
</record>
<record model="note.stage" id="demo_note_stage_04">
<field name="name">Notes</field>
<field name="name">Morning</field>
<field name="sequence">4</field>
<field name="user_id" eval="ref('base.user_demo')"/>
<field name="user_id" ref="base.user_root"/>
</record>
<record id="note_1" model="note.note">
<field name="name">Customer report #349872</field>
<field name="memo"><![CDATA[<b>Customer report #349872</b>
@@ -35,8 +34,9 @@
<br/>* We should use the term Calendar, not Meeting.
]]>
</field>
<field name="stage_id" ref="note_stage_01"/>
<field name="stage_id" ref="demo_note_stage_01"/>
<field name="color">2</field>
<field name="message_follower_ids" eval="[(4, ref('base.group_user'))]"/>
</record>
<record id="note_2" model="note.note">
@@ -44,14 +44,7 @@
<br/><br/>* Followed by the telephone conversation and mail about D.544.3
]]>
</field>
<field name="stage_id" ref="note_stage_01"/>
</record>
<record id="note_3" model="note.note">
<field name="memo"><![CDATA[<b>Call Marc</b>
<br/><br/>]]>
</field>
<field name="stage_id" ref="note_stage_01"/>
<field name="stage_id" ref="demo_note_stage_01"/>
</record>
<record id="note_4" model="note.note">
@@ -67,7 +60,8 @@
<br/>* wine
]]>
</field>
<field name="stage_id" ref="note_stage_02"/>
<field name="stage_id" ref="demo_note_stage_02"/>
<field name="message_follower_ids" eval="[(4, ref('base.group_user'))]"/>
</record>
<record id="note_6" model="note.note">
@@ -79,15 +73,6 @@
<field name="stage_id" ref="note_stage_02"/>
</record>
<record id="note_7" model="note.note">
<field name="memo"><![CDATA[<b>Read some documentation about OpenERP before diving into the code</b>
<br/><br/>* Open ERP: a modern approach to integrated business management
<br/>* Open ERP for Retail and Industrial Management
]]>
</field>
<field name="stage_id" ref="note_stage_03"/>
</record>
<record id="note_8" model="note.note">
<field name="memo"><![CDATA[<b>New computer specs</b>
<br/><br/>* Motherboard
@@ -108,6 +93,7 @@
</field>
<field name="stage_id" ref="note_stage_03"/>
<field name="color">3</field>
<field name="message_follower_ids" eval="[(4, ref('base.group_user'))]"/>
</record>
<record id="note_9" model="note.note">
@@ -116,16 +102,7 @@
<br/>* Open ERP for Retail and Industrial Management
]]>
</field>
<field name="stage_id" ref="note_stage_02"/>
</record>
<record id="note_10" model="note.note">
<field name="memo"><![CDATA[<b>Read some documentation about OpenERP before diving into the code</b>
<br/><br/>* Open ERP: a modern approach to integrated business management
<br/>* Open ERP for Retail and Industrial Management
]]>
</field>
<field name="stage_id" ref="note_stage_03"/>
<field name="stage_id" ref="demo_note_stage_02"/>
</record>
<record id="note_12" model="note.note">
@@ -134,8 +111,9 @@
<br/>* Open ERP for Retail and Industrial Management
]]>
</field>
<field name="stage_id" ref="note_stage_03"/>
<field name="message_follower_ids" eval="[(4, ref('base.group_user'))]"/>
<field name="color">7</field>
<field name="stage_ids" eval="['note_stage_03','demo_note_stage_04']"/>
</record>
</data>
+3 -7
View File
@@ -61,7 +61,7 @@
<div class="oe_dropdown_kanban">
<span>
<a name="onclick_note_is_done" type="object" t-if="record.open.raw_value" class="oe_e">W</a>
<a name="onclick_note_not_done" type="object" t-if="!record.open.raw_value" class="oe_e">è</a>
<a name="onclick_note_not_done" type="object" t-if="!record.open.raw_value" class="oe_e">W</a>
</span>
<!-- dropdown menu -->
@@ -101,7 +101,7 @@
<field name="name"/>
<field name="open"/>
<field name="stage_id"/>
<field name="tag_ids" widget="many2many_tags" groups="note.group_note_tags"/>
<field name="tag_ids" widget="many2many_tags"/>
</tree>
</field>
</record>
@@ -130,7 +130,7 @@
<field name="arch" type="xml">
<search string="Notes">
<field name="memo" string="Note"/>
<field name="tag_ids" groups="note.group_note_tags"/>
<field name="tag_ids"/>
<filter name="open_true" string="Active" domain="['|',('open', '=', True),('date_done','=',time.strftime('%%Y-%%m-%%d'))]"/>
<filter name="open_false" string="Archive" domain="[('open', '=', False)]"/>
<group expand="0" string="Group By...">
@@ -159,10 +159,6 @@
<field name="group_note_fancy" class="oe_inline"/>
<label for="group_note_fancy"/>
</div>
<div>
<field name="group_note_tags" class="oe_inline"/>
<label for="group_note_tags"/>
</div>
</div>
</group>
</xpath>
-1
View File
@@ -1,3 +1,2 @@
id,name,implied_ids/id
group_note_tags,Memo / Display tags,
group_note_fancy,Memo / Fancy mode,
1 id name implied_ids/id
group_note_tags Memo / Display tags
2 group_note_fancy Memo / Fancy mode
-3
View File
@@ -1,3 +0,0 @@
memo.css: memo.sass
sass -t expanded memo.sass memo.css
+48 -86
View File
@@ -1,93 +1,53 @@
@charset "utf-8";
@font-face {
font-family: "mnmliconsRegular";
src: url("/web/static/src/font/mnmliconsv21-webfont.eot") format("eot");
src: url("/web/static/src/font/mnmliconsv21-webfont.woff") format("woff");
src: url("/web/static/src/font/mnmliconsv21-webfont.ttf") format("truetype");
src: url("/web/static/src/font/mnmliconsv21-webfont.svg") format("svg") active;
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: "EntypoRegular";
src: url("/web/static/src/font/entypo-webfont.eot") format("eot");
src: url("/web/static/src/font/entypo-webfont.eot?#iefix") format("embedded-opentype");
src: url("/web/static/src/font/entypo-webfont.woff") format("woff");
src: url("/web/static/src/font/entypo-webfont.ttf") format("truetype");
src: url("/web/static/src/font/entypo-webfont.svg") format("svg") active;
font-weight: normal;
font-style: normal;
}
@-moz-keyframes bounce {
0% {
-moz-transform: scale(0);
opacity: 0;
}
50% {
-moz-transform: scale(1.3);
opacity: 0.4;
}
75% {
-moz-transform: scale(0.9);
opacity: 0.7;
}
100% {
-moz-transform: scale(1);
opacity: 1;
}
}
@-webkit-keyframes bounce {
0% {
-webkit-transform: scale(0);
opacity: 0;
}
50% {
-webkit-transform: scale(1.3);
opacity: 0.4;
}
75% {
-webkit-transform: scale(0.9);
opacity: 0.7;
}
100% {
-webkit-transform: scale(1);
opacity: 1;
}
}
.oe_kanban_color_2 {
background-color: red;
}
.oe_kanban_column .note_text_line_through {
text-decoration: line-through;
}
.openerp .oe_fold_column .oe_kanban_card_fancy {
text-decoration: none;
color: black;
display: block;
padding: 1em;
margin-right: 1em;
margin-bottom: 1em;
-moz-box-shadow: 5px 5px 7px #212121;
-webkit-box-shadow: 5px 5px 7px rgba(33, 33, 33, 0.7);
box-shadow: 5px 5px 7px rgba(33, 33, 33, 0.7);
.openerp .oe_kanban_view.oe_notes .oe_kanban_card_fancy.oe_kanban_color_0 {
box-shadow: 0px 4px 9px rgba(48, 48, 48, 0.15);
}
.openerp .oe_kanban_view.oe_notes .oe_kanban_card_fancy.oe_kanban_color_1 {
box-shadow: 0px 4px 9px rgba(0, 0, 0, 0.15);
}
.openerp .oe_kanban_view.oe_notes .oe_kanban_card_fancy.oe_kanban_color_2 {
box-shadow: 0px 4px 9px rgba(48, 0, 0, 0.15);
}
.openerp .oe_kanban_view.oe_notes .oe_kanban_card_fancy.oe_kanban_color_3 {
box-shadow: 0px 4px 9px rgba(97, 93, 0, 0.16);
}
.openerp .oe_kanban_view.oe_notes .oe_kanban_card_fancy.oe_kanban_color_4 {
box-shadow: 0px 4px 9px rgba(77, 128, 0, 0.17);
}
.openerp .oe_kanban_view.oe_notes .oe_kanban_card_fancy.oe_kanban_color_5 {
box-shadow: 0px 4px 9px rgba(0, 88, 11, 0.15);
}
.openerp .oe_kanban_view.oe_notes .oe_kanban_card_fancy.oe_kanban_color_6 {
box-shadow: 0px 4px 9px rgba(0, 80, 95, 0.15);
}
.openerp .oe_kanban_view.oe_notes .oe_kanban_card_fancy.oe_kanban_color_7 {
box-shadow: 0px 4px 9px rgba(3, 13, 133, 0.18);
}
.openerp .oe_kanban_view.oe_notes .oe_kanban_card_fancy.oe_kanban_color_8 {
box-shadow: 0px 4px 9px rgba(56, 0, 128, 0.15);
}
.openerp .oe_kanban_view.oe_notes .oe_kanban_card_fancy.oe_kanban_color_9 {
box-shadow: 0px 4px 9px rgba(102, 0, 116, 0.15);
}
.openerp .oe_kanban_record .oe_kanban_card_fancy {
text-shadow: none;
border-radius: 2px;
padding: 12px;
margin-left: 3px;
margin-right: 3px;
padding-bottom: 16px;
margin-bottom: 16px;
-webkit-transform: rotate(-2deg);
-o-transform: rotate(-2deg);
-moz-transform: rotate(-2deg);
-webkit-transition: all 300ms cubic-bezier(0.5, 0, 0.5, 1);
-moz-transition: all 300ms cubic-bezier(0.5, 0, 0.5, 1);
-ms-transition: all 300ms cubic-bezier(0.5, 0, 0.5, 1);
transition: all 300ms cubic-bezier(0.5, 0, 0.5, 1);
}
.openerp .oe_kanban_record:nth-of-type(even) .oe_kanban_card_fancy {
-webkit-transform: rotate(1deg);
@@ -132,12 +92,14 @@
.openerp .oe_kanban_column .oe_fold_column .oe_kanban_card_fancy:hover,
.openerp .oe_kanban_column .oe_fold_column .oe_kanban_card_fancy:focus {
box-shadow: 10px 10px 7px rgba(0, 0, 0, 0.7);
-moz-box-shadow: 10px 10px 7px rgba(0, 0, 0, 0.7);
-webkit-box-shadow: 10px 10px 7px rgba(0, 0, 0, 0.7);
position: relative;
z-index: 5;
-webkit-transform: rotate(0);
-o-transform: rotate(0);
-moz-transform: rotate(0);
border-color: rgba(0, 0, 0, 0.4);
-webkit-transition: all 150ms cubic-bezier(0.5, 0, 0.5, 1);
-moz-transition: all 150ms cubic-bezier(0.5, 0, 0.5, 1);
-ms-transition: all 150ms cubic-bezier(0.5, 0, 0.5, 1);
transition: all 150ms cubic-bezier(0.5, 0, 0.5, 1);
-webkit-transform: rotate(0) !important;
-o-transform: rotate(0) !important;
-moz-transform: rotate(0) !important;
}
+46 -161
View File
@@ -1,168 +1,54 @@
@charset "utf-8"
// Variables {{{
$section-title-color: #8786b7
$tag-bg-light: #f0f0fa
$tag-bg-dark: #8786b7
$tag-border: #afafb6
$tag-border-selected: #a6a6fe
$hover-background: #f0f0fa
$link-color: #8a89ba
$sheet-max-width: 860px
// }}}
// Mixins {{{
@font-face
font-family: 'mnmliconsRegular'
src: url('/web/static/src/font/mnmliconsv21-webfont.eot') format('eot')
src: url('/web/static/src/font/mnmliconsv21-webfont.woff') format('woff')
src: url('/web/static/src/font/mnmliconsv21-webfont.ttf') format('truetype')
src: url('/web/static/src/font/mnmliconsv21-webfont.svg') format('svg') active
font-weight: normal
font-style: normal
@font-face
font-family: 'EntypoRegular'
src: url('/web/static/src/font/entypo-webfont.eot') format('eot')
src: url('/web/static/src/font/entypo-webfont.eot?#iefix') format('embedded-opentype')
src: url('/web/static/src/font/entypo-webfont.woff') format('woff')
src: url('/web/static/src/font/entypo-webfont.ttf') format('truetype')
src: url('/web/static/src/font/entypo-webfont.svg') format('svg') active
font-weight: normal
font-style: normal
@mixin reset()
border: none
padding: 0
margin: 0
background: none
@include radius(none)
@include box-shadow(none)
@mixin vertical-gradient($startColor: #555, $endColor: #333)
background-color: $startColor
background-image: -webkit-gradient(linear, left top, left bottom, from($startColor), to($endColor)) /* Saf4+, Chrome */
background-image: -webkit-linear-gradient(top, $startColor, $endColor) /* Chrome 10+, Saf5.1+, iOS 5+ */
background-image: -moz-linear-gradient(top, $startColor, $endColor) /* FF3.6 */
background-image: -ms-linear-gradient(top, $startColor, $endColor) /* IE10 */
background-image: -o-linear-gradient(top, $startColor, $endColor) /* Opera 11.10+ */
background-image: linear-gradient(to bottom, $startColor, $endColor)
@mixin radial-gradient($gradient)
background-position: center center
background-image: -webkit-radial-gradient(circle, $gradient)
background-image: -moz-radial-gradient($gradient)
background-image: -ms-radial-gradient($gradient)
background-image: radial-gradient($gradient)
@mixin radius($radius: 5px)
-moz-border-radius: $radius
-webkit-border-radius: $radius
border-radius: $radius
@mixin box-shadow($bsval: 0px 1px 4px #777)
-moz-box-shadow: $bsval
-webkit-box-shadow: $bsval
box-shadow: $bsval
@mixin transition($transval: (border linear 0.2s, box-shadow linear 0.2s))
-webkit-transition: $transval
-moz-transition: $transval
-ms-transition: $transval
-o-transition: $transval
transition: $transval
@mixin opacity($opacity: .5)
filter: alpha(opacity=$opacity * 100)
opacity: $opacity
@mixin background-clip($clip: padding-box)
-webkit-background-clip: $clip
-moz-background-clip: $clip
background-clip: $clip
@mixin box-sizing($type: content)
// type = border || content || padding
-webkit-box-sizing: #{$type}-box
-moz-box-sizing: #{$type}-box
-ms-box-sizing: #{$type}-box
box-sizing: #{$type}-box
// Transforms the (readable) text of an inline element into an mmlicons icon,
// allows for actual readable text in-code (and in readers?) with iconic looks
@mixin text-to-icon($icon-name, $color: #404040)
font-size: 1px
letter-spacing: -1px
color: transparent
&: before
font: 21px "mnmliconsRegular"
content: $icon-name
color: $color
// }}}
// CSS animation bounces {{{
@-moz-keyframes bounce
0%
-moz-transform: scale(0)
opacity: 0
50%
-moz-transform: scale(1.3)
opacity: 0.4
75%
-moz-transform: scale(0.9)
opacity: 0.7
100%
-moz-transform: scale(1)
opacity: 1
@-webkit-keyframes bounce
0%
-webkit-transform: scale(0)
opacity: 0
50%
-webkit-transform: scale(1.3)
opacity: 0.4
75%
-webkit-transform: scale(0.9)
opacity: 0.7
100%
-webkit-transform: scale(1)
opacity: 1
// }}}
.oe_kanban_color_2
background-color: red
// au BufWritePost,FileWritePost *.sass : !sass --style expanded --line-numbers <afile> > "%: p: r.css"
.oe_kanban_column
.note_text_line_through
text-decoration: line-through
.openerp
.oe_fold_column
.oe_kanban_card_fancy
text-decoration: none
color: #000
display: block
padding: 1em
margin-right: 1em
margin-bottom: 1em
-moz-box-shadow: 5px 5px 7px rgba(33,33,33,1)
-webkit-box-shadow: 5px 5px 7px rgba(33,33,33,.7)
box-shadow: 5px 5px 7px rgba(33,33,33,.7)
@mixin rotate($a)
-webkit-transform: rotate($a)
-o-transform: rotate($a)
-webkit-transform: rotate($a)
-o-transform: rotate($a)
-moz-transform: rotate($a)
@mixin transition($what:all,$duration:100ms)
-webkit-transition: $what $duration cubic-bezier(0.5,0,0.5,1)
-moz-transition: $what $duration cubic-bezier(0.5,0,0.5,1)
-ms-transition: $what $duration cubic-bezier(0.5,0,0.5,1)
transition: $what $duration cubic-bezier(0.5,0,0.5,1)
.openerp
.oe_kanban_view.oe_notes
.oe_kanban_card_fancy.oe_kanban_color_0
box-shadow: 0px 4px 9px rgba(48,48,48,0.15)
.oe_kanban_card_fancy.oe_kanban_color_1
box-shadow: 0px 4px 9px rgba(0,0,0,0.15)
.oe_kanban_card_fancy.oe_kanban_color_2
box-shadow: 0px 4px 9px rgba(48,0,0,0.15)
.oe_kanban_card_fancy.oe_kanban_color_3
box-shadow: 0px 4px 9px rgba(97,93,0,0.16)
.oe_kanban_card_fancy.oe_kanban_color_4
box-shadow: 0px 4px 9px rgba(77,128,0,0.17)
.oe_kanban_card_fancy.oe_kanban_color_5
box-shadow: 0px 4px 9px rgba(0,88,11,0.15)
.oe_kanban_card_fancy.oe_kanban_color_6
box-shadow: 0px 4px 9px rgba(0,80,95,0.15)
.oe_kanban_card_fancy.oe_kanban_color_7
box-shadow: 0px 4px 9px rgba(3,13,133,0.18)
.oe_kanban_card_fancy.oe_kanban_color_8
box-shadow: 0px 4px 9px rgba(56,0,128,0.15)
.oe_kanban_card_fancy.oe_kanban_color_9
box-shadow: 0px 4px 9px rgba(102,0,116,0.15)
.oe_kanban_record
.oe_kanban_card_fancy
text-shadow: none
border-radius: 2px
padding: 12px
margin-left: 3px
margin-right: 3px
padding-bottom: 16px
margin-bottom: 16px
@include rotate(-2deg)
@include transition($what:all, $duration:300ms)
.oe_kanban_record:nth-of-type(even)
.oe_kanban_card_fancy
@include rotate(1deg)
@@ -193,17 +79,16 @@ $sheet-max-width: 860px
@include rotate(-1deg)
@mixin oe_kanban_card_fancy
box-shadow: 10px 10px 7px rgba(0,0,0,.7)
-moz-box-shadow: 10px 10px 7px rgba(0,0,0,.7)
-webkit-box-shadow: 10px 10px 7px rgba(0,0,0,.7)
position: relative
z-index: 5
@include rotate(0)
.openerp
.oe_kanban_column
.oe_fold_column
.oe_kanban_card_fancy:hover,
.oe_kanban_card_fancy:focus
@include oe_kanban_card_fancy
position: relative
z-index: 5
border-color: rgba(0,0,0,0.4)
@include transition($what:all, $duration:150ms)
-webkit-transform: rotate(0) !important
-o-transform: rotate(0) !important
-moz-transform: rotate(0) !important
+41 -8
View File
@@ -5,24 +5,56 @@ import re
import string
import urllib2
from tools.translate import _
from openerp.tools.misc import html2plaintext
from py_etherpad import EtherpadLiteClient
class pad_common(osv.osv_memory):
_name = 'pad.common'
def pad_generate_url(self, cr, uid, context=None):
pad_server = self.pool.get('res.users').browse(cr, uid, uid, context).company_id.pad_server
company = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id;
pad = {
"server" : company.pad_server,
"key" : company.pad_key or "4DxmsNIbnQUVQMW9S9tx2oLOSjFdrx1l",
}
# make sure pad server in the form of http://hostname
if not pad_server:
if not pad["server"]:
return ''
if not pad_server.startswith('http'):
pad_server = 'http://' + pad_server
pad_server = pad_server.rstrip('/')
if not pad["server"].startswith('http'):
pad["server"] = 'http://' + pad["server"]
pad["server"] = pad["server"].rstrip('/')
# generate a salt
s = string.ascii_uppercase + string.digits
salt = ''.join([s[random.randint(0, len(s) - 1)] for i in range(10)])
#path
path = '%s-%s-%s' % (cr.dbname.replace('_','-'), self._name, salt)
# contruct the url
url = '%s/p/%s-%s-%s' % (pad_server, cr.dbname.replace('_','-'), self._name, salt)
return url
url = '%s/p/%s' % (pad["server"], path)
#if create with content
if "field_name" in context and "model" in context and "object_id" in context:
myPad = EtherpadLiteClient( pad["key"], pad["server"]+'/api')
myPad.createPad(path)
#get attr on the field model
model = self.pool.get(context["model"])
field = model._all_columns[context['field_name']]
real_field = field.column.pad_content_field
#get content of the real field
for record in model.browse(cr, uid, [context["object_id"]]):
if record[real_field]:
myPad.setText(path, html2plaintext(record[real_field]))
#Etherpad for html not functional
#myPad.setHTML(path, record[real_field])
return {
"server": pad["server"],
"path": path,
"url": url,
}
def pad_get_content(self, cr, uid, url, context=None):
content = ''
@@ -57,7 +89,8 @@ class pad_common(osv.osv_memory):
for k,v in self._all_columns:
field = v.column
if hasattr(field,'pad_content_field'):
default[k] = self.pad_generate_url(cr, uid, context)
pad = self.pad_generate_url(cr, uid, context)
default[k] = pad['url']
return super(pad_common, self).copy(cr, uid, id, default, context)
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+253
View File
@@ -0,0 +1,253 @@
#!/usr/bin/env python
"""Module to talk to EtherpadLite API."""
import json
import urllib
import urllib2
class EtherpadLiteClient:
"""Client to talk to EtherpadLite API."""
API_VERSION = 1 # TODO probably 1.1 sometime soon
CODE_OK = 0
CODE_INVALID_PARAMETERS = 1
CODE_INTERNAL_ERROR = 2
CODE_INVALID_FUNCTION = 3
CODE_INVALID_API_KEY = 4
TIMEOUT = 20
apiKey = ""
baseUrl = "http://localhost:9001/api"
def __init__(self, apiKey=None, baseUrl=None):
if apiKey:
self.apiKey = apiKey
if baseUrl:
self.baseUrl = baseUrl
def call(self, function, arguments=None):
"""Create a dictionary of all parameters"""
url = '%s/%d/%s' % (self.baseUrl, self.API_VERSION, function)
params = arguments or {}
params.update({'apikey': self.apiKey})
data = urllib.urlencode(params, True)
try:
opener = urllib2.build_opener()
request = urllib2.Request(url=url, data=data)
response = opener.open(request, timeout=self.TIMEOUT)
result = response.read()
response.close()
except urllib2.HTTPError:
raise
result = json.loads(result)
if result is None:
raise ValueError("JSON response could not be decoded")
return self.handleResult(result)
def handleResult(self, result):
"""Handle API call result"""
if 'code' not in result:
raise Exception("API response has no code")
if 'message' not in result:
raise Exception("API response has no message")
if 'data' not in result:
result['data'] = None
if result['code'] == self.CODE_OK:
return result['data']
elif result['code'] == self.CODE_INVALID_PARAMETERS or result['code'] == self.CODE_INVALID_API_KEY:
raise ValueError(result['message'])
elif result['code'] == self.CODE_INTERNAL_ERROR:
raise Exception(result['message'])
elif result['code'] == self.CODE_INVALID_FUNCTION:
raise Exception(result['message'])
else:
raise Exception("An unexpected error occurred whilst handling the response")
# GROUPS
# Pads can belong to a group. There will always be public pads that do not belong to a group (or we give this group the id 0)
def createGroup(self):
"""creates a new group"""
return self.call("createGroup")
def createGroupIfNotExistsFor(self, groupMapper):
"""this functions helps you to map your application group ids to etherpad lite group ids"""
return self.call("createGroupIfNotExistsFor", {
"groupMapper": groupMapper
})
def deleteGroup(self, groupID):
"""deletes a group"""
return self.call("deleteGroup", {
"groupID": groupID
})
def listPads(self, groupID):
"""returns all pads of this group"""
return self.call("listPads", {
"groupID": groupID
})
def createGroupPad(self, groupID, padName, text=''):
"""creates a new pad in this group"""
params = {
"groupID": groupID,
"padName": padName,
}
if text:
params['text'] = text
return self.call("createGroupPad", params)
# AUTHORS
# Theses authors are bind to the attributes the users choose (color and name).
def createAuthor(self, name=''):
"""creates a new author"""
params = {}
if name:
params['name'] = name
return self.call("createAuthor", params)
def createAuthorIfNotExistsFor(self, authorMapper, name=''):
"""this functions helps you to map your application author ids to etherpad lite author ids"""
params = {
'authorMapper': authorMapper
}
if name:
params['name'] = name
return self.call("createAuthorIfNotExistsFor", params)
# SESSIONS
# Sessions can be created between a group and a author. This allows
# an author to access more than one group. The sessionID will be set as
# a cookie to the client and is valid until a certain date.
def createSession(self, groupID, authorID, validUntil):
"""creates a new session"""
return self.call("createSession", {
"groupID": groupID,
"authorID": authorID,
"validUntil": validUntil
})
def deleteSession(self, sessionID):
"""deletes a session"""
return self.call("deleteSession", {
"sessionID": sessionID
})
def getSessionInfo(self, sessionID):
"""returns informations about a session"""
return self.call("getSessionInfo", {
"sessionID": sessionID
})
def listSessionsOfGroup(self, groupID):
"""returns all sessions of a group"""
return self.call("listSessionsOfGroup", {
"groupID": groupID
})
def listSessionsOfAuthor(self, authorID):
"""returns all sessions of an author"""
return self.call("listSessionsOfAuthor", {
"authorID": authorID
})
# PAD CONTENT
# Pad content can be updated and retrieved through the API
def getText(self, padID, rev=None):
"""returns the text of a pad"""
params = {"padID": padID}
if rev is not None:
params['rev'] = rev
return self.call("getText", params)
# introduced with pull request merge
def getHtml(self, padID, rev=None):
"""returns the html of a pad"""
params = {"padID": padID}
if rev is not None:
params['rev'] = rev
return self.call("getHTML", params)
def setText(self, padID, text):
"""sets the text of a pad"""
return self.call("setText", {
"padID": padID,
"text": text
})
def setHtml(self, padID, html):
"""sets the text of a pad from html"""
return self.call("setHTML", {
"padID": padID,
"html": html
})
# PAD
# Group pads are normal pads, but with the name schema
# GROUPID$PADNAME. A security manager controls access of them and its
# forbidden for normal pads to include a in the name.
def createPad(self, padID, text=''):
"""creates a new pad"""
params = {
"padID": padID,
}
if text:
params['text'] = text
return self.call("createPad", params)
def getRevisionsCount(self, padID):
"""returns the number of revisions of this pad"""
return self.call("getRevisionsCount", {
"padID": padID
})
def deletePad(self, padID):
"""deletes a pad"""
return self.call("deletePad", {
"padID": padID
})
def getReadOnlyID(self, padID):
"""returns the read only link of a pad"""
return self.call("getReadOnlyID", {
"padID": padID
})
def setPublicStatus(self, padID, publicStatus):
"""sets a boolean for the public status of a pad"""
return self.call("setPublicStatus", {
"padID": padID,
"publicStatus": publicStatus
})
def getPublicStatus(self, padID):
"""return true of false"""
return self.call("getPublicStatus", {
"padID": padID
})
def setPassword(self, padID, password):
"""returns ok or a error message"""
return self.call("setPassword", {
"padID": padID,
"password": password
})
def isPasswordProtected(self, padID):
"""returns true or false"""
return self.call("isPasswordProtected", {
"padID": padID
})
+31 -2
View File
@@ -1,7 +1,12 @@
.oe_pad_head {
box-sizing: border-box;
width: 100%;
display: block;
padding: 4px;
text-align: right;
}
.oe_pad_head .oe_pad_switch {
}
.oe_pad_readonly {
@@ -13,14 +18,38 @@
position: fixed;
top: 0px;
left: 0px;
width: 100%;
height: 100%;
right: 0px;
bottom: 0px;
background-color: white;
margin:0;
padding:0;
border:none;
z-index: 1000;
}
.oe_pad_content {
border: solid 1px #c4c4c4;
height: 150px;
-webkit-box-shadow: 0 5px 10px rgba(0,0,0,0.1);
-moz-box-shadow: 0 5px 10px rgba(0,0,0,0.1);
-ms-box-shadow: 0 5px 10px rgba(0,0,0,0.1);
-o-box-shadow: 0 5px 10px rgba(0,0,0,0.1);
box-shadow: 0 5px 10px rgba(0,0,0,0.1);
}
.oe_pad_content > p {
text-align: center;
opacity: 0.75;
}
.oe_pad_fullscreen .oe_pad_content {
height: 100%;
border: none;
-webkit-box-shadow: none;
-moz-box-shadow: none;
-ms-box-shadow: none;
-o-box-shadow: none;
box-shadow: none;
}
.etherpad_readonly ul, .etherpad_readonly ol {
+10 -4
View File
@@ -16,10 +16,17 @@ instance.web.form.FieldPad = instance.web.form.AbstractField.extend({
var self = this;
var _super = self._super;
_super.apply(self,[val]);
if (val === false || val === "") {
self.field_manager.dataset.call('pad_generate_url').then(function(r) {
_super.apply(self,[r]);
self.render_value();
self.field_manager.dataset.call('pad_generate_url',{context:{
model: self.field_manager.model,
field_name: self.name,
object_id: self.field_manager.datarecord.id
}}).then(function(data) {
if(data&&data.url){
_super.apply(self,[data.url]);
self.render_value();
}
});
} else {
self.render_value();
@@ -27,7 +34,6 @@ instance.web.form.FieldPad = instance.web.form.AbstractField.extend({
this._dirty_flag = true;
},
render_value: function() {
console.log("display");
var self = this;
var value = this.get('value');
+3 -1
View File
@@ -5,12 +5,14 @@
<t t-name="FieldPad">
<div class="oe_form_field_text oe_pad">
<div class="oe_pad_head">
<span class="oe_pad_switch">Fullscreen</span>
<button class="oe_pad_switch oe_button">Fullscreen</button>
</div>
<div class="oe_pad_content"></div>
</div>
</t>
<t t-name="FieldPad.unconfigured">
<p>
You must configure the etherpad through the menu Setting > Companies > Companies, in the configuration tab of your company.<br/>
</p>
</t>
</templates>
+44 -31
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:41+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -108,7 +108,7 @@ msgstr "ساعات التحقق من الصلاحية"
#. module: project
#: view:project.project:0
msgid "Pending Projects"
msgstr ""
msgstr "مشاريع قيد الإنتظار"
#. module: project
#: help:project.task,remaining_hours:0
@@ -563,7 +563,7 @@ msgstr "فتح المشاريع"
#: code:addons/project/project.py:358
#, python-format
msgid "You must assign members on the project '%s' !"
msgstr ""
msgstr "يجب تعيين أعضاء في المشروع '%s' !"
#. module: project
#: view:report.project.task.user:0
@@ -641,7 +641,7 @@ msgstr "وسط"
#. module: project
#: view:project.task:0 view:project.task.history.cumulative:0
msgid "Pending Tasks"
msgstr ""
msgstr "مهام قيد الإنتظار"
#. module: project
#: view:project.task:0 field:project.task,remaining_hours:0
@@ -682,7 +682,7 @@ msgstr "معلومات"
#. module: project
#: view:project.task:0 view:project.task.history.cumulative:0
msgid "Unassigned Tasks"
msgstr ""
msgstr "مهام غير معينة"
#. module: project
#: view:report.project.task.user:0
@@ -789,6 +789,7 @@ msgid ""
"You cannot delete a project containing tasks. I suggest you to desactivate "
"it."
msgstr ""
"لا يمكنك حذف المهام المحتواة في المشروع. انا اقترح لك جعلها غير نشطة."
#. module: project
#: view:project.vs.hours:0
@@ -813,7 +814,7 @@ msgstr "ساعات تأخير"
#. module: project
#: selection:project.task,priority:0
msgid "Very important"
msgstr ""
msgstr "شديد الأهمية"
#. module: project
#: model:ir.actions.act_window,name:project.action_project_task_user_tree
@@ -834,6 +835,8 @@ msgid ""
"If you check this field, the project manager will receive an email each time "
"a task is completed by his team."
msgstr ""
"إذا قمت بتحديد هذا الحقل فإن مدير المشروع سوف يتلقى رسالة بريد إلكتروني في "
"كل مرة يتم الانتهاء من المهمة لفريقه."
#. module: project
#: model:ir.model,name:project.model_project_project
@@ -867,7 +870,7 @@ msgstr "مراحل"
#. module: project
#: view:project.task:0
msgid "Change to Previous Stage"
msgstr ""
msgstr "التغيير للمرحلة السابقة"
#. module: project
#: model:ir.actions.todo.category,name:project.category_project_config
@@ -910,7 +913,7 @@ msgstr "الرئيسي"
#. module: project
#: view:project.task:0
msgid "Mark as Blocked"
msgstr ""
msgstr "تحدد كمحظورة"
#. module: project
#: model:ir.actions.act_window,help:project.action_view_task
@@ -999,7 +1002,7 @@ msgstr "الساعات المخططة"
#. module: project
#: model:ir.actions.act_window,name:project.action_review_task_stage
msgid "Review Task Stages"
msgstr ""
msgstr "استعراض مراحل المهمة"
#. module: project
#: view:project.project:0
@@ -1009,7 +1012,7 @@ msgstr "الحالات: %(الحالة)"
#. module: project
#: help:project.task,sequence:0
msgid "Gives the sequence order when displaying a list of tasks."
msgstr ""
msgstr "يعطي النظام تسلسل عند عرض قائمة المهام."
#. module: project
#: view:project.project:0 view:project.task:0
@@ -1021,7 +1024,7 @@ msgstr "تاريخ البدء"
#: selection:project.task.history,kanban_state:0
#: selection:project.task.history.cumulative,kanban_state:0
msgid "Ready To Pull"
msgstr ""
msgstr "على استعداد للسحب"
#. module: project
#: view:project.task:0 field:project.task,parent_ids:0
@@ -1034,7 +1037,7 @@ msgstr "المهام الاساسية"
#: view:project.task.history.cumulative:0
#: selection:project.task.history.cumulative,kanban_state:0
msgid "Blocked"
msgstr ""
msgstr "محظورة"
#. module: project
#: help:project.task,progress:0
@@ -1042,6 +1045,8 @@ msgid ""
"If the task has a progress of 99.99% you should close the task if it's "
"finished or reevaluate the time"
msgstr ""
"إذا كانت المهمة لديها من التقدم 99.99٪ يجب إغلاق المهمة إذا تم الإنتهاء أو "
"إعادة تقييم الوقت"
#. module: project
#: view:project.project:0
@@ -1070,7 +1075,7 @@ msgstr "عمليات الفواتير"
#. module: project
#: view:project.task:0
msgid "For changing to delegate state"
msgstr ""
msgstr "لتغيير تفويض حالة"
#. module: project
#: field:project.task,priority:0 field:report.project.task.user,priority:0
@@ -1097,7 +1102,7 @@ msgstr "اعادة تقييم.المهمة.المشروع"
#: code:addons/project/wizard/project_task_delegate.py:81
#, python-format
msgid "CHECK: %s"
msgstr ""
msgstr "التحقق: %s"
#. module: project
#: view:project.project:0
@@ -1152,7 +1157,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Change Type"
msgstr ""
msgstr "تغير النوع"
#. module: project
#: help:project.project,members:0
@@ -1198,7 +1203,7 @@ msgstr "اسم المشروع"
#: model:ir.model,name:project.model_project_task_history
#: model:ir.model,name:project.model_project_task_history_cumulative
msgid "History of Tasks"
msgstr ""
msgstr "تاريخ المهام"
#. module: project
#: help:project.task.delegate,state:0
@@ -1212,7 +1217,7 @@ msgstr ""
#: code:addons/project/wizard/mail_compose_message.py:45
#, python-format
msgid "Please specify the Customer or email address of Customer."
msgstr ""
msgstr "يرجى تحديد العميل أو عنوان البريد الإلكتروني للعملاء."
#. module: project
#: selection:report.project.task.user,month:0
@@ -1265,7 +1270,7 @@ msgstr "نوفمبر"
#. module: project
#: model:ir.actions.act_window,name:project.action_create_initial_projects_installer
msgid "Create your Firsts Projects"
msgstr ""
msgstr "إنشاء أوليات مشاريعك"
#. module: project
#: code:addons/project/project.py:229
@@ -1276,7 +1281,7 @@ msgstr "تم غلق المشروع ‘%s‘."
#. module: project
#: view:project.task.history.cumulative:0
msgid "Tasks's Cumulative Flow"
msgstr ""
msgstr "المهام والتدفق التراكمي"
#. module: project
#: view:project.task:0
@@ -1291,7 +1296,7 @@ msgstr "أكتوبر"
#. module: project
#: view:project.task:0
msgid "Validate planned time and open task"
msgstr ""
msgstr "التحقق من صحة الوقت المخطط له والمهام المفتوحة"
#. module: project
#: help:project.task,delay_hours:0
@@ -1299,10 +1304,12 @@ msgid ""
"Computed as difference between planned hours by the project manager and the "
"total hours of the task."
msgstr ""
"تحسب الفرق بين الساعات المخطط لها من قبل مدير المشروع والساعات الإجمالية "
"للمهمة."
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgid "Delegation"
msgstr ""
#. module: project
@@ -1331,7 +1338,7 @@ msgstr "الشركات"
#. module: project
#: view:project.project:0
msgid "Projects in which I am a member."
msgstr ""
msgstr "المشاريع التي أنا عضو."
#. module: project
#: view:project.project:0
@@ -1426,7 +1433,7 @@ msgstr "مرشحات مفصلة..."
#: code:addons/project/project.py:1148
#, python-format
msgid "Please delete the project linked with this account first."
msgstr ""
msgstr "رجاء قم بحذف رابط المشروع مع هذا الحساب أولاً"
#. module: project
#: field:project.task,total_hours:0 field:project.vs.hours,total_hours:0
@@ -1527,7 +1534,7 @@ msgstr "قيد التقدم"
#. module: project
#: view:project.task.history.cumulative:0
msgid "Task's Analysis"
msgstr ""
msgstr "تحليل المهمة"
#. module: project
#: code:addons/project/project.py:789
@@ -1536,11 +1543,13 @@ msgid ""
"Child task still open.\n"
"Please cancel or complete child task first."
msgstr ""
"المهمة الوليدة التي لا تزال مفتوحة .\n"
" يرجى إلغاء أو إكمال المهمة الوليدة أولاص."
#. module: project
#: view:project.task.type:0
msgid "Stages common to all projects"
msgstr ""
msgstr "مشاريع مشتركة بين جميع المراحل"
#. module: project
#: constraint:project.task:0
@@ -1561,7 +1570,7 @@ msgstr ""
#. module: project
#: view:project.project:0
msgid "Projects in which I am a manager"
msgstr ""
msgstr "المشاريع التي أنا مديرها"
#. module: project
#: code:addons/project/project.py:959
@@ -1660,6 +1669,8 @@ msgid ""
"If you check this field, this stage will be proposed by default on each new "
"project. It will not assign this stage to existing projects."
msgstr ""
"إذا قمت بتحديد هذا الحقل، سيتم اقترح هذه المرحلة بشكل افتراضي على كل مشروع "
"جديد. وسوف يتم تعيين هذه المرحلة للمشاريع القائمة."
#. module: project
#: view:board.board:0
@@ -1720,7 +1731,7 @@ msgstr "مجموع الساعات الكلية لكل المهام المتعل
#. module: project
#: field:project.task.type,project_default:0
msgid "Common to All Projects"
msgstr ""
msgstr "مشاريع مشتركة بين الجميع"
#. module: project
#: model:process.transition,note:project.process_transition_opendonetask0
@@ -1773,7 +1784,7 @@ msgstr "ملخص العمل"
#. module: project
#: view:project.task.history.cumulative:0
msgid "Month-2"
msgstr ""
msgstr "الشهر-2"
#. module: project
#: help:report.project.task.user,closing_days:0
@@ -1821,6 +1832,8 @@ msgid ""
"The stages can be common to all project or specific to one project. Each "
"task will follow the different stages in order to be closed."
msgstr ""
"يمكن للمراحل تكون مشتركة بين جميع المشاريع أو محددة لمشروع واحد. كل مهمة سوف "
"تتبع المراحل المختلفة من أجل أن تكون مغلقة."
#. module: project
#: help:project.project,sequence:0
@@ -1949,7 +1962,7 @@ msgstr "تم الغاء المهمة ‘%s‘."
#. module: project
#: view:project.task:0 view:res.partner:0
msgid "For changing to open state"
msgstr ""
msgstr "للتغير إلى الحالة المفتوحة"
#. module: project
#: model:ir.model,name:project.model_res_partner view:project.project:0
@@ -1983,7 +1996,7 @@ msgstr "تذييل البريد"
#. module: project
#: view:project.task:0 view:project.task.history.cumulative:0
msgid "In Progress Tasks"
msgstr ""
msgstr "مهام في قيد التقدم"
#~ msgid "Timesheets"
#~ msgstr "الجداول الزمنية"
+3 -3
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:41+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1276,7 +1276,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgid "Delegation"
msgstr ""
#. module: project
+3 -3
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:41+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1275,7 +1275,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgid "Delegation"
msgstr ""
#. module: project
+3 -3
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:41+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1322,7 +1322,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgid "Delegation"
msgstr ""
#. module: project
+3 -3
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:41+0000\n"
"X-Generator: Launchpad (build 15985)\n"
"X-Poedit-Language: Czech\n"
#. module: project
@@ -1298,7 +1298,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgid "Delegation"
msgstr ""
#. module: project
+3 -3
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:41+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1276,7 +1276,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgid "Delegation"
msgstr ""
#. module: project
+7 -4
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1336,8 +1336,8 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgstr "Delegationsverlauf"
msgid "Delegation"
msgstr ""
#. module: project
#: model:ir.model,name:project.model_res_users
@@ -2573,3 +2573,6 @@ msgstr "Aufgaben in Bearbeitung"
#~ msgid "E-mail composition wizard"
#~ msgstr "Email-Zusammensetzung Assistent"
#~ msgid "Delegations History"
#~ msgstr "Delegationsverlauf"
+3 -3
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
"X-Poedit-Country: GREECE\n"
"X-Poedit-Language: Greek\n"
"X-Poedit-SourceCharset: utf-8\n"
@@ -1287,7 +1287,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgid "Delegation"
msgstr ""
#. module: project
+7 -4
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1325,8 +1325,8 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgstr "Histórico de delegaciones"
msgid "Delegation"
msgstr ""
#. module: project
#: model:ir.model,name:project.model_res_users
@@ -2568,3 +2568,6 @@ msgstr ""
#~ msgid "E-mail composition wizard"
#~ msgstr "Asistente de composición de e-mail"
#~ msgid "Delegations History"
#~ msgstr "Histórico de delegaciones"
+3 -3
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1284,7 +1284,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgid "Delegation"
msgstr ""
#. module: project
+7 -4
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:43+0000\n"
"X-Generator: Launchpad (build 15985)\n"
"Language: \n"
#. module: project
@@ -1333,8 +1333,8 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgstr "Histórico de delegaciones"
msgid "Delegation"
msgstr ""
#. module: project
#: model:ir.model,name:project.model_res_users
@@ -2582,3 +2582,6 @@ msgstr "Tarea en progreso"
#~ msgid "E-mail composition wizard"
#~ msgstr "Asistente de composición de e-mail"
#~ msgid "Delegations History"
#~ msgstr "Histórico de delegaciones"
+7 -4
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:56+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:43+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1330,8 +1330,8 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgstr "Histórico de delegaciones"
msgid "Delegation"
msgstr ""
#. module: project
#: model:ir.model,name:project.model_res_users
@@ -2568,3 +2568,6 @@ msgstr "Tareas en progreso"
#~ msgid "E-mail composition wizard"
#~ msgstr "Asistente de composición de e-mail"
#~ msgid "Delegations History"
#~ msgstr "Histórico de delegaciones"
+3 -3
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:56+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:43+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1276,7 +1276,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgid "Delegation"
msgstr ""
#. module: project
+3 -3
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1282,7 +1282,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgid "Delegation"
msgstr ""
#. module: project
+3 -3
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:41+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1280,7 +1280,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgid "Delegation"
msgstr ""
#. module: project
+7 -4
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1299,8 +1299,8 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgstr "Delegointien historia"
msgid "Delegation"
msgstr ""
#. module: project
#: model:ir.model,name:project.model_res_users
@@ -2338,3 +2338,6 @@ msgstr "Meneilläänolevat tehtävät"
#~ msgid "E-mail composition wizard"
#~ msgstr "Sähköpostin luonti velho"
#~ msgid "Delegations History"
#~ msgstr "Delegointien historia"
+7 -4
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1338,8 +1338,8 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgstr "Historique des délégations"
msgid "Delegation"
msgstr ""
#. module: project
#: model:ir.model,name:project.model_res_users
@@ -2587,5 +2587,8 @@ msgstr "Tâches en cours"
#~ msgid "Manager Email"
#~ msgstr "Courriel du responsable"
#~ msgid "Delegations History"
#~ msgstr "Historique des délégations"
#~ msgid "E-mail composition wizard"
#~ msgstr "Assistant de composition de courriels"
+3 -3
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1276,7 +1276,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgid "Delegation"
msgstr ""
#. module: project
+3 -3
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1276,7 +1276,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgid "Delegation"
msgstr ""
#. module: project
+3 -3
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
"Language: hr\n"
#. module: project
@@ -1283,7 +1283,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgid "Delegation"
msgstr ""
#. module: project
+13 -10
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -79,7 +79,7 @@ msgstr "Nem engedélyezett művelet!"
#: code:addons/project/wizard/project_task_delegate.py:78
#, python-format
msgid "CHECK: "
msgstr ""
msgstr "ELLENŐRIZNI: "
#. module: project
#: field:project.task,user_email:0
@@ -263,7 +263,7 @@ msgstr "Nap"
#. module: project
#: model:ir.ui.menu,name:project.menu_project_config_project
msgid "Projects and Stages"
msgstr ""
msgstr "Projektek és Szakaszok"
#. module: project
#: view:project.project:0
@@ -485,7 +485,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Change Color"
msgstr ""
msgstr "Szín megváltoztatása"
#. module: project
#: constraint:account.analytic.account:0
@@ -920,7 +920,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Mark as Blocked"
msgstr ""
msgstr "Blokkoltnak jelölés"
#. module: project
#: model:ir.actions.act_window,help:project.action_view_task
@@ -1047,7 +1047,7 @@ msgstr "Forrás feladatok"
#: view:project.task.history.cumulative:0
#: selection:project.task.history.cumulative,kanban_state:0
msgid "Blocked"
msgstr ""
msgstr "Blokkolva"
#. module: project
#: help:project.task,progress:0
@@ -1110,7 +1110,7 @@ msgstr "project.task.reevaluate"
#: code:addons/project/wizard/project_task_delegate.py:81
#, python-format
msgid "CHECK: %s"
msgstr ""
msgstr "ELLENŐRIZNI: %s"
#. module: project
#: view:project.project:0
@@ -1320,7 +1320,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgid "Delegation"
msgstr ""
#. module: project
@@ -1558,7 +1558,7 @@ msgstr ""
#. module: project
#: view:project.task.type:0
msgid "Stages common to all projects"
msgstr ""
msgstr "Közös használatú szakaszok"
#. module: project
#: constraint:project.task:0
@@ -2222,3 +2222,6 @@ msgstr ""
#~ msgid "Automatically synchronizes project tasks and crm cases."
#~ msgstr "Automatikusan összehangolja a projektfeladatokat és a crm eseteket."
#~ msgid "Delegations History"
#~ msgstr "Átruházás történet"
+3 -3
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1275,7 +1275,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgid "Delegation"
msgstr ""
#. module: project
+3 -3
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1320,7 +1320,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgid "Delegation"
msgstr ""
#. module: project
+7 -4
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1294,8 +1294,8 @@ msgstr "プロジェクトマネジャによる計画時間数とタスクの合
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgstr "委任の履歴"
msgid "Delegation"
msgstr ""
#. module: project
#: model:ir.model,name:project.model_res_users
@@ -1969,3 +1969,6 @@ msgstr "進行中タスク"
#~ msgid "E-mail composition wizard"
#~ msgstr "Eメール作成ウィザード"
#~ msgid "Delegations History"
#~ msgstr "委任の履歴"
+3 -3
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1276,7 +1276,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgid "Delegation"
msgstr ""
#. module: project
+3 -3
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1285,7 +1285,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgid "Delegation"
msgstr ""
#. module: project
+3 -3
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1314,7 +1314,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgid "Delegation"
msgstr ""
#. module: project
+7 -4
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1323,8 +1323,8 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgstr "Ацагласан Түүх"
msgid "Delegation"
msgstr ""
#. module: project
#: model:ir.model,name:project.model_res_users
@@ -2335,3 +2335,6 @@ msgstr "Боловсруулагдаж байгаа даалгаврууд"
#~ msgid "E-mail composition wizard"
#~ msgstr "И-мэйл үүсгэх харилцах цонх"
#~ msgid "Delegations History"
#~ msgstr "Ацагласан Түүх"
+77 -62
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -37,6 +37,7 @@ msgstr "Oppgaven '%s' er tildelt til %s."
#: constraint:res.users:0
msgid "The chosen company is not in the allowed companies for this user"
msgstr ""
"Det valgte firmaet er ikke i listen over tillatte firmaer for denne brukeren"
#. module: project
#: view:report.project.task.user:0
@@ -81,7 +82,7 @@ msgstr "SJEKK: "
#. module: project
#: field:project.task,user_email:0
msgid "User Email"
msgstr ""
msgstr "E-post for bruker"
#. module: project
#: field:project.task,work_ids:0
@@ -93,7 +94,7 @@ msgstr "Arbeid utført"
#: code:addons/project/project.py:1148
#, python-format
msgid "Warning !"
msgstr ""
msgstr "Advarsel !"
#. module: project
#: model:ir.model,name:project.model_project_task_delegate
@@ -121,7 +122,7 @@ msgstr ""
#. module: project
#: view:project.project:0
msgid "Re-open project"
msgstr ""
msgstr "Gjenåpne prosjekt"
#. module: project
#: help:project.project,priority:0
@@ -131,7 +132,7 @@ msgstr ""
#. module: project
#: constraint:project.project:0
msgid "Error! project start-date must be lower then project end-date."
msgstr ""
msgstr "Feil! Startdato for prosjekt må være tidligere enn sluttdato."
#. module: project
#: view:project.task.reevaluate:0
@@ -180,7 +181,7 @@ msgstr "Mine oppgaver"
#. module: project
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
msgstr ""
msgstr "Feil! Du kan ikke lage en uendelig struktur av oppgaver."
#. module: project
#: field:project.task,company_id:0 field:project.task.work,company_id:0
@@ -201,7 +202,7 @@ msgstr "Din oppgavetittel"
#. module: project
#: field:project.task.type,name:0
msgid "Stage Name"
msgstr ""
msgstr "Fasenavn"
#. module: project
#: model:process.transition.action,name:project.process_transition_action_openpendingtask0
@@ -211,7 +212,7 @@ msgstr ""
#. module: project
#: selection:project.task,priority:0
msgid "Important"
msgstr ""
msgstr "Viktig"
#. module: project
#: model:process.node,note:project.process_node_drafttask0
@@ -221,7 +222,7 @@ msgstr "Definer krav og oppgi planlagte timer"
#. module: project
#: view:project.task:0
msgid "Change Stage"
msgstr ""
msgstr "Endre fase"
#. module: project
#: view:project.project:0
@@ -258,7 +259,7 @@ msgstr "Dag"
#. module: project
#: model:ir.ui.menu,name:project.menu_project_config_project
msgid "Projects and Stages"
msgstr ""
msgstr "Prosjekter og faser"
#. module: project
#: view:project.project:0
@@ -294,12 +295,12 @@ msgstr "Mine åpne oppgaver"
#, python-format
msgid ""
"Please specify the Project Manager or email address of Project Manager."
msgstr ""
msgstr "Vennligst angi prosjektleder eller e-post-adresse for prosjektleder."
#. module: project
#: view:project.task:0
msgid "For cancelling the task"
msgstr ""
msgstr "For å avbryte oppgaven"
#. module: project
#: model:ir.model,name:project.model_project_task_work
@@ -361,7 +362,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Show only tasks having a deadline"
msgstr ""
msgstr "Vis kun oppgaver med deadline"
#. module: project
#: selection:project.task,state:0 selection:project.task.history,state:0
@@ -374,7 +375,7 @@ msgstr "Kansellert"
#. module: project
#: field:project.task,date_end:0 field:report.project.task.user,date_end:0
msgid "Ending Date"
msgstr ""
msgstr "Sluttdato"
#. module: project
#: view:project.project:0 field:project.project,warn_header:0
@@ -384,7 +385,7 @@ msgstr "E-post topptekst"
#. module: project
#: view:project.task:0
msgid "Change to Next Stage"
msgstr ""
msgstr "Endre til neste fase"
#. module: project
#: model:process.node,name:project.process_node_donetask0
@@ -394,7 +395,7 @@ msgstr "Fullførte oppgaver"
#. module: project
#: field:project.task,color:0
msgid "Color Index"
msgstr ""
msgstr "Fargeindeks"
#. module: project
#: model:ir.ui.menu,name:project.menu_definitions view:res.company:0
@@ -404,7 +405,7 @@ msgstr "Konfigurasjon"
#. module: project
#: view:report.project.task.user:0
msgid "Current Month"
msgstr ""
msgstr "Inneværende måned"
#. module: project
#: model:process.transition,note:project.process_transition_delegate0
@@ -414,7 +415,7 @@ msgstr "Delegerer oppgaver til den andre brukeren"
#. module: project
#: view:project.project:0 view:project.task:0 view:report.project.task.user:0
msgid "Group By..."
msgstr ""
msgstr "Grupper etter ..."
#. module: project
#: field:project.task.work,user_id:0
@@ -433,7 +434,7 @@ msgstr ""
#. module: project
#: model:project.task.type,name:project.project_tt_testing
msgid "Testing"
msgstr ""
msgstr "Tester"
#. module: project
#: code:addons/project/project.py:829
@@ -471,17 +472,17 @@ msgstr "_Avbryt"
#. module: project
#: view:project.task.history.cumulative:0
msgid "Ready"
msgstr ""
msgstr "Klar"
#. module: project
#: view:project.task:0
msgid "Change Color"
msgstr ""
msgstr "Bytt farge"
#. module: project
#: constraint:account.analytic.account:0
msgid "Error! You can not create recursive analytic accounts."
msgstr ""
msgstr "Feil! Du kan ikke opprette uendelig struktur med analytiske kontoer."
#. module: project
#: code:addons/project/project.py:264 code:addons/project/project.py:303
@@ -492,12 +493,12 @@ msgstr " (kopi)"
#. module: project
#: view:project.task:0
msgid "New Tasks"
msgstr ""
msgstr "Ny oppgave"
#. module: project
#: view:report.project.task.user:0 field:report.project.task.user,nbr:0
msgid "# of tasks"
msgstr ""
msgstr "Antall oppgaver"
#. module: project
#: view:project.task:0
@@ -517,7 +518,7 @@ msgstr ""
#. module: project
#: sql_constraint:res.users:0
msgid "You can not have two users with the same login !"
msgstr ""
msgstr "Du kan ikke ha to brukere med samme login!"
#. module: project
#: view:project.project:0
@@ -537,7 +538,7 @@ msgstr "Mine prosjekter"
#. module: project
#: constraint:res.company:0
msgid "Error! You can not create recursive companies."
msgstr ""
msgstr "Feil! Dukan ikke opprette uendelig struktur av firmaer."
#. module: project
#: view:project.task:0
@@ -552,23 +553,23 @@ msgstr "From draft state, it will come into the open state."
#. module: project
#: view:report.project.task.user:0 field:report.project.task.user,no_of_days:0
msgid "# of Days"
msgstr ""
msgstr "Antall dager"
#. module: project
#: view:project.project:0
msgid "Open Projects"
msgstr ""
msgstr "Åpne prosjekter"
#. module: project
#: code:addons/project/project.py:358
#, python-format
msgid "You must assign members on the project '%s' !"
msgstr ""
msgstr "Du må tilordne deltakere til prosjekt '%s'!"
#. module: project
#: view:report.project.task.user:0
msgid "In progress tasks"
msgstr ""
msgstr "Oppgaver i arbeid"
#. module: project
#: help:project.project,progress_rate:0
@@ -592,7 +593,7 @@ msgstr "Prosjektoppgave"
#: selection:project.task.history.cumulative,state:0
#: view:report.project.task.user:0
msgid "New"
msgstr ""
msgstr "Ny"
#. module: project
#: help:project.task,total_hours:0
@@ -625,7 +626,7 @@ msgstr ""
#: code:addons/project/project.py:597
#, python-format
msgid "%s (copy)"
msgstr ""
msgstr "%s (kopi)"
#. module: project
#: view:report.project.task.user:0
@@ -641,7 +642,7 @@ msgstr "Medium"
#. module: project
#: view:project.task:0 view:project.task.history.cumulative:0
msgid "Pending Tasks"
msgstr ""
msgstr "Ventende oppgaver"
#. module: project
#: view:project.task:0 field:project.task,remaining_hours:0
@@ -659,13 +660,13 @@ msgstr ""
#. module: project
#: view:report.project.task.user:0
msgid "Creation Date"
msgstr ""
msgstr "Opprettelsesdato"
#. module: project
#: view:project.task:0 field:project.task.history,remaining_hours:0
#: field:project.task.history.cumulative,remaining_hours:0
msgid "Remaining Time"
msgstr ""
msgstr "Gjenstående tid"
#. module: project
#: field:project.project,planned_hours:0
@@ -755,7 +756,7 @@ msgstr "Prosjekter"
#: field:project.task.history.cumulative,type_id:0
#: view:report.project.task.user:0 field:report.project.task.user,type_id:0
msgid "Stage"
msgstr ""
msgstr "Fase"
#. module: project
#: model:ir.actions.act_window,help:project.open_task_type_form
@@ -769,7 +770,7 @@ msgstr ""
#: code:addons/project/project.py:903
#, python-format
msgid "The task '%s' is opened."
msgstr ""
msgstr "Oppgaven '%s' er åpnet."
#. module: project
#: view:project.task:0
@@ -788,6 +789,8 @@ msgid ""
"You cannot delete a project containing tasks. I suggest you to desactivate "
"it."
msgstr ""
"Du kan ikke slette et prosjekt som har oppgaver. Prosjektet kan evt. "
"deaktiveres."
#. module: project
#: view:project.vs.hours:0
@@ -812,7 +815,7 @@ msgstr "Timer forsinket"
#. module: project
#: selection:project.task,priority:0
msgid "Very important"
msgstr ""
msgstr "Veldig viktig"
#. module: project
#: model:ir.actions.act_window,name:project.action_project_task_user_tree
@@ -833,6 +836,8 @@ msgid ""
"If you check this field, the project manager will receive an email each time "
"a task is completed by his team."
msgstr ""
"Ved avkryssing vil prosjektleder motta en e-post hver gang en oppgave blir "
"fullført av hans team."
#. module: project
#: model:ir.model,name:project.model_project_project
@@ -861,12 +866,12 @@ msgstr ""
#: model:ir.actions.act_window,name:project.open_task_type_form
#: model:ir.ui.menu,name:project.menu_task_types_view
msgid "Stages"
msgstr ""
msgstr "Faser"
#. module: project
#: view:project.task:0
msgid "Change to Previous Stage"
msgstr ""
msgstr "Endre til foregående fase"
#. module: project
#: model:ir.actions.todo.category,name:project.category_project_config
@@ -882,7 +887,7 @@ msgstr "Prosjekt time enhet"
#. module: project
#: view:report.project.task.user:0
msgid "In progress"
msgstr ""
msgstr "I arbeid"
#. module: project
#: model:ir.actions.act_window,name:project.action_project_task_delegate
@@ -909,7 +914,7 @@ msgstr "Overordnet"
#. module: project
#: view:project.task:0
msgid "Mark as Blocked"
msgstr ""
msgstr "Marker som blokkert"
#. module: project
#: model:ir.actions.act_window,help:project.action_view_task
@@ -952,7 +957,7 @@ msgstr ""
#. module: project
#: view:project.task.reevaluate:0
msgid "Reevaluate Task"
msgstr ""
msgstr "Evaluer oppgave på nytt"
#. module: project
#: view:project.task.history.cumulative:0 view:report.project.task.user:0
@@ -969,12 +974,12 @@ msgstr "Prosjektoppgaver"
#: model:ir.model,name:project.model_project_task_type
#: view:project.task.type:0
msgid "Task Stage"
msgstr ""
msgstr "Oppgavefase"
#. module: project
#: model:project.task.type,name:project.project_tt_specification
msgid "Design"
msgstr ""
msgstr "Utforming"
#. module: project
#: field:project.task,planned_hours:0
@@ -987,7 +992,7 @@ msgstr "Planlagte timer"
#. module: project
#: model:ir.actions.act_window,name:project.action_review_task_stage
msgid "Review Task Stages"
msgstr ""
msgstr "Gjennomgå oppgavefaser"
#. module: project
#: view:project.project:0
@@ -997,7 +1002,7 @@ msgstr ""
#. module: project
#: help:project.task,sequence:0
msgid "Gives the sequence order when displaying a list of tasks."
msgstr ""
msgstr "Gir sorteringsrekkefølge ved listing av oppgaver"
#. module: project
#: view:project.project:0 view:project.task:0
@@ -1022,7 +1027,7 @@ msgstr "Overordnede oppgaver"
#: view:project.task.history.cumulative:0
#: selection:project.task.history.cumulative,kanban_state:0
msgid "Blocked"
msgstr ""
msgstr "Blokkert"
#. module: project
#: help:project.task,progress:0
@@ -1034,7 +1039,7 @@ msgstr ""
#. module: project
#: view:project.project:0
msgid "Contact Address"
msgstr ""
msgstr "Kontaktadresse"
#. module: project
#: help:project.task,kanban_state:0
@@ -1137,7 +1142,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Change Type"
msgstr ""
msgstr "Endre type"
#. module: project
#: help:project.project,members:0
@@ -1145,6 +1150,8 @@ msgid ""
"Project's members are users who can have an access to the tasks related to "
"this project."
msgstr ""
"Prosjektdeltakere er brukere som har tilgang til oppgavene som hører til "
"prosjektet."
#. module: project
#: view:project.project:0 field:project.task,manager_id:0
@@ -1154,12 +1161,12 @@ msgstr "Prosjektleder"
#. module: project
#: view:project.task:0 view:res.partner:0
msgid "For changing to done state"
msgstr ""
msgstr "For å bytte til ferdig tilstand"
#. module: project
#: model:ir.model,name:project.model_report_project_task_user
msgid "Tasks by user and project"
msgstr ""
msgstr "Oppgaver pr. bruker og prosjekt"
#. module: project
#: selection:report.project.task.user,month:0
@@ -1171,7 +1178,7 @@ msgstr "August"
#: selection:project.task.history,kanban_state:0
#: selection:project.task.history.cumulative,kanban_state:0
msgid "Normal"
msgstr ""
msgstr "Normal"
#. module: project
#: view:project.project:0 field:project.project,complete_name:0
@@ -1182,7 +1189,7 @@ msgstr "Prosjektnavn"
#: model:ir.model,name:project.model_project_task_history
#: model:ir.model,name:project.model_project_task_history_cumulative
msgid "History of Tasks"
msgstr ""
msgstr "Oppgavehistorikk"
#. module: project
#: help:project.task.delegate,state:0
@@ -1211,7 +1218,7 @@ msgstr "Totaltid"
#: view:report.project.task.user:0
#: field:report.project.task.user,closing_days:0
msgid "Days to Close"
msgstr ""
msgstr "Dager til lukking"
#. module: project
#: model:ir.actions.act_window,name:project.open_board_project
@@ -1227,7 +1234,7 @@ msgstr ""
#. module: project
#: model:res.groups,name:project.group_project_user
msgid "User"
msgstr ""
msgstr "Bruker"
#. module: project
#: field:project.project,active:0
@@ -1238,7 +1245,7 @@ msgstr "Aktiv"
#: view:report.project.task.user:0
#: field:report.project.task.user,opening_days:0
msgid "Days to Open"
msgstr ""
msgstr "Dager til åpning"
#. module: project
#: selection:report.project.task.user,month:0
@@ -1254,7 +1261,7 @@ msgstr ""
#: code:addons/project/project.py:229
#, python-format
msgid "The project '%s' has been closed."
msgstr ""
msgstr "Prosjektet '%s' er lukket."
#. module: project
#: view:project.task.history.cumulative:0
@@ -1287,7 +1294,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgid "Delegation"
msgstr ""
#. module: project
@@ -1301,6 +1308,8 @@ msgid ""
"If the active field is set to False, it will allow you to hide the project "
"without removing it."
msgstr ""
"Ved å fjerne avkryssing for Aktiv vil prosjektet skjules uten å måtte "
"slettes."
#. module: project
#: view:project.task:0
@@ -1326,7 +1335,7 @@ msgstr "Søk i prosjekt"
#: code:addons/project/project.py:251
#, python-format
msgid "The project '%s' has been opened."
msgstr ""
msgstr "Prosjektet '%s' er åpnet."
#. module: project
#: field:project.task.history,date:0
@@ -1401,7 +1410,7 @@ msgstr ""
#. module: project
#: view:report.project.task.user:0
msgid "Extended Filters..."
msgstr ""
msgstr "Utvidede filtre ..."
#. module: project
#: code:addons/project/project.py:1148
@@ -2191,3 +2200,9 @@ msgstr ""
#~ msgid "Running projects"
#~ msgstr "Løpende prosjekter"
#~ msgid "Delegations History"
#~ msgstr "Delegeringshistorikk"
#~ msgid "E-mail composition wizard"
#~ msgstr "Veiviser for opprettelse av e-post"
+8 -5
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -920,7 +920,7 @@ msgstr "Bovenliggend"
#. module: project
#: view:project.task:0
msgid "Mark as Blocked"
msgstr "Maarkeer als geblokkeerd"
msgstr "Markeer als geblokkeerd"
#. module: project
#: model:ir.actions.act_window,help:project.action_view_task
@@ -1325,8 +1325,8 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgstr "Deligatiehistorie"
msgid "Delegation"
msgstr ""
#. module: project
#: model:ir.model,name:project.model_res_users
@@ -2566,3 +2566,6 @@ msgstr "Lopende taken"
#~ msgid "E-mail composition wizard"
#~ msgstr "E-mail opmaak wizard"
#~ msgid "Delegations History"
#~ msgstr "Deligatiehistorie"
+3 -3
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1317,7 +1317,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgid "Delegation"
msgstr ""
#. module: project
+7 -4
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1322,8 +1322,8 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgstr "Historia przydziałów"
msgid "Delegation"
msgstr ""
#. module: project
#: model:ir.model,name:project.model_res_users
@@ -2529,3 +2529,6 @@ msgstr "Zadania w toku"
#~ msgid "E-mail composition wizard"
#~ msgstr "Kreator tworzenia wiadomości"
#~ msgid "Delegations History"
#~ msgstr "Historia przydziałów"
+7 -4
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1328,8 +1328,8 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgstr "Histórico das delegações"
msgid "Delegation"
msgstr ""
#. module: project
#: model:ir.model,name:project.model_res_users
@@ -2561,5 +2561,8 @@ msgstr "Tarefas em progresso"
#~ msgid "Automatically synchronizes project tasks and crm cases."
#~ msgstr "Sincroniza automaticamente as tarefas do projecto e os casos de crm."
#~ msgid "Delegations History"
#~ msgstr "Histórico das delegações"
#~ msgid "E-mail composition wizard"
#~ msgstr "Assistente de composição de email"
+7 -4
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1331,8 +1331,8 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgstr "Histórico de Delegações"
msgid "Delegation"
msgstr ""
#. module: project
#: model:ir.model,name:project.model_res_users
@@ -2559,3 +2559,6 @@ msgstr "Tarefas em Progresso"
#~ msgid "E-mail composition wizard"
#~ msgstr "Assistente de composição de E-mail."
#~ msgid "Delegations History"
#~ msgstr "Histórico de Delegações"
+7 -4
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1338,8 +1338,8 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgstr "Istoric Delegatii"
msgid "Delegation"
msgstr ""
#. module: project
#: model:ir.model,name:project.model_res_users
@@ -2286,3 +2286,6 @@ msgstr "Sarcini in desfasurare"
#~ msgid "E-mail composition wizard"
#~ msgstr "Asistent compunere e-mail"
#~ msgid "Delegations History"
#~ msgstr "Istoric Delegatii"
+7 -4
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-15 04:55+0000\n"
"X-Generator: Launchpad (build 15944)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1330,8 +1330,8 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgstr "История Делегирования"
msgid "Delegation"
msgstr ""
#. module: project
#: model:ir.model,name:project.model_res_users
@@ -2387,5 +2387,8 @@ msgstr "Задания в работе"
#~ msgid "project.installer"
#~ msgstr "project.installer"
#~ msgid "Delegations History"
#~ msgstr "История Делегирования"
#~ msgid "E-mail composition wizard"
#~ msgstr "Мастер создания электронной почты"
+3 -3
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1276,7 +1276,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgid "Delegation"
msgstr ""
#. module: project
+3 -3
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1275,7 +1275,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgid "Delegation"
msgstr ""
#. module: project
+3 -3
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:41+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1276,7 +1276,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgid "Delegation"
msgstr ""
#. module: project
+7 -4
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1326,8 +1326,8 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgstr "Delegeringshistorik"
msgid "Delegation"
msgstr ""
#. module: project
#: model:ir.model,name:project.model_res_users
@@ -2349,6 +2349,9 @@ msgstr "Pågående aktiviteter"
#~ msgid "Planned"
#~ msgstr "Planned"
#~ msgid "Delegations History"
#~ msgstr "Delegeringshistorik"
#~ msgid "E-mail composition wizard"
#~ msgstr "E-post editor"
+3 -3
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1275,7 +1275,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgid "Delegation"
msgstr ""
#. module: project
+3 -3
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1283,7 +1283,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgid "Delegation"
msgstr ""
#. module: project
+3 -3
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1275,7 +1275,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgid "Delegation"
msgstr ""
#. module: project
+3 -3
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1276,7 +1276,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgid "Delegation"
msgstr ""
#. module: project
+7 -4
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:43+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1286,8 +1286,8 @@ msgstr "计算公式为:项目经理估算的时间和实际花费的时间的
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgstr "委派历史"
msgid "Delegation"
msgstr ""
#. module: project
#: model:ir.model,name:project.model_res_users
@@ -2444,3 +2444,6 @@ msgstr "进行中的任务"
#~ msgid "E-mail composition wizard"
#~ msgstr "邮件合并向导"
#~ msgid "Delegations History"
#~ msgstr "委派历史"
+3 -3
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 05:55+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:43+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: project
#: view:report.project.task.user:0
@@ -1279,7 +1279,7 @@ msgstr ""
#. module: project
#: view:project.task:0
msgid "Delegations History"
msgid "Delegation"
msgstr ""
#. module: project
+36 -24
View File
@@ -318,21 +318,26 @@ class purchase_order(osv.osv):
for po in self.browse(cr, uid, ids, context=context):
pick_ids += [picking.id for picking in po.picking_ids]
res = mod_obj.get_object_reference(cr, uid, 'stock', 'view_picking_in_form')
res_id = res and res[1] or False
return {
'name': _('Receptions'),
'view_type': 'form',
'view_mode': 'form',
'view_id': [res_id],
'res_model': 'stock.picking',
'context': "{'contact_display': 'partner'}",
'type': 'ir.actions.act_window',
'nodestroy': True,
'target': 'current',
'res_id': pick_ids and pick_ids[0] or False,
}
action_model, action_id = tuple(mod_obj.get_object_reference(cr, uid, 'stock', 'action_picking_tree4'))
action = self.pool.get(action_model).read(cr, uid, action_id, context=context)
ctx = eval(action['context'])
ctx.update({
'search_default_purchase_id': ids[0]
})
if pick_ids and len(pick_ids) == 1:
form_view_ids = [view_id for view_id, view in action['views'] if view == 'form']
view_id = form_view_ids and form_view_ids[0] or False
action.update({
'views': [],
'view_mode': 'form',
'view_id': view_id,
'res_id': pick_ids[0]
})
action.update({
'context': ctx,
})
return action
def wkf_approve_order(self, cr, uid, ids, context=None):
self.write(cr, uid, ids, {'state': 'approved', 'date_approve': fields.date.context_today(self,cr,uid,context=context)})
@@ -863,6 +868,12 @@ class purchase_order_line(osv.osv):
supplier_delay = int(supplier_info.delay) if supplier_info else 0
return datetime.strptime(date_order_str, DEFAULT_SERVER_DATE_FORMAT) + relativedelta(days=supplier_delay)
def _check_product_uom_group(self, cr, uid, context=None):
group_uom = self.pool.get('ir.model.data').get_object(cr, uid, 'product', 'group_uom')
res = [user for user in group_uom.users if user.id == uid]
return len(res) and True or False
def onchange_product_id(self, cr, uid, ids, pricelist_id, product_id, qty, uom_id,
partner_id, date_order=False, fiscal_position_id=False, date_planned=False,
name=False, price_unit=False, context=None):
@@ -908,7 +919,8 @@ class purchase_order_line(osv.osv):
uom_id = product_uom_po_id
if product.uom_id.category_id.id != product_uom.browse(cr, uid, uom_id, context=context).category_id.id:
res['warning'] = {'title': _('Warning!'), 'message': _('Selected Unit of Measure does not belong to the same category as the product Unit of Measure.')}
if self._check_product_uom_group(cr, uid, context=context):
res['warning'] = {'title': _('Warning!'), 'message': _('Selected Unit of Measure does not belong to the same category as the product Unit of Measure.')}
uom_id = product_uom_po_id
res['value'].update({'product_uom': uom_id})
@@ -1083,15 +1095,15 @@ class procurement_order(osv.osv):
procurement_order()
class mail_message(osv.osv):
_name = 'mail.message'
_inherit = 'mail.message'
class mail_mail(osv.osv):
_name = 'mail.mail'
_inherit = 'mail.mail'
def _postprocess_sent_message(self, cr, uid, message, context=None):
if message.model == 'purchase.order':
def _postprocess_sent_message(self, cr, uid, mail, context=None):
if mail.model == 'purchase.order':
wf_service = netsvc.LocalService("workflow")
wf_service.trg_validate(uid, 'purchase.order', message.res_id, 'send_rfq', cr)
return super(mail_message, self)._postprocess_sent_message(cr, uid, message=message, context=context)
wf_service.trg_validate(uid, 'purchase.order', mail.res_id, 'send_rfq', cr)
return super(mail_mail, self)._postprocess_sent_message(cr, uid, mail=mail, context=context)
mail_message()
mail_mail()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+28 -7
View File
@@ -14,19 +14,40 @@
<menuitem id="menu_purchase_config_purchase" name="Configuration"
groups="group_purchase_manager"
parent="base.menu_purchase_root" sequence="100"/>
<menuitem
action="product.product_pricelist_action_for_purchase" id="menu_product_pricelist_action2_purchase"
parent="menu_purchase_config_purchase" sequence="10" groups="product.group_purchase_pricelist" />
<record id="purchase_pricelist_version_action" model="ir.actions.act_window">
<field name="name">Pricelist Versions</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">product.pricelist.version</field>
<field name="view_type">form</field>
<field name="view_id" ref="product.product_pricelist_version_tree_view"/>
<field name="domain">[('pricelist_id.type','=','purchase')]</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to add a pricelist version.
</p><p>
There can be more than one version of a pricelist, each of
these must be valid during a certain period of time. Some
examples of versions: Main Prices, 2010, 2011, Summer Sales,
etc.
</p>
</field>
</record>
<menuitem
id="menu_purchase_config_pricelist" name="Pricelists"
parent="menu_purchase_config_purchase" sequence="50" groups="product.group_purchase_pricelist"/>
<menuitem
action="product.product_pricelist_action" id="menu_product_pricelist_action_purhase"
parent="menu_purchase_config_pricelist" sequence="20" groups="base.group_no_one"/>
action="purchase_pricelist_version_action" id="menu_purchase_pricelist_version_action"
parent="menu_purchase_config_pricelist" sequence="2" groups="product.group_purchase_pricelist"/>
<menuitem
action="product.product_pricelist_action_for_purchase" id="menu_product_pricelist_action2_purchase"
parent="menu_purchase_config_pricelist" sequence="10" />
action="product.product_price_type_action" id="menu_product_pricelist_action2_purchase_type"
parent="menu_purchase_config_pricelist" sequence="60" />
<menuitem
id="menu_product_in_config_purchase" name="Products"
parent="menu_purchase_config_purchase" sequence="30" groups="base.group_no_one"/>
@@ -188,7 +209,7 @@
<button name="view_picking" string="Receive Products" type="object" attrs="{'invisible': ['|', ('shipped','=',True), ('state','!=', 'approved')]}" class="oe_highlight"/>
<button name="action_cancel_draft" states="cancel,sent,confirmed" string="Set to Draft" type="object" />
<button name="purchase_cancel" states="draft,confirmed,sent" string="Cancel"/>
<field name="state" widget="statusbar" statusbar_visible="draft,approved,done" statusbar_colors='{"except_picking":"red","except_invoice":"red","confirmed":"blue"}' readonly="1"/>
<field name="state" widget="statusbar" statusbar_visible="draft,sent,approved,done" statusbar_colors='{"except_picking":"red","except_invoice":"red","confirmed":"blue"}' readonly="1"/>
</header>
<sheet>
<div class="oe_title">
@@ -346,7 +367,7 @@
<field name="name">Quotations</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">purchase.order</field>
<field name="context">{'search_default_draft': 1}</field>
<field name="context">{}</field>
<field name="domain">[('state','in',('draft','sent','confirmed'))]</field>
<field name="view_mode">tree,form,graph,calendar</field>
<field name="search_view_id" ref="view_purchase_order_filter"/>
+1 -1
View File
@@ -145,7 +145,7 @@
<record id="trans_router_invoice_no_order" model="workflow.transition">
<field name="act_from" ref="act_router"/>
<field name="act_to" ref="act_invoice_end"/>
<field name="condition">invoice_method&lt;&gt;'order'</field>
<field name="condition">invoice_method&lt;&gt;'order' and invoiced</field>
</record>
<record id="trans_except_picking_picking_done" model="workflow.transition">
<field name="act_from" ref="act_except_picking"/>
+8 -5
View File
@@ -46,10 +46,6 @@ class purchase_config_settings(osv.osv_memory):
'group_purchase_delivery_address': fields.boolean("Allow a different address for incoming products and invoicings",
implied_group='purchase.group_delivery_invoice_address',
help="Allows you to specify different delivery and invoice addresses on a purchase order."),
'module_purchase_analytic_plans': fields.boolean('Allow using multiple analytic accounts on the same order',
help ="""Allows the user to maintain several analysis plans. These let you split
lines on a purchase order between several accounts and analytic plans.
This installs the module purchase_analytic_plans."""),
'module_warning': fields.boolean("Alerts by products or supplier",
help="""Allow to configure warnings on products and trigger them when a user wants to purchase a given product or a given supplier.
Example: Product: this product is deprecated, do not purchase more than 5.
@@ -62,6 +58,12 @@ class purchase_config_settings(osv.osv_memory):
help="""Purchase Requisitions are used when you want to request quotations from several suppliers for a given set of products.
You can configure per product if you directly do a Request for Quotation
to one supplier or if you want a purchase requisition to negotiate with several suppliers."""),
'module_purchase_analytic_plans': fields.boolean('Use multiple analytic accounts on purchase orders',
help ="""Allows the user to maintain several analysis plans. These let you split lines on a purchase order between several accounts and analytic plans.
This installs the module purchase_analytic_plans."""),
'group_analytic_account_for_purchases': fields.boolean('Analytic accounting for purchases',
implied_group='purchase.group_analytic_accounting',
help="Allows you to specify an analytic account on purchase orders."),
}
_defaults = {
@@ -75,7 +77,8 @@ class account_config_settings(osv.osv_memory):
_inherit = 'account.config.settings'
_columns = {
'module_purchase_analytic_plans': fields.boolean('Use multiple analytic accounts on orders',
help="""This allows install module purchase_analytic_plans."""),
help ="""Allows the user to maintain several analysis plans. These let you split lines on a purchase order between several accounts and analytic plans.
This installs the module purchase_analytic_plans."""),
'group_analytic_account_for_purchases': fields.boolean('Analytic accounting for purchases',
implied_group='purchase.group_analytic_accounting',
help="Allows you to specify an analytic account on purchase orders."),
+4
View File
@@ -74,6 +74,10 @@
<field name="module_purchase_analytic_plans" class="oe_inline"/>
<label for="module_purchase_analytic_plans"/>
</div>
<div>
<field name="group_analytic_account_for_purchases" class="oe_inline"/>
<label for="group_analytic_account_for_purchases"/>
</div>
</div>
</group>
</form>
+11 -66
View File
@@ -11,16 +11,6 @@
</xpath>
</field>
</record>
<record id="stock_picking_inherit_purchase" model="ir.ui.view">
<field name="name">Picking list</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_form"/>
<field name="arch" type="xml">
<field name="auto_picking" position="after">
<field name="purchase_id" invisible="1"/>
</field>
</field>
</record>
<record id="stock_picking_in_inherit_purchase" model="ir.ui.view">
<field name="name">Incoming Picking Inherited</field>
@@ -36,63 +26,18 @@
</field>
</record>
<!-- Picking to Invoice -->
<record id="view_picking_in_search_picking_to_invoice" model="ir.ui.view">
<field name="name">stock.picking.in.search</field>
<record id="view_picking_in_search_picking_inherit" model="ir.ui.view">
<field name="name">stock.picking.in.search.inherit</field>
<field name="model">stock.picking.in</field>
<field name="inherit_id" ref="stock.view_picking_in_search"/>
<field name="arch" type="xml">
<search string="Picking to Invoice">
<field name="name" string="Picking to Invoice" filter_domain="['|',('name','ilike',self),('origin','ilike',self)]"/>
<filter icon="terp-check" name="available" string="Available" domain="[('state','=','assigned')]" help="Incoming Shipments Available"/>
<filter icon="terp-dialog-close" name="done" string="Received" domain="[('state','=','done')]" help="Incoming Shipments already Received"/>
<separator/>
<filter icon="terp-accessories-archiver-minus" string="Back Orders" domain="[('backorder_id', '!=', False)]" help="Is a Back Order"/>
<separator/>
<filter string="To Invoice" name="to_invoice" icon="terp-dolar" domain="[('invoice_state', '=', '2binvoiced')]"/>
<field name="stock_journal_id"/>
<field name="company_id" groups="base.group_multi_company"/>
<field name="purchase_id" />
<group expand="0" string="Group By..." colspan="4" col="8">
<filter icon="terp-stock_effects-object-colorize" name="Status" string="Status" domain="[]" context="{'group_by':'state'}"/>
<filter string="Order Date" icon="terp-go-month" domain="[]" context="{'group_by':'date'}"/>
<filter string="Scheduled Date" icon="terp-go-month" domain="[]" context="{'group_by':'min_date'}"/>
<filter string="Journal" icon="terp-folder-orange" domain="[]" context="{'group_by':'stock_journal_id'}"/>
</group>
</search>
<xpath expr="//field[@name='product_id']" position="before">
<field name="purchase_id"/>
</xpath>
</field>
</record>
<record id="act_purchase_order_2_stock_picking" model="ir.actions.act_window">
<field name="name">Incoming Shipments</field>
<field name="res_model">stock.picking.in</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,calendar</field>
<field name="domain">[('type','=','in')]</field>
<field name="context">{'search_default_purchase_id': active_id,'default_type': 'in'}</field>
<field name="search_view_id" ref="view_picking_in_search_picking_to_invoice"/>
</record>
<record id="act_purchase_order_2_stock_picking_tree" model="ir.actions.act_window.view">
<field eval="1" name="sequence"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="stock.view_picking_in_tree"/>
<field name="act_window_id" ref="act_purchase_order_2_stock_picking"/>
</record>
<record id="act_purchase_order_2_stock_picking_form" model="ir.actions.act_window.view">
<field eval="2" name="sequence"/>
<field name="view_mode">form</field>
<field name="view_id" ref="stock.view_picking_in_form"/>
<field name="act_window_id" ref="act_purchase_order_2_stock_picking"/>
</record>
<record id="act_purchase_order_2_stock_picking_calendar" model="ir.actions.act_window.view">
<field eval="3" name="sequence"/>
<field name="view_mode">calendar</field>
<field name="view_id" ref="stock.stock_picking_in_calendar"/>
<field name="act_window_id" ref="act_purchase_order_2_stock_picking"/>
</record>
<!-- is it need ? we have another method "Receive Products"-->
<record id="purchase_order_2_stock_picking" model="ir.ui.view">
<field name="name">Purchase Picking Inherited</field>
<field name="model">purchase.order</field>
@@ -100,8 +45,8 @@
<field name="arch" type="xml">
<xpath expr="//div[contains(@class, 'oe_title')]" position="before">
<div class="oe_right oe_button_box" name="buttons">
<button type="action"
name="%(act_purchase_order_2_stock_picking)d"
<button type="object"
name="view_picking"
string="Incoming Shipments" states="approved"/>
</div>
</xpath>
@@ -110,13 +55,13 @@
<record id="action_picking_tree4_picking_to_invoice" model="ir.actions.act_window">
<field name="name">On Incoming Shipments</field>
<field name="res_model">stock.picking</field>
<field name="res_model">stock.picking.in</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,calendar</field>
<field name="domain">[('type','=','in')]</field>
<field name="context">{"default_type": "in", "contact_display": "partner_address", "search_default_done": 1, "search_default_to_invoice": 1}</field>
<field name="search_view_id" ref="view_picking_in_search_picking_to_invoice"/>
<field name="search_view_id" ref="stock.view_picking_in_search"/>
<field name="help" type="html">
<p>
Here you can track all the product receptions of purchase
+10 -10
View File
@@ -613,7 +613,8 @@ class sale_order(osv.osv):
'default_res_id': ids[0],
'default_use_template': True,
'default_template_id': template_id,
})
'mark_so_as_sent': True
})
return {
'view_type': 'form',
'view_mode': 'form',
@@ -987,15 +988,14 @@ class sale_order_line(osv.osv):
sale_order_line()
class mail_message(osv.osv):
_inherit = 'mail.message'
def _postprocess_sent_message(self, cr, uid, message, context=None):
if message.model == 'sale.order':
class mail_compose_message(osv.osv):
_inherit = 'mail.compose.message'
def send_mail(self, cr, uid, ids, context=None):
context = context or {}
if context.get('mark_so_as_sent', False) and context.get('default_res_id', False):
wf_service = netsvc.LocalService("workflow")
wf_service.trg_validate(uid, 'sale.order', message.res_id, 'quotation_sent', cr)
return super(mail_message, self)._postprocess_sent_message(cr, uid, message=message, context=context)
mail_message()
wf_service.trg_validate(uid, 'sale.order', context.get('default_res_id', False), 'quotation_sent', cr)
return super(mail_compose_message, self).send_mail(cr, uid, ids, context=context)
mail_compose_message()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+4 -4
View File
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
"PO-Revision-Date: 2012-09-10 11:41+0000\n"
"PO-Revision-Date: 2012-09-20 14:52+0000\n"
"Last-Translator: Chertykov Denis <chertykov@gmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-11 04:50+0000\n"
"X-Generator: Launchpad (build 15924)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:43+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: stock
#: field:product.product,track_outgoing:0
@@ -910,7 +910,7 @@ msgstr ""
#: model:ir.actions.act_window,name:stock.action_picking_tree4
#: model:ir.ui.menu,name:stock.menu_action_picking_tree4 view:stock.picking:0
msgid "Incoming Shipments"
msgstr "Поступающие грузы"
msgstr "Поступающие ТМЦ"
#. module: stock
#: view:report.stock.inventory:0 view:stock.move:0 view:stock.picking:0
+7
View File
@@ -673,6 +673,13 @@ class stock_picking(osv.osv):
]
def action_process(self, cr, uid, ids, context=None):
if context is None:
context = {}
context.update({
'active_model': self._name,
'active_ids': ids,
'active_id': len(ids) and ids[0] or False
})
return {
'view_type': 'form',
'view_mode': 'form',
+1 -12
View File
@@ -107,21 +107,10 @@ class stock_partial_picking(osv.osv_memory):
picking_ids = context.get('active_ids', [])
active_model = context.get('active_model')
if active_model == 'purchase.order':
for purchase_order in self.pool.get('purchase.order').browse(cr, uid, picking_ids, context=context):
picking_ids = [picking_id.id for picking_id in purchase_order.picking_ids]
elif active_model == 'sale.order':
for sale_order in self.pool.get('sale.order').browse(cr, uid, picking_ids, context=context):
picking_ids = [picking.id for picking in sale_order.picking_ids]
if not picking_ids or len(picking_ids) != 1:
# Partial Picking Processing may only be done for one picking at a time
return res
# The check about active_model is there in case the client mismatched the context during propagation of it
# (already seen in previous bug where context passed was containing ir.ui.menu as active_model and the menu
# ID as active_id). Though this should be fixed in clients now, this place is sensitive enough to ensure the
# consistancy of the context.
assert active_model in ('stock.picking', 'stock.picking.in', 'stock.picking.out', 'purchase.order', 'sale.order'), 'Bad context propagation'
assert active_model in ('stock.picking', 'stock.picking.in', 'stock.picking.out'), 'Bad context propagation'
picking_id, = picking_ids
if 'picking_id' in fields:
res.update(picking_id=picking_id)