Beispiel #1
0
def _CleanEntryBase(feed_entity, entry_feedparser, content, original_content):
    try:
        updated = datetime.datetime(*entry_feedparser.updated_parsed[:6])
    except AttributeError:
        updated = datetime.datetime.now()

    try:
        tags = [c['term'] for c in entry_feedparser.tags]
    except (AttributeError, KeyError):
        tags = []

    try:
        title = entry_feedparser.title.replace('\n', '').replace('\r', '')
    except AttributeError:
        title = 'Unknown'

    try:
        link = entry_feedparser.link
    except AttributeError:
        link = 'Unknown'

    entry_entity = models.Entry(key_name=_EntryId(entry_feedparser),
                                feed=feed_entity,
                                title=title,
                                link=link,
                                updated=updated,
                                content=content,
                                original_content=original_content,
                                tags=tags)
    entry_entity.put()
Beispiel #2
0
def create_entry(feed, parsed_data):
    "Creates a models.Entry object from the given parsed data and links it to the given models.Feed object"
    logger.debug("creating entry")
    entry = models.Entry(**parsed_data)
    entry.feed = feed
    entry.save()
    return entry
Beispiel #3
0
def create():
    topics = models.Topic.query.all()
    tags = models.Tag.query.all()
    return _create_or_edit(models.Entry(title='', content=''),
                           'create.html',
                           topics=topics,
                           tags=tags)
Beispiel #4
0
def add_entry():
    try:
        entry = models.Entry(request.form['address'], request.form['ssn'])
    except:
        raise
    REGISTRY.append(entry)
    flash('New entry was successfully posted')
    return redirect(flask.url_for('show_entries'))
Beispiel #5
0
def add_entry():
    if not session.get('logged_in'):
        abort(401)
    entry = models.Entry(request.form['title'], request.form['text'])
    db_session.add(entry)
    db_session.commit()

    print db_session.session_factory
    flash('New entry was succesfully posted')
    return redirect(url_for('show_entries'))
Beispiel #6
0
def add_article():
    form = forms.Add_Atricle()
    if form.validate_on_submit():
        atricle = models.Entry(title=form.title.data,
                               description=form.description.data,
                               content=form.content.data)
        db.session.add(atricle)
        db.session.commit()
        return redirect(url_for('index'))
    return render_template('add_article.html', form=form)
Beispiel #7
0
 def _new_entry(self, parsed):
     return models.Entry(
         content=parsed.content[0].value,
         id=parsed.id,
         title=parsed.title,
         summary=self._summary_as_plaintext(parsed.summary),
         tags=[x.term for x in parsed.tags],
         # 9-valued tuple: ( year, month, day, hour, minute, second, day of week, day of year, dst-flag )
         # (Ref: http://stackoverflow.com/questions/686717/python-convert-9-tuple-utc-date-to-mysql-datetime-format)
         published_at=datetime.datetime(*(parsed.published_parsed[:6])))
Beispiel #8
0
def create_entry(entry: schemas.EntryCreate, db: Session):
    new_entry = models.Entry(entry_type=entry.entry_type,
                             duration=entry.duration,
                             wee=entry.wee,
                             poo=entry.poo,
                             full=entry.full,
                             notes=entry.notes)
    db.add(new_entry)
    db.commit()
    db.refresh(new_entry)

    return new_entry
Beispiel #9
0
    def post(self):

        post_values = self.request.POST

        posted_date = datetime.datetime.strptime(post_values["date"],
                                                 "%Y-%m-%d")
        posted_units = float(post_values["units"])
        entry = models.Entry(date=posted_date, units=posted_units)
        entry.put()
        # delay to hack eventual consistency of ndb
        time.sleep(1)

        self.redirect('/')
Beispiel #10
0
def edit_entry(slug=None):
    if slug:
        entry = models.Entry.get(models.Entry.title == string.capwords(slug))
        tag_query = (models.Tag
                     .select()
                     .join(models.TagList)
                     .join(models.Entry)
                     .where(models.Entry.title == entry.title))
        title = 'Edit Entry'
    else:
        entry = models.Entry()
        tag_query = []
        title = 'Add Entry'

    form = forms.EntryForm(obj=entry)
    tags = ", ".join([tag.name.title() for tag in tag_query])

    if form.validate_on_submit():
        form.populate_obj(entry)

        entry.title = string.capwords(form.title.data)
        entry.date_created = form.date_created.data
        entry.time_spent = form.time_spent.data
        entry.learned = form.learned.data
        entry.resources = form.resources.data

        entry.save()

        # Delete all tag lists already associated with model so data can overwrite
        tag_list_query = (models.TagList
                          .select()
                          .join(models.Entry)
                          .where(models.Entry.title == entry.title))
        for ls in tag_list_query:
            ls.delete_instance()

        # Create new tags if needed
        for tag in re.split(r'[\s,]+', form.tags.data):
            tag_name = tag.replace(",", "").title()

            try:
                new_tag = models.Tag.get(models.Tag.name == tag_name)
            except models.DoesNotExist:
                new_tag = models.Tag.create(name=tag_name)

            models.TagList.create(tag=new_tag, entry=entry)

        return redirect(url_for('view_entry', slug=entry.title))

    return render_template('edit.html', form=form, title=title, tags=tags)
Beispiel #11
0
def create_entry(entries: List[schema.Entry]):

    db_entries = []
    for entry in entries:
        db_entry = models.Entry(
            goal_id=entry.goal_id,
            date=entry.date,
            tracked=entry.tracked,
            amount=entry.amount,
        )
        db.session.add(db_entry)
        db.session.commit()
        db_entries.append(db_entry)
    return db_entries
Beispiel #12
0
def new_entry():
    content = request.get_json()
    if valid_entry(content):
        new_entry = models.Entry(
            entry_date=content.get('entry_date'),
            value=content.get('value'),
            account=content.get('account'),
            tags=content.get('tags'),
            description=content.get('description'),
        )
        new_entry.save()
        return jsonify(**new_entry.to_dict()), 201
    else:
        return jsonify({'status': 'Bad Request'}), 400
Beispiel #13
0
def _CleanEntryBase(feed_entity, entry_feedparser, content, original_content):
  try:
    updated = datetime.datetime(*entry_feedparser.updated_parsed[:6])
  except AttributeError:
    updated = datetime.datetime.now()
  entry_entity = models.Entry(
      key_name=_EntryId(entry_feedparser),
      feed=feed_entity,
      title=entry_feedparser.title.replace('\n', '').replace('\r', ''),
      link=entry_feedparser.link,
      updated=updated,
      content=content,
      original_content=original_content)
  entry_entity.put()
Beispiel #14
0
def add():
    """Creates new entry from data provided in AddEntryForm"""
    form = forms.AddEntryForm()
    if form.validate_on_submit():
        # creates new entry with data inputed in form by user
        try:
            entry = models.Entry()
            update_from_form(entry, form)
        except models.IntegrityError:
            flash("The entry with that title already exists", "error")
            return redirect(url_for('add'))

        # creates or gets tags inputed in form and
        # creates their relationship with entry
        tags_from_string(form.tags.data, entry)
        flash("New entry successfully made", "success")
        return redirect(url_for('index'))
    return render_template('new.html', title="New Entry", form=form)
Beispiel #15
0
def api():
    auth = request.headers.get('Authorization')
    if auth != app.config['APIKEY']:
        return json.dumps({'success': False, 'message': 'Not authorized'}), 400
    data = request.get_json(force=True)
    if not data:
        return json.dumps({'success': False, 'message': 'JSON data not found '
                           'or mimetype not set'}), 400
    try:
        entry = m.Entry(
            username=data.get('username'),
            entry_type=data.get('type'),
            entry_text=data.get('text')
        )
    except m.ValidationError:
        return json.dumps({'success': False, 'message': 'Validation error with'
                          ' the data provided'}), 400
    db.session.add(entry)
    db.session.commit()
    return json.dumps({'success': True})
def new_view():
    """
    The new view returns a page allowing a new entry to be
    created
    """
    if request.method == 'POST':
        # Now we get the "posted" inputs from the webpage
        # and add them back into the entry
        entry = models.Entry(
            title=request.form['title'],
            date=datetime.datetime.fromisoformat(
                request.form['date']),
            time_spent=request.form['time_spent'],
            learned=request.form['learned'],
            resources=request.form['resources'],
            tags=request.form['tags']
        )
        entry.save()
        return redirect('/entries/{}'.format(entry.slug))
    return render_template("new.html")
Beispiel #17
0
def get_entry_from_request(request):
    if decode(request.get("type")) == "product":
        dependency = models.Entry.get(decode(request.get("dependency")))
        due_on = dependency.due_on
    else:
        due_on = iso_to_date(decode(request.get("due_on")))
    entry = models.Entry(
        name=decode(request.get("name")),
        notes=decode(request.get("notes")),
        impact=decode(request.get("impact")),
        project=models.Project.get(decode(request.get("project"))),
        due_on=due_on,
        type=decode(request.get("type")),
        prod_design_doc=decode(request.get("prod_design_doc")),
        eng_design_doc=decode(request.get("eng_design_doc")),
        mktg_doc=decode(request.get("mktg_doc")))
    if entry.type == "product":
        entry.dependency = models.Entry.get(decode(request.get("dependency")))
    elif entry.type == "platform" and decode(request.get("prelude_to")):
        entry.prelude_to = models.Entry.get(decode(request.get("prelude_to")))
    return entry
Beispiel #18
0
    def insert_entry(self, entry, taxids):
        """
        insert UniProt entry"

        :param entry: XML node entry
        :param taxids: int,tuple,list taxids: NCBI taxonomy IDs
        :return:
        """
        entry_dict = entry.attrib
        entry_dict['created'] = datetime.strptime(entry_dict['created'],
                                                  '%Y-%m-%d')
        entry_dict['modified'] = datetime.strptime(entry_dict['modified'],
                                                   '%Y-%m-%d')

        #print(entry_dict['created'])

        taxid = self.get_taxid(entry)

        if taxids is None or taxid in taxids:
            #entry_dict = self.update_entry_dict(entry, entry_dict, taxid)
            entry_obj = models.Entry(**entry_dict)
            del entry_dict
Beispiel #19
0
def create():
    form = PostForm()
    if form.validate_on_submit():
        image_id = None

        if form.featured_image.data:
            f = form.featured_image.data
            image_id = str(uuid.uuid4())
            file_name = image_id + '.png'
            file_path = os.path.join(app.config['UPLOAD_FOLDER'], file_name)
            Image.open(f).save(file_path)

        duplicate_title = False
        all_post = models.Entry.query.all()
        serialized_data = [data.serialize() for data in all_post]
        for i in serialized_data:
            if form.title.data == i['title']:
                duplicate_title = True
                break

        if duplicate_title:
            return 'Sorry, This Post title has already been used. Kindly use another'

        post = models.Entry(title=form.title.data,
                            subtitle=form.subtitle.data,
                            content=form.content.data,
                            author=current_user,
                            featured_image=image_id,
                            category=form.category.data)
        models.Entry.save(post)
        flash('Your post is now live!')
        return redirect(url_for('create'))
    return render_template("test.html",
                           form=form,
                           legend='New Post',
                           submit='Publish',
                           staff_id=current_user.id)
Beispiel #20
0
    def test_one_entry(self):
        e = models.Entry(title='Test', text='Test text')
        e.put()

        rv = self.app.get('/')
        assert 'No entries here so far' not in rv.data
Beispiel #21
0
def paypal_notification():
    ''' Listener for PayPal notification '''
    notification = request.form.to_dict()

    notification['cmd'] = '_notify-validate'
    headers = {
        'content-type': 'application/x-www-form-urlencoded',
        'host': 'www.paypal.com'
    }
    validation_response = requests.post(
        PAYPAL_PRODUCTION,
        data=notification,
        headers=headers,
        verify=True)
    validation_response.raise_for_status()

    valid_txn_types = ('subscr_payment', 'web_accept', )
    txn_type = notification.get('txn_type')
    if validation_response.text == 'VERIFIED' and txn_type in valid_txn_types:
        full_name = ' '.join([
            notification.get('first_name', ''),
            notification.get('last_name', ''),
        ])
        value = notification.get('mc_gross', '0')
        tax_value = '-{}'.format(notification.get('mc_fee', '0'))

        payment_date = notification.get('payment_date', '')
        match = re.findall('[A-Za-z]{3} [0-9]{2}, [0-9]{4}', payment_date)
        if match:
            raw_payment_date = match.pop()
            entry_date = datetime.datetime.strptime(raw_payment_date, '%b %d, %Y')
            entry_date = entry_date.strftime('%Y-%m-%d')

        account = '_paypal'
        description = '{} - {}'.format(
            notification.get('item_name'),
            full_name)
        tax_description = 'Taxa - {}'.format(description)

        tags_map = {
            'camiseta-30': 'camisetas',
            'lhc-85': 'mensalidade',
            'lhc-110': 'mensalidade',
            'lhc-60': 'mensalidade',
            'lhc-30': 'contribuicao',
            'doacao-lhc': 'doacao',
        }
        tags = tags_map.get(notification.get('item_number', ''), '')

        entry = models.Entry(
            entry_date=entry_date,
            value=value,
            account=account,
            tags=tags,
            description=description
        )
        entry.save()

        tax_entry = models.Entry(
            entry_date=entry_date,
            value=tax_value,
            account=account,
            tags='taxa,{}'.format(tags),
            description=tax_description
        )
        tax_entry.save()

    return ''
Beispiel #22
0
 def test_entry(self):
     m = models.Entry(title='Test', text='Test entry text')
     m.put()
     self.assertIsNotNone(m.last_updated_date)
Beispiel #23
0
import os
import flask
from flask import request, session
from flask import redirect, flash

import models

REGISTRY = [
    models.Entry('0x0001', 'NL-123456789'),
    models.Entry('0x0002', 'NL-198854321'),
    models.Entry('0x0003', 'NL-987654321'),
]

app = flask.Flask(__name__)
app.config.from_object(__name__)  # load config from this file

# Session key
app.config.update(dict(SECRET_KEY='development key'))

# skip DB setup for now
#app.config.update(dict(
#DATABASE=os.path.join(app.root_path, 'flaskr.db'),
#USERNAME='******',
#PASSWORD='******'
#))
# Optional environment settings
app.config.from_envvar('MOCKUP_SETTINGS', silent=True)


@app.route('/favicon.ico')
def favicon():
Beispiel #24
0
def add_entry():
    entry = models.Entry(title=flask.request.form['title'],
                         text=flask.request.form['text'])
    entry.put()
    flask.flash('New entry was successfully posted')
    return flask.redirect(flask.url_for('show_entries'))
    """Prepopulate New Entry form with data from database in
    edit.html template and submit changes to database"""
    entry = models.Entry.get(models.Entry.id == entry_id)
    form = forms.EntryForm(obj=entry)
    if form.validate_on_submit():
        models.Entry.update(
            title=form.title.data.strip(),
            date=form.date.data,
            time_spent=form.time_spent.data.strip(),
            resources_to_remember=form.resources_to_remember.data.strip(),
            what_i_learned=form.what_i_learned.data.strip()).where(
                models.Entry.id == entry_id).execute()
        flash("Message posted! Thanks!", "success")
        return redirect(url_for('entries'))
    return render_template('edit.html', form=form)


@app.route('/entries/delete/<int:entry_id>')
def delete_entry(entry_id):
    """Delete entry from database by clicking on hyperlink"""
    models.Entry.get(models.Entry.id == entry_id).delete_instance()
    return redirect(url_for('entries'))


if __name__ == '__main__':
    try:
        models.Entry().initialize()
    except ValueError:
        pass
    app.run(debug=DEBUG, host=HOST, port=PORT)