| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- # Dispatches data to hasher and adds to database tables
- import sqlalchemy
- from datetime import datetime
- from flask_login import current_user
- from .models import Hashchain, Art, List, TX
- from . import db
- from . import clean_file as cf
- from . import hasher as hsh
- def mint(designated_fn, art_name, art_desc, min_price, buyout_price, close_date):
- # gen filehash
- filehash = hsh.hashfile(f'{cf.UPLOAD_FOLDER}/{designated_fn}')
- # gen txhash (if bought... or sold, or minted)
- ddt = datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S")
- dt = sqlalchemy.func.now()
- txstring = f'[{filehash}, {ddt}, {current_user.id}, {current_user.id}, 0.0]' # minting
- txhash = hsh.gen_txhash(txstring)
- # fetch prev block hash OR GEN HASH
- try:
- prev_bhash = db.session.query(Hashchain).order_by(Hashchain.id.desc()).first().blockhash
- if prev_bhash is None:
- prev_bhash = hsh.GENESIS_HASH
- except:
- prev_bhash = hsh.GENESIS_HASH
- # gen block hash add to hashchain
- new_bhash = hsh.append_tx(txhash, prev_bhash)
- new_block = Hashchain(blockhash = new_bhash)
- db.session.add(new_block)
- # move the file into external secure storage + another local dir (NOT DONE)
- # add to TX table (mint)
- new_tx = TX(
- filehash = filehash,
- datetime = dt,
- source_id = current_user.id,
- destination_id = current_user.id,
- price = 0.0,
- txhash = txhash
- )
- db.session.add(new_tx)
- # add to Art table
- new_art = Art(name = art_name, description = art_desc, filehash = filehash)
- db.session.add(new_art)
- # add to List table
- new_listing = List(
- filehash = filehash,
- seller = current_user.id,
- min_price = min_price,
- out_price = buyout_price,
- timeout = close_date,
- )
- db.session.add(new_listing)
- db.session.commit()
|