def trace_rigths_compilation(self, cursor, uid,
            member, start, stop, fare, period,
            context=None):
        """
            Helper function to show data related to computation of available
            rights.
        """
        print "Dropping results for", member, start, stop, fare, period

        investment = InvestmentProvider(self, cursor, uid, context)
        memberActiveShares = MemberSharesCurve(investment)
        rightsPerShare = RightsPerShare(mdbpool.get_db())
        remainders = RemainderProvider(self, cursor, uid, context)

        generatedRights = MemberRightsCurve(
            activeShares=memberActiveShares,
            rightsPerShare=rightsPerShare,
            remainders=remainders,
            eager=True,
            )
        rightsUsage = MemberRightsUsage(mdbpool.get_db())
        holidays = HolidaysProvider(self, cursor, uid, context)
        farePeriod = FarePeriodCurve(holidays)

        print 'remainders', remainders.lastRemainders()
        print 'investment', investment.effectiveInvestments(
            start=isodate(start),
            end=isodate(stop),
            member=member)
        print 'active', memberActiveShares.hourly(
            isodate(start),
            isodate(stop),
            member)
        for nshares in set(memberActiveShares.hourly(
            isodate(start),
            isodate(stop),
            member)):
            print 'rightsPerShare', nshares, rightsPerShare.rightsPerShare(nshares,
                isodate(start),
                isodate(stop),
                )
        print 'rights', generatedRights.rights_kwh(member,
            isodate(start),
            isodate(stop),
            )

        print 'periodmask', farePeriod.periodMask(
            fare, period,
            isodate(start),
            isodate(stop),
            )
Exemplo n.º 2
0
 def fillMeasurementPoint(self, cursor, uid, pointTime, name, value, context=None):
     curveProvider = MongoTimeCurve(mdbpool.get_db(),
             'generationkwh.production.measurement')
     curveProvider.fillPoint(
         datetime=toLocal(asUtc(naiveisodatetime(pointTime))),
         name=name,
         ae=value)
 def rights_per_share(self, cursor, uid,
         nshares, firstDate, lastDate,
         context=None):
     rights = RightsPerShare(mdbpool.get_db())
     return list(int(i) for i in rights.rightsPerShare(nshares,
             isodate(firstDate),
             isodate(lastDate)
             ))
 def memberrightsusage_update(self, cursor, uid,
         member,start,data,
         context=None):
     usage_provider = MemberRightsUsage(mdbpool.get_db())
     usage_provider.updateUsage(
         member=member,
         start=isodate(start),
         data=data
         )
 def usage(self, cursor, uid,
         member_id, first_date, last_date,
         context=None):
     rightsUsage = MemberRightsUsage(mdbpool.get_db())
     result = list(int(i) for i in rightsUsage.usage(
         member_id,
         isodate(first_date),
         isodate(last_date)
         ))
     return result
 def setup_rights_per_share(self, cursor, uid,
         nshares, firstDate, data,
         context=None):
     rightsPerShare = RightsPerShare(mdbpool.get_db())
     rightsPerShare.updateRightsPerShare(nshares, isodate(firstDate), data)
     remainders = RemainderProvider(self, cursor, uid, context)
     lastDate = isodate(firstDate) + datetime.timedelta(days=(len(data)+24)%25)
     remainders.updateRemainders([
         (nshares, isodate(firstDate), 0),
         (nshares, lastDate, 0),
         ])
    def _createTracker(self, cursor, uid, context):

        investments = InvestmentProvider(self, cursor, uid, context)
        memberActiveShares = MemberSharesCurve(investments)
        rightsPerShare = RightsPerShare(mdbpool.get_db())
        remainders = RemainderProvider(self, cursor, uid, context)

        generatedRights = MemberRightsCurve(
            activeShares=memberActiveShares,
            rightsPerShare=rightsPerShare,
            remainders=remainders,
            eager=True,
            )

        rightsUsage = MemberRightsUsage(mdbpool.get_db())

        holidays = HolidaysProvider(self, cursor, uid, context)
        farePeriod = FarePeriodCurve(holidays)

        return UsageTracker(generatedRights, rightsUsage, farePeriod)
    def _createProductionLoader(self, cursor, uid, pid, context):
        production = ProductionAggregatorProvider(self, cursor, uid, pid, context)
        nshares = production.getNshares(pid)
        shares = PlantSharesCurve(nshares)
        rights = RightsPerShare(mdbpool.get_db())
        remainders = RemainderProvider(self, cursor, uid, context)

        return ProductionLoader(
                productionAggregator=production,
                plantShareCurver=shares,
                rightsPerShare=rights,
                remainders=remainders)
 def rights_kwh(self, cursor, uid, member, start, stop, context=None):
     investment = InvestmentProvider(self, cursor, uid, context)
     memberActiveShares = MemberSharesCurve(investment)
     rightsPerShare = RightsPerShare(mdbpool.get_db())
     remainders = RemainderProvider(self, cursor, uid, context)
     generatedRights = MemberRightsCurve(
         activeShares=memberActiveShares,
         rightsPerShare=rightsPerShare,
         remainders=remainders,
         eager=True,
         )
     return [ int(num) for num in generatedRights.rights_kwh(member,
         isodate(start),
         isodate(stop),
         )]
Exemplo n.º 10
0
    def _createAggregator(self, aggr, args):
        def obj_to_dict(obj, attrs):
            return {attr: getattr(obj, attr) for attr in attrs}

        curveProvider = MongoTimeCurve(mdbpool.get_db(),
                'generationkwh.production.measurement')

        # TODO: Clean initialization method
        return ProductionAggregator(**dict(obj_to_dict(aggr, args).items() + 
            dict(plants=[ProductionPlant(**dict(obj_to_dict(plant, args).items() +
                dict(meters=[ProductionMeter(
                    **dict(obj_to_dict(meter, args + ['uri','lastcommit']).items() +
                    dict(curveProvider=curveProvider).items())) 
                for meter in plant.meters if meter.enabled]).items()))
            for plant in aggr.plants if plant.enabled]).items()))
Exemplo n.º 11
0
 def assign_token(self, cursor, uid, ids, context=None):
     """Assign a new token to the partner
     """
     polissa_obj = self.pool.get('giscedata.polissa')
     m = mdbpool.get_db()
     for partner in self.read(cursor, uid, ids, ['empowering_token']):
         m.tokens.remove({'token': partner['empowering_token']})
         token = generate_token()
         self.write(cursor, uid, [partner['id']],
                    {'empowering_token': token})
         allowed = polissa_obj.search(cursor, uid, [
             '|', ('titular.id', '=', partner['id']),
             ('pagador.id', '=', partner['id'])
         ])
         if allowed:
             allowed = [{
                 'name': x.name,
                 'cups': x.cups.name
             } for x in polissa_obj.browse(cursor, uid, allowed)]
             m.tokens.insert({'token': token, 'allowed_contracts': allowed})
     return True
 def clear_mongo_collections(self, cursor, uid, collections, context=None):
     for collection in collections:
         mdbpool.get_db().drop_collection(collection)