Ejemplo n.º 1
0
    def create_new_user(self, rawname, role, email=""):
        """ Creates a new Person record with a unique username, or returns a person wiht the matching username"""

        ut = Utils()
        username = ut.cleanUserName(rawname)

        if ut.validateUserName(username):

            # check for username
            person = self.get_person(username)

            # create a new person if we have not got this one
            if person == None:
                person = Person()
                person.email = email
                person.passhash = ""
                # no passhash if not got a direct logon
                person.username = username
                person.displayname = ut.tidyUserName(
                    rawname
                )  # allow the username to be updated on the myHoots or profile or summink
                person.before_put()
                person.role = role
                person.put()

            self._person = person

            return username
        else:
            return ""
Ejemplo n.º 2
0
 def post(self):
     person = None
     if self.request.get("email").lower() != "":
         if not getPersonObjectByEmail(self.request.get("email").lower()):
             person = Person()
             person.firstName = self.request.get("first_name").lower()
             person.lastName = self.request.get("last_name").lower()
             person.email = self.request.get("email").lower()
             person.put()
         else:
             person = getPersonObjectByEmail(
                 self.request.get("email").lower())
         review = None
         if not getReviewObject(
                 person.key):  # person hasn't submitted a review.
             review = Review(parent=person.key)
             review.rating = int(self.request.get("rating").lower())
             review.subject = "no subject"
             review.message = self.request.get("message_body")
             review.visitFrequency = self.request.get("visit_frequency")
             putReviewObject(review)
     else:
         pass
     review_template = jinja_env.get_template("templates/reviews.html")
     self.response.headers['Content-Type'] = 'text/html'
     self.response.out.write(review_template.render(renderAllReviews()))
Ejemplo n.º 3
0
 def post(self):
     """Create new person"""
     person = Person()
     person.first_name = api.payload["first_name"]
     person.last_name = api.payload["last_name"]
     person.email = api.payload["email"]
     if "student_number" in api.payload:
         person.student_number = api.payload["student_number"]
     db.session.add(person)
     db.session.commit()
     return all_persons(include_active_partners=True)
Ejemplo n.º 4
0
def register(request):
    if request.method == 'POST':
        form = RegistrationForm(request.POST)
        if form.is_valid():
            person = Person()
            person.name = form.cleaned_data['name']
            person.email = form.cleaned_data['email']
            person.save()
            return HttpResponseRedirect('../list/')
    else:
        form = RegistrationForm()

    return render(request, '../templates/register.html', {'form': form})
Ejemplo n.º 5
0
def go(request):
	
	tabselected = None
	filtertag = request.META['PATH_INFO']
	if filtertag.find('/idea/') >= 0:
		filtertag = filtertag[6:]
		tabselected = filtertag.replace('/', '')
#		tabselected = 4
	else:
		filtertag = None
		
 	user = request.user
 	
 	rating = None
 	if user.is_authenticated():
		
		person = views.getPerson(request)
	 	if person:
	 		pratings = Rating.objects().order_by('score')
	 		if pratings and len(pratings)>=0:
	 			for prating in pratings:
	 				if person.currentRating >= prating.score:
	 					rating = prating
	 				else:
						break
	 	else:
			person = Person()
			person.email = user.email
			person.name = str(user)
			person.activationdate = datetime.datetime.now()
			person.save()
			views.incrementStat('users',1)
	 		pratings = Rating.objects().order_by('score')
	 		if pratings and len(pratings)>=0:
	 			for prating in pratings:
	 				if person.currentRating >= prating.score:
	 					rating = prating
					else:
						break
 		
 	
	template_values = {
 		'user':user,
 		'tabselected':tabselected,
 		'filtertag':None,
 		'rating':rating,
	}
	path = os.path.join(os.path.dirname(__file__), 'templates/ideas/index.html')
	return render_to_response(path, template_values)
Ejemplo n.º 6
0
def new_person():
    if not g.site.domain == g.user:
        abort(403)

    p = Person()
    if request.method == "POST":
        reqfile = request.files.get('file')
        if reqfile:
            f = File()
            f.site = g.site.domain
            f.name = reqfile.filename
            f.content_type = reqfile.mimetype
            f.slug, f.content_length = save_file(
                reqfile, current_app.config["UPLOAD_FOLDER"])
            f.save()

        p.site = g.site.domain
        p.name = request.form.get("name")
        p.title = request.form.get("title")
        p.phone = request.form.get("phone")
        p.email = request.form.get("email")
        p.twitter = request.form.get("twitter")
        p.description = request.form.get("description")
        slugs = [__p.slug for __p in Person.objects.filter(site=g.site.domain)]
        slug = slugify(p.name)
        counter = 1
        __slug = slug
        while __slug in slugs:
            counter += 1
            __slug = "%s_%d" % (slug, counter)
        p.slug = __slug

        if reqfile:
            p.image_slug = f.slug
        p.save()

        pl = Personnel.objects.get(site=g.site.domain)
        pl.people.append(p.slug)
        pl.save()

        return redirect(url_for(".show_personnel"))
    return render_template("edit_person.html", person=p)
Ejemplo n.º 7
0
def new_person():
    if not g.site.domain == g.user:
        abort(403)

    p = Person()
    if request.method == "POST":
        reqfile = request.files.get('file')
        if reqfile:
            f = File()
            f.site = g.site.domain
            f.name = reqfile.filename
            f.content_type = reqfile.mimetype
            f.slug, f.content_length = save_file(reqfile, current_app.config["UPLOAD_FOLDER"])
            f.save()

        p.site = g.site.domain
        p.name = request.form.get("name")
        p.title = request.form.get("title")
        p.phone = request.form.get("phone")
        p.email = request.form.get("email")
        p.twitter = request.form.get("twitter")
        p.description = request.form.get("description")
        slugs = [ __p.slug for __p in Person.objects.filter(site=g.site.domain) ]
        slug = slugify(p.name)
        counter = 1
        __slug = slug
        while __slug in slugs:
            counter += 1
            __slug = "%s_%d" % (slug, counter)
        p.slug = __slug

        if reqfile:
            p.image_slug = f.slug
        p.save()

        pl = Personnel.objects.get(site=g.site.domain)
        pl.people.append(p.slug)
        pl.save()

        return redirect(url_for(".show_personnel"))
    return render_template("edit_person.html", person=p)
Ejemplo n.º 8
0
def load_persons():
    persons = []
    managers = {}

    # TEAMS
    existing_teams = {}
    teams = Team.query.all()
    for team in teams:
        existing_teams[team.name] = team
    print(existing_teams)

    # ROOMS
    existing_rooms = {}
    rooms = Room.query.all()
    for room in rooms:
        existing_rooms[room.name] = room
    print(existing_rooms)

    # We try to use a custom persons file if it exists. If not, default file
    if (path.isfile(config.DATABASE_PERSONS_FILE)):
        persons_file = config.DATABASE_PERSONS_FILE
    else:
        persons_file = config.DATABASE_PERSONS_DEFAULT_FILE

    with io.open(persons_file, 'r', encoding='utf8') as f:
        for line in f:
            if (len(line) > 1 and line[0] != '#'):
                neo = Person()

                split = line[:-1].split(';')
                neo.login = split[2].strip().lower()
                neo.surname = split[3]
                neo.name = split[4]
                neo.birthday = datetime.datetime.fromtimestamp(float(format_date(split[5])))
                neo.arrival = datetime.datetime.fromtimestamp(float(format_date(split[6])))
                neo.job = split[7]
                neo.email = split[8]
                neo.skype = split[9]
                neo.fixe = split[10]
                neo.mobile = split[11]

                team = split[1]
                manager = split[12]
                room = split[13]

                if manager in managers:
                    managers[manager].append(neo)
                else:
                    managers[manager] = [neo]

                if (team in existing_teams):
                    neo.team = existing_teams[team]

                if (room in existing_rooms):
                    neo.room = existing_rooms[room]

                else:
                    print('Error: Missing team ' + team + ' for ' + neo.login)
                persons.append(neo)

    for person in persons:
        # We link the managers
        if person.login in managers:
            person.subordinates = managers[person.login]
        db.session.add(person)
    db.session.commit()
Ejemplo n.º 9
0
    def load_csv(self):
        """We create the persons from the data files."""

        # check if the post request has the file part
        if 'csv_file' not in request.files:
            return redirect(url_for('database.get_view', error='Missing file'))
        file = request.files['csv_file']
        # if user does not select file, browser also
        # submit a empty part without filename
        if file.filename == '':
            return redirect(url_for('database.get_view', error='Missing file'))
        if file:
            file.save(os.path.join(config.CSV_FOLDER, 'persons.csv'))

        # Cleaning the existing data. This change is not registered until the parsing is ok
        db.session.query(Person).delete()
        db.session.query(Team).delete()

        # Parsing the CSV file
        persons = []
        managers = {}
        existing_teams = {}

        encoding_type = 'cp1252'  #'ISO-8859-1'

        try:
            with io.open(os.path.join(config.CSV_FOLDER, 'persons.csv'),
                         'r',
                         encoding=encoding_type) as f:
                reader = csv.reader(f, delimiter=',', quotechar='"')
                for row in reader:
                    if (len(row) > 1):
                        neo = Person()

                        neo.login = unicode(row[1].strip().lower(),
                                            encoding_type)
                        neo.surname = unicode(row[2], encoding_type)
                        neo.name = unicode(row[3], encoding_type)
                        neo.job = unicode(row[6], encoding_type)
                        neo.email = unicode(row[7], encoding_type)
                        neo.skype = unicode(row[8], encoding_type)
                        neo.fixe = unicode(row[9], encoding_type)
                        neo.mobile = unicode(row[10], encoding_type)

                        # TEAM
                        team = unicode(row[0], encoding_type)
                        if not (team in existing_teams):
                            print('Creating team ' + team + ' for ' +
                                  neo.login)
                            neo_team = Team(team)
                            existing_teams[team] = neo_team
                            db.session.add(neo_team)
                        neo.team = existing_teams[team]

                        # MANAGER
                        manager = unicode(row[11], encoding_type)
                        if manager in managers:
                            managers[manager].append(neo)
                        else:
                            managers[manager] = [neo]

                        persons.append(neo)

            # We have to commit here first to create Team links
            # TODO : Add check on the persons here (ex: detect loops)
            db.session.commit()

            for person in persons:
                # We link the managers
                if person.login in managers:
                    person.subordinates = managers[person.login]
                    # We create a team hierarchy
                    for subperson in person.subordinates:
                        if (subperson.team_id != person.team_id):
                            subperson.team.high_team = person.team
                db.session.add(person)

            db.session.commit()
        except csv.Error as e:
            return redirect(url_for('database.get_view', error=e))
        except Exception as e:
            print e
            return redirect(
                url_for('database.get_view',
                        error='Error while parsing. Check logs.'))

        return redirect(url_for('database.get_view', error=None))
Ejemplo n.º 10
0
from typing import List, Dict
from models import Person, Order, str_to_dict


def print_all(mylist) -> None:
    for item in mylist:
        print(item)


person = Person()
person.name = "Ольга Охманюк"
person.email = "*****@*****.**"
person.phone = "+79246432292"
person.is_customer = True

str1 = "[email protected];id=None; is_customer=True; is_performer=None; name=Ольга Охманюк; phone=+79246432292"
result_dict = str_to_dict(str1)
print(result_dict)

person2 = Person.from_string(str1)
print(person2)
Ejemplo n.º 11
0
    Base.metadata.drop_all(db_engine)
    Base.metadata.create_all(db_engine)


basedir = os.path.abspath(os.path.dirname(__file__))
# connStr = 'mysql+mysqlconnector://root:4Belki8Sov@localhost:3306/doudb'
connStr = 'sqlite:///' + os.path.join(basedir, 'app.db')
engine = create_engine(connStr, echo=False)
recreate_database(engine)
Session = sessionmaker(bind=engine)

session = Session()

person = Person()
person.name = 'Eugeny Bobylev'
person.email = '*****@*****.**'
person.phone = '+79247401790'
person.is_customer = True
session.add(person)

order = Order()
order.customer = person
order.url_source='https//contoso.com'
session.add(order)

session.commit()
print(order.customer)

for ord in person.customer_orders:
    print(ord)