def renderHTTP(self, ctx): """Handle HTTP requests.""" srv = IService(ctx) request = IRequest(ctx) current = must_user(ctx) user = srv.validate_challenge( # pylint: disable-msg=E1101 self.challenge, current.session) if user: message(ctx, u'Bienvenue, %s' % (user.email, )) request.redirect("/") request.finish() return '' # Some people simply reuse invitations: don't complain if they # are already connected, just redirect them to the main page. avatar = maybe_user(ctx) if avatar.identified: request.redirect("/") request.finish() return '' # pylint: disable-msg=E1101 self.contentTags = [ T.h1[u"Cette clé n'est pas valable"], T.p[u"Vous pouvez obtenir une nouvelle clé par e-mail.", T.div(_class="editable bl")[T.div(_class="br")[T.div( _class="tl")[T.div(_class="tr")[T.div( _class="edcontent")[login.LoginFragment( original=login.LoginInfo( force_reconnect=True))], ]]]]] ] return BasePage.renderHTTP(self, ctx)
def child_confirm(self, ctx): """Confirm that an item has been donated.""" srv = IService(ctx) avatar = must_user(ctx) if not avatar.identified: message(ctx, u"Vous devez confirmer votre email d'abord.") return url.URL.fromContext(ctx).up().up() srv.donatedItem(avatar.user, self.item) # pylint: disable-msg=E1101 message(ctx, u"Votre modification est enregistrée.") return url.URL.fromContext(ctx).up().up()
def child_confirm(self, ctx): """Handle the confirmation that a list is dropped.""" srv = IService(ctx) avatar = must_user(ctx) srv.remove_from_friend( # pylint: disable-msg=E1101 avatar.user, self.list) message(ctx, u'Vous ne suivez plus cette liste.') return url.URL.fromString("/")
def child_giveup(self, ctx): """Handle reservation cancellation requests.""" srv = IService(ctx) user = must_user(ctx).user if ctx.arg('giveup'): srv.giveupItem(user, self.item) # pylint: disable-msg=E1101 message(ctx, u"Votre modification est enregistrée.") request = IRequest(ctx) referer = request.getHeader('referer') if referer: return url.URL.fromString(referer) return url.URL.fromContext(ctx).up()
def render_login(self, ctx, data): """Render the whole login box.""" # pylint: disable-msg=E1101 if IRequest(ctx).method == 'POST' and data.is_valid(): # Simply send a challenge to this email address message( ctx, u"""Un message de confirmation a été envoyé """ u"""à l'adresse <%s>.""" % data.email) IService(ctx).pretend_email_address( must_user(ctx).user, data.email) IRequest(ctx).redirect(data.referer) IRequest(ctx).finish() else: return ctx.tag
def child_confirm(self, ctx): """Confirm that the list must be destroyed.""" if not owns_list(must_user(ctx), self.list): return url.URL.fromContext(ctx).up() if ctx.arg('cancel'): message(ctx, u"L'opération a été annulée.") return url.URL.fromContext(ctx).up() srv = IService(ctx) srv.destroyList(self.list) # pylint: disable-msg=E1101 message(ctx, u'Votre liste a bien été détruite.') return url.URL.fromString("/")
def _create_list(self, ctx, name, email): """Actually create the new list.""" req = IRequest(ctx) srv = IService(ctx) avatar = must_user(ctx) # pylint: disable-msg=E1101 wl = srv.createList(avatar.user, name, email) if not wl: req.redirect('/') req.finish() return if not avatar.identified: message( ctx, u"Un message de confirmation a été envoyé" u" à l'adresse <%s>." % (email, )) req.redirect('/' + wl.url) req.finish()
def child_edit(self, ctx): """Handle edit requests.""" if not manages_list(ctx, must_user(ctx), self.list): message(ctx, u"Vous n'avez pas le droit de modifier cet objet.") return url.URL.fromContext(ctx).up() if ctx.arg('cancel'): message(ctx, u'La modification a été annulée.') return url.URL.fromContext(ctx).up() args = process_default(ctx, self.defaultValues) if not (args['title'] or args['description'] or args['url'] or args['score']): return url.URL.fromContext(ctx) try: score = int(args['score']) if score > 3 or score < 1: raise ValueError except ValueError: score = 2 srv = IService(ctx) srv.editItem( self.item, # pylint: disable-msg=E1101 args['title'], args['description'], args['url'], score) message(ctx, u'Votre souhait a bien été modifié.') return url.URL.fromContext(ctx).up()
def child_add(self, ctx): """Handle the .../add page.""" avatar = must_user(ctx) if not manages_list(ctx, avatar, self.list): log.msg('unauthorized access to the list/add method') return url.URL.fromContext(ctx) args = {} for k in self.defaultValues.keys(): v = ctx.arg(k) or '' v = v.strip().decode('utf-8') if not v or \ v == self.defaultValues[k]: args[k] = '' else: args[k] = v if not (args['title'] or args['description'] or args['url']): return url.URL.fromContext(ctx) srv = IService(ctx) srv.addNewItem( self.list, args['title'], # pylint: disable-msg=E1101 args['description'], args['url']) message(ctx, u'Votre souhait a bien été enregistré.') back = ctx.arg('back') if back: back = url.URL.fromString(back) else: back = url.URL.fromContext(ctx) return back
def child_confirm(self, ctx): """Handle .../confirm.""" if not manages_list(ctx, must_user(ctx), self.list): message(ctx, u"Vous n'avez pas le droit de modifier cet objet.") return url.URL.fromContext(ctx).up().up() if ctx.arg('cancel'): message(ctx, u"L'effacement a été annulé.") return url.URL.fromContext(ctx).up().up() srv = IService(ctx) # pylint: disable-msg=E1101 srv.deleteItem(self.item, ctx.arg('notify')) message(ctx, u'Votre souhait a bien été supprimé.') return url.URL.fromContext(ctx).up().up()
def child_get(self, ctx): """Handle reservation requests.""" avatar = must_user(ctx) if owns_list(avatar, self.list): message(ctx, u"Vous ne pouvez pas réserver un de vos souhaits.") return url.URL.fromContext(ctx).up() # In any case, the item is reserved. It is up to the user to # possibly confirm his identity. if not avatar.anonymous: srv = IService(ctx) # pylint: disable-msg=E1101 srv.reserveItem(avatar.user, self.item) message(ctx, u'Votre réservation est enregistrée.') return url.URL.fromContext(ctx).up() message( ctx, u'Votre réservation sera effective lorsque ' u'vous vous serez identifié.') # redirect here after authentication referer = url.URL.fromContext(ctx).child('get') return url.URL.fromString('/login').add(name='referer', value=referer)
def child_change(self, ctx): """Handle modification requests.""" if not manages_list(ctx, must_user(ctx), self.list): message(ctx, u"Vous n'avez pas le droit de modifier cet objet.") return url.URL.fromContext(ctx).up() if ctx.arg('cancel'): message(ctx, u'Les modifications ont été annulées.') return url.URL.fromContext(ctx).up() args = process_default(ctx, self.defaultValues) success = True updates = {'description': args['listDesc']} if not args['listTitle']: message(ctx, u'Il faut donner un titre à la liste.') success = False else: updates['title'] = args['listTitle'] proposed = args['listUrl'] if not proposed: message(ctx, u'Il faut donner une URL à la liste.') success = False else: # We only update the url if it actually changed ! if proposed != self.list.url: updates['url'] = proposed else: proposed = None if args['showRes']: updates['showres'] = 1 else: updates['showres'] = 0 if (args['theme'] in theme.themes and self.theme().key != args['theme']): updates['theme_id'] = args['theme'] srv = IService(ctx) # pylint: disable-msg=E1101 current_coeds = srv.getCoEditors(self.list) # coEditors coeds = args['coEditors'].strip() if coeds: new_coeds = [x.strip() for x in self._coedsplit.split(coeds)] if new_coeds != current_coeds: updates['coEditors'] = new_coeds # pylint: disable-msg=E1101 new, unknown = srv.updateList(self.list, **updates) or self.list.url if unknown: missed = u', '.join(unknown) message( ctx, u"Les personnes suivantes ne sont pas connues\xa0: " + missed) return url.URL.fromString('/').child(new).child('edit') if proposed and new != proposed: # We could not get the proposed URL, simply warn the user # pylint: disable-msg=E1101 message( ctx, T.div[u"L'URL ", T.tt['<http://mes-souhaits.net/' + proposed + '>'], " étant indisponible, ", T.tt['<http://mes-souhaits.net/' + new + '>'], " a été utilisée à la place."]) if success: message(ctx, u'Les modifications ont été effectuées.') return url.URL.fromString('/').child(new) return url.URL.fromString('/').child(new).child('edit')