From 76d08a7326e8ab2273a4f9d2018c2d8b4a606b13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Kowalski?= Date: Tue, 12 Jul 2016 11:55:55 +0200 Subject: [PATCH 1/7] Modal added --- .../super_admin/pages/_create_page_modal.html | 66 +++++++++++++++++ .../admin/super_admin/pages/pages.html | 71 ++++++++++--------- 2 files changed, 102 insertions(+), 35 deletions(-) create mode 100644 open_event/templates/gentelella/admin/super_admin/pages/_create_page_modal.html diff --git a/open_event/templates/gentelella/admin/super_admin/pages/_create_page_modal.html b/open_event/templates/gentelella/admin/super_admin/pages/_create_page_modal.html new file mode 100644 index 0000000000..a142d03ac2 --- /dev/null +++ b/open_event/templates/gentelella/admin/super_admin/pages/_create_page_modal.html @@ -0,0 +1,66 @@ + + diff --git a/open_event/templates/gentelella/admin/super_admin/pages/pages.html b/open_event/templates/gentelella/admin/super_admin/pages/pages.html index 0b154cff64..fc43f62e1d 100644 --- a/open_event/templates/gentelella/admin/super_admin/pages/pages.html +++ b/open_event/templates/gentelella/admin/super_admin/pages/pages.html @@ -24,43 +24,44 @@ {% block content %} -
-
-

Pages

-
-
    -
  • /how_it_works
  • -
  • /pricing
  • -
  • /mobile_apps
  • -
  • /sitemaps
  • -
  • /about
  • -
-
-
-
-
- - -
-
- - -
-
- - -
-
- - -
+
+
+

Pages

+
+
    +
  • /how_it_works
  • +
  • /pricing
  • +
  • /mobile_apps
  • +
  • /sitemaps
  • +
  • /about
  • +
+
+
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
- + +
-
+ {% include 'gentelella/admin/super_admin/pages/_create_page_modal.html' %} {% endblock %} {% block tail_js %} From f7830d423d373e841510fd5661516ce80340d448 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Kowalski?= Date: Tue, 12 Jul 2016 13:26:17 +0200 Subject: [PATCH 2/7] models pages added --- open_event/helpers/data.py | 5 + open_event/helpers/data_getter.py | 6 + open_event/models/page.py | 40 +++++++ .../super_admin/pages/_create_page_modal.html | 104 ++++++++---------- .../admin/super_admin/pages/pages.html | 24 ++-- open_event/views/admin/super_admin/pages.py | 12 +- 6 files changed, 119 insertions(+), 72 deletions(-) create mode 100644 open_event/models/page.py diff --git a/open_event/helpers/data.py b/open_event/helpers/data.py index deb9e6cec1..5c380a6f2b 100644 --- a/open_event/helpers/data.py +++ b/open_event/helpers/data.py @@ -50,6 +50,7 @@ from ..models.user import User, ORGANIZER from ..models.user_detail import UserDetail from ..models.users_events_roles import UsersEventsRoles +from ..models.page import Page class DataManager(object): @@ -1343,6 +1344,10 @@ def update_user_event_role(form, uer): save_to_db(uer, "Event saved") record_activity('update_role', role=role, user=user, event_id=uer.event_id) + @staticmethod + def create_page(form): + page = Page(**form) + save_to_db(page, "Page created") def save_to_db(item, msg="Saved to db", print_error=True): """Convenience function to wrap a proper DB save diff --git a/open_event/helpers/data_getter.py b/open_event/helpers/data_getter.py index 8df5e61ea5..a6cece43ce 100644 --- a/open_event/helpers/data_getter.py +++ b/open_event/helpers/data_getter.py @@ -28,6 +28,7 @@ from ..models.mail import Mail from ..models.activity import Activity from ..models.setting import Setting +from ..models.page import Page from .language_list import LANGUAGE_LIST from .static import EVENT_TOPICS, EVENT_LICENCES from open_event.helpers.helpers import get_event_id @@ -580,3 +581,8 @@ def get_upcoming_events(event_id): .filter(Event.start_time >= datetime.datetime.now()).filter(Event.end_time >= datetime.datetime.now()) \ .filter(Event.in_trash == False) + @staticmethod + def get_all_pages(): + return Page.query.all() + + diff --git a/open_event/models/page.py b/open_event/models/page.py new file mode 100644 index 0000000000..2fd541f633 --- /dev/null +++ b/open_event/models/page.py @@ -0,0 +1,40 @@ +"""Copyright 2016 Rafal Kowalski""" +from . import db + + +class Page(db.Model): + """Page model class""" + __tablename__ = 'pages' + id = db.Column(db.Integer, primary_key=True) + name = db.Column(db.String, nullable=False) + title = db.Column(db.String) + url = db.Column(db.String, nullable=False) + description = db.Column(db.String) + place = db.Column(db.String) + def __init__(self, name=None,title=None, description=None, url=None, place=None): + self.name = name + self.description = description + self.title = title + self.url = url + self.place = place + + def __repr__(self): + return '' % self.name + + def __str__(self): + return unicode(self).encode('utf-8') + + def __unicode__(self): + return self.name + + @property + def serialize(self): + """Return object data in easily serializeable format""" + return { + 'id': self.id, + 'name': self.name, + 'description': self.description, + 'title': self.title, + 'url': self.url, + 'place': self.place + } diff --git a/open_event/templates/gentelella/admin/super_admin/pages/_create_page_modal.html b/open_event/templates/gentelella/admin/super_admin/pages/_create_page_modal.html index a142d03ac2..ea6c2b525e 100644 --- a/open_event/templates/gentelella/admin/super_admin/pages/_create_page_modal.html +++ b/open_event/templates/gentelella/admin/super_admin/pages/_create_page_modal.html @@ -1,66 +1,52 @@ - diff --git a/open_event/templates/gentelella/admin/super_admin/pages/pages.html b/open_event/templates/gentelella/admin/super_admin/pages/pages.html index fc43f62e1d..f1d0f71a88 100644 --- a/open_event/templates/gentelella/admin/super_admin/pages/pages.html +++ b/open_event/templates/gentelella/admin/super_admin/pages/pages.html @@ -29,32 +29,34 @@

Pages

    -
  • /how_it_works
  • -
  • /pricing
  • -
  • /mobile_apps
  • -
  • /sitemaps
  • -
  • /about
  • + {% for page in pages %} +
  • {{page.url}}
  • + {% endfor %}
+
+ + +
- +
- +
- +
- + +
diff --git a/open_event/views/admin/super_admin/pages.py b/open_event/views/admin/super_admin/pages.py index 9756297b23..c65cc29b01 100644 --- a/open_event/views/admin/super_admin/pages.py +++ b/open_event/views/admin/super_admin/pages.py @@ -1,8 +1,16 @@ +from flask import redirect, request, url_for from flask_admin import expose from open_event.views.admin.super_admin.super_admin_base import SuperAdminBaseView - +from ....helpers.data_getter import DataGetter +from ....helpers.data import DataManager class SuperAdminPagesView(SuperAdminBaseView): @expose('/') def index_view(self): - return self.render('/gentelella/admin/super_admin/pages/pages.html') + pages = DataGetter.get_all_pages() + return self.render('/gentelella/admin/super_admin/pages/pages.html', pages=pages) + + @expose('/create', methods=['POST']) + def create_view(self): + DataManager.create_page(request.form) + return redirect(url_for('sadmin_pages.index_view')) From 7a212c306585af217fac913e7cb5ef16f47c171c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Kowalski?= Date: Tue, 12 Jul 2016 13:28:33 +0200 Subject: [PATCH 3/7] migrations added --- migrations/versions/047f7c3db184_.py | 63 ++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 migrations/versions/047f7c3db184_.py diff --git a/migrations/versions/047f7c3db184_.py b/migrations/versions/047f7c3db184_.py new file mode 100644 index 0000000000..ea579910dd --- /dev/null +++ b/migrations/versions/047f7c3db184_.py @@ -0,0 +1,63 @@ +"""empty message + +Revision ID: 047f7c3db184 +Revises: dd24d9e90809 +Create Date: 2016-07-12 11:28:08.051094 + +""" + +# revision identifiers, used by Alembic. +revision = '047f7c3db184' +down_revision = 'dd24d9e90809' + +from alembic import op +import sqlalchemy as sa +import sqlalchemy_utils +from sqlalchemy.dialects import postgresql + +def upgrade(): + ### commands auto generated by Alembic - please adjust! ### + op.create_table('pages', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('name', sa.String(), nullable=False), + sa.Column('title', sa.String(), nullable=True), + sa.Column('url', sa.String(), nullable=False), + sa.Column('description', sa.String(), nullable=True), + sa.Column('place', sa.String(), nullable=True), + sa.PrimaryKeyConstraint('id') + ) + op.drop_table('booked_ticket') + op.drop_table('ticket') + ### end Alembic commands ### + + +def downgrade(): + ### commands auto generated by Alembic - please adjust! ### + op.create_table('ticket', + sa.Column('id', sa.INTEGER(), server_default=sa.text(u"nextval('ticket_id_seq'::regclass)"), nullable=False), + sa.Column('name', sa.VARCHAR(), autoincrement=False, nullable=False), + sa.Column('description', sa.VARCHAR(), autoincrement=False, nullable=True), + sa.Column('quantity', sa.INTEGER(), autoincrement=False, nullable=False), + sa.Column('price', sa.INTEGER(), autoincrement=False, nullable=True), + sa.Column('sales_start', postgresql.TIMESTAMP(), autoincrement=False, nullable=False), + sa.Column('sales_end', postgresql.TIMESTAMP(), autoincrement=False, nullable=False), + sa.Column('min_order', sa.INTEGER(), autoincrement=False, nullable=True), + sa.Column('max_order', sa.INTEGER(), autoincrement=False, nullable=True), + sa.Column('event_id', sa.INTEGER(), autoincrement=False, nullable=True), + sa.ForeignKeyConstraint(['event_id'], [u'events.id'], name=u'ticket_event_id_fkey', ondelete=u'CASCADE'), + sa.PrimaryKeyConstraint('id', name=u'ticket_pkey'), + sa.UniqueConstraint('name', 'event_id', name=u'name_event_uc'), + postgresql_ignore_search_path=False + ) + op.create_table('booked_ticket', + sa.Column('id', sa.INTEGER(), nullable=False), + sa.Column('user_id', sa.INTEGER(), autoincrement=False, nullable=True), + sa.Column('ticket_id', sa.INTEGER(), autoincrement=False, nullable=True), + sa.Column('quantity', sa.INTEGER(), autoincrement=False, nullable=True), + sa.ForeignKeyConstraint(['ticket_id'], [u'ticket.id'], name=u'booked_ticket_ticket_id_fkey'), + sa.ForeignKeyConstraint(['user_id'], [u'user.id'], name=u'booked_ticket_user_id_fkey'), + sa.PrimaryKeyConstraint('id', name=u'booked_ticket_pkey'), + sa.UniqueConstraint('user_id', 'ticket_id', name=u'user_ticket_uc') + ) + op.drop_table('pages') + ### end Alembic commands ### From c09a0578a23131ecfc4c2fa2d6bd1da4a225dc5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Kowalski?= Date: Tue, 12 Jul 2016 14:11:51 +0200 Subject: [PATCH 4/7] adding pages fixed --- open_event/helpers/data.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/open_event/helpers/data.py b/open_event/helpers/data.py index 5c380a6f2b..a741bd3d8f 100644 --- a/open_event/helpers/data.py +++ b/open_event/helpers/data.py @@ -1346,7 +1346,9 @@ def update_user_event_role(form, uer): @staticmethod def create_page(form): - page = Page(**form) + + page = Page(name=form.get('name', ''), title=form.get('title', ''), description=form.get('description', ''), + url=form.get('url', ''), place=form.get('place', '')) save_to_db(page, "Page created") def save_to_db(item, msg="Saved to db", print_error=True): From e98418ca180a0d910decd88b8709eb8c2868883c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Kowalski?= Date: Tue, 12 Jul 2016 21:46:18 +0200 Subject: [PATCH 5/7] Edit page added --- open_event/helpers/data.py | 8 ++++++++ open_event/helpers/data_getter.py | 4 ++++ .../admin/super_admin/pages/pages.html | 16 ++++++++-------- open_event/views/admin/super_admin/pages.py | 12 ++++++++++++ 4 files changed, 32 insertions(+), 8 deletions(-) diff --git a/open_event/helpers/data.py b/open_event/helpers/data.py index a741bd3d8f..03144b2044 100644 --- a/open_event/helpers/data.py +++ b/open_event/helpers/data.py @@ -1351,6 +1351,14 @@ def create_page(form): url=form.get('url', ''), place=form.get('place', '')) save_to_db(page, "Page created") + def update_page(self, page, form): + page.name = form.get('name', '') + page.title = form.get('title', '') + page.description = form.get('description', '') + page.url = form.get('url', '') + page.place = form.get('place', '') + save_to_db(page, "Page updated") + def save_to_db(item, msg="Saved to db", print_error=True): """Convenience function to wrap a proper DB save :param item: will be saved to database diff --git a/open_event/helpers/data_getter.py b/open_event/helpers/data_getter.py index a6cece43ce..9d927e0421 100644 --- a/open_event/helpers/data_getter.py +++ b/open_event/helpers/data_getter.py @@ -585,4 +585,8 @@ def get_upcoming_events(event_id): def get_all_pages(): return Page.query.all() + @staticmethod + def get_page_by_id(page_id): + return Page.query.get(page_id) + diff --git a/open_event/templates/gentelella/admin/super_admin/pages/pages.html b/open_event/templates/gentelella/admin/super_admin/pages/pages.html index f1d0f71a88..c97770a3f4 100644 --- a/open_event/templates/gentelella/admin/super_admin/pages/pages.html +++ b/open_event/templates/gentelella/admin/super_admin/pages/pages.html @@ -30,36 +30,36 @@

Pages

    {% for page in pages %} -
  • {{page.url}}
  • +
  • {{page.url}}
  • {% endfor %}
- +
- +
- +
- +
- +
-
- +
diff --git a/open_event/views/admin/super_admin/pages.py b/open_event/views/admin/super_admin/pages.py index c65cc29b01..481cae4d27 100644 --- a/open_event/views/admin/super_admin/pages.py +++ b/open_event/views/admin/super_admin/pages.py @@ -14,3 +14,15 @@ def index_view(self): def create_view(self): DataManager.create_page(request.form) return redirect(url_for('sadmin_pages.index_view')) + + @expose('/', methods=['GET', 'POST']) + def details_view(self, page_id): + page = DataGetter.get_page_by_id(page_id) + if request.method == 'POST': + print request.form + DataManager().update_page(page, request.form) + return redirect(url_for('sadmin_pages.details_view', page_id=page_id )) + pages = DataGetter.get_all_pages() + return self.render('/gentelella/admin/super_admin/pages/pages.html', + pages=pages, + current_page=page) From 38f0d10364e919dd08b4e38b4656176d54fc0530 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Kowalski?= Date: Tue, 12 Jul 2016 22:03:04 +0200 Subject: [PATCH 6/7] Deleting event fixed --- .../gentelella/admin/super_admin/pages/pages.html | 10 +++++++++- open_event/views/admin/super_admin/pages.py | 8 +++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/open_event/templates/gentelella/admin/super_admin/pages/pages.html b/open_event/templates/gentelella/admin/super_admin/pages/pages.html index c97770a3f4..e6c8a8eee4 100644 --- a/open_event/templates/gentelella/admin/super_admin/pages/pages.html +++ b/open_event/templates/gentelella/admin/super_admin/pages/pages.html @@ -30,11 +30,18 @@

Pages

+ {% if current_page %}
@@ -61,6 +68,7 @@

Pages

+ {% endif %}
{% include 'gentelella/admin/super_admin/pages/_create_page_modal.html' %} diff --git a/open_event/views/admin/super_admin/pages.py b/open_event/views/admin/super_admin/pages.py index 481cae4d27..dc350ff63d 100644 --- a/open_event/views/admin/super_admin/pages.py +++ b/open_event/views/admin/super_admin/pages.py @@ -2,7 +2,7 @@ from flask_admin import expose from open_event.views.admin.super_admin.super_admin_base import SuperAdminBaseView from ....helpers.data_getter import DataGetter -from ....helpers.data import DataManager +from ....helpers.data import DataManager, delete_from_db class SuperAdminPagesView(SuperAdminBaseView): @expose('/') @@ -26,3 +26,9 @@ def details_view(self, page_id): return self.render('/gentelella/admin/super_admin/pages/pages.html', pages=pages, current_page=page) + + @expose('//trash', methods=['GET']) + def trash_view(self, page_id): + page = DataGetter.get_page_by_id(page_id) + delete_from_db(page, "Page has already deleted") + return redirect(url_for('sadmin_pages.index_view')) From c98f3ff537c74b8aae22ddc1f55529f92a6244af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Kowalski?= Date: Tue, 12 Jul 2016 23:35:02 +0200 Subject: [PATCH 7/7] migrations fixed --- migrations/versions/047f7c3db184_.py | 28 ---------------------------- 1 file changed, 28 deletions(-) diff --git a/migrations/versions/047f7c3db184_.py b/migrations/versions/047f7c3db184_.py index ea579910dd..f4cce8f1b8 100644 --- a/migrations/versions/047f7c3db184_.py +++ b/migrations/versions/047f7c3db184_.py @@ -26,38 +26,10 @@ def upgrade(): sa.Column('place', sa.String(), nullable=True), sa.PrimaryKeyConstraint('id') ) - op.drop_table('booked_ticket') - op.drop_table('ticket') ### end Alembic commands ### def downgrade(): ### commands auto generated by Alembic - please adjust! ### - op.create_table('ticket', - sa.Column('id', sa.INTEGER(), server_default=sa.text(u"nextval('ticket_id_seq'::regclass)"), nullable=False), - sa.Column('name', sa.VARCHAR(), autoincrement=False, nullable=False), - sa.Column('description', sa.VARCHAR(), autoincrement=False, nullable=True), - sa.Column('quantity', sa.INTEGER(), autoincrement=False, nullable=False), - sa.Column('price', sa.INTEGER(), autoincrement=False, nullable=True), - sa.Column('sales_start', postgresql.TIMESTAMP(), autoincrement=False, nullable=False), - sa.Column('sales_end', postgresql.TIMESTAMP(), autoincrement=False, nullable=False), - sa.Column('min_order', sa.INTEGER(), autoincrement=False, nullable=True), - sa.Column('max_order', sa.INTEGER(), autoincrement=False, nullable=True), - sa.Column('event_id', sa.INTEGER(), autoincrement=False, nullable=True), - sa.ForeignKeyConstraint(['event_id'], [u'events.id'], name=u'ticket_event_id_fkey', ondelete=u'CASCADE'), - sa.PrimaryKeyConstraint('id', name=u'ticket_pkey'), - sa.UniqueConstraint('name', 'event_id', name=u'name_event_uc'), - postgresql_ignore_search_path=False - ) - op.create_table('booked_ticket', - sa.Column('id', sa.INTEGER(), nullable=False), - sa.Column('user_id', sa.INTEGER(), autoincrement=False, nullable=True), - sa.Column('ticket_id', sa.INTEGER(), autoincrement=False, nullable=True), - sa.Column('quantity', sa.INTEGER(), autoincrement=False, nullable=True), - sa.ForeignKeyConstraint(['ticket_id'], [u'ticket.id'], name=u'booked_ticket_ticket_id_fkey'), - sa.ForeignKeyConstraint(['user_id'], [u'user.id'], name=u'booked_ticket_user_id_fkey'), - sa.PrimaryKeyConstraint('id', name=u'booked_ticket_pkey'), - sa.UniqueConstraint('user_id', 'ticket_id', name=u'user_ticket_uc') - ) op.drop_table('pages') ### end Alembic commands ###