| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- # Dispatches data to hasher and adds to database tables
- import sqlalchemy
- import os
- from datetime import datetime
- from flask_login import current_user
- from .models import Hashchain, Art, List, TX , User
- from . import db
- from app.lib import clean_file as cf
- from app.lib 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 (NOT DONE)
- os.rename(f'{cf.UPLOAD_FOLDER}/{designated_fn}', f'{cf.REPO_FOLDER}/{designated_fn}')
- # 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,
- owner = current_user.id,
- creator = current_user.id,
- dname = designated_fn
- )
- 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()
- def save_pp(pp_path):
- new_pppath = User.query.filter_by(id=current_user.id).first()
- new_pppath.profile_image = pp_path
- db.session.commit()
|