def save_all_mutations(self): mutations = self.mutations update = Update.get_or_none(Update.id == 1) last_asked_transaction_timestamp = update.last_transaction if update is not None else 0 print(last_asked_transaction_timestamp) last_timestamp = last_asked_transaction_timestamp for mutation in mutations['mutationsList']['mutations'][::-1]: mutation = mutation['mutation'] # Trim the mutation time so we won't bother with microsecond comparisons mutation_time = datetime.strptime( mutation['transactionTimestamp'], '%Y%m%d%H%M%S%f').replace(microsecond=0) timestamp = mutation_time.timestamp() if timestamp > last_asked_transaction_timestamp: last_timestamp = last_timestamp if last_timestamp > timestamp else timestamp is_debit = mutation['amount'] < 0 amount = "{0:.2f}".format( mutation['amount'] * -1 if is_debit else mutation['amount']) Transaction.insert( amount=amount, is_debit=is_debit, description=mutation['counterAccountName'], time=mutation_time).on_conflict('ignore').execute() if update is not None: update.update(last_transaction=last_timestamp).execute() else: Update.create(last_transaction=last_timestamp)
def review(book_title): if 'username' not in session: abort(401) error = None if request.method == 'POST': if not request.form['rating']: error = 'Please give this book a rating from 1 - 10' else: # update rating for book book = Book.query.filter_by(title=book_title).first() old_rating = book.rating if old_rating == 0: book.rating = request.form['rating'] book.num_ratings = 1 else: book.rating = round( ((old_rating * book.num_ratings) + int(request.form['rating'])) / (book.num_ratings + 1), 1) book.num_ratings += 1 db.session.add( Update('review', session['username'], book_title, request.form['content'], request.form['rating'], time.time())) db.session.commit() db.session.flush() flash("Submission successful") return redirect(url_for('timeline')) return render_template('review.html', book=Book.query.filter_by(title=book_title).first(), error=error)
def update_delete_page(update_id=None): u = Update.get_by_id(update_id) u.delete() if request.referrer: return redirect(request.referrer) else: return redirect('/')
def add_update(): name = request.args.get('name') message = request.args.get('message') try: update = Update(name=name, message=message) db.session.add(update) db.session.commit() return "Update added. Update id={}".format(update.id) except Exception as e: return (str(e))
def create_update(): if request.method == "POST": name = request.form.get('name') message = request.form.get('message') try: update = Update(name=name, message=message) db.session.add(update) db.session.commit() add_msg = "{}'s update was added! Id: {}".format( update.name, update.id) return redirect(url_for('hello')) except Exception as e: return (str(e)) return render_template("add_update.html")
def begin(book_title): if 'username' not in session: abort(401) error = None user = User.query.filter_by(username=session['username']).first() book = Book.query.filter_by(title=book_title).first() if not user: abort(404) user.reading = book_title db.session.add( Update('reading', session['username'], book_title, None, None, time.time())) db.session.commit() db.session.flush() flash('Enjoy \"' + book_title + '\"!') return redirect(url_for('timeline'))
def add_member(request,shaastra_id = None,teamevent_id = None): dajax = Dajax() dajax.script("$(\'#dashboard #loading_dash_dajax\').hide();") if not request.user.is_authenticated(): dajax.script('$.bootstrapGrowl("Login First",{type:"danger",delay:10000})') return dajax.json() if teamevent_id is None or shaastra_id is None: dajax.script('$.bootstrapGrowl("Invalid request",{type:"danger",delay:10000})') return dajax.json() try: teamevent = TeamEvent.objects.get(id = teamevent_id) print shaastra_id user = UserProfile.objects.get(shaastra_id = shaastra_id).user if request.user not in teamevent.users.all(): dajax.script('$.bootstrapGrowl("Invalid request: user not part of team",{type:"danger",delay:10000})') #Malicious attempt!? return dajax.json() if user in teamevent.users.all(): dajax.script('$.bootstrapGrowl("Invalid request: User is already on the team, you cannot add again.",{type:"danger",delay:10000})') return dajax.json() #User cannot be added if on another team msg,team_name = has_team(user,teamevent.event_id) if msg == 'has_team': dajax.script('$.bootstrapGrowl("Invalid request: User is already on another team for this event. Multiple entries are prohibited. ",{type:"danger",delay:10000})') return dajax.json() #The below statement will not be used, but, for malicious attempts to modify input params, we need it if user.username == request.user.username: dajax.script('$.bootstrapGrowl("Invalid request: You are already on the team.",{type:"danger",delay:10000})') return dajax.json() if teamevent.size() == teamevent.get_event().team_size_max: dajax.script('$.bootstrapGrowl("Sorry. Add member failed.You cannot have more than %s team members in your team.",{type:"danger",delay:10000})'% teamevent.get_event().team_size_min) return dajax.json() teamevent.users.add(user) teamevent.save() msg_update = 'Teammate %s was add to team %s for event %s on %s by %s'%(user.get_full_name(),teamevent.team_name,teamevent.get_event().title,str(timezone.now()),request.user.get_full_name()) for user_team in teamevent.users.all(): if not user_team.username == user.username: update = Update(tag = 'Team Edit',content = msg_update,user = user_team) update.save() msg_update_user = '******'%(teamevent.team_name,teamevent.get_event().title,str(timezone.now()),user.get_full_name()) update = Update(tag = 'Team Add',content = msg_update_user,user = user) update.save() dajax.script('$.bootstrapGrowl("Addition success! %s has been added as a member of team %s",{type:"info",delay:10000,width:"auto"})'% (user.get_full_name(),teamevent.team_name)) #TODO: Update create html_stuff = render_to_string('dashboard/welcome.html',{},RequestContext(request)) if html_stuff: dajax.assign('#content_dash','innerHTML',html_stuff) return dajax.json() except: dajax.script('$.bootstrapGrowl("Invalid request. Check Shaastra ID entered",{type:"danger",delay:10000})') return dajax.json() return dajax.json()
def submit(): """ Process the form and persist the filtered dates to the database """ form = MyForm() if form.validate_on_submit(): filtered_dates = process_form(form) for filtered_date in filtered_dates: update = Update.query.filter_by(date=filtered_date).filter_by(room_type = (form.room_type.data == 'double')).first() if update: update.price = form.price.data else: update = Update(form.price.data,form.availability.data,filtered_date,form.room_type.data == 'double') db.session.add(update) db.session.commit() return redirect('/success') return render_template('submit.html', title='Update',form=form)
def addEvents(): xml = getXML() updateHour = datetime.datetime.now() entry = Update(hour=updateHour) entry.save() content = xml.findAll("contenido") numEvents = len(content) for line in content: (title, dateTime, hourEnd, price, eventType, duration, description, url) = getEvent(line) entry = Event(title=title, date=dateTime, dateEnd=hourEnd, price=price, eventType=eventType, duration=duration, description=description, url=url, likes=0) entry.save()
def get_updates(self): scraper = cloudscraper.create_scraper() url = self.url + 'updates' updates_raw = BeautifulSoup(scraper.get(url).content, 'lxml') updates_html = updates_raw.select('li.novel-item > a') updates = [] for item in updates_html: title = item.find('h4').text.strip() latest = item.find('h5').text.strip() last_update = item.select('div.novel-stats > span')[0].text.strip() rank = item.select('div.novel-stats > span')[1].text.strip() updates.append(Update(title, latest, last_update, rank)) return updates
def digest_page(digest_id=None): digest = Digest.get_by_id(digest_id) user = digest.user places = [x.place for x in user.places_subscribed.order('-place')] updates = {} for p in places: place_updates = Update.all() place_updates = place_updates.filter('place =', p) place_updates = place_updates.order('-added_at') place_updates = place_updates.filter('added_at <', digest.created_at) if digest.previous_digest_at: place_updates = place_updates.filter('added_at >', digest.previous_digest_at) updates[p.key().id()] = list(place_updates.run(limit=10)) return render_template( "digest.html", user=user, places=places, digest=digest, updates=updates )
def user_updates_page(user_id=None): user = User.get_by_id(user_id) places = [x.place for x in user.places_subscribed.order('-place')] digests = list(Digest.all().filter('user ='******'-created_at').run(limit=5)) if digests: last_digest = digests[0] else: last_digest = None updates = {} for p in places: place_updates = Update.all() place_updates = place_updates.filter('place =', p) place_updates = place_updates.order('-added_at') if last_digest: place_updates = place_updates.filter('added_at >', last_digest.created_at) updates[p.key().id()] = list(place_updates.run(limit=10)) return render_template( "user.html", user=user, places=places, digests=digests, last_digest=last_digest, updates=updates )
def remove_member(request,user_id = None,teamevent_id = None): dajax = Dajax() dajax.script("$(\'#dashboard #loading_dash_dajax\').hide();") if not request.user.is_authenticated(): dajax.script('$.bootstrapGrowl("Login First",{type:"danger",delay:10000})') return dajax.json() if teamevent_id is None or user_id is None: dajax.script('$.bootstrapGrowl("Invalid request",{type:"danger",delay:10000})') return dajax.json() try: teamevent = TeamEvent.objects.get(id = teamevent_id) user = User.objects.get(id = user_id) if user not in teamevent.users.all() or request.user not in teamevent.users.all(): dajax.script('$.bootstrapGrowl("Invalid request: user not part of team",{type:"danger",delay:10000})') #Malicious attempt!? return dajax.json() if teamevent.size() == teamevent.get_event().team_size_min: dajax.script('$.bootstrapGrowl("Sorry. Remove failed.You cannot have less than %s team members",{type:"danger",delay:10000})'% teamevent.get_event().team_size_min) return dajax.json() teamevent.users.remove(user) teamevent.save() msg_update = 'Your teammate %s was removed from team %s for event %s on %s by %s'%(user.get_full_name(),teamevent.team_name,str(timezone.now()),request.user.get_full_name()) for user_team in teamevent.users.all(): update = Update(tag = 'Team Edit',content = msg_update,user = user_team) update.save() msg_update_user = '******'%(teamevent.team_name,teamevent.get_event().title,str(timezone.now()),request.user.get_full_name()) update = Update(tag = 'Team Remove',content = msg_update_user,user = user) update.save() dajax.script('$.bootstrapGrowl("Removal succesrs! %s is no longer a member of team %s",{type:"info",delay:10000,width:"auto"})'% (user.get_full_name(),teamevent.team_name)) #TODO: Update create msg_dash = "Removal success! %s is no longer a member of team %s"% (user.get_full_name(),teamevent.team_name) html_stuff = render_to_string('dashboard/welcome.html',{'msg_dash':msg_dash},RequestContext(request)) if html_stuff: dajax.assign('#content_dash','innerHTML',html_stuff) return dajax.json() except: dajax.script('$.bootstrapGrowl("Invalid request. ",{type:"danger",delay:10000})') return dajax.json() return dajax.json()
def add_rating(self, user_id, movie_id, value): self.send_update(Update(user_id, movie_id, value))
def register_event(request,event_id=None,team_name=None,**kwargs): dajax=Dajax() if event_id is None or team_name is None: dajax.script('$.bootstrapGrowl("Invalid entry",{type:"danger",delay:10000})') return dajax.json() i=1 shalist=[] erp_db = DATABASES.keys()[1] try: event=ParticipantEvent.objects.using(erp_db).get(id=event_id) if not event.registrable_online: dajax.script('$.bootstrapGrowl("Invalid event: can\'t register online!",{type:"danger",delay:10000})') #TODO: close the modal!! return dajax.json() except: dajax.script('$.bootstrapGrowl("Invalid event",{type:"danger",delay:10000})') return dajax.json() teamevent = TeamEvent(event_id=event.id) profile = UserProfile.objects.get(user=request.user) sha='' while 1>0: try: sha = kwargs['teammate#%d' % i] if sha!='': if sha==profile.shaastra_id: dajax.script('$.bootstrapGrowl("Enter your teammates\' ID\'s only. You will be registered automatically. You do no need to enter your ID",{type:"danger",delay:10000})') return dajax.json() shalist.append(sha) except: break i=i+1 #check for duplicates #TODO: find actual entries first(without '') if len(shalist)!=len(set(shalist)): dajax.script('$.bootstrapGrowl("No duplicate entries allowed.",{type:"danger",delay:10000})') return dajax.json() if len(shalist) < event.team_size_min-1: dajax.script('$.bootstrapGrowl("Minimum team size:%d!",{type:"danger",delay:10000})'% event.team_size_min) return dajax.json() msg,teamname = has_team(request.user,event.id) if msg =='has_team': dajax.script('$.bootstrapGrowl("You are already a part of another team named %s for this event.");$.bootstrapGrowl("A user can be part of only 1 team for an event",{type:"danger",delay:20000});'% (teamname)) return dajax.json() userlist=[] userlist.append(request.user) up=None for sha in shalist: try: up = UserProfile.objects.get(shaastra_id = sha) msg,teamname = has_team(up.user,event.id) if msg =='has_team': dajax.script('$.bootstrapGrowl("One of your teammates: with id %s is already in another team named %s for this event.");$.bootstrapGrowl("A user can be part of only 1 team for an event",{type:"danger",delay:20000});'% (up.shaastra_id,teamname)) return dajax.json() userlist.append(up.user) except: dajax.script('$.bootstrapGrowl("One/more of shaastra id\'s entered are invalid!",{type:"danger",delay:20000})') return dajax.json() teamevent.save() teamevent.users=userlist teamevent.is_active = True teamevent.team_name = team_name teamevent.save() try: for user in userlist: update = Update(tag='Event registration',content='Added to team: %s in event %s'%(teamevent.team_name,teamevent.get_event().title),user=user) update.save() #TODO: updates should not cause error except: pass dajax.script('$.bootstrapGrowl("Your team was registered successfully to event %s",{type:"success",delay:30000})'% event.title) dajax.script('$.bootstrapGrowl("Your team ID: %s",{type:"success",delay:100000})'% teamevent.team_id) dajax.script('$("#event_register").modal("toggle")') enddate = teamevent.get_event().registration_ends dajax.script('$.bootstrapGrowl("Please note the deadline for the event given in event details.", {delay:100000} );') dajax.script('$("#fb_share").modal("show");') #TODO: create updates for other users and him return dajax.json()
def sermon_needs_update(self, request): # The 1 is the number it is within the request message. Not sure why it is one indexed? update = Update() update.needs_update = updates.get_last_sermon_time() > DateTimeField(1).value_from_message(request) return update