示例#1
0
文件: soviet.py 项目: 30n30n/WEEEhire
 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')
示例#2
0
    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)
示例#3
0
 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)
示例#4
0
文件: soviet.py 项目: 30n30n/WEEEhire
    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')
示例#5
0
文件: soviet.py 项目: 30n30n/WEEEhire
 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')
示例#6
0
文件: soviet.py 项目: 30n30n/WEEEhire
 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')
示例#7
0
 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
示例#8
0
文件: soviet.py 项目: 30n30n/WEEEhire
    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)
示例#9
0
 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
示例#10
0
 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)
示例#11
0
 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()
示例#12
0
 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()
示例#13
0
 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()
示例#14
0
 def tearDown(self):
     """Tear down test fixture for each model test method."""
     DBSession.rollback()
示例#15
0
 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)
示例#16
0
 def by_id(cls, id):
     return DBSession.query(cls).filter_by(id=id).first()
示例#17
0
 def by_telegram(cls, telegram):
     return DBSession.query(cls).filter_by(telegram=telegram).first()
示例#18
0
文件: soviet.py 项目: 30n30n/WEEEhire
    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
                    )