Product Add

Script to add a new product to list of them. Location is /home/wcmckee/sellcoffee/products.

Better to have a file for products or a folder? Might be easier to have a folder. Each product has rsa key - public and private key.

Make json restful api that has product list. Append new product to it whenever it's updated.


In [22]:
import os
import time
import datetime
import json
import getpass
import arrow
#import satchless
#from satchless.item import ItemLine

#from TwitterFollowBot import TwitterBot
#from passlib.hash import pbkdf2_sha256
#import crypt, getpass, spwd
#from Crypto.PublicKey import RSA
#import crypto
#import rsa

In [ ]:


In [5]:
myusr = getpass.getuser()

In [6]:
#brotwe = TwitterBot('/home/{}/github/wcmckee-notebook/config.txt'.format(myusr))

In [7]:
yearz = time.strftime("%y", time.gmtime())
monthz = time.strftime("%m", time.gmtime())
dayz = time.strftime("%d", time.gmtime())

In [8]:
datez = yearz + monthz + dayz

In [9]:
prodirz = ('/home/{}/sellcoffee/posts/'.format(myusr))

In [11]:
prolis = os.listdir(prodirz)

In [15]:
print(prolis)


['nanowrimo15-day29.meta', 'nanowrimo15-day21.rst', 'someone.rst', 'edr-sprint-william.rst', 'william-mckee-on-cc-remix.meta', 'william-mckee-on-cc-remix.rst', 'peppercarrot02.meta', 'nanowrimo15-day7.meta', '.~lock.william-mckee-on-cc.rst#', 'peppercarrot09.meta', 'nanowrimo15-day4.meta', 'meeting-2015-12-16.rst', 'hard-decisions.rst.new', 'nanowrimo15-day2.meta', 'hcc.meta', 'wikieducator-begin.rst', 'william-mckee-on-cc.rst', 'nanowrimo15-day23.meta', 'campnanowrimo16-day03.rst', 'nanowrimo15-day1-edit.meta', 'Mat-Hoffmans-Pro-BMX-review.meta', 'downout.rst', 'kiwipycon-travelbac.rst', 'peppercarrot05.rst', 'meeting-2015-12-16.meta', 'nanowrimo15-day13.rst', 'nanowrimo15-day2-edit.rst', 'campnanowrimo16-day01.rst', 'nanowrimo15-day29.rst', 'prenano.rst', 'nanowrimo15-day16.rst', 'peppercarrot02.rst', 'nanowrimo15-day5.rst', 'prenano.meta', 'schoolccpolicy.rst', 'ftw.rst', 'nanowrimo15-day19.meta', 'kiwipycon2015.meta', 'cc-growth.meta', 'peppercarrot10.rst', 'sherlock.meta', 'review-thegrapesofwrath.meta', 'nanowrimo15-day10.meta', 'nanowrimo15-day3.rst', 'nanowrimo15-day21.meta', 'nanowrimo15-day25.meta', 'spikeinfosec.meta', 'downout.md', 'peppercarrot12.meta', 'myPhysRomance.rst~', 'peppercarrot01.rst', 'campnanowrimo16-day02.rst', 'edr-sprint.meta', 'nanowrimo15-day17.meta', 'hcc.rst', 'campnanowrimo16-day03.meta', 'nanowrimo15-day1.rst', 'peppercarrot11.rst', 'campnanowrimo16-day05.rst', 'peppercarrot08.rst', 'nanowrimo15-day6.rst', 'william-mckee-on-cc.meta', 'devmob15-reflection.rst', 'nanowrimo15-day4.rst', 'nanowrimo15-day25.rst', 'nanowrimo15-day13.meta', 'edr-sprint.rst', 'will-tlc.meta', 'kiwipycon2015.rst', 'peppercarrot07.meta', 'peppercarrot01.meta', '#nanowrimo15-day24.rst#', 'nanowrimo15-day5.meta', 'peppercarrot09.rst', 'creativecommons.meta', 'creativecommons.rst', 'nanowrimo15-day22.rst', 'nanowrimo15-day2-edit2.rst', '#nanowrimo15-day25.rst#', 'wikieducator-begin.meta', 'fallofgiants.meta', 'downout.meta', 'nanowrimo15-day9.rst', 'nanowrimo15-day24.rst', 'public-mediastudies.meta', 'meeting-2015-12-02.meta', 'myPhysRomance.rst', 'nanowrimo15-day14.meta', 'peppercarrot07.rst', 'est.rst', 'campnanowrimo16-day05.meta', 'Mat-Hoffmans-Pro-BMX-review.rst', 'python.md', 'nanowrimo15-day7.rst', 'campnanowrimo16-day03.rst~', 'overclocked.rst', 'nanowrimo15-day26.meta', 'nzdevmob2015.rst', 'copywrong.rst', 'meeting-2015-12-02.rst', 'overclocked.meta', 'cc-growth.rst', 'someone.meta', 'myPhysRomance.meta~', 'will-tlc.rst', 'python.meta', 'nanowrimo15-day12.rst', 'peppercarrot06.rst', 'nanowrimo15-day28.meta', 'kiwipycon-travelbac.meta', 'Spyro-Year-Of-Dragon-review.rst', 'nanowrimo15-day11.rst', 'nanowrimo15-day16.meta', 'nanowrimo15-day30.meta', 'nanowrimo15-day3.meta', 'nanowrimo15-day12.meta', 'nanowrimo15-day26.rst', 'peppercarrot10.meta', 'nanowrimo15-day15.rst', 'nanowrimo15-day22.meta', 'peppercarrot12.rst', 'nanowrimo15-day24.meta', 'peppercarrot03.rst', 'nanowrimo15-day8.rst', 'peppercarrot05.meta', 'nanowrimo15-day11.meta', 'nanowrimo15-day1.meta', 'nzdevmob2015.meta', 'nanowrimo15-day19.rst', 'peppercarrot04.meta', 'myPhysRomance.meta', 'peppercarrot03.meta', 'est.meta', 'nanowrimo15-day20.rst', 'nanowrimo15-day10.rst', 'campnanowrimo16-day01.meta', 'review-thegrapesofwrath.rst', 'peppercarrot04.rst', 'nanowrimo15-day18.rst', 'peppercarrot06.rst~', 'nanowrimo15-day17.rst', 'nanowrimo15-day2.rst', 'nanowrimo15-day18.meta', 'nanowrimo15-day27.meta', 'nanowrimo15-day20.meta', 'nanowrimo15-day1-edit.rst', 'nanowrimo15-day2-edit.meta', 'peppercarrot08.meta', 'peppercarrot06.meta', 'edr-sprint-william.meta', 'public-mediastudies.rst', 'nanowrimo15-day15.meta', 'hard-decisions.meta', 'hard-decisions.rst', 'nanowrimo15-day28.rst', 'spikeinfosec.rst', 'fallofgiants.rst', 'nanowrimo15-day27.rst', 'Spyro-Year-Of-Dragon-review.meta', 'campnanowrimo16-day02.meta', 'nanowrimo15-day8.meta', 'nanowrimo15-day14.rst', 'peppercarrot11.meta', 'copywrong.meta', 'ftw.meta', 'devmob15-reflection.meta', 'nanowrimo15-day2-edit2.meta', 'nanowrimo15-day6.meta', 'sherlock.rst', 'nanowrimo15-day23.rst', 'nanowrimo15-day9.meta', 'schoolccpolicy.meta', 'nanowrimo15-day30.rst']

In [13]:
prodoadd = input('Name of product to add: ')


Name of product to add: peppercarrot-daynew

In [16]:
priceofit = input('Cost in NZD: ')


Cost in NZD: 350

In [17]:
amoun = input('Amount to stock: ')


Amount to stock: 3

In [18]:
#class Shrubberies(ItemLine):
#    def __init__(self, qty): self.qty = qty
#    def get_quantity(self): return self.qty
#    def get_price_per_item(self): return prices.Price(int(priceofit), currency='NZD')

#shrubberies = Shrubberies(int(amoun))
#shrubberies.get_total()

In [19]:
#shrubberies.qty


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-19-1671ac124703> in <module>()
----> 1 shrubberies.qty

NameError: name 'shrubberies' is not defined

In [56]:
#shrubberies.get_price_per_item()


Out[56]:
Price('300', currency='NZD')

In [69]:
#prodirz + prodoadd


Out[69]:
'/home/wcm/sellcoffee/posts/angelique'

In [23]:
raw = arrow.now()

yraw = raw.strftime("%Y")
mntaw = raw.strftime("%m")
dytaw = raw.strftime("%d")

fulda = yraw + '/' + mntaw + '/' + dytaw

fultim = fulda + ' ' + raw.strftime('%H:%M:%S')

In [ ]:


In [28]:
with open(prodirz + prodoadd + '.rst', 'w') as oprod:
    oprod.write(prodoadd + '\n\nprice: ' + priceofit + '\n\ntotal stock: ' + amoun)
    #print(oprod)

In [25]:
with open(prodirz + prodoadd + '.meta', 'w') as daympo: 
    daympo.write('.. title: {} \n.. slug: {} \n.. date: {} \n.. author: {}'.format(prodoadd, prodoadd, fultim, myusr))

In [36]:
prodirc = (prodirz + prodoadd)

In [38]:
prodirc


Out[38]:
'/home/wcm/sellcoffee/posts/angelique'

In [37]:
#os.mkdir(prodirc)

In [39]:
#opmeta = open(prodirc + '/' +  prodoadd + '-amount', 'w')

#opmeta.write('0')

#opmeta.close()

In [40]:
opforc = open(prodirc + prodoadd + 'index.json', 'w')

In [41]:
dicprod = dict()

In [42]:
dicprod


Out[42]:
{}

In [43]:
#id for each item. Starts at 1000 and up to 9999
#to make id it gets len of items in products folder and plus
#1000.

totprods = len(prolis)

newids = totprods + 1000

opmeta = open(prodirc + '/' +  prodoadd + '-id', 'w')

opmeta.write(str(newids))

opmeta.close()

In [69]:
#switching to folders for each product. Inside folder has rsa
#and rsa.public.

In [70]:
dicprod.update({'name' : prodoadd})

dicprod.update({'id' : str(newids)})

dicprod.update({'datecreate' : datez})

In [71]:
adtwez = ('Added ' + prodoadd + ' id ' + str(newids))

In [72]:
#brotwe


Out[72]:
<TwitterFollowBot.TwitterBot at 0x71dfa290>

In [70]:
#adtwez


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-70-6092f9e0bf93> in <module>()
----> 1 adtwez

NameError: name 'adtwez' is not defined

In [74]:
#brotwe.auto_rt('#gamedev', count=1)


retweeted: b'RT @stupidmindlessf: Good morning #gamedev! How angry and alive are you today?'

In [ ]:


In [71]:
#brotwe.send_tweet(adtwez)

In [ ]:


In [72]:
tigm = time.strftime("%H %M %S", time.gmtime())

In [73]:
timech =tigm.replace(' ', '')

In [74]:
dicprod.update({'timecreate' : timech})

In [ ]:


In [75]:
dicprod


Out[75]:
{'timecreate': '045234'}

In [76]:
prodoaddz = dict()

In [77]:
prodoaddz.update({prodoadd : dicprod})

In [78]:
prodoaddz


Out[78]:
{'angelique': {'timecreate': '045234'}}

In [79]:
json.dumps(prodoaddz)


Out[79]:
'{"angelique": {"timecreate": "045234"}}'

In [19]:
#opnewp = open(prodirz + prodoadd, 'w')

##opnewp.write('0')

In [ ]:


In [ ]:


In [112]:
#new_key = RSA.generate(2048, e=65537)
#public_key = new_key.publickey().exportKey("PEM")
#private_key = new_key.exportKey("PEM")
#print(private_key)

#sapriv = open(prodirc + '/' + prodoadd, 'w')
#sapriv.write(private_key)
#sapriv.close()

#print public_key 
#papriv =  open(prodirc + '/' +  prodoadd + '.pub', 'w')
#papriv.write(public_key)
#papriv.close()

In [ ]:


In [ ]:


In [ ]:


In [21]:
#dict that has all the product details. When it was first
#created. Price. 
#amount sold. This value will be zero when a product is created
#but add 1 with productsell script. 
#Store amount sold data in dict
#or just a file called productname-amountsold.

In [ ]:


In [22]:
#opnewp.close()

In [23]:
#for prol in prolis:
#    print prol
#    adprod = open(prodirz + prol + '.meta', 'w')
#    adprod.write(

In [24]:
#adprod = open(pro