|
@@ -1,4 +1,6 @@
|
|
|
import json
|
|
import json
|
|
|
|
|
+import uuid
|
|
|
|
|
+from lib.address import Address
|
|
|
|
|
|
|
|
|
|
|
|
|
class Contract(object):
|
|
class Contract(object):
|
|
@@ -9,14 +11,28 @@ class Contract(object):
|
|
|
self.description = None
|
|
self.description = None
|
|
|
self.deadline = None
|
|
self.deadline = None
|
|
|
|
|
|
|
|
- def set_term(self, title: str, desc: str, deadline: int):
|
|
|
|
|
|
|
+ self.modified_by = None
|
|
|
|
|
+ self.last_comment = None
|
|
|
|
|
+ self.state = None
|
|
|
|
|
+
|
|
|
|
|
+ def create(self, title: str, desc: str, deadline: int):
|
|
|
|
|
+ self.id = str(uuid.uuid1())
|
|
|
self.title = title
|
|
self.title = title
|
|
|
self.description = desc
|
|
self.description = desc
|
|
|
self.deadline = deadline
|
|
self.deadline = deadline
|
|
|
- self.log(f'Set: {self.title}')
|
|
|
|
|
|
|
+ self.log(f'Created: {self.title}')
|
|
|
|
|
+
|
|
|
|
|
+ def update(self, key: str, value, by: Address, comment: str):
|
|
|
|
|
+ if hasattr(self, key):
|
|
|
|
|
+ setattr(self, key, value)
|
|
|
|
|
+ self.modified_by = by
|
|
|
|
|
+ self.last_comment = comment
|
|
|
|
|
+ return True
|
|
|
|
|
+ return False
|
|
|
|
|
|
|
|
def serialize(self):
|
|
def serialize(self):
|
|
|
obj = {
|
|
obj = {
|
|
|
|
|
+ '@type': 'term',
|
|
|
'id': self.id,
|
|
'id': self.id,
|
|
|
'title': self.title,
|
|
'title': self.title,
|
|
|
'description': self.description,
|
|
'description': self.description,
|
|
@@ -39,11 +55,35 @@ class Contract(object):
|
|
|
self.people = None
|
|
self.people = None
|
|
|
self.initiator = None
|
|
self.initiator = None
|
|
|
self.terms = []
|
|
self.terms = []
|
|
|
|
|
+ self.initial_block = None
|
|
|
|
|
+
|
|
|
|
|
+ self.modified_by = None
|
|
|
|
|
+ self.comment = None
|
|
|
|
|
|
|
|
def add_term(self, term: Term):
|
|
def add_term(self, term: Term):
|
|
|
self.log(f'Term added: {term.id} | {term.title}')
|
|
self.log(f'Term added: {term.id} | {term.title}')
|
|
|
self.terms.append(term)
|
|
self.terms.append(term)
|
|
|
|
|
|
|
|
|
|
+ def update(self, key: str, value, by: Address, comment: str):
|
|
|
|
|
+ if self.has_attribute(key):
|
|
|
|
|
+ self.log(f'Updating {key}. {getattr(self, key)} => {value}')
|
|
|
|
|
+ setattr(self, key, value)
|
|
|
|
|
+ self.modified_by = by
|
|
|
|
|
+ self.comment = comment
|
|
|
|
|
+ return True
|
|
|
|
|
+ return False
|
|
|
|
|
+
|
|
|
|
|
+ def create(self, title: str, desc: str, deadline: int, price: float, **kwargs):
|
|
|
|
|
+ if self.id is None:
|
|
|
|
|
+ self.id = str(uuid.uuid1())
|
|
|
|
|
+ self.title = title
|
|
|
|
|
+ self.description = desc
|
|
|
|
|
+ self.deadline = deadline
|
|
|
|
|
+ self.price = price
|
|
|
|
|
+ self.log(f'Contract created: {self.id}')
|
|
|
|
|
+ return True
|
|
|
|
|
+ return False
|
|
|
|
|
+
|
|
|
def serialize(self):
|
|
def serialize(self):
|
|
|
# TODO: Add all properties
|
|
# TODO: Add all properties
|
|
|
term_serialize = []
|
|
term_serialize = []
|
|
@@ -58,4 +98,7 @@ class Contract(object):
|
|
|
return obj
|
|
return obj
|
|
|
|
|
|
|
|
def log(self, text):
|
|
def log(self, text):
|
|
|
- print(f'[ CONTR ] {text}')
|
|
|
|
|
|
|
+ print(f'[ CONTR ] {text}')
|
|
|
|
|
+
|
|
|
|
|
+ def has_attribute(self, key):
|
|
|
|
|
+ return hasattr(self, key)
|