def test_technical_contacts(self):
     eq_(self.record.technical_contacts.__class__.__name__, 'list')
     eq_(len(self.record.technical_contacts), 2)
     eq_(self.record.technical_contacts[0].__class__.__name__, 'Contact')
     eq_(self.record.technical_contacts[0].type, yawhois.record.Contact.TYPE_TECHNICAL)
     eq_(self.record.technical_contacts[0].id, "KG780-UANIC")
     eq_(self.record.technical_contacts[0].name, None)
     eq_(self.record.technical_contacts[0].organization, "Kyivstar GSM")
     eq_(self.record.technical_contacts[0].address, "Chervonozoryanyi Av., 51")
     eq_(self.record.technical_contacts[0].city, "KYIV")
     eq_(self.record.technical_contacts[0].zip, "03110")
     eq_(self.record.technical_contacts[0].state, None)
     eq_(self.record.technical_contacts[0].country, "UA")
     eq_(self.record.technical_contacts[0].country_code, None)
     eq_(self.record.technical_contacts[0].phone, "+380 (67) 2372213")
     eq_(self.record.technical_contacts[0].fax, "+380 (44) 2473954")
     eq_(self.record.technical_contacts[0].email, "*****@*****.**")
     eq_(self.record.technical_contacts[0].created_on, None)
     eq_(self.record.technical_contacts[0].updated_on, time_parse('2008-09-02 12:52:47'))
     eq_(self.record.technical_contacts[1].__class__.__name__, 'Contact')
     eq_(self.record.technical_contacts[1].type, yawhois.record.Contact.TYPE_TECHNICAL)
     eq_(self.record.technical_contacts[1].id, "EIC-UANIC")
     eq_(self.record.technical_contacts[1].name, None)
     eq_(self.record.technical_contacts[1].organization, "\"ElVisti Information Center\", LLC\nООО \"Информационный центр \"Электронные вести\"\nТОВ \"ІЦ ЕЛВІСТІ\"")
     eq_(self.record.technical_contacts[1].address, "а/с, 151")
     eq_(self.record.technical_contacts[1].city, "КИЇВ")
     eq_(self.record.technical_contacts[1].zip, "03037")
     eq_(self.record.technical_contacts[1].state, None)
     eq_(self.record.technical_contacts[1].country, "UA")
     eq_(self.record.technical_contacts[1].country_code, None)
     eq_(self.record.technical_contacts[1].phone, "+38044 239-90-91")
     eq_(self.record.technical_contacts[1].fax, None)
     eq_(self.record.technical_contacts[1].email, "*****@*****.**")
     eq_(self.record.technical_contacts[1].created_on, None)
     eq_(self.record.technical_contacts[1].updated_on, time_parse('2011-12-15 11:33:14'))
 def test_technical_contacts(self):
     eq_(self.record.technical_contacts.__class__.__name__, 'list')
     eq_(len(self.record.technical_contacts), 1)
     eq_(self.record.technical_contacts[0].__class__.__name__, 'Contact')
     eq_(self.record.technical_contacts[0].type, yawhois.record.Contact.TYPE_TECHNICAL)
     eq_(self.record.technical_contacts[0].id, "AARS1-ITNIC")
     eq_(self.record.technical_contacts[0].name, "Andrea Antonio Renato Stratta")
     eq_(self.record.technical_contacts[0].organization, "UCI Italia Srl")
     eq_(self.record.technical_contacts[0].address, "Via E. Fermi, 161")
     eq_(self.record.technical_contacts[0].city, "Roma")
     eq_(self.record.technical_contacts[0].zip, "00146")
     eq_(self.record.technical_contacts[0].state, "RM")
     eq_(self.record.technical_contacts[0].country_code, "IT")
     eq_(self.record.technical_contacts[0].created_on, time_parse('2006-08-16 00:00:00'))
     eq_(self.record.technical_contacts[0].updated_on, time_parse('2007-03-01 07:48:42'))
 def test_admin_contacts(self):
     eq_(self.record.admin_contacts.__class__.__name__, 'list')
     eq_(len(self.record.admin_contacts), 1)
     eq_(self.record.admin_contacts[0].__class__.__name__, 'Contact')
     eq_(self.record.admin_contacts[0].type, yawhois.record.Contact.TYPE_ADMINISTRATIVE)
     eq_(self.record.admin_contacts[0].id, "TT4277-ITNIC")
     eq_(self.record.admin_contacts[0].name, "Tsao Tu")
     eq_(self.record.admin_contacts[0].organization, "Tu Tsao")
     eq_(self.record.admin_contacts[0].address, "30 Herbert Street")
     eq_(self.record.admin_contacts[0].city, "Dublin")
     eq_(self.record.admin_contacts[0].zip, "2")
     eq_(self.record.admin_contacts[0].state, "IE")
     eq_(self.record.admin_contacts[0].country_code, "IE")
     eq_(self.record.admin_contacts[0].created_on, time_parse('2008-11-27 16:47:22'))
     eq_(self.record.admin_contacts[0].updated_on, time_parse('2008-11-27 16:47:22'))
 def test_technical_contacts(self):
     eq_(self.record.technical_contacts[0].id, "DUP430692088")
     eq_(self.record.technical_contacts[0].name, "Google Ireland Holdings")
     eq_(self.record.technical_contacts[0].organization, "Google Ireland Holdings")
     eq_(self.record.technical_contacts[0].address, "70 Sir John Rogersons Quay")
     eq_(self.record.technical_contacts[0].city, "Dublin")
     eq_(self.record.technical_contacts[0].zip, "2")
     eq_(self.record.technical_contacts[0].state, "IE")
     eq_(self.record.technical_contacts[0].country, None)
     eq_(self.record.technical_contacts[0].country_code, "IE")
     eq_(self.record.technical_contacts[0].phone, None)
     eq_(self.record.technical_contacts[0].fax, None)
     eq_(self.record.technical_contacts[0].email, None)
     eq_(self.record.technical_contacts[0].created_on, time_parse('2013-04-21 01:05:35'))
     eq_(self.record.technical_contacts[0].updated_on, time_parse('2013-04-21 01:05:35'))
Example #5
0
def get_done_checklist(client, board_id, doing_lists, done_lists, dev_members, date_range):
    board = client.get_board(board_id)
    list_ids = doing_lists + done_lists
    done_check_items = []
    for list_id in list_ids:
        board_list = board.get_list(list_id)
        cards = board_list.list_cards()
        for card in cards:
            card.fetch()
            if not card.checklists:
                continue
            card.fetch_actions("updateCheckItemStateOnCard")
            card_url = str(card.url)
            for action in card.actions:
                check_time = time_parse(action["date"])
                check_time = convert_to_local_time(check_time)
                if not (date_range[0] <= check_time.date() <= date_range[1]):
                    continue
                # insure the current state is complete
                if str(action["data"]["checkItem"]["state"]) != "complete":
                    continue
                member = dev_members.get(action["idMemberCreator"], None)
                if not member:
                    continue
                check_item = action["data"]["checkItem"]["name"].encode("utf8")
                done_check_items.append((check_item, card_url, member))
    return done_check_items
Example #6
0
def get_message(config=None,log=None):
    http = make_http(config)
    try:
        resp, content = http.request(
            "http://%s:%s/sms/received" % 
            (config.get("remote","host"),
             config.get("remote","port")),
            "GET")
        if resp.status == 200:
            remoteMsgs = simplejson.loads(content)            
            for remoteMsg in remoteMsgs:
                msg = Message(uuid=remoteMsg["uuid"],
                        sent=False,
                        source="http",
                        dest=int(remoteMsg["number"]),
                        time=time_parse(remoteMsg["time"]),
                        text=remoteMsg["text"],
                        origin=int(1))
                log.info("Got msg<%s> from remote" % msg.uuid)
                remove_from_remote(
                    config=config,
                    log=log,
                    message=msg)
    except Exception, e:
        log.error(e)
Example #7
0
def post(command=None):
    """
    Handles POST request on the main_page. 
    """
    command = request.form.get('command')
    if not command:
        return ls_html(head='Empty Command')

    command, args = parse_arguments(command)

    if "_id" in args:
        if args['_id'] == "all":
            args = {}
        else:
            args['_id'] = ObjectId(args['_id'])

    if "date_deadline" in args:
        try:
            args["date_deadline"] = str(
                time_parse(args["date_deadline"]).date())
        except ValueError as e:
            return ls_html(head=str(e))

    if "create" == command:
        args['date_created'] = str(datetime.now().date())
        if '_id' in args:
            del args['_id']
        feedback = db.insert_one(args, **db_names)
        if feedback.acknowledged:
            return ls_html(head='Created' + ' ' + str(args['_id']))
        else:
            return ls_html(head='Creating failed')

    if "delete" == command:
        feedback = db.delete_many(args, **db_names)
        if feedback.acknowledged:
            return ls_html(head='Deleted')
        else:
            return ls_html(head='Deleting failed')

    if "ls" == command:
        return ls_html(args)

    if "view" == command:
        feedback = db.find_one(args, **db_names)
        if feedback is None:
            feedback = {'_id': 'does noch exist'}
        ls_html_feedback = list(db.find({}, **db_names))
        return render_template(head_template, head="view") + render_template(
            view_template, **feedback) + render_template(table_template,
                                                         rows=ls_html_feedback)

    if "help" == command:
        ls_html_feedback = list(db.find({}, **db_names))
        return render_template(head_template) + render_template(
            main_template) + render_template(table_template,
                                             rows=ls_html_feedback)

    return main_page()
 def test_registrant_contacts(self):
     eq_(self.record.registrant_contacts.__class__.__name__, 'list')
     eq_(len(self.record.registrant_contacts), 1)
     eq_(self.record.registrant_contacts[0].__class__.__name__, 'Contact')
     eq_(self.record.registrant_contacts[0].type, yawhois.record.Contact.TYPE_REGISTRANT)
     eq_(self.record.registrant_contacts[0].name, "MAISON DE BIEN HOTELIERS ET EQ Farhat Riadh")
     eq_(self.record.registrant_contacts[0].created_on, time_parse('2013-12-13 20:00:57'))
     eq_(self.record.registrant_contacts[0].updated_on, None)
 def test_registrant_contacts(self):
     eq_(self.record.registrant_contacts.__class__.__name__, 'list')
     eq_(len(self.record.registrant_contacts), 1)
     eq_(self.record.registrant_contacts[0].__class__.__name__, 'Contact')
     eq_(self.record.registrant_contacts[0].type, yawhois.record.Contact.TYPE_REGISTRANT)
     eq_(self.record.registrant_contacts[0].id, None)
     eq_(self.record.registrant_contacts[0].name, "GOOGLE Inc")
     eq_(self.record.registrant_contacts[0].organization, None)
     eq_(self.record.registrant_contacts[0].address, "PO BOX 2050 Moutain view CA 94042 USA")
     eq_(self.record.registrant_contacts[0].city, None)
     eq_(self.record.registrant_contacts[0].zip, None)
     eq_(self.record.registrant_contacts[0].state, None)
     eq_(self.record.registrant_contacts[0].country, None)
     eq_(self.record.registrant_contacts[0].country_code, None)
     eq_(self.record.registrant_contacts[0].phone, "+1 925 685 9600")
     eq_(self.record.registrant_contacts[0].fax, "+1 925 685 9620")
     eq_(self.record.registrant_contacts[0].email, "*****@*****.**")
     eq_(self.record.registrant_contacts[0].created_on, time_parse('2009-05-14 00:00:00'))
     eq_(self.record.registrant_contacts[0].updated_on, time_parse('2010-07-18 00:00:00'))
 def test_registrant_contacts(self):
     eq_(self.record.registrant_contacts.__class__.__name__, 'list')
     eq_(len(self.record.registrant_contacts), 1)
     eq_(self.record.registrant_contacts[0].__class__.__name__, 'Contact')
     eq_(self.record.registrant_contacts[0].type, yawhois.record.Contact.TYPE_REGISTRANT)
     eq_(self.record.registrant_contacts[0].id, "DUP430692088")
     eq_(self.record.registrant_contacts[0].name, "Google Ireland Holdings")
     eq_(self.record.registrant_contacts[0].organization, "Google Ireland Holdings")
     eq_(self.record.registrant_contacts[0].address, "70 Sir John Rogersons Quay")
     eq_(self.record.registrant_contacts[0].city, "Dublin")
     eq_(self.record.registrant_contacts[0].zip, "2")
     eq_(self.record.registrant_contacts[0].state, "IE")
     eq_(self.record.registrant_contacts[0].country, None)
     eq_(self.record.registrant_contacts[0].country_code, "IE")
     eq_(self.record.registrant_contacts[0].phone, None)
     eq_(self.record.registrant_contacts[0].fax, None)
     eq_(self.record.registrant_contacts[0].email, None)
     eq_(self.record.registrant_contacts[0].created_on, time_parse('2013-04-21 01:05:35'))
     eq_(self.record.registrant_contacts[0].updated_on, time_parse('2013-04-21 01:05:35'))
 def test_admin_contacts(self):
     eq_(self.record.admin_contacts.__class__.__name__, 'list')
     eq_(len(self.record.admin_contacts), 1)
     eq_(self.record.admin_contacts[0].__class__.__name__, 'Contact')
     eq_(self.record.admin_contacts[0].type, yawhois.record.Contact.TYPE_ADMINISTRATIVE)
     eq_(self.record.admin_contacts[0].id, "DUP142437129")
     eq_(self.record.admin_contacts[0].name, "Tsao Tu")
     eq_(self.record.admin_contacts[0].organization, "Tu Tsao")
     eq_(self.record.admin_contacts[0].address, "70 Sir John Rogersons Quay")
     eq_(self.record.admin_contacts[0].city, "Dublin")
     eq_(self.record.admin_contacts[0].zip, "2")
     eq_(self.record.admin_contacts[0].state, "IE")
     eq_(self.record.admin_contacts[0].country, None)
     eq_(self.record.admin_contacts[0].country_code, "IE")
     eq_(self.record.admin_contacts[0].phone, None)
     eq_(self.record.admin_contacts[0].fax, None)
     eq_(self.record.admin_contacts[0].email, None)
     eq_(self.record.admin_contacts[0].created_on, time_parse('2013-04-21 01:05:35'))
     eq_(self.record.admin_contacts[0].updated_on, time_parse('2013-04-21 01:05:35'))
 def test_admin_contacts(self):
     eq_(self.record.admin_contacts.__class__.__name__, 'list')
     eq_(len(self.record.admin_contacts), 1)
     eq_(self.record.admin_contacts[0].__class__.__name__, 'Contact')
     eq_(self.record.admin_contacts[0].type, yawhois.record.Contact.TYPE_ADMINISTRATIVE)
     eq_(self.record.admin_contacts[0].id, "QR1-SMALL")
     eq_(self.record.admin_contacts[0].name, None)
     eq_(self.record.admin_contacts[0].organization, "QWE RTY")
     eq_(self.record.admin_contacts[0].address, "13 RUE DE LA PAIX\n75003 PARIS\nFRANCE")
     eq_(self.record.admin_contacts[0].phone, "+33.144887967")
     eq_(self.record.admin_contacts[0].updated_on, time_parse('2010-08-02 14:48:21 +02:00'))
 def test_registrant_contacts(self):
     eq_(self.record.registrant_contacts.__class__.__name__, 'list')
     eq_(len(self.record.registrant_contacts), 1)
     eq_(self.record.registrant_contacts[0].__class__.__name__, 'Contact')
     eq_(self.record.registrant_contacts[0].type, yawhois.record.Contact.TYPE_REGISTRANT)
     eq_(self.record.registrant_contacts[0].id, "FBB1-SMALL")
     eq_(self.record.registrant_contacts[0].name, "FOO BAR BAZ")
     eq_(self.record.registrant_contacts[0].organization, "FOO BAR BAZ INC")
     eq_(self.record.registrant_contacts[0].address, "116 RUE DE LA PAIX\n75001 PARIS\nFRANCE")
     eq_(self.record.registrant_contacts[0].phone, "+33.123456651")
     eq_(self.record.registrant_contacts[0].fax, "+33.123456660")
     eq_(self.record.registrant_contacts[0].updated_on, time_parse('2011-01-13 15:45:18 +01:00'))
 def test_technical_contacts(self):
     eq_(self.record.technical_contacts.__class__.__name__, 'list')
     eq_(len(self.record.technical_contacts), 1)
     eq_(self.record.technical_contacts[0].__class__.__name__, 'Contact')
     eq_(self.record.technical_contacts[0].type, yawhois.record.Contact.TYPE_TECHNICAL)
     eq_(self.record.technical_contacts[0].id, "GOOG-SMALL")
     eq_(self.record.technical_contacts[0].name, None)
     eq_(self.record.technical_contacts[0].organization, "GOOGLE DNS MASTER")
     eq_(self.record.technical_contacts[0].address, "GOOGLE\n22, RUE DE LA PAIX\n75008 PARIS\nFRANCE")
     eq_(self.record.technical_contacts[0].phone, "+33.821845353")
     eq_(self.record.technical_contacts[0].fax, "+33.821845354")
     eq_(self.record.technical_contacts[0].updated_on, time_parse('2011-05-18 09:35:37 +02:00'))
Example #15
0
def create():
    """
    Handles PUT request on http://localhost:<port>/create
    Creates an item: attributes of the item should be specified with json.
    return: str (bool), True if succesful
    """
    args = request.get_json(force=True)
    args['date_created'] = str(datetime.now().date())
    if "date_deadline" in args:
        try:
            args["date_deadline"] = str(
                time_parse(args["date_deadline"]).date())
        except ValueError:
            return "date_deadline_format invalid; try YYYY-MM-DD or see dateutil.parser.parse\n"
    feedback = db.insert_one(args, **db_names)
    return str(feedback.acknowledged)
 def test_registrant_contacts(self):
     eq_(self.record.registrant_contacts.__class__.__name__, 'list')
     eq_(len(self.record.registrant_contacts), 1)
     eq_(self.record.registrant_contacts[0].type, yawhois.record.Contact.TYPE_REGISTRANT)
     eq_(self.record.registrant_contacts[0].id, "ANO00-FRNIC")
     eq_(self.record.registrant_contacts[0].name, "Ano Nymous")
     eq_(self.record.registrant_contacts[0].organization, None)
     eq_(self.record.registrant_contacts[0].address, None)
     eq_(self.record.registrant_contacts[0].city, None)
     eq_(self.record.registrant_contacts[0].zip, None)
     eq_(self.record.registrant_contacts[0].state, None)
     eq_(self.record.registrant_contacts[0].country, None)
     eq_(self.record.registrant_contacts[0].country_code, None)
     eq_(self.record.registrant_contacts[0].phone, None)
     eq_(self.record.registrant_contacts[0].fax, None)
     eq_(self.record.registrant_contacts[0].email, None)
     eq_(self.record.registrant_contacts[0].updated_on, time_parse('2007-09-03 00:00:00 UTC'))
 def test_technical_contacts(self):
     eq_(self.record.technical_contacts.__class__.__name__, 'list')
     eq_(len(self.record.technical_contacts), 1)
     eq_(self.record.technical_contacts[0].__class__.__name__, 'Contact')
     eq_(self.record.technical_contacts[0].id, "MM193020")
     eq_(self.record.technical_contacts[0].name, "Domain Provisioning")
     eq_(self.record.technical_contacts[0].organization, "MarkMonitor, Inc.")
     eq_(self.record.technical_contacts[0].address, "10400 Overland Road PMB 155\nBoise\n83709-1433\nID\nUS")
     eq_(self.record.technical_contacts[0].city, None)
     eq_(self.record.technical_contacts[0].zip, None)
     eq_(self.record.technical_contacts[0].state, None)
     eq_(self.record.technical_contacts[0].country, None)
     eq_(self.record.technical_contacts[0].country_code, None)
     eq_(self.record.technical_contacts[0].phone, None)
     eq_(self.record.technical_contacts[0].fax, None)
     eq_(self.record.technical_contacts[0].email, "*****@*****.**")
     eq_(self.record.technical_contacts[0].created_on, time_parse('2011-02-03 18:24:34'))
 def test_technical_contacts(self):
     eq_(self.record.technical_contacts.__class__.__name__, 'list')
     eq_(len(self.record.technical_contacts), 1)
     eq_(self.record.technical_contacts[0].__class__.__name__, 'Contact')
     eq_(self.record.technical_contacts[0].id, "WEBAREAL-CZ")
     eq_(self.record.technical_contacts[0].name, "Jaroslav Hansal")
     eq_(self.record.technical_contacts[0].organization, None)
     eq_(self.record.technical_contacts[0].address, "Rudolfovská tř. 247/85\nČeské Budějovice\n37001\nCZ")
     eq_(self.record.technical_contacts[0].city, None)
     eq_(self.record.technical_contacts[0].zip, None)
     eq_(self.record.technical_contacts[0].state, None)
     eq_(self.record.technical_contacts[0].country, None)
     eq_(self.record.technical_contacts[0].country_code, None)
     eq_(self.record.technical_contacts[0].phone, None)
     eq_(self.record.technical_contacts[0].fax, None)
     eq_(self.record.technical_contacts[0].email, "*****@*****.**")
     eq_(self.record.technical_contacts[0].created_on, time_parse('2009-04-10 14:48:02'))
 def test_technical_contacts(self):
     eq_(self.record.technical_contacts.__class__.__name__, 'list')
     eq_(len(self.record.technical_contacts), 1)
     eq_(self.record.technical_contacts[0].__class__.__name__, 'Contact')
     eq_(self.record.technical_contacts[0].id, "ID005359")
     eq_(self.record.technical_contacts[0].name, None)
     eq_(self.record.technical_contacts[0].organization, "FO-umsitingin")
     eq_(self.record.technical_contacts[0].address, "Hoydalsvegur 19, Postboks 1255")
     eq_(self.record.technical_contacts[0].city, "Torshavn")
     eq_(self.record.technical_contacts[0].zip, "110")
     eq_(self.record.technical_contacts[0].state, None)
     eq_(self.record.technical_contacts[0].country, None)
     eq_(self.record.technical_contacts[0].country_code, "FO")
     eq_(self.record.technical_contacts[0].phone, "+298.322400")
     eq_(self.record.technical_contacts[0].fax, None)
     eq_(self.record.technical_contacts[0].email, None)
     eq_(self.record.technical_contacts[0].created_on, time_parse('2010-07-21 19:11:55'))
 def test_technical_contacts(self):
     eq_(self.record.technical_contacts.__class__.__name__, "list")
     eq_(len(self.record.technical_contacts), 1)
     eq_(self.record.technical_contacts[0].__class__.__name__, "Contact")
     eq_(self.record.technical_contacts[0].type, yawhois.record.Contact.TYPE_TECHNICAL)
     eq_(self.record.technical_contacts[0].id, "CID:FRAKTAL:1")
     eq_(self.record.technical_contacts[0].name, "Priit Haamer")
     eq_(self.record.technical_contacts[0].organization, None)
     eq_(self.record.technical_contacts[0].address, None)
     eq_(self.record.technical_contacts[0].city, None)
     eq_(self.record.technical_contacts[0].zip, None)
     eq_(self.record.technical_contacts[0].state, None)
     eq_(self.record.technical_contacts[0].country, None)
     eq_(self.record.technical_contacts[0].country_code, None)
     eq_(self.record.technical_contacts[0].phone, None)
     eq_(self.record.technical_contacts[0].fax, None)
     eq_(self.record.technical_contacts[0].email, "Not Disclosed - Visit www.eestiinternet.ee for webbased WHOIS")
     eq_(self.record.technical_contacts[0].created_on, time_parse("2010-12-09 16:08:33"))
 def test_admin_contacts(self):
     eq_(self.record.admin_contacts.__class__.__name__, "list")
     eq_(len(self.record.admin_contacts), 1)
     eq_(self.record.admin_contacts[0].__class__.__name__, "Contact")
     eq_(self.record.admin_contacts[0].type, yawhois.record.Contact.TYPE_ADMINISTRATIVE)
     eq_(self.record.admin_contacts[0].id, "CID:FRAKTAL:7")
     eq_(self.record.admin_contacts[0].name, "Tõnu Runnel")
     eq_(self.record.admin_contacts[0].organization, None)
     eq_(self.record.admin_contacts[0].address, None)
     eq_(self.record.admin_contacts[0].city, None)
     eq_(self.record.admin_contacts[0].zip, None)
     eq_(self.record.admin_contacts[0].state, None)
     eq_(self.record.admin_contacts[0].country, None)
     eq_(self.record.admin_contacts[0].country_code, None)
     eq_(self.record.admin_contacts[0].phone, None)
     eq_(self.record.admin_contacts[0].fax, None)
     eq_(self.record.admin_contacts[0].email, "Not Disclosed - Visit www.eestiinternet.ee for webbased WHOIS")
     eq_(self.record.admin_contacts[0].created_on, time_parse("2010-12-10 13:35:38"))
 def test_admin_contacts(self):
     eq_(self.record.admin_contacts.__class__.__name__, 'list')
     eq_(len(self.record.admin_contacts), 1)
     eq_(self.record.admin_contacts[0].__class__.__name__, 'Contact')
     eq_(self.record.admin_contacts[0].type, yawhois.record.Contact.TYPE_ADMINISTRATIVE)
     eq_(self.record.admin_contacts[0].id, "TT599-FRNIC")
     eq_(self.record.admin_contacts[0].name, "Tu Tsao")
     eq_(self.record.admin_contacts[0].organization, "Google France")
     eq_(self.record.admin_contacts[0].address, "38, avenue de l'Opera\n75002 Paris")
     eq_(self.record.admin_contacts[0].city, None)
     eq_(self.record.admin_contacts[0].zip, None)
     eq_(self.record.admin_contacts[0].state, None)
     eq_(self.record.admin_contacts[0].country, None)
     eq_(self.record.admin_contacts[0].country_code, "FR")
     eq_(self.record.admin_contacts[0].phone, "+33 6 50 33 00 10")
     eq_(self.record.admin_contacts[0].fax, None)
     eq_(self.record.admin_contacts[0].email, "*****@*****.**")
     eq_(self.record.admin_contacts[0].updated_on, time_parse('2009-02-24 00:00:00 UTC'))
 def test_registrant_contacts(self):
     eq_(self.record.registrant_contacts.__class__.__name__, 'list')
     eq_(len(self.record.registrant_contacts), 1)
     eq_(self.record.registrant_contacts[0].__class__.__name__, 'Contact')
     eq_(self.record.registrant_contacts[0].type, yawhois.record.Contact.TYPE_REGISTRANT)
     eq_(self.record.registrant_contacts[0].id, "CM7-TZNIC")
     eq_(self.record.registrant_contacts[0].name, "Collins Mtita")
     eq_(self.record.registrant_contacts[0].organization, "TSN")
     eq_(self.record.registrant_contacts[0].address, "Dar_es_salaam\nDar_es_salaam\nP.O.BOX 9033\nTZ")
     eq_(self.record.registrant_contacts[0].city, None)
     eq_(self.record.registrant_contacts[0].zip, None)
     eq_(self.record.registrant_contacts[0].state, None)
     eq_(self.record.registrant_contacts[0].country, None)
     eq_(self.record.registrant_contacts[0].country_code, None)
     eq_(self.record.registrant_contacts[0].phone, None)
     eq_(self.record.registrant_contacts[0].fax, None)
     eq_(self.record.registrant_contacts[0].email, "*****@*****.**")
     eq_(self.record.registrant_contacts[0].created_on, time_parse('2010-08-30 15:46:35'))
 def test_technical_contacts(self):
     eq_(self.record.technical_contacts.__class__.__name__, 'list')
     eq_(len(self.record.technical_contacts), 1)
     eq_(self.record.technical_contacts[0].__class__.__name__, 'Contact')
     eq_(self.record.technical_contacts[0].type, yawhois.record.Contact.TYPE_TECHNICAL)
     eq_(self.record.technical_contacts[0].id, "JN1-TZNIC")
     eq_(self.record.technical_contacts[0].name, "Jacob Noel")
     eq_(self.record.technical_contacts[0].organization, "Twiga Hosting")
     eq_(self.record.technical_contacts[0].address, "Dar es Salaam\nDar es Salaam\nP.O.Box\nTZ")
     eq_(self.record.technical_contacts[0].city, None)
     eq_(self.record.technical_contacts[0].zip, None)
     eq_(self.record.technical_contacts[0].state, None)
     eq_(self.record.technical_contacts[0].country, None)
     eq_(self.record.technical_contacts[0].country_code, None)
     eq_(self.record.technical_contacts[0].phone, "+255.755763951")
     eq_(self.record.technical_contacts[0].fax, None)
     eq_(self.record.technical_contacts[0].email, "*****@*****.**")
     eq_(self.record.technical_contacts[0].created_on, time_parse('2009-08-24 06:21:51'))
 def test_registrant_contacts(self):
     eq_(self.record.registrant_contacts.__class__.__name__, 'list')
     eq_(len(self.record.registrant_contacts), 1)
     eq_(self.record.registrant_contacts[0].__class__.__name__, 'Contact')
     eq_(self.record.registrant_contacts[0].type, yawhois.record.Contact.TYPE_REGISTRANT)
     eq_(self.record.registrant_contacts[0].id, "A1967-FRNIC")
     eq_(self.record.registrant_contacts[0].name, None)
     eq_(self.record.registrant_contacts[0].organization, "AFNIC")
     eq_(self.record.registrant_contacts[0].address, "immeuble international\n2, rue Stephenson\nMontigny-Le-Bretonneux\n78181 Saint Quentin en Yvelines")
     eq_(self.record.registrant_contacts[0].city, None)
     eq_(self.record.registrant_contacts[0].zip, None)
     eq_(self.record.registrant_contacts[0].state, None)
     eq_(self.record.registrant_contacts[0].country, None)
     eq_(self.record.registrant_contacts[0].country_code, "FR")
     eq_(self.record.registrant_contacts[0].phone, None)
     eq_(self.record.registrant_contacts[0].fax, None)
     eq_(self.record.registrant_contacts[0].email, None)
     eq_(self.record.registrant_contacts[0].updated_on, time_parse('2009-12-02 00:00:00 UTC'))
 def test_technical_contacts(self):
     eq_(self.record.technical_contacts.__class__.__name__, 'list')
     eq_(len(self.record.technical_contacts), 1)
     eq_(self.record.technical_contacts[0].__class__.__name__, 'Contact')
     eq_(self.record.technical_contacts[0].type, yawhois.record.Contact.TYPE_TECHNICAL)
     eq_(self.record.technical_contacts[0].id, "NFC1-FRNIC")
     eq_(self.record.technical_contacts[0].name, "NIC France Contact")
     eq_(self.record.technical_contacts[0].organization, "AFNIC")
     eq_(self.record.technical_contacts[0].address, "immeuble international\n2, rue Stephenson\nMontigny le Bretonneux\n78181 Saint Quentin en Yvelines Cedex")
     eq_(self.record.technical_contacts[0].city, None)
     eq_(self.record.technical_contacts[0].zip, None)
     eq_(self.record.technical_contacts[0].state, None)
     eq_(self.record.technical_contacts[0].country, None)
     eq_(self.record.technical_contacts[0].country_code, "FR")
     eq_(self.record.technical_contacts[0].phone, "+33 1 39 30 83 00")
     eq_(self.record.technical_contacts[0].fax, None)
     eq_(self.record.technical_contacts[0].email, "*****@*****.**")
     eq_(self.record.technical_contacts[0].updated_on, time_parse('2005-08-23 00:00:00 UTC'))
 def test_technical_contacts(self):
     eq_(self.record.technical_contacts.__class__.__name__, 'list')
     eq_(len(self.record.technical_contacts), 1)
     eq_(self.record.technical_contacts[0].__class__.__name__, 'Contact')
     eq_(self.record.technical_contacts[0].type, yawhois.record.Contact.TYPE_TECHNICAL)
     eq_(self.record.technical_contacts[0].id, "MC239-FRNIC")
     eq_(self.record.technical_contacts[0].name, "MARKMONITOR CCOPS")
     eq_(self.record.technical_contacts[0].organization, "eMarkmonitor Inc. dba MarkMonitor")
     eq_(self.record.technical_contacts[0].address, "PMB 155\n10400 Overland Road\n83709-1433 Boise, Id\nUS")
     eq_(self.record.technical_contacts[0].city, None)
     eq_(self.record.technical_contacts[0].zip, None)
     eq_(self.record.technical_contacts[0].state, None)
     eq_(self.record.technical_contacts[0].country, None)
     eq_(self.record.technical_contacts[0].country_code, None)
     eq_(self.record.technical_contacts[0].phone, "+01 2083895740")
     eq_(self.record.technical_contacts[0].fax, None)
     eq_(self.record.technical_contacts[0].email, "*****@*****.**")
     eq_(self.record.technical_contacts[0].updated_on, time_parse('2008-10-10 00:00:00 UTC'))
 def test_registrant_contacts(self):
     eq_(self.record.registrant_contacts.__class__.__name__, 'list')
     eq_(len(self.record.registrant_contacts), 1)
     eq_(self.record.registrant_contacts[0].__class__.__name__, 'Contact')
     eq_(self.record.registrant_contacts[0].type, yawhois.record.Contact.TYPE_REGISTRANT)
     eq_(self.record.registrant_contacts[0].id, "GI658-FRNIC")
     eq_(self.record.registrant_contacts[0].name, None)
     eq_(self.record.registrant_contacts[0].organization, "Google Inc.")
     eq_(self.record.registrant_contacts[0].address, "1600, Amphitheatre Parkway\n94043 Mountain View Ca")
     eq_(self.record.registrant_contacts[0].city, None)
     eq_(self.record.registrant_contacts[0].zip, None)
     eq_(self.record.registrant_contacts[0].state, None)
     eq_(self.record.registrant_contacts[0].country, None)
     eq_(self.record.registrant_contacts[0].country_code, "US")
     eq_(self.record.registrant_contacts[0].phone, "+1 650 253 0000")
     eq_(self.record.registrant_contacts[0].fax, "+1 650 618 8571")
     eq_(self.record.registrant_contacts[0].email, "*****@*****.**")
     eq_(self.record.registrant_contacts[0].updated_on, time_parse('2009-07-09 00:00:00 UTC'))
 def test_registrant_contacts(self):
     eq_(self.record.registrant_contacts.__class__.__name__, 'list')
     eq_(len(self.record.registrant_contacts), 1)
     eq_(self.record.registrant_contacts[0].__class__.__name__, 'Contact')
     eq_(self.record.registrant_contacts[0].type, yawhois.record.Contact.TYPE_REGISTRANT)
     eq_(self.record.registrant_contacts[0].id, "MM12383")
     eq_(self.record.registrant_contacts[0].name, "DNS Admin")
     eq_(self.record.registrant_contacts[0].organization, "Google Inc.")
     eq_(self.record.registrant_contacts[0].address, "1600 Amphitheatre Parkway\nMountain View\n94043\nCA\nUS")
     eq_(self.record.registrant_contacts[0].city, None)
     eq_(self.record.registrant_contacts[0].zip, None)
     eq_(self.record.registrant_contacts[0].state, None)
     eq_(self.record.registrant_contacts[0].country, None)
     eq_(self.record.registrant_contacts[0].country_code, None)
     eq_(self.record.registrant_contacts[0].phone, None)
     eq_(self.record.registrant_contacts[0].fax, None)
     eq_(self.record.registrant_contacts[0].email, "*****@*****.**")
     eq_(self.record.registrant_contacts[0].created_on, time_parse('2011-05-18 23:28:26'))
 def test_technical_contacts(self):
     eq_(self.record.technical_contacts.__class__.__name__, 'list')
     eq_(len(self.record.technical_contacts), 2)
     eq_(self.record.technical_contacts[0].__class__.__name__, 'Contact')
     eq_(self.record.technical_contacts[0].type, yawhois.record.Contact.TYPE_TECHNICAL)
     eq_(self.record.technical_contacts[0].id, "KG780-UANIC")
     eq_(self.record.technical_contacts[0].name, None)
     eq_(self.record.technical_contacts[0].organization, "Kyivstar GSM")
     eq_(self.record.technical_contacts[0].address, "Chervonozoryanyi Av., 51")
     eq_(self.record.technical_contacts[0].city, "KYIV")
     eq_(self.record.technical_contacts[0].zip, "03110")
     eq_(self.record.technical_contacts[0].state, None)
     eq_(self.record.technical_contacts[0].country, "UA")
     eq_(self.record.technical_contacts[0].country_code, None)
     eq_(self.record.technical_contacts[0].phone, "+380 (67) 2372213")
     eq_(self.record.technical_contacts[0].fax, "+380 (44) 2473954")
     eq_(self.record.technical_contacts[0].email, "*****@*****.**")
     eq_(self.record.technical_contacts[0].created_on, None)
     eq_(self.record.technical_contacts[0].updated_on, time_parse('2008-09-02 12:52:47'))
Example #31
0
    def filtrate(self, entry: Entry) -> bool:
        # 时间戳条件
        default_timestamp = time.mktime(
            time_parse(self.filter.get('after_time', '1970.1.2')).timetuple())
        after_time = max(default_timestamp, self.__get_update_time())
        if entry.published_timestamp < after_time:
            return False

        # 关键词条件
        include_keyword = self.filter.get('include', "").split(" ")
        exclude_keyword = self.filter.get('include', "").split(" ")
        for word in include_keyword:
            if word not in entry.title:
                return False
        for word in exclude_keyword:
            if word in entry.title:
                return False

        return True
 def test_technical_contacts(self):
     eq_(self.record.technical_contacts.__class__.__name__, 'list')
     eq_(len(self.record.technical_contacts), 1)
     eq_(self.record.technical_contacts[0].__class__.__name__, 'Contact')
     eq_(self.record.technical_contacts[0].type, yawhois.record.Contact.TYPE_TECHNICAL)
     eq_(self.record.technical_contacts[0].id, "com-gi8-1")
     eq_(self.record.technical_contacts[0].name, "Google Inc.")
     eq_(self.record.technical_contacts[0].organization, "Google Inc.")
     eq_(self.record.technical_contacts[0].address, "1600 Amphitheatre Parkway Mountain View CA 94043 US")
     eq_(self.record.technical_contacts[0].city, None)
     eq_(self.record.technical_contacts[0].zip, None)
     eq_(self.record.technical_contacts[0].state, None)
     eq_(self.record.technical_contacts[0].country, "UA")
     eq_(self.record.technical_contacts[0].country_code, None)
     eq_(self.record.technical_contacts[0].phone, "+16503300100")
     eq_(self.record.technical_contacts[0].fax, "+16506188571")
     eq_(self.record.technical_contacts[0].email, "*****@*****.**")
     eq_(self.record.technical_contacts[0].created_on, time_parse('2013-03-31 19:13:45 +03:00'))
     eq_(self.record.technical_contacts[0].updated_on, None)
Example #33
0
    def post(self, token):
        """
        Create EC Entry
        """
        try:
            if token != app.config['GRAYLOG_TOKEN']:
                raise ValueError("Invalid Token")
            data_json = request.json
            time_string = data_json['event']['timestamp']
            timestamp = time_parse(time_string).strftime("%b %d %H:%M:%S")
            msg = data_json['event']['message']
            host = data_json['event']['source']
            out = open(app.config['MKEVENT_DEAMON_PATH'], "w")
            out.write("<5>{ts} {host} graylog: {msg}\n".format(ts=timestamp,
                                                               host=host,
                                                               msg=msg))
            out.close()
        except PermissionError:
            return {"error": "Cannot Access Socket"}, 500
        except (ValueError, IndexError) as msg:
            return {"error": str(msg)}, 500

        return {"message": "added"}, 200
Example #34
0
    def run(self):
        try:
            source = RSSSource.objects.get(pk=self.source_id)
            source.last_process_date = timezone.now()
            source.save()
            warnings.warn('Processing RSS Source: %s' % source.url)
            try:
                request = urllib2.Request(source.url)
                rss_file = urllib2.urlopen(request)

                from lxml import etree as ET
                tree = ET.parse(rss_file)
                rss_file.close()

                rss = tree.getroot()
                process_settings = source.settings
                items = rss.findall(process_settings['wrapper'])
                total_items = len(items)

                if source.reverse:
                    items = reversed(items)

                items_counter = 0
                for item in items:
                    item_to_save = {}
                    image_process = False
                    image_fields = []
                    for field in process_settings['fields']:
                        field_content = item.find(field['source'], rss.nsmap)
                        if 'empty' in field:
                            if isinstance(field['attributes'], basestring):
                                content = field_content.attrib[
                                    field['attributes']]
                            else:
                                content = {}
                                for attribute in field['attributes']:
                                    attr = attribute[
                                        'target'] if 'target' in attribute else attribute[
                                            'source']
                                    content[attr] = field_content.attrib[
                                        attribute['source']]

                        if 'type' in field:
                            if field["type"] == "image":
                                image_process = True

                                if "empty" in field:
                                    image_url = content[field["location"]]
                                else:
                                    content = field_content.text
                                    image_url = content

                                name = field[
                                    'target'] if 'target' in field else field[
                                        'source']
                                image_fields.append({
                                    'name': name,
                                    'url': image_url
                                })

                            elif field["type"] == "date":
                                from dateutil.parser import parse as time_parse
                                content = time_parse(
                                    field_content.text
                                ).strftime(
                                    field['save_format']
                                ) if 'save_format' in field else field_content.text
                            else:
                                content = field_content.text
                        elif "empty" not in field:
                            content = field_content.text

                        name = field['target'] if 'target' in field else field[
                            'source']
                        item_to_save[name] = content

                    content_regex = r''
                    for unique_field in process_settings["unique"]:
                        field_regex = '"%s":"%s"' % (
                            unique_field, item_to_save[unique_field])
                        content_regex += r"(?=.*" + re.escape(
                            field_regex) + r")"
                        warnings.warn('Content regex to filter by: %s' %
                                      content_regex)
                    qs = RSSImport.objects.filter(source=source,
                                                  content__regex=content_regex)

                    if len(qs) == 0:
                        imported_item = RSSImport.objects.create(
                            source=source, content=item_to_save)
                    else:
                        imported_item = qs[0]

                        qs = qs.exclude(id=imported_item.pk)
                        for old_import in qs:
                            old_import.delete()

                    if imported_item.status == 'scheduled':
                        if image_process:
                            imported_item.status = 'processing'
                            imported_item.save()
                            for image_field in image_fields:
                                self._save_image(imported_item,
                                                 image_field['name'],
                                                 image_field['url'],
                                                 len(image_fields))
                        else:
                            imported_item.status = 'complete'
                            imported_item.enabled = True
                            imported_item.save()
                            source.last_import_date = timezone.now()
                            source.save()
                    items_counter += 1
            except Exception as e:
                warnings.warn('Error processing the request: %s' % str(e))

            warnings.warn('Processed %s of %s items' %
                          (str(items_counter), str(total_items)))
        finally:
            connection.close()
            warnings.warn('Finished RSS processing')
def fetch_arxiv():
    basic_url = 'http://export.arxiv.org/api/query?'\
                'search_query=cat:cs.CV+OR+cat:cs.AI+OR+cat:cs.LG+OR+cat:cs.CL+OR'\
                '+cat:cs.NE+OR+cat:stat.ML&sortBy=lastUpdatedDate'
    start_index = 0
    max_index = 1000
    result_per_query = 100

    num_add = 0
    num_skipped = 0

    for i in range(start_index, max_index, result_per_query):
        url = basic_url + "&start=%i&max_results=%i" % (i, result_per_query)
        print(url)
        try:
            response = libreq.urlopen(url).read()
            parse = feedparser.parse(response)

            for entry in parse.entries:
                try:
                    paper_id = entry["id"]
                    if PaperItem.objects.filter(paper_id=paper_id).exists():
                        num_skipped += 1
                    else:
                        paper = PaperItem()
                        paper.paper_id = paper_id
                        paper.paper_title = re.sub("\n+", " ", entry["title"])
                        paper.created_by = 'spider'
                        paper.created_date = time_parse(entry["published"])
                        paper.update_date = time_parse(entry["updated"])

                        for s in entry['links']:
                            if "title" in s and s["title"] == "pdf":
                                paper.paper_link = s["href"]
                        
                        paper.page_comments = entry["arxiv_comment"][:250] if "arxiv_comment" in entry else ""
                        paper.summary = re.sub("\n+", " ", entry["summary"])
                        paper.code_url = ""
                        paper.save()

                        for author_name_ in entry['authors']:
                            author = PaperAuthor()
                            author.author_name = author_name_["name"]
                            author.paper_item = paper
                            author.save()

                        for category_ in entry['tags']:
                            category = PaperCategory()
                            category.paper_item = paper
                            category.term = category_["term"][:20]

                            if category_["term"] == entry["arxiv_primary_category"]["term"]:
                                category.is_primary = True
                            category.save()
                        num_add += 1
                except Exception as e:
                    print('Error when parsing the papers: ', e)

        except Exception as e:
            print('Error: ', e)
    return num_add, num_skipped
 def test_created_on(self):
     eq_(self.record.created_on.__class__.__name__, "datetime")
     eq_(self.record.created_on, time_parse("2009-04-17 12:22:49 UTC"))
Example #37
0
def parse_json(url):
    global connections
    is_stack = True
    cur_sid = request.sid
    connections[cur_sid].session['current_views'] = []
    response = requests.get(url)

    data = response.json()
    num_feeds = 0
    if len(data["entries"]) == 0:
        # not a stack
        is_stack = False
        url = url_from_id(connections[cur_sid].session['id'], stack=False)
        response = requests.get(url)
        data = response.json()
        num_feeds = 0
        thetas = ThetaIterator(
            min(app.config["MAX_FEEDS"], len(data["entries"])))
    thetas = ThetaIterator(min(app.config["MAX_FEEDS"], len(data["entries"])))
    iters = 0
    text_thetas = ThetaTextIterator()
    for cur_ind, entry in enumerate(data["entries"]):
        iters += 1
        theta = thetas.next()
        text_theta = text_thetas.next()
        unit_theta = 360 / min(app.config["MAX_FEEDS"], len(data["entries"]))
        num_feeds += 1
        parsed_images = []
        cur_theta = -1 * float(theta[2:-2])
        theta_adj = 10
        pos_x = str(10 *
                    cos(radians(cur_theta + unit_theta + theta_adj + 50 / 4)))
        pos_y = str(10 *
                    sin(radians(cur_theta + unit_theta + theta_adj + 50 / 4)))
        current_level = ((cur_ind) // app.config["MAX_FEEDS"])
        height_offset = 5
        image_height = str((3 / 4) + 9.25 * current_level + height_offset)
        button_height = str(1 / 2 + 5 + 9.25 * (current_level - 1) +
                            height_offset)
        person_move = str(2.2 + 1 / 2 + 5 + 9.25 * (current_level - 1) +
                          height_offset)
        try:
            entry['name']
        except KeyError:
            is_stack = False
        if is_stack:
            name = entry['name']
            for img_url in entry["preview"]:
                parsed_url = img_url[:-2] + '_l'
                parsed_url = re.sub(r'https://', r'http://', parsed_url)
                parsed_images.append(parsed_url)
            image = random.choice(parsed_images)
            str_id = str(entry["id"])
        else:
            try:
                name = entry['item']['description']
                date = time_parse(
                    entry['item']['posted_on']).strftime("%m/%d/%y")
                name = "[" + date + "] " + name
                image = entry['item']['image_url'][:-2]
                str_id = str(entry['item']['id'])
            except TypeError:
                thetas.previous()
                text_thetas.previous()
                continue
        name = shorten_message(name)
        if not is_stack:
            sort_index = str(time_parse(entry['item']['posted_on']))
        else:
            sort_index = name
        current_view = {
            "id":
            "view" + str_id,
            "hash_id":
            "#view" + str_id,
            "name":
            name,
            "text_pos_height":
            calculate_text_pos_height(name),
            "image":
            image,
            "button_height":
            person_move,
            "button_pos":
            ' '.join([pos_x, button_height, pos_y]),
            "button_rot":
            ' '.join(["0",
                      str(-1 * (cur_theta + unit_theta + 50 / 2)), "0"]),
            "image_pos":
            ' '.join(["0", image_height, "0"]),
            "theta":
            theta,
            "level":
            str(current_level + 1),
            "is_stack":
            is_stack,
            "sort_index":
            sort_index
        }
        connections[cur_sid].session['current_views'].append(current_view)

    if not is_stack and (iters == 50):
        cur_ind += 1
        theta = thetas.next()
        text_theta = text_thetas.next()
        unit_theta = 360 / min(app.config["MAX_FEEDS"], len(data["entries"]))
        num_feeds += 1
        cur_theta = -1 * float(theta[2:-2])
        pos_x = str(10 *
                    cos(radians(cur_theta + unit_theta + theta_adj + 50 / 4)))
        pos_y = str(10 *
                    sin(radians(cur_theta + unit_theta + theta_adj + 50 / 4)))
        current_level = ((cur_ind) // app.config["MAX_FEEDS"])
        image_height = str((3 / 4) + 9.25 * current_level + height_offset)
        button_height = str(1 / 2 + 5 + 9.25 * (current_level - 1) +
                            height_offset)
        person_move = str(2.2 + 1 / 2 + 5 + 9.25 * (current_level - 1) +
                          height_offset)
        try:
            str_id = re.findall(r"_\d+", url)[-1][1:] + "?start=" + str(
                int(re.findall(r"\?start=[\d]+", url)[-1][7:]) + 50)
        except IndexError:
            str_id = re.findall(r"_\d+", url)[-1][1:] + "?start=50"
        str_id = str_id.replace("?",
                                "question__mark").replace("=", "equals__sign")
        current_view = {
            "id":
            "view" + str_id,
            "hash_id":
            "#view" + str_id,
            "name":
            "More",
            "text_pos_height":
            calculate_text_pos_height(""),
            "image":
            "/static/next.png",
            "button_height":
            person_move,
            "button_pos":
            ' '.join([pos_x, button_height, pos_y]),
            "button_rot":
            ' '.join(["0",
                      str(-1 * (cur_theta + unit_theta + 50 / 2)), "0"]),
            "image_pos":
            ' '.join(["0", image_height, "0"]),
            "theta":
            theta,
            "level":
            str(current_level + 1),
            "is_stack":
            True,
            "sort_index":
            "9999999"
        }
        connections[cur_sid].session['current_views'].append(current_view)

    connections[cur_sid].session['current_views'] = \
            sorted(connections[cur_sid].session['current_views'], key=lambda item:item['sort_index'], reverse=False)
    return True