コード例 #1
0
ファイル: abn.py プロジェクト: MegaCookie/abn-telegram
    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)
コード例 #2
0
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)
コード例 #3
0
ファイル: main.py プロジェクト: gromadco/locograph
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('/')
コード例 #4
0
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))
コード例 #5
0
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")
コード例 #6
0
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'))
コード例 #7
0
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()
コード例 #8
0
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)
コード例 #9
0
ファイル: views.py プロジェクト: LauraArteaga/2015-sat-final
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()
コード例 #10
0
ファイル: parsers.py プロジェクト: Groovin-Dev/lnw-to-epub
    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
コード例 #11
0
ファイル: main.py プロジェクト: gromadco/locograph
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
    )
コード例 #12
0
ファイル: main.py プロジェクト: gromadco/locograph
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
    )
コード例 #13
0
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()
コード例 #14
0
 def add_rating(self, user_id, movie_id, value):
     self.send_update(Update(user_id, movie_id, value))
コード例 #15
0
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()
コード例 #16
0
 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