Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
sakia
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Model registry
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor 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
This is an archived project. Repository and other project resources are read-only.
Show more breadcrumbs
clients
python
sakia
Commits
03c2c1e3
Commit
03c2c1e3
authored
10 years ago
by
inso
Browse files
Options
Downloads
Plain Diff
Merge branch 'wot' into dev
parents
a81d18bf
5db412ea
Branches
Branches containing commit
Tags
Tags containing commit
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/cutecoin/gui/wot_tab.py
+135
-22
135 additions, 22 deletions
src/cutecoin/gui/wot_tab.py
with
135 additions
and
22 deletions
src/cutecoin/gui/wot_tab.py
+
135
−
22
View file @
03c2c1e3
...
...
@@ -3,7 +3,7 @@
import
time
import
datetime
import
logging
from
PyQt5.QtWidgets
import
QWidget
from
PyQt5.QtWidgets
import
QWidget
,
QComboBox
from
..gen_resources.wot_tab_uic
import
Ui_WotTabWidget
from
cutecoin.gui.views.wot
import
NODE_STATUS_HIGHLIGHTED
,
NODE_STATUS_SELECTED
,
NODE_STATUS_OUT
,
ARC_STATUS_STRONG
,
ARC_STATUS_WEAK
...
...
@@ -11,7 +11,7 @@ from ucoinpy.api import bma
from
.certification
import
CertificationDialog
from
.add_contact
import
AddContactDialog
from
.transfer
import
TransferMoneyDialog
from
cutecoin.core.person
import
Person
class
WotTabWidget
(
QWidget
,
Ui_WotTabWidget
):
def
__init__
(
self
,
account
,
community
,
password_asker
,
parent
=
None
):
...
...
@@ -29,6 +29,9 @@ class WotTabWidget(QWidget, Ui_WotTabWidget):
# add combobox events
self
.
comboBoxSearch
.
lineEdit
().
returnPressed
.
connect
(
self
.
search
)
# To fix a recall of the same item with different case,
# the edited text is not added in the item list
self
.
comboBoxSearch
.
setInsertPolicy
(
QComboBox
.
NoInsert
)
# add scene events
self
.
graphicsView
.
scene
().
node_clicked
.
connect
(
self
.
draw_graph
)
...
...
@@ -53,36 +56,25 @@ class WotTabWidget(QWidget, Ui_WotTabWidget):
:param public_key: Public key of the identity
"""
# reset graph
graph
=
dict
()
try
:
certifiers
=
self
.
community
.
request
(
bma
.
wot
.
CertifiersOf
,
{
'
search
'
:
public_key
})
except
ValueError
as
e
:
logging
.
debug
(
'
bma.wot.CertifiersOf request
e
rror :
'
+
str
(
e
))
logging
.
debug
(
'
bma.wot.CertifiersOf request
ValueE
rror :
'
+
str
(
e
))
try
:
results
=
self
.
community
.
request
(
bma
.
wot
.
Lookup
,
{
'
search
'
:
public_key
})
data
=
self
.
community
.
request
(
bma
.
wot
.
Lookup
,
{
'
search
'
:
public_key
})
except
ValueError
as
e
:
logging
.
debug
(
'
bma.wot.
CertifiersOf
request
e
rror :
'
+
str
(
e
))
logging
.
debug
(
'
bma.wot.
Lookup
request
ValueE
rror :
'
+
str
(
e
))
return
False
# show only node of this non member (to certify him)
node_status
=
0
if
public_key
==
self
.
account
.
pubkey
:
node_status
+=
NODE_STATUS_HIGHLIGHTED
node_status
+=
NODE_STATUS_OUT
node_status
+=
NODE_STATUS_SELECTED
# selected node
graph
[
public_key
]
=
{
'
id
'
:
public_key
,
'
arcs
'
:
list
(),
'
text
'
:
results
[
'
results
'
][
0
][
'
uids
'
][
0
][
'
uid
'
],
'
tooltip
'
:
public_key
,
'
status
'
:
node_status
}
# draw graph in qt scene
self
.
graphicsView
.
scene
().
update_wot
(
graph
)
# construct and display non member graph
self
.
setNonMemberGraph
(
public_key
,
data
)
return
False
except
Exception
as
e
:
logging
.
debug
(
'
bma.wot.CertifiersOf request error :
'
+
str
(
e
))
return
False
# reset graph
graph
=
dict
()
# add wallet node
node_status
=
0
if
public_key
==
self
.
account
.
pubkey
:
...
...
@@ -185,6 +177,119 @@ class WotTabWidget(QWidget, Ui_WotTabWidget):
# draw graph in qt scene
self
.
graphicsView
.
scene
().
update_wot
(
graph
)
def
setNonMemberGraph
(
self
,
public_key
,
data
):
# reset graph
graph
=
dict
()
# show only node of this non member (to certify him)
node_status
=
0
if
public_key
==
self
.
account
.
pubkey
:
node_status
+=
NODE_STATUS_HIGHLIGHTED
node_status
+=
NODE_STATUS_OUT
node_status
+=
NODE_STATUS_SELECTED
# selected node
graph
[
public_key
]
=
{
'
id
'
:
public_key
,
'
arcs
'
:
list
(),
'
text
'
:
data
[
'
results
'
][
0
][
'
uids
'
][
0
][
'
uid
'
],
'
tooltip
'
:
public_key
,
'
status
'
:
node_status
}
# add certifiers of uid
for
certifier
in
data
[
'
results
'
][
0
][
'
uids
'
][
0
][
'
others
'
]:
# for each uid found for this pubkey...
for
uid
in
certifier
[
'
uids
'
]:
# new node
if
certifier
[
'
pubkey
'
]
not
in
graph
.
keys
():
node_status
=
0
if
certifier
[
'
pubkey
'
]
==
self
.
account
.
pubkey
:
node_status
+=
NODE_STATUS_HIGHLIGHTED
if
certifier
[
'
isMember
'
]
is
False
:
node_status
+=
NODE_STATUS_OUT
graph
[
certifier
[
'
pubkey
'
]]
=
{
'
id
'
:
certifier
[
'
pubkey
'
],
'
arcs
'
:
list
(),
'
text
'
:
uid
,
'
tooltip
'
:
certifier
[
'
pubkey
'
],
'
status
'
:
node_status
}
cert_time
=
self
.
get_block_median_time
(
certifier
[
'
meta
'
][
'
block_number
'
])
# add only valid certification...
if
(
time
.
time
()
-
cert_time
)
>
self
.
signature_validity
:
continue
# keep only the latest certification
if
graph
[
certifier
[
'
pubkey
'
]][
'
arcs
'
]:
if
cert_time
<
graph
[
certifier
[
'
pubkey
'
]][
'
arcs
'
][
0
][
'
cert_time
'
]:
continue
# display validity status
if
(
time
.
time
()
-
cert_time
)
>
self
.
ARC_STATUS_STRONG_time
:
arc_status
=
ARC_STATUS_WEAK
else
:
arc_status
=
ARC_STATUS_STRONG
arc
=
{
'
id
'
:
public_key
,
'
status
'
:
arc_status
,
'
tooltip
'
:
datetime
.
datetime
.
fromtimestamp
(
cert_time
+
self
.
signature_validity
).
strftime
(
"
%Y/%m/%d
"
),
'
cert_time
'
:
cert_time
}
graph
[
certifier
[
'
pubkey
'
]][
'
arcs
'
]
=
[
arc
]
# add certified by non member uid
for
certified
in
data
[
'
results
'
][
0
][
'
signed
'
]:
if
certified
[
'
pubkey
'
]
not
in
graph
.
keys
():
node_status
=
0
if
certified
[
'
pubkey
'
]
==
self
.
account
.
pubkey
:
node_status
+=
NODE_STATUS_HIGHLIGHTED
if
certified
[
'
isMember
'
]
is
False
:
node_status
+=
NODE_STATUS_OUT
graph
[
certified
[
'
pubkey
'
]]
=
{
'
id
'
:
certified
[
'
pubkey
'
],
'
arcs
'
:
list
(),
'
text
'
:
certified
[
'
uid
'
],
'
tooltip
'
:
certified
[
'
pubkey
'
],
'
status
'
:
node_status
}
# add only valid certification...
if
(
time
.
time
()
-
certified
[
'
meta
'
][
'
timestamp
'
])
>
self
.
signature_validity
:
continue
# display validity status
if
(
time
.
time
()
-
certified
[
'
meta
'
][
'
timestamp
'
])
>
self
.
ARC_STATUS_STRONG_time
:
arc_status
=
ARC_STATUS_WEAK
else
:
arc_status
=
ARC_STATUS_STRONG
arc
=
{
'
id
'
:
certified
[
'
pubkey
'
],
'
status
'
:
arc_status
,
'
tooltip
'
:
datetime
.
datetime
.
fromtimestamp
(
certified
[
'
meta
'
][
'
timestamp
'
]
+
self
.
signature_validity
).
strftime
(
"
%Y/%m/%d
"
),
'
cert_time
'
:
certified
[
'
meta
'
][
'
timestamp
'
]
}
# replace old arc if this one is more recent
new_arc
=
True
index
=
0
for
a
in
graph
[
public_key
][
'
arcs
'
]:
# if same arc already exists...
if
a
[
'
id
'
]
==
arc
[
'
id
'
]:
# if arc more recent, dont keep old one...
if
arc
[
'
cert_time
'
]
>=
a
[
'
cert_time
'
]:
graph
[
public_key
][
'
arcs
'
][
index
]
=
arc
new_arc
=
False
index
+=
1
# if arc not in graph...
if
new_arc
:
# add arc in graph
graph
[
public_key
][
'
arcs
'
].
append
(
arc
)
# draw graph in qt scene
self
.
graphicsView
.
scene
().
update_wot
(
graph
)
return
False
def
reset
(
self
):
"""
Reset graph scene to wallet identity
...
...
@@ -260,3 +365,11 @@ class WotTabWidget(QWidget, Ui_WotTabWidget):
dialog
.
edit_name
.
setText
(
metadata
[
'
text
'
])
dialog
.
edit_pubkey
.
setText
(
metadata
[
'
id
'
])
dialog
.
exec_
()
def
get_block_median_time
(
self
,
number
):
try
:
block
=
self
.
community
.
get_block
(
number
)
except
Exception
as
e
:
logging
.
debug
(
'
community.get_block request error :
'
+
str
(
e
))
return
False
return
block
.
mediantime
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