Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
erp5_fork
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Eteri
erp5_fork
Commits
7e76a151
Commit
7e76a151
authored
May 07, 2011
by
Julien Muchembled
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
style: remove tabs in product/*.py
parent
d452eb6e
Changes
24
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
158 additions
and
159 deletions
+158
-159
product/ERP5/Document/AttributeUnicityConstraint.py
product/ERP5/Document/AttributeUnicityConstraint.py
+1
-1
product/ERP5/Document/CategoryRelatedMembershipStateConstraint.py
...ERP5/Document/CategoryRelatedMembershipStateConstraint.py
+1
-1
product/ERP5/Extensions/Inspect.py
product/ERP5/Extensions/Inspect.py
+1
-1
product/ERP5/TargetSolver/CopyToTarget.py
product/ERP5/TargetSolver/CopyToTarget.py
+1
-1
product/ERP5/Tool/SimulationTool.py
product/ERP5/Tool/SimulationTool.py
+2
-2
product/ERP5/tests/erp5_url_checker.py
product/ERP5/tests/erp5_url_checker.py
+2
-2
product/ERP5/tests/testBug.py
product/ERP5/tests/testBug.py
+7
-7
product/ERP5/tests/testBusinessTemplate.py
product/ERP5/tests/testBusinessTemplate.py
+22
-22
product/ERP5/tests/testERP5eGov.py
product/ERP5/tests/testERP5eGov.py
+3
-4
product/ERP5/tests/testItem.py
product/ERP5/tests/testItem.py
+1
-1
product/ERP5Banking/tests/testERP5BankingCashBalanceRegulation.py
...ERP5Banking/tests/testERP5BankingCashBalanceRegulation.py
+11
-11
product/ERP5Banking/tests/testERP5BankingCashExchange.py
product/ERP5Banking/tests/testERP5BankingCashExchange.py
+10
-10
product/ERP5Banking/tests/testERP5BankingForeignCashReception.py
.../ERP5Banking/tests/testERP5BankingForeignCashReception.py
+2
-2
product/ERP5Banking/tests/testERP5BankingMonetaryDestruction.py
...t/ERP5Banking/tests/testERP5BankingMonetaryDestruction.py
+7
-7
product/ERP5Banking/tests/testERP5BankingMoneyDeposit.py
product/ERP5Banking/tests/testERP5BankingMoneyDeposit.py
+1
-1
product/ERP5Form/Tool/SelectionTool.py
product/ERP5Form/Tool/SelectionTool.py
+3
-3
product/ERP5Legacy/tests/testLegacyConversionInSimulation.py
product/ERP5Legacy/tests/testLegacyConversionInSimulation.py
+47
-47
product/ERP5Type/DocumentationHelper/DCWorkflowTransitionDocumentationHelper.py
...entationHelper/DCWorkflowTransitionDocumentationHelper.py
+1
-1
product/ERP5Type/tests/testSessionTool.py
product/ERP5Type/tests/testSessionTool.py
+2
-2
product/Formulator/Validator.py
product/Formulator/Validator.py
+1
-1
product/TimerService/timerserver/timerserver/__init__.py
product/TimerService/timerserver/timerserver/__init__.py
+1
-1
product/ZLDAPConnection/Entry.py
product/ZLDAPConnection/Entry.py
+24
-24
product/ZMySQLDA/DA.py
product/ZMySQLDA/DA.py
+2
-2
product/ZMySQLDA/db.py
product/ZMySQLDA/db.py
+5
-5
No files found.
product/ERP5/Document/AttributeUnicityConstraint.py
View file @
7e76a151
...
@@ -35,7 +35,7 @@ from Products.CMFCore.Expression import Expression
...
@@ -35,7 +35,7 @@ from Products.CMFCore.Expression import Expression
from
Products.ERP5Type
import
PropertySheet
from
Products.ERP5Type
import
PropertySheet
from
Products.ERP5Type.Utils
import
createExpressionContext
from
Products.ERP5Type.Utils
import
createExpressionContext
from
Products.ERP5Type.Core.PropertyExistenceConstraint
import
\
from
Products.ERP5Type.Core.PropertyExistenceConstraint
import
\
PropertyExistenceConstraint
PropertyExistenceConstraint
from
Products.ZSQLCatalog.SQLCatalog
import
Query
,
NegatedQuery
from
Products.ZSQLCatalog.SQLCatalog
import
Query
,
NegatedQuery
class
AttributeUnicityConstraint
(
PropertyExistenceConstraint
):
class
AttributeUnicityConstraint
(
PropertyExistenceConstraint
):
...
...
product/ERP5/Document/CategoryRelatedMembershipStateConstraint.py
View file @
7e76a151
...
@@ -48,4 +48,4 @@ class CategoryRelatedMembershipStateConstraint(CategoryMembershipStateConstraint
...
@@ -48,4 +48,4 @@ class CategoryRelatedMembershipStateConstraint(CategoryMembershipStateConstraint
class to simply surcharge it.
class to simply surcharge it.
"""
"""
return
obj
.
_getRelatedValueList
(
base_category
,
return
obj
.
_getRelatedValueList
(
base_category
,
portal_type
=
portal_type_list
)
portal_type
=
portal_type_list
)
product/ERP5/Extensions/Inspect.py
View file @
7e76a151
# Simple Object Inspector
# Simple Object Inspector
def
inspect
(
self
):
def
inspect
(
self
):
return
str
(
self
.
__dict__
)
return
str
(
self
.
__dict__
)
#return "type: %s dict:%s" % (type(o), o.__dict__)
#return "type: %s dict:%s" % (type(o), o.__dict__)
result
=
''
result
=
''
return
self
.
getPhysicalPath
()
return
self
.
getPhysicalPath
()
product/ERP5/TargetSolver/CopyToTarget.py
View file @
7e76a151
...
@@ -153,7 +153,7 @@ class CopyToTarget(TargetSolver):
...
@@ -153,7 +153,7 @@ class CopyToTarget(TargetSolver):
simulation_movement
.
setSource
(
delivery
.
getSource
())
simulation_movement
.
setSource
(
delivery
.
getSource
())
simulation_movement
.
setDestinationSection
(
delivery
.
getDestinationSection
())
simulation_movement
.
setDestinationSection
(
delivery
.
getDestinationSection
())
simulation_movement
.
setSourceSection
(
delivery
.
getSourceSection
())
simulation_movement
.
setSourceSection
(
delivery
.
getSourceSection
())
simulation_movement
.
edit
(
**
value_dict
)
simulation_movement
.
edit
(
**
value_dict
)
if
parent_movement
is
not
None
and
not
parent_movement
.
isFrozen
():
if
parent_movement
is
not
None
and
not
parent_movement
.
isFrozen
():
...
...
product/ERP5/Tool/SimulationTool.py
View file @
7e76a151
...
@@ -973,7 +973,7 @@ class SimulationTool(BaseTool):
...
@@ -973,7 +973,7 @@ class SimulationTool(BaseTool):
mirror_section_category - only take rows in stock table which
mirror_section_category - only take rows in stock table which
mirror_section_uid is member of
mirror_section_uid is member of
mirror_section_category
mirror_section_category
node_filter - only take rows in stock table which node_uid
node_filter - only take rows in stock table which node_uid
matches node_filter
matches node_filter
...
@@ -1851,7 +1851,7 @@ class SimulationTool(BaseTool):
...
@@ -1851,7 +1851,7 @@ class SimulationTool(BaseTool):
TODO:
TODO:
- make sure getInventoryHistoryList can return
- make sure getInventoryHistoryList can return
cumulative values calculated by SQL (JPS)
cumulative values calculated by SQL (JPS)
"""
"""
sql_kw
=
self
.
_generateSQLKeywordDict
(
**
kw
)
sql_kw
=
self
.
_generateSQLKeywordDict
(
**
kw
)
return
self
.
Resource_getInventoryHistoryList
(
return
self
.
Resource_getInventoryHistoryList
(
...
...
product/ERP5/tests/erp5_url_checker.py
View file @
7e76a151
...
@@ -137,9 +137,9 @@ class URLOpener(FancyURLopener):
...
@@ -137,9 +137,9 @@ class URLOpener(FancyURLopener):
class
Checker
(
URLOpener
):
class
Checker
(
URLOpener
):
# This seems necessary for exceptions
# This seems necessary for exceptions
type
=
'http'
type
=
'http'
def
CheckUrl
(
self
,
url
=
None
):
def
CheckUrl
(
self
,
url
=
None
):
try
:
try
:
thread
=
Thread
(
target
=
self
.
SearchUrl
,
args
=
(
url
,))
thread
=
Thread
(
target
=
self
.
SearchUrl
,
args
=
(
url
,))
...
...
product/ERP5/tests/testBug.py
View file @
7e76a151
...
@@ -568,16 +568,16 @@ class TestBug(ERP5TypeTestCase):
...
@@ -568,16 +568,16 @@ class TestBug(ERP5TypeTestCase):
if
not
run
:
return
if
not
run
:
return
sequence_list
=
SequenceList
()
sequence_list
=
SequenceList
()
step_list
=
[
'stepCreateBug'
step_list
=
[
'stepCreateBug'
,
'stepCheckBugInit'
,
'stepCheckBugInit'
,
'stepOpenBug'
,
'stepOpenBug'
,
'stepTic'
,
'stepAssignBug'
,
'stepTic'
,
'stepResolveBug'
,
'stepTic'
,
'stepTic'
,
'stepAssignBug'
,
'stepTic'
,
'stepResolveBug'
,
'stepTic'
,
'stepOpenBug'
,
'stepOpenBug'
,
'stepTic'
,
'stepTic'
]
]
sequence_string
=
' '
.
join
(
step_list
)
sequence_string
=
' '
.
join
(
step_list
)
sequence_list
.
addSequenceString
(
sequence_string
)
sequence_list
.
addSequenceString
(
sequence_string
)
sequence_list
.
play
(
self
,
quiet
=
quiet
)
sequence_list
.
play
(
self
,
quiet
=
quiet
)
...
...
product/ERP5/tests/testBusinessTemplate.py
View file @
7e76a151
...
@@ -4258,9 +4258,9 @@ class TestBusinessTemplate(BusinessTemplateMixin):
...
@@ -4258,9 +4258,9 @@ class TestBusinessTemplate(BusinessTemplateMixin):
CheckNotInstalledInstallationState
\
CheckNotInstalledInstallationState
\
CheckPreinstallReturnSomething
\
CheckPreinstallReturnSomething
\
CheckCatalogPreinstallReturnCatalogMethod
\
CheckCatalogPreinstallReturnCatalogMethod
\
Tic
\
Tic
\
InstallWithoutForceBusinessTemplate
\
InstallWithoutForceBusinessTemplate
\
CheckFolderReindexActivityPresence
\
CheckFolderReindexActivityPresence
\
Tic
\
Tic
\
CheckInstalledInstallationState
\
CheckInstalledInstallationState
\
CheckBuiltBuildingState
\
CheckBuiltBuildingState
\
...
@@ -5039,17 +5039,17 @@ class TestBusinessTemplate(BusinessTemplateMixin):
...
@@ -5039,17 +5039,17 @@ class TestBusinessTemplate(BusinessTemplateMixin):
"""Test is revision number is incremented with the bt is built"""
"""Test is revision number is incremented with the bt is built"""
sequence_list
=
SequenceList
()
sequence_list
=
SequenceList
()
sequence_string
=
'
\
sequence_string
=
'
\
CreatePortalType
\
CreatePortalType
\
CreateNewBusinessTemplate
\
CreateNewBusinessTemplate
\
UseExportBusinessTemplate
\
UseExportBusinessTemplate
\
CheckInitialRevision
\
CheckInitialRevision
\
BuildBusinessTemplate
\
BuildBusinessTemplate
\
CheckBuiltBuildingState
\
CheckBuiltBuildingState
\
stepCheckFirstRevision
\
stepCheckFirstRevision
\
BuildBusinessTemplate
\
BuildBusinessTemplate
\
stepCheckSecondRevision
\
stepCheckSecondRevision
\
RemoveBusinessTemplate
\
RemoveBusinessTemplate
\
RemovePortalType
\
RemovePortalType
\
'
'
sequence_list
.
addSequenceString
(
sequence_string
)
sequence_list
.
addSequenceString
(
sequence_string
)
sequence_list
.
play
(
self
)
sequence_list
.
play
(
self
)
...
@@ -5058,12 +5058,12 @@ class TestBusinessTemplate(BusinessTemplateMixin):
...
@@ -5058,12 +5058,12 @@ class TestBusinessTemplate(BusinessTemplateMixin):
"""Test if a new Business Template has no dependencies"""
"""Test if a new Business Template has no dependencies"""
sequence_list
=
SequenceList
()
sequence_list
=
SequenceList
()
sequence_string
=
'
\
sequence_string
=
'
\
CreatePortalType
\
CreatePortalType
\
CreateNewBusinessTemplate
\
CreateNewBusinessTemplate
\
UseExportBusinessTemplate
\
UseExportBusinessTemplate
\
CheckNoMissingDependencies
\
CheckNoMissingDependencies
\
RemoveBusinessTemplate
\
RemoveBusinessTemplate
\
RemovePortalType
\
RemovePortalType
\
'
'
sequence_list
.
addSequenceString
(
sequence_string
)
sequence_list
.
addSequenceString
(
sequence_string
)
sequence_list
.
play
(
self
)
sequence_list
.
play
(
self
)
...
@@ -5072,13 +5072,13 @@ class TestBusinessTemplate(BusinessTemplateMixin):
...
@@ -5072,13 +5072,13 @@ class TestBusinessTemplate(BusinessTemplateMixin):
"""Test if a exception is raised when a dependency is missing"""
"""Test if a exception is raised when a dependency is missing"""
sequence_list
=
SequenceList
()
sequence_list
=
SequenceList
()
sequence_string
=
'
\
sequence_string
=
'
\
CreatePortalType
\
CreatePortalType
\
CreateNewBusinessTemplate
\
CreateNewBusinessTemplate
\
UseExportBusinessTemplate
\
UseExportBusinessTemplate
\
AddDependency
\
AddDependency
\
CheckMissingDependencies
\
CheckMissingDependencies
\
RemoveBusinessTemplate
\
RemoveBusinessTemplate
\
RemovePortalType
\
RemovePortalType
\
'
'
sequence_list
.
addSequenceString
(
sequence_string
)
sequence_list
.
addSequenceString
(
sequence_string
)
sequence_list
.
play
(
self
)
sequence_list
.
play
(
self
)
...
@@ -5087,9 +5087,9 @@ class TestBusinessTemplate(BusinessTemplateMixin):
...
@@ -5087,9 +5087,9 @@ class TestBusinessTemplate(BusinessTemplateMixin):
"""Test if the dependency problem is fixed when the dependency is installed"""
"""Test if the dependency problem is fixed when the dependency is installed"""
sequence_list
=
SequenceList
()
sequence_list
=
SequenceList
()
sequence_string
=
'
\
sequence_string
=
'
\
CreatePortalType
\
CreatePortalType
\
CreateNewBusinessTemplate
\
CreateNewBusinessTemplate
\
UseExportBusinessTemplate
\
UseExportBusinessTemplate
\
AddDependency
\
AddDependency
\
CheckMissingDependencies
\
CheckMissingDependencies
\
CreateDependencyBusinessTemplate
\
CreateDependencyBusinessTemplate
\
...
@@ -5162,7 +5162,7 @@ class TestBusinessTemplate(BusinessTemplateMixin):
...
@@ -5162,7 +5162,7 @@ class TestBusinessTemplate(BusinessTemplateMixin):
"""Test if backup works during installation of a bt with subfolder in skin folder"""
"""Test if backup works during installation of a bt with subfolder in skin folder"""
sequence_list
=
SequenceList
()
sequence_list
=
SequenceList
()
sequence_string
=
'
\
sequence_string
=
'
\
CreatePortalType
\
CreatePortalType
\
CreateSkinFolder
\
CreateSkinFolder
\
CheckSkinFolderExists
\
CheckSkinFolderExists
\
CreateSkinSubFolder
\
CreateSkinSubFolder
\
...
@@ -5188,7 +5188,7 @@ class TestBusinessTemplate(BusinessTemplateMixin):
...
@@ -5188,7 +5188,7 @@ class TestBusinessTemplate(BusinessTemplateMixin):
"""Test if build fails when one of the paths does not exist"""
"""Test if build fails when one of the paths does not exist"""
sequence_list
=
SequenceList
()
sequence_list
=
SequenceList
()
sequence_string
=
'
\
sequence_string
=
'
\
CreatePortalType
\
CreatePortalType
\
CreateNewBusinessTemplate
\
CreateNewBusinessTemplate
\
UseExportBusinessTemplate
\
UseExportBusinessTemplate
\
AddPathToBusinessTemplate
\
AddPathToBusinessTemplate
\
...
@@ -5373,7 +5373,7 @@ class TestBusinessTemplate(BusinessTemplateMixin):
...
@@ -5373,7 +5373,7 @@ class TestBusinessTemplate(BusinessTemplateMixin):
ImportBusinessTemplate
\
ImportBusinessTemplate
\
UseImportBusinessTemplate
\
UseImportBusinessTemplate
\
InstallWithoutForceBusinessTemplate
\
InstallWithoutForceBusinessTemplate
\
CheckFolderReindexActivityPresence
\
CheckFolderReindexActivityPresence
\
Tic
\
Tic
\
\
\
CheckFormGroups
\
CheckFormGroups
\
...
@@ -5387,9 +5387,9 @@ class TestBusinessTemplate(BusinessTemplateMixin):
...
@@ -5387,9 +5387,9 @@ class TestBusinessTemplate(BusinessTemplateMixin):
\
\
ImportBusinessTemplate
\
ImportBusinessTemplate
\
UseImportBusinessTemplate
\
UseImportBusinessTemplate
\
Tic
\
Tic
\
InstallWithoutForceBusinessTemplate
\
InstallWithoutForceBusinessTemplate
\
CheckFolderReindexActivityPresence
\
CheckFolderReindexActivityPresence
\
Tic
\
Tic
\
\
\
CheckFormGroups
\
CheckFormGroups
\
...
...
product/ERP5/tests/testERP5eGov.py
View file @
7e76a151
...
@@ -159,8 +159,8 @@ class TestEgov(ERP5TypeTestCase):
...
@@ -159,8 +159,8 @@ class TestEgov(ERP5TypeTestCase):
"""
"""
transaction
.
abort
()
transaction
.
abort
()
for
module
in
[
self
.
getPersonModule
(),
for
module
in
[
self
.
getPersonModule
(),
self
.
getOrganisationModule
(),
self
.
getOrganisationModule
(),
]:
]:
module
.
manage_delObjects
(
list
(
module
.
objectIds
()))
module
.
manage_delObjects
(
list
(
module
.
objectIds
()))
vat_portal_type
=
self
.
portal
.
portal_types
.
getTypeInfo
(
'Vat Declaration'
)
vat_portal_type
=
self
.
portal
.
portal_types
.
getTypeInfo
(
'Vat Declaration'
)
...
@@ -327,8 +327,7 @@ class TestEgov(ERP5TypeTestCase):
...
@@ -327,8 +327,7 @@ class TestEgov(ERP5TypeTestCase):
type_allowed_content_type_list
.
append
(
'PDF'
)
type_allowed_content_type_list
.
append
(
'PDF'
)
vat_declaration
.
getTypeInfo
().
setTypeAllowedContentTypeList
(
type_allowed_content_type_list
)
vat_declaration
.
getTypeInfo
().
setTypeAllowedContentTypeList
(
type_allowed_content_type_list
)
vat_declaration
.
getTypeInfo
().
setTypeHiddenContentTypeList
(
type_allowed_content_type_list
)
vat_declaration
.
getTypeInfo
().
setTypeHiddenContentTypeList
(
type_allowed_content_type_list
)
vat_declaration
.
newContent
(
portal_type
=
'PDF'
,
vat_declaration
.
newContent
(
portal_type
=
'PDF'
,
title
=
'Justificatif numero 1'
)
title
=
'Justificatif numero 1'
)
self
.
tic
()
self
.
tic
()
transaction
.
commit
()
transaction
.
commit
()
missing_file
=
vat_declaration
.
PDFDocument_getRequirementCount
()
missing_file
=
vat_declaration
.
PDFDocument_getRequirementCount
()
...
...
product/ERP5/tests/testItem.py
View file @
7e76a151
...
@@ -631,7 +631,7 @@ class TestItem(TestItemMixin, ERP5TypeTestCase):
...
@@ -631,7 +631,7 @@ class TestItem(TestItemMixin, ERP5TypeTestCase):
packing_list_line
=
self
.
createPackingListLine
(
packing_list
=
packing_list
,
packing_list_line
=
self
.
createPackingListLine
(
packing_list
=
packing_list
,
resource
=
resource
)
resource
=
resource
)
transaction
.
commit
()
transaction
.
commit
()
self
.
tic
()
self
.
tic
()
packing_list_line
.
DeliveryLine_viewItemCreationDialog
()
packing_list_line
.
DeliveryLine_viewItemCreationDialog
()
# create a listbox
# create a listbox
listbox
=
({
'listbox_key'
:
'000'
,
listbox
=
({
'listbox_key'
:
'000'
,
...
...
product/ERP5Banking/tests/testERP5BankingCashBalanceRegulation.py
View file @
7e76a151
...
@@ -42,21 +42,21 @@ class TestERP5BankingCashBalanceRegulation(TestERP5BankingMixin):
...
@@ -42,21 +42,21 @@ class TestERP5BankingCashBalanceRegulation(TestERP5BankingMixin):
"""
"""
Unit test for the cash balance regulation module
Unit test for the cash balance regulation module
Source = destination
Source = destination
Initial cash detail :
Initial cash detail :
5 banknotes of 10000
5 banknotes of 10000
12 coin of 200
12 coin of 200
24 banknotes of 5000
24 banknotes of 5000
0 coin of 100
0 coin of 100
Ordered by Assignor
Ordered by Assignor
Confirmed by Assignee
Confirmed by Assignee
Delivered by DestinationAssignee
Delivered by DestinationAssignee
Final cash detail :
Final cash detail :
0 banknotes of 10000
0 banknotes of 10000
0 coin of 200
0 coin of 200
34 banknotes of 5000
34 banknotes of 5000
24 coin of 100
24 coin of 100
"""
"""
...
...
product/ERP5Banking/tests/testERP5BankingCashExchange.py
View file @
7e76a151
...
@@ -44,19 +44,19 @@ class TestERP5BankingCashExchange(TestERP5BankingMixin):
...
@@ -44,19 +44,19 @@ class TestERP5BankingCashExchange(TestERP5BankingMixin):
Unit test for the cash exchange module
Unit test for the cash exchange module
Source = destination
Source = destination
Initial cash detail :
Initial cash detail :
5 banknotes of 10000
5 banknotes of 10000
12 coin of 200
12 coin of 200
24 banknotes of 5000
24 banknotes of 5000
0 coin of 100
0 coin of 100
Ordered by Assignor
Ordered by Assignor
Confirmed by Assignee
Confirmed by Assignee
Delivered by DestinationAssignee
Delivered by DestinationAssignee
Final cash detail :
Final cash detail :
0 banknotes of 10000
0 banknotes of 10000
0 coin of 200
0 coin of 200
34 banknotes of 5000
34 banknotes of 5000
24 coin of 100
24 coin of 100
"""
"""
...
@@ -503,7 +503,7 @@ class TestERP5BankingCashExchange(TestERP5BankingMixin):
...
@@ -503,7 +503,7 @@ class TestERP5BankingCashExchange(TestERP5BankingMixin):
# define the sequence
# define the sequence
sequence_string
=
'Tic CheckObjects Tic CheckInitialInventoryGuichet_1 '
\
sequence_string
=
'Tic CheckObjects Tic CheckInitialInventoryGuichet_1 '
\
+
'CheckInitialInventoryGuichet_2 '
\
+
'CheckInitialInventoryGuichet_2 '
\
+
'CreateCashExchange '
\
+
'CreateCashExchange '
\
+
'CreateValidIncomingLine CheckSubTotal '
\
+
'CreateValidIncomingLine CheckSubTotal '
\
+
'CreateValidOutgoingLine '
\
+
'CreateValidOutgoingLine '
\
+
'Tic CheckTotal '
\
+
'Tic CheckTotal '
\
...
@@ -512,7 +512,7 @@ class TestERP5BankingCashExchange(TestERP5BankingMixin):
...
@@ -512,7 +512,7 @@ class TestERP5BankingCashExchange(TestERP5BankingMixin):
+
'DeliverFails Tic '
\
+
'DeliverFails Tic '
\
+
'DeleteResetInventory Tic '
\
+
'DeleteResetInventory Tic '
\
+
'DeliverCashExchange Tic '
\
+
'DeliverCashExchange Tic '
\
+
'CheckFinalInventoryGuichet_1 '
\
+
'CheckFinalInventoryGuichet_1 '
\
+
'CheckFinalInventoryGuichet_2'
+
'CheckFinalInventoryGuichet_2'
sequence_list
.
addSequenceString
(
sequence_string
)
sequence_list
.
addSequenceString
(
sequence_string
)
# play the sequence
# play the sequence
...
...
product/ERP5Banking/tests/testERP5BankingForeignCashReception.py
View file @
7e76a151
...
@@ -127,11 +127,11 @@ class TestERP5BankingForeignCashReception(TestERP5BankingMixin):
...
@@ -127,11 +127,11 @@ class TestERP5BankingForeignCashReception(TestERP5BankingMixin):
#and a price cooreponding to the sum of banknote of 50 and 20
#and a price cooreponding to the sum of banknote of 50 and 20
#( (3) * 50 + (5) * 20 ) = 250
#( (3) * 50 + (5) * 20 ) = 250
self
.
foreign_cash_reception
=
self
.
foreign_cash_reception_module
.
newContent
(
self
.
foreign_cash_reception
=
self
.
foreign_cash_reception_module
.
newContent
(
id
=
'foreign_cash_reception'
,
portal_type
=
'Foreign Cash Reception'
,
id
=
'foreign_cash_reception'
,
portal_type
=
'Foreign Cash Reception'
,
source_value
=
None
,
destination_value
=
self
.
reception
,
source_value
=
None
,
destination_value
=
self
.
reception
,
resource_value
=
self
.
currency_1
,
resource_value
=
self
.
currency_1
,
description
=
'test'
,
description
=
'test'
,
source_total_asset_price
=
250
)
source_total_asset_price
=
250
)
# set source reference
# set source reference
self
.
setDocumentSourceReference
(
self
.
foreign_cash_reception
)
self
.
setDocumentSourceReference
(
self
.
foreign_cash_reception
)
# execute tic
# execute tic
...
...
product/ERP5Banking/tests/testERP5BankingMonetaryDestruction.py
View file @
7e76a151
...
@@ -136,7 +136,7 @@ class TestERP5BankingMonetaryDestruction(TestERP5BankingMixin):
...
@@ -136,7 +136,7 @@ class TestERP5BankingMonetaryDestruction(TestERP5BankingMixin):
'variation_id'
:
(
'emission_letter'
,
'cash_status'
,
'variation'
),
'variation_id'
:
(
'emission_letter'
,
'cash_status'
,
'variation'
),
'variation_value'
:
(
'emission_letter/s'
,
'cash_status/cancelled'
)
+
self
.
variation_list
,
'variation_value'
:
(
'emission_letter/s'
,
'cash_status/cancelled'
)
+
self
.
variation_list
,
'quantity'
:
self
.
quantity_5000
}
'quantity'
:
self
.
quantity_5000
}
inventory_dict_line_for_auxiliaire_1
=
{
'id'
:
'inventory_line_1'
,
inventory_dict_line_for_auxiliaire_1
=
{
'id'
:
'inventory_line_1'
,
'resource'
:
self
.
billet_10000
,
'resource'
:
self
.
billet_10000
,
'variation_id'
:
(
'emission_letter'
,
'cash_status'
,
'variation'
),
'variation_id'
:
(
'emission_letter'
,
'cash_status'
,
'variation'
),
...
@@ -148,7 +148,7 @@ class TestERP5BankingMonetaryDestruction(TestERP5BankingMixin):
...
@@ -148,7 +148,7 @@ class TestERP5BankingMonetaryDestruction(TestERP5BankingMixin):
'variation_id'
:
(
'emission_letter'
,
'cash_status'
,
'variation'
),
'variation_id'
:
(
'emission_letter'
,
'cash_status'
,
'variation'
),
'variation_value'
:
(
'emission_letter/p'
,
'cash_status/retired'
)
+
self
.
variation_list
,
'variation_value'
:
(
'emission_letter/p'
,
'cash_status/retired'
)
+
self
.
variation_list
,
'quantity'
:
self
.
quantity_5000
}
'quantity'
:
self
.
quantity_5000
}
inventory_dict_line_for_dematerialization
=
{
'id'
:
'inventory_line_3'
,
inventory_dict_line_for_dematerialization
=
{
'id'
:
'inventory_line_3'
,
'resource'
:
self
.
piece_200
,
'resource'
:
self
.
piece_200
,
'variation_id'
:
(
'emission_letter'
,
'cash_status'
,
'variation'
),
'variation_id'
:
(
'emission_letter'
,
'cash_status'
,
'variation'
),
...
@@ -1021,7 +1021,7 @@ class TestERP5BankingMonetaryDestruction(TestERP5BankingMixin):
...
@@ -1021,7 +1021,7 @@ class TestERP5BankingMonetaryDestruction(TestERP5BankingMixin):
+
'StopMonetaryDestruction Tic '
\
+
'StopMonetaryDestruction Tic '
\
+
'CheckSourceDebitAvailableForAuxiliaire '
\
+
'CheckSourceDebitAvailableForAuxiliaire '
\
+
'StoppedToDeliverMonetaryDestruction Tic '
\
+
'StoppedToDeliverMonetaryDestruction Tic '
\
+
'CheckSourceDebitForAuxiliaire '
\
+
'CheckSourceDebitForAuxiliaire '
\
+
'DelMonetaryDestruction Tic '
+
'DelMonetaryDestruction Tic '
sequence_list
.
addSequenceString
(
sequence_string_auxiliare
)
sequence_list
.
addSequenceString
(
sequence_string_auxiliare
)
...
@@ -1062,9 +1062,9 @@ class TestERP5BankingMonetaryDestruction(TestERP5BankingMixin):
...
@@ -1062,9 +1062,9 @@ class TestERP5BankingMonetaryDestruction(TestERP5BankingMixin):
+
'StopMonetaryDestruction Tic '
\
+
'StopMonetaryDestruction Tic '
\
+
'CheckSourceDebitAvailableForExterne '
\
+
'CheckSourceDebitAvailableForExterne '
\
+
'StoppedToDeliverMonetaryDestruction Tic '
\
+
'StoppedToDeliverMonetaryDestruction Tic '
\
+
'CheckSourceDebitForExterne '
\
+
'CheckSourceDebitForExterne '
\
+
'DelMonetaryDestruction Tic '
+
'DelMonetaryDestruction Tic '
sequence_list
.
addSequenceString
(
another_sequence_string
)
sequence_list
.
addSequenceString
(
another_sequence_string
)
# We will now do a dematerialization
# We will now do a dematerialization
...
@@ -1078,8 +1078,8 @@ class TestERP5BankingMonetaryDestruction(TestERP5BankingMixin):
...
@@ -1078,8 +1078,8 @@ class TestERP5BankingMonetaryDestruction(TestERP5BankingMixin):
+
'SetMonetaryDestructionSourceTotalAssetPriceForDematerialization '
\
+
'SetMonetaryDestructionSourceTotalAssetPriceForDematerialization '
\
+
'PlanMonetaryDestruction '
\
+
'PlanMonetaryDestruction '
\
+
'ValidateMonetaryDestruction '
\
+
'ValidateMonetaryDestruction '
\
+
'CheckFinalInventoryForDematerialization '
+
'CheckFinalInventoryForDematerialization '
sequence_list
.
addSequenceString
(
another_sequence_string
)
sequence_list
.
addSequenceString
(
another_sequence_string
)
...
...
product/ERP5Banking/tests/testERP5BankingMoneyDeposit.py
View file @
7e76a151
...
@@ -186,7 +186,7 @@ class TestERP5BankingMoneyDepositMixin(TestERP5BankingMixin):
...
@@ -186,7 +186,7 @@ class TestERP5BankingMoneyDepositMixin(TestERP5BankingMixin):
self
.
money_deposit
=
self
.
money_deposit_module
.
newContent
(
self
.
money_deposit
=
self
.
money_deposit_module
.
newContent
(
id
=
'money_deposit'
,
id
=
'money_deposit'
,
portal_type
=
'Money Deposit'
,
portal_type
=
'Money Deposit'
,
destination_payment_value
=
self
.
bank_account_1
,
destination_payment_value
=
self
.
bank_account_1
,
resource_value
=
self
.
currency_1
,
resource_value
=
self
.
currency_1
,
description
=
'test'
,
description
=
'test'
,
source_total_asset_price
=
20000.0
)
source_total_asset_price
=
20000.0
)
...
...
product/ERP5Form/Tool/SelectionTool.py
View file @
7e76a151
...
@@ -1714,9 +1714,9 @@ def makeTreeList(here, form, root_dict, report_path, base_category,
...
@@ -1714,9 +1714,9 @@ def makeTreeList(here, form, root_dict, report_path, base_category,
tree_list
+=
[
TreeListLine
(
o
,
0
,
depth
,
0
,
selection_domain
,
exception_uid_list
)]
tree_list
+=
[
TreeListLine
(
o
,
0
,
depth
,
0
,
selection_domain
,
exception_uid_list
)]
tree_list
+=
makeTreeList
(
here
,
form
,
new_root_dict
,
report_path
,
tree_list
+=
makeTreeList
(
here
,
form
,
new_root_dict
,
report_path
,
base_category
,
depth
+
1
,
unfolded_list
,
form_id
,
base_category
,
depth
+
1
,
unfolded_list
,
form_id
,
selection_name
,
report_depth
,
selection_name
,
report_depth
,
is_report_opened
=
is_report_opened
,
sort_on
=
sort_on
)
is_report_opened
=
is_report_opened
,
sort_on
=
sort_on
)
else
:
else
:
tree_list
+=
[
TreeListLine
(
o
,
1
,
depth
,
0
,
selection_domain
,
())]
# Summary (closed)
tree_list
+=
[
TreeListLine
(
o
,
1
,
depth
,
0
,
selection_domain
,
())]
# Summary (closed)
else
:
else
:
...
...
product/ERP5Legacy/tests/testLegacyConversionInSimulation.py
View file @
7e76a151
This diff is collapsed.
Click to expand it.
product/ERP5Type/DocumentationHelper/DCWorkflowTransitionDocumentationHelper.py
View file @
7e76a151
...
@@ -60,7 +60,7 @@ class DCWorkflowTransitionDocumentationHelper(DocumentationHelper):
...
@@ -60,7 +60,7 @@ class DCWorkflowTransitionDocumentationHelper(DocumentationHelper):
if
new_state_id
:
if
new_state_id
:
uri
=
'%s/states/%s'
%
(
self
.
uri
.
rsplit
(
'/'
,
2
)[
0
],
new_state_id
)
uri
=
'%s/states/%s'
%
(
self
.
uri
.
rsplit
(
'/'
,
2
)[
0
],
new_state_id
)
return
self
.
getDocumentationHelper
(
'DCWorkflowStateDocumentationHelper'
,
uri
)
return
self
.
getDocumentationHelper
(
'DCWorkflowStateDocumentationHelper'
,
uri
)
security
.
declareProtected
(
Permissions
.
AccessContentsInformation
,
'getTriggerType'
)
security
.
declareProtected
(
Permissions
.
AccessContentsInformation
,
'getTriggerType'
)
def
getTriggerType
(
self
):
def
getTriggerType
(
self
):
...
...
product/ERP5Type/tests/testSessionTool.py
View file @
7e76a151
...
@@ -86,8 +86,8 @@ class TestSessionTool(ERP5TypeTestCase):
...
@@ -86,8 +86,8 @@ class TestSessionTool(ERP5TypeTestCase):
session_cache_factory
=
getattr
(
portal_caches
,
SESSION_CACHE_FACTORY
)
session_cache_factory
=
getattr
(
portal_caches
,
SESSION_CACHE_FACTORY
)
# remove current cache plugin
# remove current cache plugin
session_cache_factory
.
manage_delObjects
(
list
(
session_cache_factory
.
objectIds
()))
session_cache_factory
.
manage_delObjects
(
list
(
session_cache_factory
.
objectIds
()))
cache_plugin
=
session_cache_factory
.
newContent
(
portal_type
=
portal_type
)
cache_plugin
=
session_cache_factory
.
newContent
(
portal_type
=
portal_type
)
cache_plugin
.
setCacheDuration
(
storage_duration
)
cache_plugin
.
setCacheDuration
(
storage_duration
)
cache_plugin
.
setIntIndex
(
0
)
cache_plugin
.
setIntIndex
(
0
)
if
portal_type
==
'Distributed Ram Cache'
:
if
portal_type
==
'Distributed Ram Cache'
:
cache_plugin
.
edit
(
specialise
=
'portal_memcached/default_memcached_plugin'
)
cache_plugin
.
edit
(
specialise
=
'portal_memcached/default_memcached_plugin'
)
...
...
product/Formulator/Validator.py
View file @
7e76a151
...
@@ -567,7 +567,7 @@ class FileValidator(Validator):
...
@@ -567,7 +567,7 @@ class FileValidator(Validator):
def
validate
(
self
,
field
,
key
,
REQUEST
):
def
validate
(
self
,
field
,
key
,
REQUEST
):
value
=
REQUEST
.
get
(
key
,
None
)
value
=
REQUEST
.
get
(
key
,
None
)
if
field
.
get_value
(
'required'
)
and
value
in
(
None
,
''
):
if
field
.
get_value
(
'required'
)
and
value
in
(
None
,
''
):
self
.
raise_error
(
'required_not_found'
,
field
)
self
.
raise_error
(
'required_not_found'
,
field
)
return
value
return
value
FileValidatorInstance
=
FileValidator
()
FileValidatorInstance
=
FileValidator
()
...
...
product/TimerService/timerserver/timerserver/__init__.py
View file @
7e76a151
...
@@ -7,4 +7,4 @@ class TimerServerFactory(ServerFactory):
...
@@ -7,4 +7,4 @@ class TimerServerFactory(ServerFactory):
def
create
(
self
):
def
create
(
self
):
from
timerserver.TimerServer
import
TimerServer
from
timerserver.TimerServer
import
TimerServer
return
TimerServer
(
self
.
module
,
self
.
interval
)
return
TimerServer
(
self
.
module
,
self
.
interval
)
product/ZLDAPConnection/Entry.py
View file @
7e76a151
...
@@ -154,14 +154,14 @@ class GenericEntry(Acquisition.Implicit):
...
@@ -154,14 +154,14 @@ class GenericEntry(Acquisition.Implicit):
### a .set calls this directly, while in the TransactionalModel this
### a .set calls this directly, while in the TransactionalModel this
### gets called by the Transaction system at commit time.
### gets called by the Transaction system at commit time.
def
_modify
(
self
):
def
_modify
(
self
):
modlist
=
[]
modlist
=
[]
for
attribute
,
values
in
self
.
_data
.
items
():
for
attribute
,
values
in
self
.
_data
.
items
():
modlist
.
append
((
ldap
.
MOD_REPLACE
,
attribute
,
values
))
modlist
.
append
((
ldap
.
MOD_REPLACE
,
attribute
,
values
))
for
attribute
in
self
.
_mod_delete
:
for
attribute
in
self
.
_mod_delete
:
modlist
.
append
((
ldap
.
MOD_DELETE
,
attribute
,
None
))
modlist
.
append
((
ldap
.
MOD_DELETE
,
attribute
,
None
))
self
.
_connection
().
_modifyEntry
(
self
.
dn
,
modlist
)
self
.
_connection
().
_modifyEntry
(
self
.
dn
,
modlist
)
self
.
_mod_delete
=
[]
self
.
_mod_delete
=
[]
self
.
__subentries
=
{}
self
.
__subentries
=
{}
...
@@ -422,8 +422,8 @@ class ZopeEntry(OFS.SimpleItem.Item):
...
@@ -422,8 +422,8 @@ class ZopeEntry(OFS.SimpleItem.Item):
#### Initialazation Routines ##############
#### Initialazation Routines ##############
manage_options
=
(
manage_options
=
(
{
'label'
:
'Attributes'
,
'action'
:
'manage_attributes'
},
{
'label'
:
'Attributes'
,
'action'
:
'manage_attributes'
},
)
)
__ac_permissions__
=
(
__ac_permissions__
=
(
(
'Access contents information'
,
(
'manage_attributes'
,),
(
'Access contents information'
,
(
'manage_attributes'
,),
...
@@ -445,7 +445,7 @@ class ZopeEntry(OFS.SimpleItem.Item):
...
@@ -445,7 +445,7 @@ class ZopeEntry(OFS.SimpleItem.Item):
#### Entry & Attribute Access Machinery #####################
#### Entry & Attribute Access Machinery #####################
def
attributesMap
(
self
):
def
attributesMap
(
self
):
return
self
.
_data
.
items
()
return
self
.
_data
.
items
()
def
__bobo_traverse__
(
self
,
REQUEST
,
key
):
def
__bobo_traverse__
(
self
,
REQUEST
,
key
):
' allow traversal to subentries '
' allow traversal to subentries '
...
@@ -456,14 +456,14 @@ class ZopeEntry(OFS.SimpleItem.Item):
...
@@ -456,14 +456,14 @@ class ZopeEntry(OFS.SimpleItem.Item):
###### Tree Machinery ######
###### Tree Machinery ######
def
tpValues
(
self
):
def
tpValues
(
self
):
return
self
.
_subentries
().
values
()
return
self
.
_subentries
().
values
()
def
tpId
(
self
):
def
tpId
(
self
):
return
self
.
id
return
self
.
id
def
tpURL
(
self
):
def
tpURL
(
self
):
"""Return string to be used as URL relative to parent."""
"""Return string to be used as URL relative to parent."""
return
urllib
.
quote
(
self
.
id
)
return
urllib
.
quote
(
self
.
id
)
### Object Manager-ish Machinery
### Object Manager-ish Machinery
def
objectValues
(
self
):
def
objectValues
(
self
):
...
@@ -478,22 +478,22 @@ class ZopeEntry(OFS.SimpleItem.Item):
...
@@ -478,22 +478,22 @@ class ZopeEntry(OFS.SimpleItem.Item):
### Zope management stuff
### Zope management stuff
def
manage_deleteEntry
(
self
,
ids
,
REQUEST
=
None
):
def
manage_deleteEntry
(
self
,
ids
,
REQUEST
=
None
):
'''Delete marked Entries and all their sub-entries.'''
'''Delete marked Entries and all their sub-entries.'''
for
rdn
in
ids
:
for
rdn
in
ids
:
self
.
_delete_dn
(
rdn
)
self
.
_delete_dn
(
rdn
)
if
REQUEST
is
not
None
:
if
REQUEST
is
not
None
:
return
self
.
manage_contents
(
self
,
REQUEST
)
return
self
.
manage_contents
(
self
,
REQUEST
)
def
manage_newEntry
(
self
,
rdn
,
REQUEST
=
None
):
def
manage_newEntry
(
self
,
rdn
,
REQUEST
=
None
):
'''Add a new entry'''
'''Add a new entry'''
e
=
self
.
addSubentry
(
rdn
)
e
=
self
.
addSubentry
(
rdn
)
if
REQUEST
is
not
None
:
if
REQUEST
is
not
None
:
return
self
.
manage_contents
(
self
,
REQUEST
)
return
self
.
manage_contents
(
self
,
REQUEST
)
else
:
else
:
return
e
return
e
...
@@ -504,19 +504,19 @@ class ZopeEntry(OFS.SimpleItem.Item):
...
@@ -504,19 +504,19 @@ class ZopeEntry(OFS.SimpleItem.Item):
return
e
# return the new entry
return
e
# return the new entry
def
manage_addAttribute
(
self
,
id
,
values
,
REQUEST
=
None
):
def
manage_addAttribute
(
self
,
id
,
values
,
REQUEST
=
None
):
'''Add an attribute to an LDAP entry'''
'''Add an attribute to an LDAP entry'''
self
.
set
(
id
,
values
)
self
.
set
(
id
,
values
)
if
REQUEST
is
not
None
:
if
REQUEST
is
not
None
:
return
self
.
manage_attributes
(
self
,
REQUEST
)
return
self
.
manage_attributes
(
self
,
REQUEST
)
def
manage_editAttributes
(
self
,
REQUEST
):
def
manage_editAttributes
(
self
,
REQUEST
):
"""Edit entry's attributes via the web."""
"""Edit entry's attributes via the web."""
for
attribute
in
self
.
_data
.
keys
():
for
attribute
in
self
.
_data
.
keys
():
values
=
REQUEST
.
get
(
attribute
,
[])
values
=
REQUEST
.
get
(
attribute
,
[])
values
=
filter
(
isNotBlank
,
values
)
#strip out blanks
values
=
filter
(
isNotBlank
,
values
)
#strip out blanks
self
.
set
(
attribute
,
values
)
self
.
set
(
attribute
,
values
)
...
...
product/ZMySQLDA/DA.py
View file @
7e76a151
...
@@ -193,6 +193,6 @@ misc_={'conn': ImageFile(
...
@@ -193,6 +193,6 @@ misc_={'conn': ImageFile(
os
.
path
.
join
(
SHARED_DC_ZRDB_LOCATION
,
'www'
,
'DBAdapterFolder_icon.gif'
))}
os
.
path
.
join
(
SHARED_DC_ZRDB_LOCATION
,
'www'
,
'DBAdapterFolder_icon.gif'
))}
for
icon
in
(
'table'
,
'view'
,
'stable'
,
'what'
,
for
icon
in
(
'table'
,
'view'
,
'stable'
,
'what'
,
'field'
,
'text'
,
'bin'
,
'int'
,
'float'
,
'field'
,
'text'
,
'bin'
,
'int'
,
'float'
,
'date'
,
'time'
,
'datetime'
):
'date'
,
'time'
,
'datetime'
):
misc_
[
icon
]
=
ImageFile
(
os
.
path
.
join
(
'icons'
,
'%s.gif'
)
%
icon
,
globals
())
misc_
[
icon
]
=
ImageFile
(
os
.
path
.
join
(
'icons'
,
'%s.gif'
)
%
icon
,
globals
())
product/ZMySQLDA/db.py
View file @
7e76a151
...
@@ -94,8 +94,8 @@ MySQLdb_version_required = (0,9,2)
...
@@ -94,8 +94,8 @@ MySQLdb_version_required = (0,9,2)
_v
=
getattr
(
_mysql
,
'version_info'
,
(
0
,
0
,
0
))
_v
=
getattr
(
_mysql
,
'version_info'
,
(
0
,
0
,
0
))
if
_v
<
MySQLdb_version_required
:
if
_v
<
MySQLdb_version_required
:
raise
NotSupportedError
,
\
raise
NotSupportedError
,
\
"ZMySQLDA requires at least MySQLdb %s, %s found"
%
\
"ZMySQLDA requires at least MySQLdb %s, %s found"
%
\
(
MySQLdb_version_required
,
_v
)
(
MySQLdb_version_required
,
_v
)
from
MySQLdb.converters
import
conversions
from
MySQLdb.converters
import
conversions
from
MySQLdb.constants
import
FIELD_TYPE
,
CR
,
ER
,
CLIENT
from
MySQLdb.constants
import
FIELD_TYPE
,
CR
,
ER
,
CLIENT
...
@@ -152,11 +152,11 @@ type_xlate = {
...
@@ -152,11 +152,11 @@ type_xlate = {
}
}
def
_mysql_timestamp_converter
(
s
):
def
_mysql_timestamp_converter
(
s
):
if
len
(
s
)
<
14
:
if
len
(
s
)
<
14
:
s
=
s
+
"0"
*
(
14
-
len
(
s
))
s
=
s
+
"0"
*
(
14
-
len
(
s
))
parts
=
map
(
int
,
(
s
[:
4
],
s
[
4
:
6
],
s
[
6
:
8
],
parts
=
map
(
int
,
(
s
[:
4
],
s
[
4
:
6
],
s
[
6
:
8
],
s
[
8
:
10
],
s
[
10
:
12
],
s
[
12
:
14
]))
s
[
8
:
10
],
s
[
10
:
12
],
s
[
12
:
14
]))
return
DateTime
(
"%04d-%02d-%02d %02d:%02d:%02d"
%
tuple
(
parts
))
return
DateTime
(
"%04d-%02d-%02d %02d:%02d:%02d"
%
tuple
(
parts
))
def
DateTime_or_None
(
s
):
def
DateTime_or_None
(
s
):
try
:
return
DateTime
(
'%s UTC'
%
s
)
try
:
return
DateTime
(
'%s UTC'
%
s
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment