예제 #1
0
파일: users.py 프로젝트: agrover/BandRadar
 def edit(self, user_name):
     if not (identity.current.user.user_name == user_name
             or "admin" in identity.current.groups):
         raise identity.IdentityFailure("Not authorized")
     try:
         u = UserAcct.by_user_name(user_name)
     except SQLObjectNotFound:
         flash("Invalid username")
         util.redirect("/")
     return dict(user_name=user_name, user_form=user_form,
         form_vals=u)
예제 #2
0
파일: users.py 프로젝트: agrover/BandRadar
 def validate_python(self, field_dict, state):
     if not field_dict['old_pass']:
         return
     try:
         u = UserAcct.by_user_name(field_dict['user_name'])
         enc_pass = identity.current_provider.encrypt_password(field_dict['old_pass'])
         if enc_pass != u.password:
             raise formencode.Invalid("", field_dict, state,
                 error_dict = {'old_pass':"******"})
     except SQLObjectNotFound:
         raise formencode.Invalid("", field_dict, state,
             error_dict = {'old_pass':'******'})
예제 #3
0
파일: users.py 프로젝트: agrover/BandRadar
    def showtracked(self, user_name):
        try:
            u = UserAcct.by_user_name(user_name)
            artists = u.artists.orderBy(Artist.q.name)

            viewing_self = False
            if identity.current.user and identity.current.user.user_name == user_name:
                viewing_self = True
        except SQLObjectNotFound:
            flash("User not found")
            util.redirect("/")

        return dict(user=u, artists=artists, viewing_self=viewing_self,
            artist_list=artist_list)
예제 #4
0
파일: users.py 프로젝트: agrover/BandRadar
    def save(self, user_name, old_pass, pass1, **kw):
        if not (identity.current.user.user_name == user_name
                or "admin" in identity.current.groups):
            raise identity.IdentityFailure("Not authorized")

        try:
            u = UserAcct.by_user_name(user_name)
            u.set(**u.clean_dict(kw))
            # old pw checked by validator, if present
            if (old_pass or "admin" in identity.current.groups) and pass1:
                # model does hash, not us
                u.password = pass1
            flash("Saved")
        except SQLObjectNotFound:
            flash("Error saving changes")
        util.redirect("/users/%s" % u.user_name)
예제 #5
0
파일: users.py 프로젝트: agrover/BandRadar
    def show(self, user_name):
        try:
            u = UserAcct.by_user_name(user_name)
            artists = u.artists.orderBy(Artist.q.name)
            venues = u.venues.orderBy(Venue.q.name)
            attendances = Attendance.selectBy(user=u)

            viewing_self = False
            if identity.current.user and identity.current.user.user_name == user_name:
                viewing_self = True
        except SQLObjectNotFound:
            flash("User not found")
            util.redirect("/")

        return dict(user=u, artists=artists, venues=venues,
            attendances=attendances, viewing_self=viewing_self,
            description=util.desc_format(u.description))
예제 #6
0
파일: users.py 프로젝트: agrover/BandRadar
    def icalendar(self, user_name):
        try:
            u = UserAcct.by_user_name(user_name)
        except SQLObjectNotFound:
            return "User not found."

        events = set()
        desc = "Event listed by Bandradar.com because you are tracking this %s."
        events.update(it.izip(u.events, it.repeat(desc % "event")))
        for artist in u.artists:
            events.update(it.izip(artist.future_events, it.repeat(desc % "artist")))
        for venue in u.venues:
            events.update(it.izip(venue.future_events, it.repeat(desc % "venue")))

        cal = ical.Calendar()
        cal.add('x-wr-calname', "BandRadar: events for %s" % u.user_name)
        cal.add('prodid', '-//bandradar//calendar//')
        cal.add('version', '1.0')
        for event, src in events:
            cal_event = ical.Event()
            cal_event.add('summary', event.name)
            if event.description:
                src += "\n\n" + event.description
            cal_event.add('description', src)
            location = event.venue.name
            if event.venue.address:
                location += " (" + event.venue.address + ")"
            cal_event.add('location', location)
            cal_event.add('uid', event.id)
            cal_event.add('url', "http://bandradar.com/events/%s" % event.id)
            cal_event.add('dtstart', datetime(event.date.year, event.date.month,
                event.date.day,21,0,0))
            cal_event.add('dtend', datetime(event.date.year, event.date.month,
                event.date.day,23,0,0))
            cal_event.add('dtstamp', datetime(event.date.year, event.date.month,
                event.date.day,21,0,0))
            cal.add_component(cal_event)
        cherrypy.response.headers['content-type'] = "text/calendar"
        return cal.as_string()