예제 #1
0
 def income(self, coin, role="topic-create", topic_id=None, reply_id=None,
            spender_id=None, incomer_id=None):
     self.balance += coin
     bill = m.Bill(coin=coin, balance=self.balance, role=role, category=1,
                   topic_id=topic_id, reply_id=reply_id,
                   spender_id=spender_id, incomer_id=incomer_id)
     bill.save()
예제 #2
0
 def income(self, coin, role="signup", topic_id=None, reply_id=None):
     self.balance += coin
     bill = m.Bill(user_id=self.id, coin=coin, balance=self.balance, role=role,
             category=1, topic_id=topic_id, reply_id=reply_id)
     if role in ["signup", "invite", "signup-invited", "active-gift"]:
         bank = m.Bank.get_one()
         bank.spend(coin=coin, role=role, incomer_id=self.id)
     bill.save()
     return
예제 #3
0
 def spend(self, coin, role="topic-create", topic_id=None, reply_id=None):
     self.balance -= coin
     bill = m.Bill(user_id=self.id, coin=coin, balance=self.balance, role=role,
             category=0, topic_id=topic_id, reply_id=reply_id)
     if role in ["topic-create", "reply-create", "topic-edit"]:
         bank = m.Bank.get_one()
         bank.income(coin=coin, role=role, topic_id=topic_id,
                 reply_id=reply_id, spender_id=self.id)
     bill.save()
     return
예제 #4
0
def load_data():
    print 'Loading...'
    bills = load_page()
    print 'Here we go'

    session = models.DBSession()
    for b in bills:
        message = ''
        bill = (session.query(
            models.Bill).filter(models.Bill.name == b['name']).first())

        if not bill:
            bill = models.Bill(name=b['name'], long_name=b['long_name'])
            session.add(bill)
            session.flush()

        b['bill_id'] = bill.id

        if b.has_key('date_presented'):
            b['date_presented'] = datetime.datetime.strptime(
                b['date_presented'], '%d/%m/%Y').date()

        rev = (session.query(models.BillRevision).filter(
            models.BillRevision.bill_id == bill.id).filter(
                models.BillRevision.year == int(b['year'])).first())

        now = datetime.datetime.now()
        b['update_date'] = now
        if not rev:
            b['create_date'] = now
            rev = models.BillRevision(**b)
            session.add(rev)
            session.flush()
            message = 'Bill Started: %s, year %s %s'
        else:
            if rev.status != b['status']:
                for k, v in b.iteritems():
                    if hasattr(rev, k):
                        setattr(rev, k, v)
                session.flush()
                message = 'Bills Updated: %s, year %s %s'

        if message:
            url = settings.URL + 'detail/%d/' % (rev.id)
            indexer.index_single(rev.id)
            print message % (bill.long_name, rev.year, url)
    session.commit()
예제 #5
0
    def save(self, category='new'):
        now = int(time.time())
        self.created_at = now
        self.active = now

        if category == 'new':
            coin = config.user_init_coin
            role = 'signup'
        elif category == 'invited':
            coin = config.user_init_coin + config.invite_coin
            role = 'signup-invited'
        self.balance = coin
        m.Bill(user_id=self.id, coin=coin, balance=self.balance,
               role=role).save()
        bank = m.Bank.get_one()
        bank.spend(coin=coin, role=role, incomer_id=self.id)

        return super(User, self).save()
예제 #6
0
 def spend(self, coin, role="signup", spender_id=None, incomer_id=None):
     self.balance -= coin
     bill = m.Bill(coin=coin, balance=self.balance, role=role, category=0,
                   spender_id=spender_id, incomer_id=incomer_id)
     bill.save()
예제 #7
0
 def write_bill(self, name, long_name):
     bill = models.Bill(name=name, long_name=long_name)
     self.session.add(bill)
     self.session.flush()
     return bill