예제 #1
0
    def market(self, regionlimit=None, pickregion=None, empire=""):
        session = EVCstate()

        db = evec_func.db_con()

        t = display.template('market.tmpl', session)

        if regionlimit is None:
            regionlimit = []

        if not isinstance(regionlimit, list):
            regionlimit = [regionlimit]

        regionlimit = map(int, regionlimit)

        if pickregion is not None:
            if empire:
                regionlimit = empireregions()
            session['regionlimit'] = regionlimit
        else:
            if 'regionlimit' in session:
                regionlimit = session['regionlimit']
            else:
                regionlimit = []
                session['regionlimit'] = []

        t.regionlimit = regionlimit

        t.regions = evec_func.region_list(db)
        #t.types = evec_func.type_list(db)
        t.types = []

        db.close()
        return t.respond()
예제 #2
0
    def market(self, regionlimit=None, pickregion=None, empire=""):
        session = EVCstate()

        db = evec_func.db_con()

        t = display.template("market.tmpl", session)

        if regionlimit is None:
            regionlimit = []

        if not isinstance(regionlimit, list):
            regionlimit = [regionlimit]

        regionlimit = map(int, regionlimit)

        if pickregion is not None:
            if empire:
                regionlimit = empireregions()
            session["regionlimit"] = regionlimit
        else:
            if "regionlimit" in session:
                regionlimit = session["regionlimit"]
            else:
                regionlimit = []
                session["regionlimit"] = []

        t.regionlimit = regionlimit

        t.regions = evec_func.region_list(db)
        # t.types = evec_func.type_list(db)
        t.types = []

        db.close()
        return t.respond()
예제 #3
0
    def quicklook(self,
                  typeid,
                  setorder=None,
                  setdir=None,
                  igbover=False,
                  sethours=None,
                  regionlimit=None,
                  usesystem=None,
                  setminQ=0,
                  poffset=0,
                  outtype='html',
                  api=1.0):
        session = {}

        session = EVCstate()
        cherrypy.response.headers['Content-Type'] = 'text/html'

        db = evec_func.db_con()

        if regionlimit is None:
            regionlimit = []

        if type(regionlimit) != list:
            regionlimit = [int(regionlimit)]
        else:
            regionlimit = [int(x) for x in regionlimit]

        if 'regionlimit' in session and len(regionlimit) == 0:
            regionlimit = session['regionlimit']

        if len(regionlimit) == 0:
            regionlimit = empireregions()

        randomregion = None

        up_sug = None

        order = 'price'
        orderdir = 'ASC'
        borderdir = 'DESC'
        hours = 24
        minQ = 0

        if setminQ:
            minQ = int(setminQ)
            session['minQ'] = minQ

        if 'minQ' in session:
            minQ = session['minQ']

        if setdir:
            if setdir == '1':
                orderdir = "ASC"
                borderdir = 'DESC'
            else:
                orderdir = "DESC"
                borderdir = 'ASC'
            session['orderdir'] = orderdir
            session['borderdir'] = borderdir

        if 'orderdir' in session:
            orderdir = session['orderdir']
        if 'borderdir' in session:
            borderdir = session['borderdir']

        if sethours:
            hours = int(sethours)
            session['orderhours'] = hours

        if 'orderhours' in session:
            hours = session['orderhours']

        if setorder:
            if setorder not in [
                    'volremain', 'stationname', 'regionname', 'price'
            ]:
                raise "SetOrder fail"
            order = setorder
            session['order'] = order
        if 'order' in session:
            order = session['order']

        # Fetch and generate the template
        t = None
        if outtype == 'html':
            t = display.template('quicklook.tmpl', session)
        elif outtype == 'xml':
            t = display.template('quicklook_xml.tmpl', session)
            t.api = api

        typename = ""
        try:
            typename = evec_func.get_type_name(db, typeid)
        except:
            return "Can't find that type"

        typesize = evec_func.get_type_size(db, typeid)

        t.typename = typename
        t.typesize = typesize
        t.typeid = typeid
        t.sortorder = order
        reg_block = evec_func.build_regionquery("regions", regionlimit)

        sql_age = ` hours ` + " hours"

        sql_system = " "
        if usesystem:
            usesystem = int(usesystem)
            sql_system = " AND current_market.systemid = " + ` usesystem ` + " "

        # statistics for selling

        # do query here

        cur_buy = db.cursor()
        cur_sell = db.cursor()
        limit = "LIMIT 10000 OFFSET 0"

        transactions = []

        t.poffset = int(poffset)

        # Fetch from cache or run query

        buys = []
        sells = []

        cache_key = cache.generic_key("evec_quicklook", typeid, regionlimit,
                                      usesystem, order, orderdir, borderdir,
                                      limit, minQ, hours)
        cache_result = cache.get(cache_key)

        def run_query():

            cur_buy.execute(
                "SELECT bid,current_market.systemid,current_market.stationid,price,volremain,(issued+duration),range,regionname, (reportedtime),stationname,security,minvolume,regions.regionid,orderid FROM current_market,regions,stations,systems WHERE "
                + reg_block +
                " AND stations.systemid = systems.systemid AND typeid = %s AND stations.stationid = current_market.stationid AND current_market.regionid = regions.regionid AND now() - reportedtime <= '"
                + sql_age +
                "' AND volremain >= %s AND current_market.bid = 1  " +
                sql_system + " ORDER BY " + order + " " + borderdir + " " +
                limit, [typeid, minQ])

            cur_sell.execute(
                "SELECT bid,current_market.systemid,current_market.stationid,price,volremain,(issued+duration),range,regionname,(reportedtime),stationname,security,regions.regionid,orderid FROM current_market,regions,stations,systems WHERE "
                + reg_block +
                " AND typeid = %s AND stations.systemid = systems.systemid AND stations.stationid = current_market.stationid AND current_market.regionid = regions.regionid AND now() - reportedtime <= '"
                + sql_age +
                "'	AND volremain >= %s AND current_market.bid = 0 " +
                sql_system + " ORDER BY " + order + " " + orderdir + " " +
                limit, [typeid, minQ])

            for (query, lista, isbuy) in [(cur_buy, buys, True),
                                          (cur_sell, sells, False)]:
                r = query.fetchone()
                while r:
                    rec = {}
                    rec['systemid'] = r[1]
                    rec['stationid'] = r[2]
                    price = float(r[3])
                    string = format_price(price)

                    rec['price'] = string
                    rec['price_raw'] = price
                    rec['volremain'] = format_long(r[4])
                    rec['volremain_raw'] = r[4]
                    rec['expires'] = str(r[5])[0:10]
                    if r[0] == True:
                        rec['range'] = r[6]
                    else:
                        rec['range'] = -2
                    rec['regionname'] = r[7]

                    reported = DateTime.DateTimeFrom(str(r[8]))
                    now = DateTime.gmt()
                    hours = (now - reported).hours
                    if hours >= 1:
                        rec['reportedtime'] = "%d hours ago" % (hours)
                    else:
                        rec['reportedtime'] = "%d minutes ago" % (
                            now - reported).minutes

                    rec['stationname'] = r[9]
                    sec = r[10]
                    ssec = str(sec)[0:3]
                    if sec <= 0.0:
                        ssec = "0.0"
                    rec['security'] = ssec
                    # Try to grab regionid from the end of the query
                    if isbuy:
                        if int(r[11]) > 1:
                            rec['minvolume'] = format_long(int(r[11]))
                            rec['minvolume_raw'] = int(r[11])
                        else:
                            rec['minvolume'] = 1
                            rec['minvolume_raw'] = 1
                        rec['regionid'] = r[12]
                        rec['orderid'] = r[13]
                    else:
                        rec['minvolume'] = 1
                        rec['minvolume_raw'] = 1
                        rec['regionid'] = r[11]
                        rec['orderid'] = r[12]

                    lista.append(rec)

                    r = query.fetchone()

        # pass in info here

        if cache_result is None:
            run_query()
            cache.set(cache_key, (buys, sells))
        else:
            buys = cache_result[0]
            sells = cache_result[1]

        t.regions = evec_func.region_list(db)
        t.upload_sug = up_sug
        t.upload_reg = randomregion
        t.regionlimit = regionlimit
        t.usesystem = usesystem
        t.hours = hours
        t.minQ = minQ
        t.buys = buys
        t.sells = sells
        t.mtransaction = transactions
        db.close()
        return t.respond()
예제 #4
0
    def quicklook(
        self,
        typeid,
        setorder=None,
        setdir=None,
        igbover=False,
        sethours=None,
        regionlimit=None,
        usesystem=None,
        setminQ=0,
        poffset=0,
        outtype="html",
        api=1.0,
    ):
        session = {}

        session = EVCstate()
        cherrypy.response.headers["Content-Type"] = "text/html"

        db = evec_func.db_con()

        if regionlimit is None:
            regionlimit = []

        if type(regionlimit) != list:
            regionlimit = [int(regionlimit)]
        else:
            regionlimit = [int(x) for x in regionlimit]

        if "regionlimit" in session and len(regionlimit) == 0:
            regionlimit = session["regionlimit"]

        if len(regionlimit) == 0:
            regionlimit = empireregions()

        randomregion = None

        up_sug = None

        order = "price"
        orderdir = "ASC"
        borderdir = "DESC"
        hours = 24
        minQ = 0

        if setminQ:
            minQ = int(setminQ)
            session["minQ"] = minQ

        if "minQ" in session:
            minQ = session["minQ"]

        if setdir:
            if setdir == "1":
                orderdir = "ASC"
                borderdir = "DESC"
            else:
                orderdir = "DESC"
                borderdir = "ASC"
            session["orderdir"] = orderdir
            session["borderdir"] = borderdir

        if "orderdir" in session:
            orderdir = session["orderdir"]
        if "borderdir" in session:
            borderdir = session["borderdir"]

        if sethours:
            hours = int(sethours)
            session["orderhours"] = hours

        if "orderhours" in session:
            hours = session["orderhours"]

        if setorder:
            if setorder not in ["volremain", "stationname", "regionname", "price"]:
                raise "SetOrder fail"
            order = setorder
            session["order"] = order
        if "order" in session:
            order = session["order"]

        # Fetch and generate the template
        t = None
        if outtype == "html":
            t = display.template("quicklook.tmpl", session)
        elif outtype == "xml":
            t = display.template("quicklook_xml.tmpl", session)
            t.api = api

        typename = ""
        try:
            typename = evec_func.get_type_name(db, typeid)
        except:
            return "Can't find that type"

        typesize = evec_func.get_type_size(db, typeid)

        t.typename = typename
        t.typesize = typesize
        t.typeid = typeid
        t.sortorder = order
        reg_block = evec_func.build_regionquery("regions", regionlimit)

        sql_age = ` hours ` + " hours"

        sql_system = " "
        if usesystem:
            usesystem = int(usesystem)
            sql_system = " AND current_market.systemid = " + ` usesystem ` + " "

        # statistics for selling

        # do query here

        cur_buy = db.cursor()
        cur_sell = db.cursor()
        limit = "LIMIT 10000 OFFSET 0"

        transactions = []

        t.poffset = int(poffset)

        # Fetch from cache or run query

        buys = []
        sells = []

        cache_key = cache.generic_key(
            "evec_quicklook", typeid, regionlimit, usesystem, order, orderdir, borderdir, limit, minQ, hours
        )
        cache_result = cache.get(cache_key)

        def run_query():

            cur_buy.execute(
                "SELECT bid,current_market.systemid,current_market.stationid,price,volremain,(issued+duration),range,regionname, (reportedtime),stationname,security,minvolume,regions.regionid,orderid FROM current_market,regions,stations,systems WHERE "
                + reg_block
                + " AND stations.systemid = systems.systemid AND typeid = %s AND stations.stationid = current_market.stationid AND current_market.regionid = regions.regionid AND now() - reportedtime <= '"
                + sql_age
                + "' AND volremain >= %s AND current_market.bid = 1  "
                + sql_system
                + " ORDER BY "
                + order
                + " "
                + borderdir
                + " "
                + limit,
                [typeid, minQ],
            )

            cur_sell.execute(
                "SELECT bid,current_market.systemid,current_market.stationid,price,volremain,(issued+duration),range,regionname,(reportedtime),stationname,security,regions.regionid,orderid FROM current_market,regions,stations,systems WHERE "
                + reg_block
                + " AND typeid = %s AND stations.systemid = systems.systemid AND stations.stationid = current_market.stationid AND current_market.regionid = regions.regionid AND now() - reportedtime <= '"
                + sql_age
                + "'	AND volremain >= %s AND current_market.bid = 0 "
                + sql_system
                + " ORDER BY "
                + order
                + " "
                + orderdir
                + " "
                + limit,
                [typeid, minQ],
            )

            for (query, lista, isbuy) in [(cur_buy, buys, True), (cur_sell, sells, False)]:
                r = query.fetchone()
                while r:
                    rec = {}
                    rec["systemid"] = r[1]
                    rec["stationid"] = r[2]
                    price = float(r[3])
                    string = format_price(price)

                    rec["price"] = string
                    rec["price_raw"] = price
                    rec["volremain"] = format_long(r[4])
                    rec["volremain_raw"] = r[4]
                    rec["expires"] = str(r[5])[0:10]
                    if r[0] == True:
                        rec["range"] = r[6]
                    else:
                        rec["range"] = -2
                    rec["regionname"] = r[7]

                    reported = DateTime.DateTimeFrom(str(r[8]))
                    now = DateTime.gmt()
                    hours = (now - reported).hours
                    if hours >= 1:
                        rec["reportedtime"] = "%d hours ago" % (hours)
                    else:
                        rec["reportedtime"] = "%d minutes ago" % (now - reported).minutes

                    rec["stationname"] = r[9]
                    sec = r[10]
                    ssec = str(sec)[0:3]
                    if sec <= 0.0:
                        ssec = "0.0"
                    rec["security"] = ssec
                    # Try to grab regionid from the end of the query
                    if isbuy:
                        if int(r[11]) > 1:
                            rec["minvolume"] = format_long(r[11])
                            rec["minvolume_raw"] = int(r[11])
                        else:
                            rec["minvolume"] = 1
                            rec["minvolume_raw"] = 1
                        rec["regionid"] = r[12]
                        rec["orderid"] = r[13]
                    else:
                        rec["minvolume"] = 1
                        rec["minvolume_raw"] = 1
                        rec["regionid"] = r[11]
                        rec["orderid"] = r[12]

                    lista.append(rec)

                    r = query.fetchone()

        # pass in info here

        if cache_result is None:
            run_query()
            cache.set(cache_key, (buys, sells))
        else:
            buys = cache_result[0]
            sells = cache_result[1]

        t.regions = evec_func.region_list(db)
        t.upload_sug = up_sug
        t.upload_reg = randomregion
        t.regionlimit = regionlimit
        t.usesystem = usesystem
        t.hours = hours
        t.minQ = minQ
        t.buys = buys
        t.sells = sells
        t.mtransaction = transactions
        db.close()
        return t.respond()
예제 #5
0
    def quicklook(self, typeid, setorder=None, setdir = None, igbover = False, sethours = None, regionlimit = None, usesystem = None, setminQ = 0, poffset = 0, outtype = 'html', api = 1.0):
        session = {}

        session = EVCstate()
        cherrypy.response.headers['Content-Type'] = 'text/html'

        db = evec_func.db_con()

        if regionlimit is None:
            regionlimit = []

        if type(regionlimit) != list:
            regionlimit = [int(regionlimit)]
        else:
            regionlimit = [int(x) for x in regionlimit]

        if 'regionlimit' in session and len(regionlimit) == 0:
            regionlimit = session['regionlimit']
        
        if len(regionlimit) == 0:
            regionlimit = empireregions()

        randomregion = None

        up_sug = None
        #if len(regionlimit) == 0:
        #    pass
        #elif random.randint(1,50) > 10:
        #    random.shuffle(regionlimit)
        #    randomregion = regionlimit[0]
        #    up_sug = upload_suggest(db, randomregion, rettype = "both")

        order = 'price'
        orderdir = 'ASC'
        borderdir = 'DESC'
        hours = 24
        minQ = 0

        if setminQ:
            minQ = int(setminQ)
            session['minQ'] = minQ

        if 'minQ' in session:
            minQ = session['minQ']

        if setdir:
            if setdir == '1':
                orderdir = "ASC"
                borderdir = 'DESC'
            else:
                orderdir = "DESC"
                borderdir = 'ASC'
            session['orderdir'] = orderdir
            session['borderdir'] = borderdir

        if 'orderdir' in session:
            orderdir = session['orderdir']
        if 'borderdir' in session:
            borderdir = session['borderdir']

        if sethours:
            hours = int(sethours)
            session['orderhours'] = hours

        if 'orderhours' in session:
            hours = session['orderhours']

        if setorder:
            if setorder not in ['volremain', 'stationname', 'regionname', 'price']:
                raise "SetOrder fail"
            order = setorder
            session['order'] = order
        if 'order' in session:
            order = session['order']


        # Fetch and generate the template
        t = None
        if outtype == 'html':
            t = display.template('quicklook.tmpl', session)
        elif outtype == 'xml':
            t = display.template('quicklook_xml.tmpl', session)
            t.api = api

        typename = ""
        try:
            typename = evec_func.get_type_name(db, typeid)
        except:
            return "Can't find that type"

        typesize = evec_func.get_type_size(db, typeid)

        t.typename = typename
        t.typesize = typesize
        t.typeid = typeid
        t.sortorder = order
        reg_block = evec_func.build_regionquery("regions", regionlimit)


        sql_age = `hours`+" hours"

        sql_system = " "
        if usesystem:
            usesystem = int(usesystem)
            sql_system = " AND current_market.systemid = " + `usesystem` + " "

        # statistics for selling

        # do query here

        cur_buy = db.cursor()
        cur_sell = db.cursor()
        limit = "LIMIT 10000 OFFSET 0"

        transactions = []

        t.poffset = int(poffset)

        # Fetch from cache or run query

        buys = []
        sells = []

        cache_key = cache.generic_key("evec_quicklook", typeid, regionlimit, usesystem, order, orderdir, borderdir, limit, minQ, hours)
        cache_result = cache.get(cache_key)


        def run_query():

            cur_buy.execute("SELECT bid,current_market.systemid,current_market.stationid,price,volremain,(issued+duration),range,regionname, (reportedtime),stationname,security,minvolume,regions.regionid,orderid FROM current_market,regions,stations,systems WHERE " + reg_block + " AND stations.systemid = systems.systemid AND typeid = %s AND stations.stationid = current_market.stationid AND current_market.regionid = regions.regionid AND now() - reportedtime <= '"+sql_age+"' AND volremain >= %s AND current_market.bid = 1  " + sql_system + " ORDER BY " + order + " " + borderdir + " " + limit, [typeid,minQ])

            cur_sell.execute("SELECT bid,current_market.systemid,current_market.stationid,price,volremain,(issued+duration),range,regionname,(reportedtime),stationname,security,regions.regionid,orderid FROM current_market,regions,stations,systems WHERE " + reg_block + " AND typeid = %s AND stations.systemid = systems.systemid AND stations.stationid = current_market.stationid AND current_market.regionid = regions.regionid AND now() - reportedtime <= '"+sql_age+"'	AND volremain >= %s AND current_market.bid = 0 " + sql_system + " ORDER BY " + order + " " + orderdir + " " + limit, [typeid,minQ])


            for (query,lista,isbuy) in [(cur_buy, buys, True), (cur_sell, sells, False)]:
                r = query.fetchone()
                while r:
                    rec = {}
                    rec['systemid'] = r[1]
                    rec['stationid'] = r[2]
                    price = float(r[3])
                    string = format_price(price)

                    rec['price'] = string
                    rec['price_raw'] = price
                    rec['volremain'] = format_long(r[4])
                    rec['volremain_raw'] = r[4]
                    rec['expires'] = str(r[5])[0:10]
                    if r[0] == True:
                        rec['range'] = r[6]
                    else:
                        rec['range'] = -2
                    rec['regionname'] = r[7]
                    rt = str(r[8])

                    if '.' in rt:
                        rec['reportedtime'] = rt[5:-7]
                    else:
                        rec['reportedtime'] = rt[5:]
        
                    rec['stationname'] = r[9]
                    sec = r[10]
                    ssec = str(sec)[0:3]
                    if sec <= 0.0:
                        ssec = "0.0"
                    rec['security'] = ssec
                    # Try to grab regionid from the end of the query
                    if isbuy:
                        if int(r[11]) > 1:
                            rec['minvolume'] = format_long(int(r[11]))
                            rec['minvolume_raw'] = int(r[11])
                        else:
                            rec['minvolume'] = 1
                            rec['minvolume_raw'] = 1
                        rec['regionid'] = r[12]
                        rec['orderid']  = r[13]
                    else:
                        rec['minvolume'] = 1
                        rec['minvolume_raw'] = 1
                        rec['regionid'] = r[11]
                        rec['orderid'] = r[12]

                    lista.append(rec)

                    r = query.fetchone()



        # pass in info here

        if cache_result is None:
            run_query()
            cache.set(cache_key, (buys,sells))
        else:
            buys = cache_result[0]
            sells = cache_result[1]


        t.regions = evec_func.region_list(db)
        t.upload_sug = up_sug
        t.upload_reg = randomregion
        t.regionlimit = regionlimit
        t.usesystem = usesystem
        t.hours = hours
        t.minQ = minQ
        t.buys = buys
        t.sells = sells
        t.mtransaction = transactions
        db.close()
        return t.respond()