Example #1
0
def load_countries():
    """Load countries from output.txt into database."""

    print "Start loading Countries"

    # Delete all rows in table, so if we need to run this a second time,
    # we won't be trying to add duplicate items
    Country.query.delete()

    # Read file and insert data
    for row in open("seed_data/output.txt"):
        r = row.splitlines()

    for rn in r:
        name, country_id = rn.split(",")

        country = Country(name=name, country_id=country_id)

        # Add to the session
        db.session.add(country)

    # Add Soviet Union
    sovu = Country(name='Soviet Union', country_id='SU')

    db.session.add(sovu)

    # Commit
    db.session.commit()

    print "Countries"
Example #2
0
    def post(self, member_no):
        member = self.get_member(member_no)

        member.name = self.get_required('name')
        member.address = self.get_required('address')
        member.zipcode = self.get_required('zip')
        member.city = self.get_required('city')
        country = Country.get(self.get_required('country'))

        email = self.get_required('email')
        if email != '':
            member.email = db.Email(email)

        mobile = self.get_required('mobile')
        if mobile != '':
            member.phone = db.PhoneNumber(mobile)

        home = self.request.get('fixed')
        if home != '':
            member.phone_home = db.PhoneNumber(home)

        work = self.request.get('work')
        if work != '':
            member.phone_work = db.PhoneNumber(work)

        member.put()

        template = JINJA_ENVIRONMENT.get_template('templates/selfservice/profile_edit.html')
        countries = Country.all().order('order').fetch(FETCH_LIMIT)

        data = { 'message': 'Medlemsprofilen din er oppdatert.', 'member': member, 'countries': countries }
        self.response.write(template.render(data))
Example #3
0
    def post(self):
        if self.request.get('store') != '1':
            self.redirect('/members')
            return

        try:
            member = Member()
            member.name = self.get_var('name')
            member.address = self.get_var('address')
            member.zipcode = self.get_var('zip')
            member.city = self.get_var('city')
            member.country = Country.get(self.get_var('country'))
            member.email = self.get_var('email', optional=True)
            member.mobile = self.get_var('mobile', optional=True)
            member.home = self.get_var('home', optional=True)
            member.work = self.get_var('work', optional=True)
            member.membertype = MemberType.get(self.get_var('type'))
            member.notes = self.get_var('comment', optional=True)
            member.status = Status.get(self.get_var('status'))
            member.number = dbutils.create_new_member_no()
            member.member_since = datetime.date.today()
            member.generate_access_code()
            mcount = self.get_var('magazine_count', optional=True)
            member.magazine_count = int(mcount) if mcount else 1
            member.put()
            self.redirect('/members/%s/edit' % member.key())
            return
        except MissingField:
            # TODO: Redirect
            template = JINJA_ENVIRONMENT.get_template(
                'templates/members/new_member.html')
            countries = Country.all().order('order').fetch(LIMIT)
            statuses = Status.all().order('order').fetch(LIMIT)
            types = MemberType.all().order('order').fetch(LIMIT)
            data = {}
            for name in [
                    'name', 'address', 'zip', 'country', 'email', 'mobile',
                    'home', 'work', 'type', 'comment', 'status'
            ]:
                data[name] = self.request.get(name)

            params = {
                'countries': countries,
                'statuses': statuses,
                'types': types,
                'data': data
            }
            self.response.write(template.render(params))
            return

        self.redirect('/members')
Example #4
0
    def get(self):
        countryname = self.request.get("name")
        if countryname == "all":
            country_query = Country.query()
        elif countryname == "list":
            country_query = Country.query(projection=[Country.Name])
        else:
            country_query = Country.query(Country.Name == countryname)

        self.response.headers["Content-Type"] = "application/json"
        self.response.out.write(
            json.dumps(
                [temp.to_dict() for temp in country_query],
                default=default_json_serializer,
            ))
Example #5
0
def set_country_menu(bot, update, to_edit):
    uid = util.uid_from_update(update)
    countries = Country.select().order_by(Country.name).execute()

    buttons = util.build_menu([
        InlineKeyboardButton('{} {}'.format(c.emojized, c.name),
                             callback_data=util.callback_for_action(
                                 CallbackActions.SET_COUNTRY, {
                                     'cid': c.id,
                                     'bid': to_edit.id
                                 })) for c in countries
    ], 3)
    buttons.insert(0, [
        InlineKeyboardButton(captions.BACK,
                             callback_data=util.callback_for_action(
                                 CallbackActions.EDIT_BOT,
                                 {'id': to_edit.id})),
        InlineKeyboardButton("None",
                             callback_data=util.callback_for_action(
                                 CallbackActions.SET_COUNTRY, {
                                     'cid': 'None',
                                     'bid': to_edit.id
                                 })),
    ])
    return bot.formatter.send_or_edit(
        uid,
        util.action_hint(
            "Please select a country/language for {}".format(to_edit)),
        to_edit=util.mid_from_update(update),
        reply_markup=InlineKeyboardMarkup(buttons))
Example #6
0
    def get(self):
        template = JINJA_ENVIRONMENT.get_template(
            'templates/members/member_list.html')
        countries = Country.all().order('order').fetch(LIMIT)
        statuses = Status.all().order('order').fetch(LIMIT)
        types = MemberType.all().order('order').fetch(LIMIT)

        # TODO: Make sensible
        query_string = ''
        current_search = self.request.get('search')
        query_string += current_search

        current_status = self.request.get('status')
        if current_status != '':
            if query_string != '':
                query_string += ' AND '
            query_string += 'status:' + current_status

        current_type = self.request.get('type')
        if current_type != '':
            if query_string != '':
                query_string += ' AND '
            query_string += 'type:' + current_type

        current_country = self.request.get('country')
        if current_country and current_country != '':
            if query_string != '':
                query_string += ' AND '
            query_string += 'country:' + current_country

        index = search.Index(name='members')
        result = index.search(query=search.Query(
            query_string, options=search.QueryOptions(limit=LIMIT)))

        members = list()
        for document in result.results:
            members.append(Member.search_member_from_document(document))

        members = sorted(members, key=lambda x: x.number)

        current_status_name = current_status
        current_type_name = current_type

        total = memcache.get('member_count')
        if not total:
            total = 0

        data = {
            'countries': countries,
            'statuses': statuses,
            'types': types,
            'members': members,
            'current_status': current_status,
            'current_type': current_type,
            'current_search': current_search,
            'found': result.number_found,
            'shown': len(members),
            'total': total
        }
        self.response.write(template.render(data))
Example #7
0
    def post(self):
        if self.request.get('store') != '1':
            self.redirect('/members')
            return

        try:
            member = Member()
            member.name = self.get_var('name')
            member.address = self.get_var('address')
            member.zipcode = self.get_var('zip')
            member.city = self.get_var('city')
            member.country = Country.get(self.get_var('country'))
            member.email = self.get_var('email', optional=True)
            member.mobile = self.get_var('mobile', optional=True)
            member.home = self.get_var('home', optional=True)
            member.work = self.get_var('work', optional=True)
            member.membertype = MemberType.get(self.get_var('type'))
            member.notes = self.get_var('comment', optional=True)
            member.status = Status.get(self.get_var('status'))
            member.number = dbutils.create_new_member_no()
            member.member_since = datetime.date.today()
            member.generate_access_code()
            mcount = self.get_var('magazine_count', optional=True)
            member.magazine_count = int(mcount) if mcount else 1
            member.put()
            self.redirect('/members/%s/edit' % member.key())
            return
        except MissingField:
            # TODO: Redirect
            template = JINJA_ENVIRONMENT.get_template('templates/members/new_member.html')
            countries = Country.all().order('order').fetch(LIMIT)
            statuses = Status.all().order('order').fetch(LIMIT)
            types = MemberType.all().order('order').fetch(LIMIT)
            data = { }
            for name in [ 'name', 'address', 'zip', 'country', 'email', 'mobile', 'home', 'work', 'type', 'comment', 'status']:
                data[name] = self.request.get(name)

            params = {
                'countries': countries,
                'statuses': statuses,
                'types': types,
                'data': data
            }
            self.response.write(template.render(params))
            return

        self.redirect('/members')
Example #8
0
    def apply(self):
        try:
            if self.subject is None:
                self.delete_instance()
                return False
        except Bot.DoesNotExist:
            self.delete_instance()
            return False

        if self.action == 'category':
            from model import Category
            try:
                cat = Category.get(Category.id == self.value)
                self.subject.category = cat
            except Category.DoesNotExist:
                raise AttributeError("Category to change to does not exist.")
        elif self.action == 'name':
            self.subject.name = self.value
        elif self.action == 'username':
            self.subject.username = self.value
        elif self.action == 'description':
            self.subject.description = self.value
        elif self.action == 'extra':
            self.subject.extra = self.value
        elif self.action == 'country':
            if self._value == 'None' or self._value is None:
                self.subject.country = None
            else:
                from model import Country
                try:
                    con = Country.get(id=self._value)
                    self.subject.country = con
                except Country.DoesNotExist:
                    raise AttributeError(
                        "Country to change to does not exist.")
        elif self.action == 'inlinequeries':
            self.subject.inlinequeries = bool(self.value)
        elif self.action == 'official':
            self.subject.official = bool(self.value)
        elif self.action == 'offline':
            self.subject.offline = bool(self.value)
        elif self.action == 'spam':
            self.subject.spam = bool(self.value)
        elif self.action == 'add_keyword':
            kw_obj = Keyword(name=self.value, entity=self.subject)
            kw_obj.save()
        elif self.action == 'remove_keyword':
            try:
                kw_obj = Keyword.get(name=self.value, entity=self.subject)
                kw_obj.delete_instance()
            except Keyword.DoesNotExist:
                raise AttributeError(
                    "Keyword to delete does not exist anymore.")

        self.subject.save()

        self.executed = True
        self.save()
        return True
Example #9
0
def add_country(iso3, name):
    """Add a new country to db."""

    country = Country(isocode3=iso3, name=name)
    # db.session.add(country)
    # db.session.commit()

    return country 
Example #10
0
 def get(self):
     template = JINJA_ENVIRONMENT.get_template('templates/selfservice/signup.html')
     countries = Country.all().order('order').fetch(100)
     self.response.write(template.render({
         'countries': countries,
         'incomplete': [],
         'complete': [],
         'values': { } }))
def write_country_to_db(line_to_write):
    if not sess.query(Country).filter_by(
            country_code=line_to_write['country_code']).all():
        continent = sess.query(Continent).filter_by('')
        country = Country(name=line_to_write['country_full'],
                          country_code=line_to_write['country_code'])
        sess.add(country)
        sess.commit()
Example #12
0
    def get(self):
        template = JINJA_ENVIRONMENT.get_template('templates/members/member_list.html')
        countries = Country.all().order('order').fetch(LIMIT)
        statuses = Status.all().order('order').fetch(LIMIT)
        types = MemberType.all().order('order').fetch(LIMIT)

        # TODO: Make sensible
        query_string = ''
        current_search = self.request.get('search')
        query_string +=  current_search

        current_status = self.request.get('status')
        if current_status != '':
            if query_string != '':
                query_string += ' AND '
            query_string += 'status:' + current_status

        current_type = self.request.get('type')
        if current_type != '':
            if query_string != '':
                query_string += ' AND '
            query_string += 'type:'+ current_type

        current_country = self.request.get('country')
        if current_country and current_country != '':
            if query_string != '':
                query_string += ' AND '
            query_string += 'country:' + current_country

        index = search.Index(name='members')
        result = index.search(query=search.Query(query_string, options=search.QueryOptions(limit=LIMIT)))

        members = list()
        for document in result.results:
            members.append(Member.search_member_from_document(document))

        members = sorted(members, key=lambda x: x.number)

        current_status_name = current_status
        current_type_name = current_type

        total = memcache.get('member_count')
        if not total:
            total = 0

        data = {
            'countries': countries,
            'statuses': statuses,
            'types': types,
            'members': members,
            'current_status': current_status,
            'current_type': current_type,
            'current_search': current_search,
            'found': result.number_found,
            'shown': len(members),
            'total': total
        }
        self.response.write(template.render(data))
Example #13
0
def parseTable(page: str) -> List[Country]:
    list = []
    soup = BeautifulSoup(page, "html.parser")
    codeTable = soup.find_all('table', attrs={'class':
                                              'wikitable'})[0].find_all('tr')
    for countryTable in codeTable:
        country = Country()
        try:
            country.code = countryTable.span.text
            country.name = countryTable.a.text
            # country.flag_page_link = Flag(domain + countryTable.a['href']) # 需要svg格式时
            country.flag_page_link = Flag(
                "https:" +
                countryTable.img['src'].replace("22px", "480px"))  # 需要png格式
            list.append(country)
        except AttributeError:
            pass
    return list
Example #14
0
    def get(self, member_no):
        member = self.get_member(member_no)
        countries = Country.all().order('order').fetch(FETCH_LIMIT)

        # OK - everything checks out - show edit form
        template = JINJA_ENVIRONMENT.get_template('templates/selfservice/profile_edit.html')

        data = { 'member': member, 'countries': countries }
        self.response.write(template.render(data))
Example #15
0
    def post(self, country_key):
        if (self.request.get('cancel') == '1'):
            return self.redirect('/countries')

        country = Country.get(country_key)
        country.order = int(self.request.get('order'))
        country.name = self.request.get('countryname')
        country.put()
        return self.redirect('/countries')
Example #16
0
    def get(self, member_no):
        member = self.get_member(member_no)
        countries = Country.all().order('order').fetch(FETCH_LIMIT)

        # OK - everything checks out - show edit form
        template = JINJA_ENVIRONMENT.get_template(
            'templates/selfservice/profile_edit.html')

        data = {'member': member, 'countries': countries}
        self.response.write(template.render(data))
Example #17
0
def write_countrydb(countries):
    """Write country names and codes to database using countries dictionary"""

    for country in countries:
        dbcountry = Country(country_code=countries[country],
                            country_name=country)

        db.session.add(dbcountry)

    db.session.commit()
Example #18
0
def display():
    print("List of countries:")
    [print(
        "    -",
        country,
    ) for country in Country.get_names()]
    print("List of cities:")
    [print(
        "    -",
        city,
    ) for city in City.get_names()]
Example #19
0
 def get(self):
     template = JINJA_ENVIRONMENT.get_template(
         'templates/selfservice/signup.html')
     countries = Country.all().order('order').fetch(100)
     self.response.write(
         template.render({
             'countries': countries,
             'incomplete': [],
             'complete': [],
             'values': {}
         }))
Example #20
0
 def get(self):
     template = JINJA_ENVIRONMENT.get_template('templates/members/new_member.html')
     countries = Country.all().order('order').fetch(LIMIT)
     statuses = Status.all().order('order').fetch(LIMIT)
     types = MemberType.all().order('order').fetch(LIMIT)
     data = {
         'countries': countries,
         'statuses': statuses,
         'types': types,
         'data': None
     }
     self.response.write(template.render(data))
Example #21
0
 def get(self):
     template = JINJA_ENVIRONMENT.get_template(
         'templates/members/new_member.html')
     countries = Country.all().order('order').fetch(LIMIT)
     statuses = Status.all().order('order').fetch(LIMIT)
     types = MemberType.all().order('order').fetch(LIMIT)
     data = {
         'countries': countries,
         'statuses': statuses,
         'types': types,
         'data': None
     }
     self.response.write(template.render(data))
Example #22
0
    def post(self, member_no):
        member = self.get_member(member_no)

        member.name = self.get_required('name')
        member.address = self.get_required('address')
        member.zipcode = self.get_required('zip')
        member.city = self.get_required('city')
        country = Country.get(self.get_required('country'))

        email = self.get_required('email')
        if email != '':
            member.email = db.Email(email)

        mobile = self.get_required('mobile')
        if mobile != '':
            member.phone = db.PhoneNumber(mobile)

        home = self.request.get('fixed')
        if home != '':
            member.phone_home = db.PhoneNumber(home)

        work = self.request.get('work')
        if work != '':
            member.phone_work = db.PhoneNumber(work)

        member.put()
        member.update_index()

        template = JINJA_ENVIRONMENT.get_template(
            'templates/selfservice/profile_edit.html')
        countries = Country.all().order('order').fetch(FETCH_LIMIT)

        data = {
            'message': 'Medlemsprofilen din er oppdatert.',
            'member': member,
            'countries': countries
        }
        self.response.write(template.render(data))
Example #23
0
def load_currency():
    """Load country & currency data from u.country into travelers db"""

    for i, row in enumerate(open("seed_data/u.country_code")):
        row = row.rstrip()
        country_name, country_code, currency_name, currency_code = row.split(
            ",")

        country = Country(country_name=country_name,
                          country_code=country_code,
                          currency_name=currency_name,
                          currency_code=currency_code)

        db.session.add(country)
    db.session.commit()
Example #24
0
    def post(self):
        json_data = request.get_json(force=True)
        if json_data is None:
            return {'message': 'No input data provided'}, 400
        data, errors = country_schema.load(json_data)
        if errors:
            return errors, 422
        country = Country.query.filter_by(name=data['name']).first()
        if country:
            return {'message': 'Country already exists'}, 400

        country = Country(name=json_data['name'])
        db.session.add(country)
        db.session.commit()
        result = country_schema.dump(country).data
        return {'status': 'success', 'data': result}, 200
Example #25
0
    def import_countries(self, country_csv):
        countries = []
        lines = country_csv.split('\n')
        for line in lines:
            if len(line.strip()) > 0:
                fields = line.split(';')
                country = Country()
                country.order = int(fields[0])
                country.name = fields[1].strip()
                country.local_name = fields[2].strip()
                country.put()
                countries.append(country)

        return countries
Example #26
0
    def get(self):
        country_query = Country.query()

        region = self.request.get("Region")
        if region != "all":
            country_query = country_query.filter(
                Country.Region.IN(region.split("|")))

        population = self.request.get("Population")
        if population != "all" and country_query.fetch() != []:
            listOfEle = population.split("|")
            listOFKey = []
            for rang in listOfEle:
                if rang == "0-100":
                    temp = country_query.filter(
                        Country.Population < 100).fetch(keys_only=True)
                elif rang == "100-500":
                    temp = country_query.filter(
                        Country.Population < 500,
                        Country.Population >= 100).fetch(keys_only=True)
                else:
                    temp = country_query.filter(
                        Country.Population >= 500).fetch(keys_only=True)
                listOFKey += temp
            country_query = ndb.get_multi(listOFKey)

        totalProduce = self.request.get("Total_Production")
        if totalProduce != "all" and country_query != []:
            listOfEle = totalProduce.split("|")
            listOFResult = []
            for rang in listOfEle:
                for each in country_query:
                    if rang == "0-1000" and each.Total_Production < 1000:
                        listOFResult.append(each)
                    elif (rang == "1000-2000" and each.Total_Production < 2000
                          and each.Total_Production >= 1000):
                        listOFResult.append(each)
                    elif rang == ">2000" and each.Total_Production >= 2000:
                        listOFResult.append(each)
            country_query = listOFResult

        self.response.headers["Content-Type"] = "application/json"
        self.response.out.write(
            json.dumps(
                [temp.to_dict() for temp in country_query],
                default=default_json_serializer,
            ))
Example #27
0
    def _md_plaintext(self):
        uname = util.escape_markdown(self.subject.username)
        value = self.value

        text = ''
        if self.action == 'category':
            from model import Category
            try:
                cat = Category.get(id=self.value)
                text += "move {} ➜ {}".format(uname, cat.name)
            except Category.DoesNotExist:
                raise AttributeError("Category to change to does not exist.")
        elif self.action == 'name':
            text += "set name {} ➜ {}".format(uname, str(value))
        elif self.action == 'username':
            text += "set username {} ➜ {}".format(uname, str(value))
        elif self.action == 'description':
            text += "change description text of {}".format(uname)
        elif self.action == 'extra':
            text += "change extra text {}".format(uname)
        elif self.action == 'country':
            text += "change country {} ➜ ".format(uname)
            if self._value == 'None' or self._value is None:
                text += "None"
            else:
                from model import Country
                try:
                    con = Country.get(id=self._value)
                    text += str(con)
                except Country.DoesNotExist:
                    raise AttributeError(
                        "Country to change to does not exist.")
        elif self.action == 'inlinequeries':
            text += "toggle inlinequeries {} ➜ {}".format(uname, str(value))
        elif self.action == 'official':
            text += "toggle official {} ➜ {}".format(uname, str(value))
        elif self.action == 'offline':
            text += "set {} {}".format('💤' if bool(value) else 'online',
                                       uname)
        elif self.action == 'spam':
            text += "mark {} as spammy".format(uname)
        elif self.action == 'add_keyword':
            text += "add keyword #{} to {}".format(str(value), uname)
        elif self.action == 'remove_keyword':
            text += "remove keyword #{} from {}".format(str(value), uname)
        return text
Example #28
0
def load_countries():

    print "Countries"

    url = "http://api.travelpayouts.com/data/countries.json?token={}".format(
        travel_payouts_api)

    r = requests.get(url)
    data = r.text
    results = json.loads(data)

    for key in results:
        country_name = key['name']
        country_code = key['code']
        country = Country(name=country_name, code=country_code)
        db.session.add(country)

    db.session.commit()
Example #29
0
    def value(self):
        # cast types
        from model import Category
        from model import Country

        if self._value == 'None':
            return None

        if self.action in self.BOOLEAN_ACTIONS:
            return bool(self._value)
        elif self.action == 'category':
            return Category.get(id=self._value)
        elif self.action == 'country':
            if self._value is None:
                return None
            return Country.get(id=self._value)
        else:
            return str(self._value) if self._value else None
Example #30
0
 def get(self, member_id):
     template = JINJA_ENVIRONMENT.get_template('templates/members/member_detail.html')
     countries = Country.all().order('order').fetch(LIMIT)
     statuses = Status.all().order('order').fetch(LIMIT)
     types = MemberType.all().order('order').fetch(LIMIT)
     member = Member.get(member_id)
     dues = MembershipDues.all().ancestor(member).fetch(25)
     current_year = datetime.datetime.now().year
     self.add_missing_dues(dues, max(config.FIRST_YEAR_WITH_DUES, member.member_since.year), current_year + config.DUES_AHEAD)
     dues = sorted(dues, key=lambda item: item.year, reverse=True)
     data = {
         'countries': countries,
         'statuses': statuses,
         'types': types,
         'member': member,
         'dues': dues,
         'current_year': current_year
     }
     self.response.write(template.render(data))
Example #31
0
    def import_countries(self, country_csv):
        countries = []
        lines = country_csv.split('\n')
        for line in lines:
            if len(line.strip()) > 0:
                fields = line.split(';')
                country = Country()
                country.order = int(fields[0])
                country.name = fields[1].strip()
                country.local_name = fields[2].strip()
                country.put()
                countries.append(country)

        return countries;
Example #32
0
def write_to_db():
    """
    Writes the results from the fetch_data function to the Sqlite Database.
    If the database if already populated it updates the values for each country.
    """
    collect_entries = []
    for idx, c in enumerate(fetch_data(URL)):
        numbers = 0
        if len(c[4]) > 5:
            logging.info(f'len(c[4]) < 6: {numbers}')
            numbers = int(c[4].replace(',', ''))
        if len(c[4]) < 5 and len(c[4]) > 1:
            logging.info(f'{c[4]} between 1 and 1000')
            numbers = c[4]
        if len(c[4]) == 1:
            logging.warning(f'{c[4]} Does not exist')
            numbers = 0

        # Exists or not
        value = db.query(Country).filter(Country.country == c[1]).first()
        if value:
            value.total_cases = int(c[2].replace(',', '')) or 0
            value.new_cases = int(c[3][1:].replace(',', '')) if c[3] else 0
            value.total_deaths = numbers
            value.new_deaths = int(c[5][1:].replace(',', '')) if c[5] else 0
        else:
            collect_entries.append(
                Country(
                    country=c[1],
                    total_cases=int(c[2].replace(',', '')) or 0,
                    new_cases=int(c[3][1:].replace(',', '')) if c[3] else 0,
                    total_deaths=numbers,
                    new_deaths=int(c[5][1:].replace(',', '')) if c[5] else 0,
                    population=int(c[13].replace(',', ''))
                    if ',' in c[13] else 0))

    db.add_all(collect_entries)
    db.commit()
    db.close()
Example #33
0
 def get(self, member_id):
     template = JINJA_ENVIRONMENT.get_template(
         'templates/members/member_detail.html')
     countries = Country.all().order('order').fetch(LIMIT)
     statuses = Status.all().order('order').fetch(LIMIT)
     types = MemberType.all().order('order').fetch(LIMIT)
     member = Member.get(member_id)
     dues = MembershipDues.all().ancestor(member).fetch(25)
     current_year = datetime.datetime.now().year
     self.add_missing_dues(
         dues, max(config.FIRST_YEAR_WITH_DUES, member.member_since.year),
         current_year + config.DUES_AHEAD)
     dues = sorted(dues, key=lambda item: item.year, reverse=True)
     data = {
         'countries': countries,
         'statuses': statuses,
         'types': types,
         'member': member,
         'dues': dues,
         'current_year': current_year
     }
     self.response.write(template.render(data))
def load_countries():

    Country.query.delete()

    for row in open("country_data_geo.csv"):
        row = row.rstrip()
        items = row.split(",")
        country_code = items[0]
        country_code = country_code.replace('"','')
        country_name = items[1]
        country_name = country_name.replace('"', '')
        country_lat = float(items[2])
        country_long = float(items[3])

        country = Country(country_code=country_code,
                            country_name=country_name,
                            country_lat=country_lat,
                            country_long=country_long)

        db.session.add(country)
    db.session.commit()
    print("countries loaded")
def create_missing_country_city():

    to_save = []
    cnt_added = 0
    city_add = 0
    with open('../../data/json/finale.json') as ffop:
        data = json.load(ffop)
        for line in data:
            if 'continent_code' in line.keys():
                if not sess.query(Country).filter_by(
                        country_code=line['country_code']).all():
                    continent = sess.query(Continent).filter_by(
                        continent_code=line['continent_code']).all()[0]
                    continent_id = continent.id
                    country = Country(name=line['country_full'],
                                      country_code=line['country_code'],
                                      continent_id=continent_id)
                    sess.add(country)
                    sess.commit()
                    print('Added a country:', line['country_full'])
                    cnt_added += 1
                    print(cnt_added)

                else:
                    country = sess.query(Country).filter_by(
                        country_code=line['country_code']).all()[0]
                    city = City(name=line['city_name'],
                                city_id=line['city_id'],
                                country_id=country.id,
                                lat=line['lat'],
                                lon=line['lon'])
                    city_add += 1
                    to_save.append(city)
                    print('Added a city:', line['city_name'])
                    print(city_add)

    sess.bulk_save_objects(to_save)
    sess.commit()
Example #36
0
def load_countries():
    # open csv file (us_states)
    d3worldfile = open("data/d3_world_data.csv")

    #read each line
    for line in d3worldfile:
        # split on ","   --> list
        line_list = line.split("|")
        # each item in list -->  remove whitespace .strip()
        for i in range(len(line_list)):
            line_list[i] = line_list[i].strip()

        country_id, country_name = line_list[0], line_list[1]
        print "COUNTRY_ID: %s, COUNTRY_NAME: %s" % (country_id, country_name)
        # # make State(....) object
        country = Country(country_id=country_id, country_name=country_name)

        # add to session
        db.session.add(country)
        # commit session
    db.session.commit()

    debug()
Example #37
0
    def post(self):
        template = JINJA_ENVIRONMENT.get_template(
            'templates/loader/loader.html')

        content = self.request.get('type')

        countries = []
        if content == 'countries.csv':
            countries = self.import_countries(self.request.get('data'))

        statuses = []
        if content == 'status.csv':
            statuses = self.import_statuses(self.request.get('data'))

        types = []
        if content == 'types.csv':
            types = self.import_types(self.request.get('data'))

        if content == 'member.csv':
            self.statuslist = Status.all().fetch(100)
            self.typelist = MemberType.all().fetch(100)
            self.countrylist = Country.all().fetch(100)
            self.import_members(self.request.get('data'))

        if content == 'model_ranges.csv':
            self.import_model_range(self.request.get('data'))

        if content == 'car_models.csv':
            self.import_car_models(self.request.get('data'))

        if content == 'cars.csv':
            self.import_member_cars(self.request.get('data'))

        if content == 'users.csv':
            self.import_users(self.request.get('data'))

        self.response.write(template.render())
Example #38
0
def install():
    Base.metadata.create_all(Session().bind)

    data = [('Chicago', 'United States', ('60601', '60602', '60603', '60604')),
            ('Montreal', 'Canada', ('H2S 3K9', 'H2B 1V4', 'H7G 2T8')),
            ('Edmonton', 'Canada', ('T5J 1R9', 'T5J 1Z4', 'T5H 1P6')),
            ('New York', 'United States', ('10001', '10002', '10003', '10004',
                                           '10005', '10006')),
            ('San Francisco', 'United States', ('94102', '94103', '94104',
                                                '94105', '94107', '94108'))]

    countries = {}
    all_post_codes = []
    for city, country, postcodes in data:
        try:
            country = countries[country]
        except KeyError:
            countries[country] = country = Country(country)

        city = City(city, country)
        pc = [PostalCode(code, city) for code in postcodes]
        Session.add_all(pc)
        all_post_codes.extend(pc)

    for i in xrange(1, 51):
        person = Person(
            "person %.2d" % i,
            Address(street="street %.2d" % i,
                    postal_code=all_post_codes[random.randint(
                        0,
                        len(all_post_codes) - 1)]))
        Session.add(person)

    Session.commit()

    # start the demo fresh
    Session.remove()
Example #39
0
    def post(self):
        template = JINJA_ENVIRONMENT.get_template('templates/loader/loader.html')

        content = self.request.get('type')

        countries = []
        if content == 'countries.csv':
            countries = self.import_countries(self.request.get('data'))

        statuses = []
        if content == 'status.csv':
            statuses = self.import_statuses(self.request.get('data'))

        types = []
        if content == 'types.csv':
            types = self.import_types(self.request.get('data'))

        if content == 'member.csv':
            self.statuslist = Status.all().fetch(100)
            self.typelist = MemberType.all().fetch(100)
            self.countrylist = Country.all().fetch(100)
            self.import_members(self.request.get('data'))

        if content == 'model_ranges.csv':
            self.import_model_range(self.request.get('data'))

        if content == 'car_models.csv':
            self.import_car_models(self.request.get('data'))

        if content == 'cars.csv':
            self.import_member_cars(self.request.get('data'))

        if content == 'users.csv':
            self.import_users(self.request.get('data'))

        self.response.write(template.render())
Example #40
0
 def get(self, country_key):
     template = JINJA_ENVIRONMENT.get_template('templates/countries/detail.html')
     country = Country.get(country_key)
     data = { 'country_key': country_key, 'country': country }
     self.response.write(template.render(data))
Example #41
0
    def get(self):
        template = JINJA_ENVIRONMENT.get_template('templates/countries/list.html')

        countries = Country.all().order('order').fetch(500)
        data = { 'countries' : countries, 'counter': DataStoreCounter() }
        self.response.write(template.render(data))
Example #42
0
def task_country_restore(items):
    for item in items:
        country = Country(key_name=item['countryId'])
        country.order = item['order']
        country.name = item['name']
        country.put()
Example #43
0
    def post(self, member_id):

        if self.request.get('cancel') == '1':
            return self.redirect('/members')

        if self.request.get('operation') == 'delete_car':
            car = Car.get(self.request.get('car_key'))
            if car:
                car.delete()
            return self.redirect('/members/' + member_id + '/edit')

        member = Member.get(member_id)

        if self.request.get('operation') == 'new_car':
            car = Car()
            car.member = member
            car.model = dbutils.get_default_model()
            car.registration = ''
            car.year = 0
            car.notes = ''
            car.serial_no = ''
            car.put()
            return self.redirect('/members/' + member_id + '/car/' + str(car.key()) + '/edit' )

        member.name = self.request.get('name')
        member.address = self.request.get('address')
        member.zipcode = self.request.get('zip')
        member.city = self.request.get('city')
        member.country = Country.get(self.request.get('country'))
        phone = self.request.get('mobile').strip()
        if phone != '':
            member.phone = db.PhoneNumber(phone)
        else:
            member.phone = None
        email = self.request.get('email').strip()
        if email != '':
            member.email = db.Email(email)
        else:
            member.email = None
        home = self.request.get('fixed').strip()
        if home != '':
            member.phone_home = db.PhoneNumber(home)
        else:
            member.phone_home = None
        work = self.request.get('work').strip()
        if work != '':
            member.phone_work = db.PhoneNumber(work)
        else:
            member.phone_work = None
        member.membertype = MemberType.get(self.request.get('type'))
        member.status = Status.get(self.request.get('status'))
        member.notes = self.request.get('note')

        if self.request.get('access_code') == '':
            member.generate_access_code()

        if self.request.get('magazine_count') != '':
            try:
                member.magazine_count = int(self.request.get('magazine_count'))
            except ValueError:
                pass

        member.put()
        member.update_index()

        # save membership dues
        self.save_dues(member)


        return self.redirect('/members')
Example #44
0
    def post(self):
        complete = []
        incomplete = []
        values = {}

        # Holy crap this is ugly. There has to be a better way.

        name = self.request.get('name')
        if not name or name.strip() == '':
            incomplete.append('name')
        else:
            values['name'] = name
            complete.append('name')


        address = self.request.get('address')
        if not address or address.strip() == '':
            incomplete.append('address')
        else:
            values['address'] = address
            complete.append('address')


        zipcode = self.request.get('zip')
        if (not zipcode or zipcode.strip() == '') or len(zipcode.strip()) < 4:
            incomplete.append('zip')
        else:
            values['zip'] = zipcode
            complete.append('zip')


        city = self.request.get('city')
        if not city or city.strip() == '':
            incomplete.append('city')
        else:
            values['city'] = city
            complete.append('city')

        if 'zip' in incomplete or 'city' in incomplete:
            incomplete.append('zipcity')


        country_key = self.request.get('country').strip()
        country = Country.get(country_key)

        countries = Country.all().order('order').fetch(100)

        if not country or not country_key or country_key.strip() == '':
            incomplete.append('country')
            # retrieve countries since we're going to need them
        else:
            values['country'] = country.name
            complete.append('country')

        email = self.request.get('email')
        if not email or email.strip() == '' or not mail.is_email_valid(email):
            incomplete.append('email')
        else:
            values['email'] = email
            complete.append('email')

        mobile = self.request.get('mobile')
        if mobile and mobile.strip() == '':
            mobile = None
        values['mobile'] = mobile

        home = self.request.get('home')
        if home and home.strip() == '':
            home = None
        values['home'] = home

        work = self.request.get('work')
        if work and work.strip() == '':
            work = None
        values['work'] = work

        member_type = self.request.get('type')
        if not member_type or member_type.strip() == '':
            member_type = '1'

        types = MemberType.all().fetch(100)

        mtype = None

        # TODO: Custom settings? Constants at least.
        if member_type == '1':
            mtype = next(t for t in types if t.name == DEFAULT_MEMBER_NAME)
        else:
            mtype = next(t for t in types if t.name == DEFAULT_SUPPORT_MEMBER_NAME)

        values['type'] = mtype.name
        comment = self.request.get('comment')
        complete.append('comment')
        values['comment'] = comment

        error_message = ''

        # Check if member exists;
        existing = Member.all().filter('email', email).fetch(1)

        if len(existing) > 0:
            incomplete.append('email')
            error_message = 'Det er allerede registrert noen i medlemsregisteret med denne epostadressen!'
            # TODO: Error message

        if len(incomplete) > 0:
            # missing field, redirect to signup page again
            template = JINJA_ENVIRONMENT.get_template('templates/selfservice/signup.html')
            return self.response.write(template.render({
                'countries': countries,
                'incomplete': incomplete,
                'complete': complete,
                'error_message': error_message,
                'values': values }))

        # invariant: fields are OK, create new member, send mail,
        # create payment history on member.
        template = JINJA_ENVIRONMENT.get_template('templates/selfservice/signup_receipt.html')
        data = {
            'values': values,
            'profile_url': PROFILE_URL
        }

        statuses = Status.all().fetch(100)

        # TODO: Handle existing members signing up again

        new_member = Member()

        new_member.name = name
        new_member.address = address
        new_member.zipcode = zipcode
        new_member.city = city
        new_member.notes = comment
        new_member.country = country
        new_member.membertype = mtype

        status = next(s for s in statuses if s.name == SIGNUP_STATUS_NAME)
        new_member.status = status

        new_member.number = dbutils.create_new_member_no()

        new_member.email = email
        new_member.member_since = datetime.date.today()
        if mobile:
            new_member.phone = mobile
        if work:
            new_member.phone_work = work
        if home:
            new_member.phone_home = home
        new_member.generate_access_code()
        new_member.member_since = datetime.date.today()
        new_member.member_type = mtype
        new_member.put()

        self.send_welcome_mail(new_member)
        self.send_notification_mails(new_member)

        # TODO: Invalidate counts for categories
        # Handle mutations on members gracefully

        return self.response.write(template.render(data))