Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
gajim
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
TSRh
gajim
Commits
fafc555b
Commit
fafc555b
authored
18 years ago
by
Liorithiel
Browse files
Options
Downloads
Patches
Plain Diff
Some changes in new dataforms, they're almost usable now.
parent
28992805
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/common/dataforms-new.py
+54
-13
54 additions, 13 deletions
src/common/dataforms-new.py
with
54 additions
and
13 deletions
src/common/dataforms-new.py
+
54
−
13
View file @
fafc555b
...
...
@@ -10,7 +10,7 @@ class UnknownDataForm(Error): pass # when we get xmpp.Node which we do not under
class
WrongFieldValue
(
Error
):
pass
# when we get xmpp.Node which contains bad fields
# helper class to change class of already existing object
class
Extend
s
(
object
):
class
Extend
edNode
(
xmpp
.
Node
,
object
):
def
__new__
(
cls
,
*
a
,
**
b
):
print
'
Extends.__new__
'
if
'
extend
'
not
in
b
.
keys
():
...
...
@@ -26,7 +26,7 @@ def nested_property(f):
ret
=
f
()
p
=
{
'
doc
'
:
f
.
__doc__
}
for
v
in
(
'
fget
'
,
'
fset
'
,
'
fdel
'
,
'
doc
'
):
if
v
in
ret
:
p
[
v
]
=
ret
[
v
]
if
v
in
ret
.
keys
()
:
p
[
v
]
=
ret
[
v
]
return
property
(
**
p
)
# helper to create fields from scratch
...
...
@@ -47,7 +47,7 @@ def Field(typ, **attrs):
f
.
setattr
(
key
,
value
)
return
f
class
DataField
(
Extend
s
,
xmpp
.
Node
):
class
DataField
(
Extend
ed
Node
):
"""
Keeps data about one field - var, field type, labels, instructions...
"""
def
__init__
(
self
,
typ
=
None
,
var
=
None
,
value
=
None
,
label
=
None
,
desc
=
None
,
required
=
None
,
options
=
None
,
extend
=
None
):
...
...
@@ -235,18 +235,17 @@ def fdel(self):
self
.
delChild
(
element
)
return
locals
()
class
DataRecord
(
Extend
s
,
xmpp
.
Node
):
class
DataRecord
(
Extend
ed
Node
):
'''
The container for data fields - an xml element which has DataField
elements as children.
'''
def
__init__
(
self
,
fields
=
None
,
associated
=
None
,
extend
=
None
):
self
.
associated
=
None
self
.
associated
=
associated
self
.
vars
=
{}
if
extend
is
None
:
# we have to build this object from scratch
xmpp
.
Node
.
__init__
(
self
)
if
fields
is
not
None
:
self
.
fields
=
fields
if
associated
is
not
None
:
self
.
associated
=
associated
else
:
# we already have xmpp.Node inside - try to convert all
# fields into DataField objects
...
...
@@ -286,9 +285,11 @@ def iter_with_associated(self):
def
__getitem__
(
self
,
item
):
return
self
.
vars
[
item
]
class
DataForm
(
Extends
,
DataRecord
):
def
__init__
(
self
,
replyto
=
None
,
extends
=
None
):
pass
class
DataForm
(
ExtendedNode
):
def
__init__
(
self
,
replyto
=
None
,
extend
=
None
):
if
extend
is
None
:
# we have to build form from scratch
xmpp
.
Node
.
__init__
(
self
,
'
x
'
,
attrs
=
{
'
xmlns
'
:
xmpp
.
NS_DATA
})
@nested_property
def
type
():
...
...
@@ -314,6 +315,7 @@ def fdel(self):
self
.
delChild
(
'
title
'
)
except
ValueError
:
pass
return
locals
()
@nested_property
def
instructions
():
...
...
@@ -332,15 +334,54 @@ def fset(self, value):
def
fdel
(
self
):
for
value
in
self
.
iterTags
(
'
value
'
):
self
.
delChild
(
value
)
return
locals
()
class
SimpleDataForm
(
DataForm
):
pass
class
SimpleDataForm
(
DataForm
,
DataRecord
):
def
__init__
(
self
,
extend
=
None
):
if
extend
is
None
:
# we have to build form from scratch
DataForm
.
__init__
(
self
)
DataRecord
.
__init__
(
self
,
extend
=
self
,
associated
=
self
)
else
:
# we already have node, just change it to real form object
pass
class
MultipleDataForm
(
DataForm
):
def
__init__
(
self
):
# all records, recorded into DataRecords
pass
@nested_property
def
record
s
():
def
item
s
():
'''
A list of all records.
'''
def
fget
(
self
):
return
list
(
self
.
iter_records
())
def
fset
(
self
,
records
):
fdel
(
self
)
for
record
in
records
:
if
not
isinstance
(
record
,
DataRecord
):
DataRecord
(
extend
=
record
)
self
.
addChild
(
node
=
record
)
def
fdel
(
self
):
for
record
in
self
.
iterTags
(
'
record
'
):
self
.
delChild
(
record
)
return
locals
()
def
iter_records
():
for
record
in
self
.
iterTags
(
'
item
'
):
yield
item
@nested_property
def
recorded
():
'''
DataRecord that contains descriptions of fields in records.
'''
def
fget
(
self
):
return
self
.
getTag
(
'
recorded
'
)
def
fset
(
self
,
record
):
try
:
self
.
delChild
(
'
recorded
'
)
except
:
pass
record
.
setName
(
'
recorded
'
)
self
.
addChild
(
node
=
record
)
return
locals
()
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment