Skip to content
Snippets Groups Projects
Commit 7a969ac2 authored by inso's avatar inso
Browse files

Merge branch 'dev' into translations

parents a87e9cb9 892ccedd
No related branches found
No related tags found
No related merge requests found
Showing with 358 additions and 3 deletions
...@@ -25,10 +25,13 @@ install: ...@@ -25,10 +25,13 @@ install:
- conda create -q -n test-environment python=$TRAVIS_PYTHON_VERSION cx_freeze pyqt5 libpng=1.5.13 libsodium=1.0.3 - conda create -q -n test-environment python=$TRAVIS_PYTHON_VERSION cx_freeze pyqt5 libpng=1.5.13 libsodium=1.0.3
- source activate test-environment - source activate test-environment
- ldd $HOME/miniconda/envs/test-environment/lib/qt5/plugins/platforms/*.so - ldd $HOME/miniconda/envs/test-environment/lib/qt5/plugins/platforms/*.so
- pip install coveralls
- pip install pylibscrypt - pip install pylibscrypt
- pip install libnacl - pip install libnacl
- pip install requests - pip install requests
- pip install base58 - pip install base58
- pip install quamash
- pip install asyncio
- python gen_resources.py - python gen_resources.py
- python gen_translations.py - python gen_translations.py
- python setup.py build - python setup.py build
...@@ -45,4 +48,8 @@ script: ...@@ -45,4 +48,8 @@ script:
- export QT_QPA_PLATFORM_PLUGIN_PATH=$HOME/miniconda/envs/test-environment/lib/qt5/plugins/platforms; - export QT_QPA_PLATFORM_PLUGIN_PATH=$HOME/miniconda/envs/test-environment/lib/qt5/plugins/platforms;
- export QT_PLUGIN_PATH=$HOME/miniconda/envs/test-environment/lib/qt5/plugins - export QT_PLUGIN_PATH=$HOME/miniconda/envs/test-environment/lib/qt5/plugins
- export QT_XKB_CONFIG_ROOT=/usr/share/X11/xkb - export QT_XKB_CONFIG_ROOT=/usr/share/X11/xkb
- python run_tests.py - coverage run --source=cutecoin.core,cutecoin.gui,cutecoin.models run_tests.py
after_success:
- coverage -rm
- coveralls
Landscape | [![Code Health](https://landscape.io/github/ucoin-io/cutecoin/dev/landscape.svg?style=flat)](https://landscape.io/github/ucoin-io/cutecoin/dev) <!-- Landscape | [![Code Health](https://landscape.io/github/ucoin-io/cutecoin/dev/landscape.svg?style=flat)](https://landscape.io/github/ucoin-io/cutecoin/dev) -->
Coveralls | [![Coverage Status](https://coveralls.io/repos/ucoin-io/cutecoin/badge.svg?branch=dev)](https://coveralls.io/r/ucoin-io/cutecoin)
Travis | [![Build Status](https://travis-ci.org/ucoin-io/cutecoin.svg?branch=travis)](https://travis-ci.org/ucoin-io/cutecoin) Travis | [![Build Status](https://travis-ci.org/ucoin-io/cutecoin.svg?branch=travis)](https://travis-ci.org/ucoin-io/cutecoin)
Appveyor | [![Build status](https://ci.appveyor.com/api/projects/status/0wmo0rk5mds5t3lr/branch/dev)](https://ci.appveyor.com/project/Insoleet/cutecoin/branch/dev) Appveyor | [![Build status](https://ci.appveyor.com/api/projects/status/0wmo0rk5mds5t3lr/branch/dev)](https://ci.appveyor.com/project/Insoleet/cutecoin/branch/dev)
Weblate | [![Translation status](http://weblate.ucoin.io/widgets/cutecoin/-/svg-badge.svg)](http://weblate.ucoin.io/engage/cutecoin/?utm_source=widget)
![cutecoin logo](https://raw.github.com/ucoin-io/cutecoin/master/cutecoin.png) ![cutecoin logo](https://raw.github.com/ucoin-io/cutecoin/master/cutecoin.png)
cutecoin cutecoin
......
...@@ -52,6 +52,5 @@ deploy: ...@@ -52,6 +52,5 @@ deploy:
draft: true draft: true
prerelease: true prerelease: true
on: on:
branch: master # release from master branch only
appveyor_repo_tag: true # deploy on tag push only appveyor_repo_tag: true # deploy on tag push only
...@@ -15,6 +15,8 @@ pip install pylibscrypt ...@@ -15,6 +15,8 @@ pip install pylibscrypt
pip install libnacl pip install libnacl
pip install requests pip install requests
pip install base58 pip install base58
pip install quamash
pip install asyncio
python gen_resources.py python gen_resources.py
if %errorlevel% neq 0 exit /b 1s if %errorlevel% neq 0 exit /b 1s
......
doc/uml/api.png

13.8 KiB

@startuml
package api {
package api.bma {
class BMADataAccess {
{static} _cache
{static} _request(req : Request, network)
{static} _post(req : Request, network)
{static} _broadcast(req : Request, network)
}
BMADataAccess ..> api.bma.API
}
package api.es {
class ESDataAccess {
}
ESDataAccess ..> api.es.API
}
}
@enduml
\ No newline at end of file
doc/uml/core-classes.png

55.5 KiB

@startuml
package core {
class App {
-- Signals --
current_account_changed(str : account_name)
data_changed()
-- Slots --
-- Properties --
current_account
accounts
-- Methods --
}
App --* Account : accounts
class Account {
-- Signals --
wallets_changed(int : nb_wallets)
community_added(int : index)
community_removed(int : index)
data_changed()
-- Slots --
-- Properties --
communities
wallets
-- Methods --
}
Account "1" --* "*" Wallet
Account "1" --* "*" Community
class Wallet {
-- Signals --
money_received(Transfer)
money_sent(Transfer)
name_changed(str : new_name
data_changed()
-- Slots --
-- Properties --
transfers
-- Methods --
}
Wallet "1" --* "*" Transfer
class Transfer {
-- Signals --
state_changed(int : new_state)
-- Slots --
-- Properties --
-- Methods --
}
class Community {
-- Signals --
members_changed()
data_changed()
-- Slots --
-- Properties --
network
-- Methods --
}
App --> Identity
class Identity {
{static} _identities
{static} load(data : dict)
{static} lookup(search : str)
}
}
package net {
class Network {
-- Signals --
node_found(int : index)
node_removed(int : index)
block_found(int : block_number)
-- Slots --
-- Properties --
nodes
root_nodes
-- Methods --
}
Community "1" --* "1" Network
Network "1" --* "*" Node
class Node {
-- Signals --
changed()
-- Slots --
-- Properties --
endpoints
pubkey
uid
block
state
-- Methods --
}
}
@enduml
\ No newline at end of file
doc/uml/cutecoin.png

261 KiB

@startuml
!include core-classes.pu
!include gui-classes.pu
!include models-classes.pu
!include api.pu
MainWindow "1" --> "1" App
CertificationDialog --> Community
TransferDialog --> Community
CurrencyTab "1" --> "1" Community
CommunityTab -right-> IdentitiesFilterProxyModel
NetworkTab -right-> NetworkFilterProxyModel
WalletTab -right-> WalletsFilterProxyModel
WalletsFilterProxyModel -up-> Wallet
NetworkFilterProxyModel -up-> Network
TxHistoryFilterProxyModel -up-> Transfer
ConfigureAccountDialog --> CommunitiesListModel
ConfigureCommunityDialog --> RootNodesTableModel
ConfigureAccountDialog --> Account
ConfigureCommunityDialog --> Community
Account ..> BMADataAccess
Community ..> BMADataAccess
Wallet ..> BMADataAccess
Transfer ..> BMADataAccess
Identity ..> BMADataAccess
BMADataAccess .left.> Network
@enduml
\ No newline at end of file
doc/uml/gui-classes.png

38.8 KiB

@startuml
package gui {
class MainWindow {
}
MainWindow "1" --* "*" CurrencyTab
class CurrencyTab {
}
CurrencyTab "1" --* "1" CommunityTab
CurrencyTab "1" --* "1" WalletTab
CurrencyTab "1" --* "1" InformationsTab
CurrencyTab "1" --* "1" TransactionsTab
class CommunityTab {
}
CommunityTab "1" --* "1" IdentitiesTab
CommunityTab "1" --* "1" WotTab
class WalletTab {
}
class InformationsTab {
}
class TransactionsTab {
}
class NetworkTab {
}
CurrencyTab "1" --* "1" NetworkTab
class IdentitiesTab {
}
class WotTab {
}
package dialogs {
class CertificationDialog
class TransferDialog
class ContactDialog
class ConfigureAccountDialog
class ConfigureCommunityDialog
}
MainWindow --> CertificationDialog
MainWindow --> TransferDialog
MainWindow --> ContactDialog
MainWindow --> ConfigureAccountDialog
ConfigureAccountDialog --> ConfigureCommunityDialog
class Wot
WotTab --> Wot
}
@enduml
\ No newline at end of file
doc/uml/models-classes.png

14.8 KiB

@startuml
package models {
class WalletsFilterProxyModel {
}
WalletsFilterProxyModel --> WalletsTableModel : source
class WalletsTableModel {
}
class IdentitiesFilterProxyModel {
}
IdentitiesFilterProxyModel --> IdentitiesTableModel : source
class IdentitiesTableModel {
}
class NetworkFilterProxyModel {
}
NetworkFilterProxyModel --> NetworkTableModel : source
class NetworkTableModel {
}
class TxHistoryFilterProxyModel {
}
TxHistoryFilterProxyModel --> TxHistoryTableModel : source
class TxHistoryTableModel {
}
class CommunitiesListModel {
}
class RootNodesTableModel {
}
}
@enduml
\ No newline at end of file
doc/uml/network.png

45.7 KiB

@startuml
Network -->o Node : Connect to node_received()
Network -> Node : Starts network discovery
activate Node
Node -> QNetworkManager : HTTP GET peering/peers?leaves=true
create QNetworkReply
QNetworkManager -> QNetworkReply : Instantiate
Node <- QNetworkManager : QNetworkReply
Node -->o QNetworkReply : Connect to finished()
Network <- Node
deactivate Node
... Request is processed ...
Node <-- QNetworkReply : finished()
destroy QNetworkReply
alt "root" hash changed
loop "for all leaves changed"
activate Node
Node -> QNetworkManager : HTTP GET peering/peers/leaf=leaf_hash
create QNetworkReply
QNetworkManager -> QNetworkReply : Instantiate
Node <- QNetworkManager : QNetworkReply
Node -->o QNetworkReply : Connect to finished()
end
end
... Requests is processed ...
Node <-- QNetworkReply : finished()
destroy QNetworkReply
Network <-- Node : node_received()
ref over Network
New node is instanciated
if pubkey not known yet.
It starts it's own
network discovery
end ref
@enduml
\ No newline at end of file
doc/uml/requests.png

57.4 KiB

@startuml
QModel -->o "Core Component" : Connect to data_changed()
QModel -> "Core Component" : Data access
activate "Core Component"
"Core Component" -> Community : Request data
Community -> Cache : Request cache
ref over Cache
Data is obsolete
(new block mined
since last caching)
end ref
Cache -> QNetworkManager : HTTP GET
create QNetworkReply
QNetworkManager -> QNetworkReply : Instantiate
Cache <- QNetworkManager : QNetworkReply
create ReceiverSlot
Cache -> ReceiverSlot : Instantiate Slot
QNetworkReply o<-- ReceiverSlot : Connect to finished()
Community <- Cache : Cached data
"Core Component" <- Community : Cached data
"Core Component" -> "Core Component" : Compute data
QModel <- "Core Component" : Data
deactivate "Core Component"
...Network request is processed...
ReceiverSlot <-- QNetworkReply : finished()
activate ReceiverSlot
ReceiverSlot -> Cache : Update cache data
ReceiverSlot -> "Core Component" : emit data_changed()
deactivate ReceiverSlot
destroy ReceiverSlot
destroy QNetworkReply
|||
QModel <-- "Core Component" : data_changed()
QModel -> "Core Component" : Data access
activate "Core Component"
ref over "Core Component", Community
Community is requested again,
and last cached data are returned
No new block mined, so no HTTP GET
initialized between cache
and QNetworkManager
end ref
QModel <- "Core Component" : Data
deactivate "Core Component"
@enduml
\ No newline at end of file
doc/uml/tx_lifecycle.png

22 KiB | W: | H:

doc/uml/tx_lifecycle.png

21.4 KiB | W: | H:

doc/uml/tx_lifecycle.png
doc/uml/tx_lifecycle.png
doc/uml/tx_lifecycle.png
doc/uml/tx_lifecycle.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -19,3 +19,5 @@ ...@@ -19,3 +19,5 @@
PROTOCOL_VERSION="1" PROTOCOL_VERSION="1"
MANAGED_API=["BASIC_MERKLED_API"] MANAGED_API=["BASIC_MERKLED_API"]
from . import api, documents, key
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment