def delete(self, uid, **kw): if not uid: abort(404) user = User.by_user_id(uid) if not user: abort(404) DBSession.delete(user) return redirect('/soviet')
def save(self, **kw): if not is_valid_sn(kw['user_name']): flash( _('Caro utonto, inserisci il tuo numero di matricola nel formato indicato.' ), 'error') return redirect('/form/edit') user = User.by_user_name(kw['user_name']) if user: flash(_('Matricola già in uso!'), 'error') return redirect('/form/edit') token = generate_password() passwd = generate_password() user = User() user.user_name = kw['user_name'].lower() user.email_address = user.user_name + \ ('@studenti.polito.it' if user.user_name[0] == 's' else '@polito.it') user.display_name = user.user_name user.first_name = kw['first_name'] user.last_name = kw['last_name'] user.study_course = kw['cdl'] user.year = kw['year'] user.interest = kw['interest'] user.letter = kw['letter'] user.compiled = datetime.now() user.token = token user.password = passwd user.created = datetime.now() DBSession.add(user) DBSession.flush() status_link = url('/form/status?m=', None, True) + user.user_name status_link += '&auth=' + token noreply_email = User.by_user_id(1).email_address mailer = get_mailer(request) message = Message(subject="Reclutamento WEEE Open", sender=noreply_email, recipients=[user.email_address], body=("""Ciao! Abbiamo ricevuto la tua candidatura per il team WEEE Open, questa è la pagina da cui potrai verificare lo stato della tua domanda: %s Se la domanda sarà approvata, riceverai un'email sempre a questo indirizzo con scritto chi contattare per passare al colloquio. Le stesse informazioni saranno visibili anche alla pagina di cui sopra. Buona fortuna ;) Il software WEEEHire per conto del team WEEE Open """ % status_link)) mailer.send(message) flash( _(f"Candidatura inviata con successo!\nSalva questa pagina nei preferiti per controllare lo stato. Ti abbiamo inviato lo stesso link anche a {user.email_address}" )) return redirect(status_link)
def delete(self, m, auth, **kw): if not m or not auth: abort(404) user = User.by_user_name(m) if user: if user.token == auth: DBSession.delete(user) flash(_('Tutti i tuoi dati sono stati cancellati!')) return redirect('/') abort(404)
def publish(self, **kw): approved_users = DBSession.query(User).filter_by(published=False).filter_by(status=True).all() rejected_users = DBSession.query(User).filter_by(published=False).filter_by(status=False).all() for i in range(len(approved_users)): approved_users[i].published = True for i in range(len(rejected_users)): rejected_users[i].published = True flash('Risultati pubblicati correttamente') return redirect('/soviet')
def toggle_recruiting(self): recruiting = DBSession.query(Option).filter_by(key='recruiting').first() if recruiting.value == 'true': recruiting.value = 'false' else: recruiting.value = 'true' return redirect('/soviet')
def toggle_notifications(self): notifications = DBSession.query(Option).filter_by(key='new_request_notify').first() if notifications.value == 'true': notifications.value = 'false' else: notifications.value = 'true' return redirect('/soviet')
def get_value(cls, key): value = DBSession.query(cls).filter_by(key=key).first().value if value == "true": return True if value == "false": return False return value
def contact(self, uid): if not uid: abort(404) user = User.by_user_id(uid) if not user: abort(404) recruiters = DBSession.query(Recruiter).all() return dict(page='soviet-contact', user=user, recruiters=recruiters)
def setUp(self): """Setup test fixture for each model test method.""" try: new_attrs = {} new_attrs.update(self.attrs) new_attrs.update(self.do_get_dependencies()) self.obj = self.klass(**new_attrs) DBSession.add(self.obj) DBSession.flush() return self.obj except: DBSession.rollback() raise
def index(self, filter=None, **kw): if filter == 'awaiting': users = DBSession.query(User).filter(User.user_id != 1).filter_by( status=None).all() elif filter == 'approved': users = DBSession.query(User).filter(User.user_id != 1) \ .filter_by(status=True).filter_by(published=False).all() elif filter == 'rejected': users = DBSession.query(User).filter(User.user_id != 1).filter_by( status=False).all() elif filter == 'contact': users = DBSession.query(User).filter(User.user_id != 1) \ .filter_by(status=True) \ .filter_by(published=True) \ .filter_by(recruiter=None).all() elif filter == 'done': users = DBSession.query(User).filter(User.user_id != 1) \ .filter_by(status=True) \ .filter_by(published=True) \ .filter(User.recruiter).all() else: users = DBSession.query(User).filter(User.user_id != 1).all() return dict(page='soviet-index', users=users)
def by_user_id(cls, uid): """Return the user object whose user id is ``uid``.""" return DBSession.query(cls).filter_by(user_id=uid).first()
def by_user_name(cls, username): """Return the user object whose user name is ``username``.""" return DBSession.query(cls).filter_by(user_name=username).first()
def by_email_address(cls, email): """Return the user object whose email address is ``email``.""" return DBSession.query(cls).filter_by(email_address=email).first()
def tearDown(self): """Tear down test fixture for each model test method.""" DBSession.rollback()
def test_query_obj(self): """Model objects can be queried""" obj = DBSession.query(self.klass).one() for key, value in self.attrs.items(): eq_(getattr(obj, key), value)
def by_id(cls, id): return DBSession.query(cls).filter_by(id=id).first()
def by_telegram(cls, telegram): return DBSession.query(cls).filter_by(telegram=telegram).first()
def index(self, status=None, interest=None, recruiter=None, **kw): set_lang('it') rstatus = [ {"value": "none", "text": "Da decidere"}, {"value": "approved", "text": "Approvato"}, {"value": "rejected", "text": "Scartato"}, {"value": "contact", "text": "Da contattare"}, {"value": "done", "text": "Contattato"} ] interests = [ {"value": "hardware", "text": "Riparazione Hardware"}, {"value": "electronics", "text": "Elettronica"}, {"value": "software", "text": "Sviluppo Software"}, {"value": "sysadmin", "text": "Sysadmin"}, {"value": "designvc", "text": "Design e comunicazione visiva"}, {"value": "designreuse", "text": "Design per il riuso"}, {"value": "publicrel", "text": "Pubbliche relazioni"}, {"value": "other", "text": "Altro"} ] recruiters = DBSession.query(Recruiter).all() if status == 'none': users = DBSession.query(User).filter(User.user_id != 1).filter_by(status=None).all() elif status == 'approved': users = DBSession.query(User).filter(User.user_id != 1) \ .filter_by(status=True).filter_by(published=False).all() elif status == 'rejected': users = DBSession.query(User).filter(User.user_id != 1).filter_by(status=False).all() elif status == 'contact': users = DBSession.query(User).filter(User.user_id != 1) \ .filter_by(status=True) \ .filter_by(published=True) \ .filter_by(recruiter=None).all() elif status == 'done': users = DBSession.query(User).filter(User.user_id != 1) \ .filter_by(status=True) \ .filter_by(published=True) \ .filter(User.recruiter).all() else: users = DBSession.query(User).filter(User.user_id != 1).all() if interest: interest = next((i for i in interests if i['value'] == interest))['text'] users = [u for u in users if u.interest == interest] if recruiter: recruiter = Recruiter.by_id(recruiter) users = [u for u in users if u.recruiter == recruiter] counter = len(users) notify = Option.get_value('new_request_notify') recruiting = Option.get_value('recruiting') return dict(page='soviet-index', users=users, interests=interests, rstatus=rstatus, recruiters=recruiters, counter=counter, notify=notify, recruiting=recruiting )