Browse Source

Move origin validators to the runtime

Move CouncilManager, MemberhipOriginValidator to the runtime.

Issue link: https://github.com/Joystream/substrate-runtime-joystream/issues/226
Shamil Gadelshin 5 years ago
parent
commit
8771c93a20

+ 0 - 1
runtime-modules/membership/src/lib.rs

@@ -3,7 +3,6 @@
 
 pub mod genesis;
 pub mod members;
-pub mod origin_validator;
 pub mod role_types;
 
 pub(crate) mod mock;

+ 1 - 1
runtime-modules/proposals/codex/src/lib.rs

@@ -45,7 +45,7 @@ pub type BalanceOf<T> =
 pub type NegativeImbalance<T> =
     <<T as stake::Trait>::Currency as Currency<<T as system::Trait>::AccountId>>::NegativeImbalance;
 
-use membership::origin_validator::MemberId;
+type MemberId<T> = <T as  membership::members::Trait>::MemberId;
 
 decl_error! {
     pub enum Error {

+ 2 - 1
runtime-modules/proposals/discussion/src/lib.rs

@@ -28,7 +28,8 @@ use srml_support::traits::Get;
 use types::{Post, Thread, ThreadCounter};
 
 use common::origin_validator::ActorOriginValidator;
-use membership::origin_validator::MemberId;
+
+type MemberId<T> = <T as  membership::members::Trait>::MemberId;
 
 decl_event!(
     /// Proposals engine events

+ 0 - 6
runtime-modules/proposals/engine/Cargo.toml

@@ -18,7 +18,6 @@ std = [
     'stake/std',
     'balances/std',
     'sr-primitives/std',
-    'governance/std',
     'membership/std',
     'common/std',
 
@@ -97,11 +96,6 @@ default_features = false
 package = 'substrate-common-module'
 path = '../../common'
 
-[dependencies.governance]
-default_features = false
-package = 'substrate-governance-module'
-path = '../../governance'
-
 [dev-dependencies]
 mockall = "0.6.0"
 

+ 2 - 3
runtime-modules/proposals/engine/src/lib.rs

@@ -23,7 +23,6 @@
 // TODO: Test StakingEventHandler
 // TODO: Test refund_proposal_stake()
 
-pub use types::CouncilManager;
 use types::FinalizedProposalData;
 use types::ProposalStakeManager;
 pub use types::{
@@ -50,16 +49,16 @@ use srml_support::{
 use system::{ensure_root, RawOrigin};
 
 use common::origin_validator::ActorOriginValidator;
-use membership::origin_validator::MemberId;
 use srml_support::dispatch::Dispatchable;
 
+type MemberId<T> = <T as  membership::members::Trait>::MemberId;
+
 /// Proposals engine trait.
 pub trait Trait:
     system::Trait
     + timestamp::Trait
     + stake::Trait
     + membership::members::Trait
-    + governance::council::Trait
 {
     /// Engine event type.
     type Event: From<Event<Self>> + Into<<Self as system::Trait>::Event>;

+ 0 - 3
runtime-modules/proposals/engine/src/types/mod.rs

@@ -11,12 +11,9 @@ use serde::{Deserialize, Serialize};
 use srml_support::dispatch;
 use srml_support::traits::Currency;
 
-mod council_origin_validator;
 mod proposal_statuses;
 mod stakes;
 
-pub use council_origin_validator::CouncilManager;
-
 pub use proposal_statuses::{
     ApprovedProposalStatus, FinalizationData, ProposalDecisionStatus, ProposalStatus,
 };

+ 1 - 0
runtime/src/integration/mod.rs

@@ -0,0 +1 @@
+pub mod proposals;

+ 7 - 6
runtime-modules/proposals/engine/src/types/council_origin_validator.rs → runtime/src/integration/proposals/council_origin_validator.rs

@@ -1,8 +1,9 @@
 use rstd::marker::PhantomData;
 
-use crate::VotersParameters;
+use proposals_engine::VotersParameters;
 use common::origin_validator::ActorOriginValidator;
-use membership::origin_validator::{MemberId, MembershipOriginValidator};
+
+use super::{MembershipOriginValidator, MemberId};
 
 /// Handles work with the council.
 /// Provides implementations for ActorOriginValidator and VotersParameters.
@@ -10,7 +11,7 @@ pub struct CouncilManager<T> {
     marker: PhantomData<T>,
 }
 
-impl<T: crate::Trait>
+impl<T: governance::council::Trait + membership::members::Trait>
     ActorOriginValidator<<T as system::Trait>::Origin, MemberId<T>, <T as system::Trait>::AccountId>
     for CouncilManager<T>
 {
@@ -30,7 +31,7 @@ impl<T: crate::Trait>
     }
 }
 
-impl<T: crate::Trait> VotersParameters for CouncilManager<T> {
+impl<T: governance::council::Trait> VotersParameters for CouncilManager<T> {
     /// Implement total_voters_count() as council size
     fn total_voters_count() -> u32 {
         <governance::council::Module<T>>::active_council().len() as u32
@@ -40,8 +41,8 @@ impl<T: crate::Trait> VotersParameters for CouncilManager<T> {
 #[cfg(test)]
 mod tests {
     use crate::tests::mock::{initial_test_ext, Test};
-    use crate::CouncilManager;
-    use crate::VotersParameters;
+    use super::CouncilManager;
+    use proposals_engine::VotersParameters;
     use common::origin_validator::ActorOriginValidator;
     use membership::members::UserInfo;
     use system::RawOrigin;

+ 0 - 0
runtime-modules/membership/src/origin_validator.rs → runtime/src/integration/proposals/membership_origin_validator.rs


+ 5 - 0
runtime/src/integration/proposals/mod.rs

@@ -0,0 +1,5 @@
+mod membership_origin_validator;
+mod council_origin_validator;
+
+pub use council_origin_validator::CouncilManager;
+pub use membership_origin_validator::{MembershipOriginValidator, MemberId};

+ 5 - 3
runtime/src/lib.rs

@@ -13,6 +13,8 @@
 #[cfg(feature = "std")]
 include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs"));
 
+mod integration;
+
 use authority_discovery_primitives::{
     AuthorityId as EncodedAuthorityId, Signature as EncodedSignature,
 };
@@ -54,7 +56,7 @@ pub use srml_support::{
 pub use staking::StakerStatus;
 pub use timestamp::Call as TimestampCall;
 
-use membership::origin_validator::MembershipOriginValidator;
+use integration::proposals::{MembershipOriginValidator, CouncilManager};
 
 /// An index to a block.
 pub type BlockNumber = u32;
@@ -816,8 +818,8 @@ parameter_types! {
 impl proposals_engine::Trait for Runtime {
     type Event = Event;
     type ProposerOriginValidator = MembershipOriginValidator<Self>;
-    type VoterOriginValidator = proposals_engine::CouncilManager<Self>;
-    type TotalVotersCounter = proposals_engine::CouncilManager<Self>;
+    type VoterOriginValidator = CouncilManager<Self>;
+    type TotalVotersCounter = CouncilManager<Self>;
     type ProposalId = u32;
     type StakeHandlerProvider = proposals_engine::DefaultStakeHandlerProvider;
     type CancellationFee = ProposalCancellationFee;