Skip to content
This repository has been archived by the owner on May 28, 2022. It is now read-only.

Commit

Permalink
Merge 711bd3a into ab0991a
Browse files Browse the repository at this point in the history
  • Loading branch information
lauradichen committed Feb 8, 2014
2 parents ab0991a + 711bd3a commit 5a59e23
Show file tree
Hide file tree
Showing 12 changed files with 143 additions and 77 deletions.
2 changes: 1 addition & 1 deletion src/freeseer/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@

NAME = 'freeseer'
__version__ = '3.0.9999'
SCHEMA_VERSION = 310
SCHEMA_VERSION = 320
__author__ = "Free and Open Source Software Learning Center"
__email__ = "fosslc@gmail.com"
URL = 'http://github.com/Freeseer/freeseer'
Expand Down
67 changes: 48 additions & 19 deletions src/freeseer/framework/database.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,19 @@
Time timestamp,
UNIQUE (Speaker, Title) ON CONFLICT IGNORE)'''

PRESENTATIONS_SCHEMA_320 = '''CREATE TABLE IF NOT EXISTS presentations
(Id INTEGER PRIMARY KEY,
Title varchar(255),
Speaker varchar(100),
Description text,
Category varchar(25),
Event varchar(100),
Room varchar(25),
Date date,
StartTime time,
EndTime time,
UNIQUE (Speaker, Title) ON CONFLICT IGNORE)'''

REPORTS_SCHEMA_300 = '''CREATE TABLE IF NOT EXISTS failures
(Id INTERGER PRIMARY KEY,
Comments TEXT,
Expand Down Expand Up @@ -154,24 +167,33 @@ def update_30to31():
FROM presentations_old""")
QtSql.QSqlQuery('DROP TABLE presentations_old')

def update_31to32():
"""Performs incremental update of database from 3.1 and older to 3.2."""
QtSql.QSqlQuery('ALTER TABLE presentations RENAME TO presentations_old')
self.__create_presentations_table(PRESENTATIONS_SCHEMA_320)
QtSql.QSqlQuery("""INSERT INTO presentations
SELECT Id, Title, Speaker, Description, Level, Event, Room, Date, Time, Time
FROM presentations_old""")
QtSql.QSqlQuery('DROP TABLE presentations_old')

#
# Perform the upgrade
#
updaters = [update_2xto30, update_30to31]
updaters = [update_2xto30, update_30to31, update_31to32]
for updater in updaters:
updater()

QtSql.QSqlQuery('PRAGMA user_version = %i' % SCHEMA_VERSION)
log.info('Upgraded presentations database from version {} to {}'.format(db_version, SCHEMA_VERSION))

def __create_presentations_table(self, schema=PRESENTATIONS_SCHEMA_310):
def __create_presentations_table(self, schema=PRESENTATIONS_SCHEMA_320):
"""Creates the presentations table in the database. Should be used to initialize a new table."""
log.info("table created")
QtSql.QSqlQuery(schema)

def __insert_default_talk(self):
"""Inserts the required placeholder talk into the database.At least one talk must exist"""
self.insert_presentation(Presentation("", "", "", "", "", "", "", ""))
self.insert_presentation(Presentation("", "", "", "", "", "", "", "", ""))

def get_talks(self):
"""Gets all the talks from the database including all columns"""
Expand Down Expand Up @@ -204,7 +226,8 @@ def get_presentation(self, talk_id):
event=unicode(result.value(5).toString()),
room=unicode(result.value(6).toString()),
date=unicode(result.value(7).toString()),
time=unicode(result.value(8).toString()))
starttime=unicode(result.value(8).toString()),
endtime=unicode(result.value(9).toString()))
else:
return None

Expand Down Expand Up @@ -233,32 +256,33 @@ def insert_presentation(self, presentation):
# Duplicate time to date field for older RSS / CSV formats
# If date is empty, and time has a full DateTime, split the DateTime to
# both Date and Time
if not presentation.date and presentation.time and len(presentation.time) == 16:
presentation.date, presentation.time = presentation.time[:-6], presentation.time[11:]

if not presentation.date and presentation.starttime and len(presentation.starttime) == 16:
presentation.date, presentation.starttime = presentation.starttime[:-6], presentation.starttime[11:]
QtSql.QSqlQuery(
'''INSERT INTO presentations VALUES (NULL, "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s")''' %
'''INSERT INTO presentations VALUES (NULL, "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s")''' %
(presentation.title,
presentation.speaker,
presentation.description,
presentation.category,
presentation.event,
presentation.room,
presentation.date,
presentation.time))
log.info("Talk added: %s - %s" % (presentation.speaker, presentation.title))
presentation.starttime,
presentation.endtime)) #could result in errors for RSS and CSV imported presentations
log.info("Talk added: %s - %s, Time: %s - %s" % (presentation.speaker, presentation.title, presentation.starttime, presentation.endtime))

def update_presentation(self, talk_id, presentation):
"""Updates an existing Presentation in the database."""
QtSql.QSqlQuery(
'''UPDATE presentations SET Title="%s", Speaker="%s", Event="%s", Room="%s", Date="%s", Time="%s"
'''UPDATE presentations SET Title="%s", Speaker="%s", Event="%s", Room="%s", Date="%s", StartTime="%s", EndTime="%s"
WHERE Id="%s"''' %
(presentation.title,
presentation.speaker,
presentation.event,
presentation.room,
presentation.date,
presentation.time,
presentation.starttime,
presentation.endtime, #could result in errors for RSS and CSV imported presentations
talk_id))
log.info("Talk %s updated: %s - %s" % (talk_id, presentation.speaker, presentation.title))

Expand Down Expand Up @@ -291,10 +315,10 @@ def get_events_model(self):
return self.eventsModel

def get_dates_from_event_room_model(self, event, room):
"""Gets the Rooms Model.Useful for Qt GUI based Frontends to load the Model into Views."""
"""Gets the Dates Model.Useful for Qt GUI based Frontends to load the Model into Views."""
self.datesModel = QtSql.QSqlQueryModel()
self.datesModel.setQuery(
"SELECT DISTINCT date(Time) FROM presentations WHERE Event='%s' and Room='%s' ORDER BY Date ASC"
"SELECT DISTINCT date FROM presentations WHERE Event='%s' and Room='%s' ORDER BY Date ASC"
% (event, room))
return self.datesModel

Expand Down Expand Up @@ -348,6 +372,7 @@ def add_talks_from_rss(self, feed_url):
presentation["Level"],
presentation["Event"],
presentation["Room"],
presentation["Time"],
presentation["Time"])
self.insert_presentation(talk)

Expand All @@ -371,6 +396,7 @@ def add_talks_from_csv(self, fname):
presentation["Level"],
presentation["Event"],
presentation["Room"],
presentation["Time"],
presentation["Time"])
self.insert_presentation(talk)

Expand All @@ -385,7 +411,8 @@ def export_talks_to_csv(self, fname):
'Event',
'Room',
'Date',
'Time')
'StartTime',
'EndTime')

try:
file = open(fname, 'w')
Expand All @@ -395,15 +422,15 @@ def export_talks_to_csv(self, fname):

result = self.get_talks()
while result.next():
log.debug(unicode(result.value(1).toString()))
writer.writerow({'Title': unicode(result.value(1).toString()),
'Speaker': unicode(result.value(2).toString()),
'Abstract': unicode(result.value(3).toString()),
'Category': unicode(result.value(4).toString()),
'Event': unicode(result.value(5).toString()),
'Room': unicode(result.value(6).toString()),
'Date': unicode(result.value(7).toString()),
'Time': unicode(result.value(8).toString())})
'StartTime': unicode(result.value(8).toString()),
'EndTime': unicode(result.value(9).toString())})
finally:
file.close()

Expand All @@ -415,7 +442,8 @@ def export_reports_to_csv(self, fname):
'Event',
'Room',
'Date',
'Time',
'StartTime',
'EndTime',
'Problem',
'Error')
try:
Expand All @@ -433,7 +461,8 @@ def export_reports_to_csv(self, fname):
'Event': report.presentation.event,
'Room': report.presentation.room,
'Date': report.presentation.date,
'Time': report.presentation.time,
'StartTime': report.presentation.starttime,
'EndTime': report.presentation.endtime,
'Problem': report.failure.indicator,
'Error': report.failure.comment})
finally:
Expand Down
9 changes: 5 additions & 4 deletions src/freeseer/framework/presentation.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ class Presentation(object):
This class is responsible for encapsulate data about presentations
and its database related operations
'''
def __init__(self, title, speaker="", description="", category="", event="Default", room="Default", date="", time=""):
def __init__(self, title, speaker="", description="", category="", event="Default", room="Default", date="", starttime="", endtime=""):
'''
Initialize a presentation instance
'''
Expand All @@ -41,7 +41,8 @@ def __init__(self, title, speaker="", description="", category="", event="Defaul
self.event = event
self.room = room
self.date = date
self.time = time
self.starttime = starttime
self.endtime = endtime


class PresentationFile(Presentation):
Expand All @@ -51,9 +52,9 @@ class PresentationFile(Presentation):
to a file and the metadata that has been loaded from it
'''

def __init__(self, title, speaker="", description="", category="", event="Default", room="Default", date="", time=""):
def __init__(self, title, speaker="", description="", category="", event="Default", room="Default", date="", starttime="", endtime=""):
Presentation.__init__(
self, title, speaker, description, category, event, room, date, time)
self, title, speaker, description, category, event, room, date, starttime, endtime)

self.filename = ""
self.album = ""
Expand Down
3 changes: 2 additions & 1 deletion src/freeseer/framework/rss_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,8 @@ def build_data_dictionary(self):
presentation["Abstract"] = abstract.strip()
presentation["Level"] = level.strip()
presentation["Status"] = status.strip()
presentation["Time"] = time.strip()
presentation["sTime"] = time.strip()
presentation["eTime"] = time.strip()
presentation["Event"] = event.strip()
presentation["Room"] = room.strip()

Expand Down
4 changes: 2 additions & 2 deletions src/freeseer/frontend/qtcommon/FreeseerApp.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ def translate(self, action):
"""
self.current_language = str(action.data().toString()).strip("tr_").rstrip(".qm")

log.info("Switching language to: %s" % action.text())
#log.info("Switching language to: %s" % action.text())
self.uiTranslator.load(":/languages/tr_%s.qm" % self.current_language)

self.retranslateFreeseerApp()
Expand Down Expand Up @@ -168,7 +168,7 @@ def setupLanguageMenu(self):

if self.current_language is None:
self.current_language = QLocale.system().name() # Retrieve Current Locale from the operating system.
log.debug("Detected user's locale as %s" % self.current_language)
#log.debug("Detected user's locale as %s" % self.current_language)

for language in self.languages:
translator = QTranslator() # Create a translator to translate Language Display Text.
Expand Down
12 changes: 8 additions & 4 deletions src/freeseer/frontend/record/ReportDialog.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,14 +82,18 @@ def __init__(self, parent=None):
self.roomLabel = QLabel("Room:")
self.roomLabel2 = QLabel()
self.roomLabel2.setFont(boldFont)
self.timeLabel = QLabel("Time:")
self.timeLabel2 = QLabel()
self.timeLabel2.setFont(boldFont)
self.starttimeLabel = QLabel("Start Time:")
self.starttimeLabel2 = QLabel()
self.starttimeLabel2.setFont(boldFont)
self.endtimeLabel = QLabel("End Time:")
self.endtimeLabel2 = QLabel()
self.endtimeLabel2.setFont(boldFont)
self.infoLayout.addRow(self.titleLabel, self.titleLabel2)
self.infoLayout.addRow(self.speakerLabel, self.speakerLabel2)
self.infoLayout.addRow(self.eventLabel, self.eventLabel2)
self.infoLayout.addRow(self.roomLabel, self.roomLabel2)
self.infoLayout.addRow(self.timeLabel, self.timeLabel2)
self.infoLayout.addRow(self.starttimeLabel, self.starttimeLabel2)
self.infoLayout.addRow(self.endtimeLabel, self.endtimeLabel2)

#Report
self.commentLabel = QLabel("Comment")
Expand Down
6 changes: 4 additions & 2 deletions src/freeseer/frontend/record/record.py
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,8 @@ def retranslate(self):
self.reportWidget.speakerLabel.setText(self.app.translate("RecordApp", "Speaker:"))
self.reportWidget.eventLabel.setText(self.app.translate("RecordApp", "Event:"))
self.reportWidget.roomLabel.setText(self.app.translate("RecordApp", "Room:"))
self.reportWidget.timeLabel.setText(self.app.translate("RecordApp", "Time:"))
self.reportWidget.starttimeLabel.setText(self.app.translate("RecordApp", "Start Time:"))
self.reportWidget.endtimeLabel.setText(self.app.translate("RecordApp", "End Time:"))
self.reportWidget.commentLabel.setText(self.app.translate("RecordApp", "Comment"))
self.reportWidget.releaseCheckBox.setText(self.app.translate("RecordApp", "Release Received"))
self.reportWidget.closeButton.setText(self.app.translate("RecordApp", "Close"))
Expand Down Expand Up @@ -492,7 +493,8 @@ def show_report_widget(self):
self.reportWidget.speakerLabel2.setText(p.speaker)
self.reportWidget.eventLabel2.setText(p.event)
self.reportWidget.roomLabel2.setText(p.room)
self.reportWidget.timeLabel2.setText(p.time)
self.reportWidget.starttimeLabel2.setText(p.starttime)
self.reportWidget.endtimeLabel2.setText(p.endtime)

# Get existing report if there is one.
talk_id = self.current_presentation_id()
Expand Down
12 changes: 8 additions & 4 deletions src/freeseer/frontend/reporteditor/ReportEditorWidget.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,17 +105,21 @@ def __init__(self, parent=None):
self.roomLabel = QtGui.QLabel("Room :")
self.roomLabel2 = QtGui.QLabel()
self.roomLabel2.setFont(boldFont)
self.timeLabel = QtGui.QLabel("Time :")
self.timeLabel2 = QtGui.QLabel()
self.timeLabel2.setFont(boldFont)
self.starttimeLabel = QtGui.QLabel("Start Time :")
self.starttimeLabel2 = QtGui.QLabel()
self.starttimeLabel2.setFont(boldFont)
self.endtimeLabel = QtGui.QLabel("End Time :")
self.endtimeLabel2 = QtGui.QLabel()
self.endtimeLabel2.setFont(boldFont)

self.infoLayout.addRow(self.titleLabel, self.titleLabel2)
self.infoLayout.addRow(self.speakerLabel, self.speakerLabel2)
self.infoLayout.addRow(self.descriptionLabel, self.descriptionLabel2)
self.infoLayout.addRow(self.levelLabel, self.levelLabel2)
self.infoLayout.addRow(self.eventLabel, self.eventLabel2)
self.infoLayout.addRow(self.roomLabel, self.roomLabel2)
self.infoLayout.addRow(self.timeLabel, self.timeLabel2)
self.infoLayout.addRow(self.starttimeLabel, self.starttimeLabel2)
self.infoLayout.addRow(self.endtimeLabel, self.endtimeLabel2)

if __name__ == "__main__":
import sys
Expand Down
18 changes: 12 additions & 6 deletions src/freeseer/frontend/reporteditor/reporteditor.py
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,8 @@ def retranslate(self):
self.editorWidget.levelLabel.setText(self.app.translate("ReportEditorApp", "Level:"))
self.editorWidget.eventLabel.setText(self.app.translate("ReportEditorApp", "Event:"))
self.editorWidget.roomLabel.setText(self.app.translate("ReportEditorApp", "Room:"))
self.editorWidget.timeLabel.setText(self.app.translate("ReportEditorApp", "Time:"))
self.editorWidget.starttimeLabel.setText(self.app.translate("ReportEditorApp", "Start Time:"))
self.editorWidget.endtimeLabel.setText(self.app.translate("ReportEditorApp", "End Time:"))
# --- End EditorWidget

def load_failures_model(self):
Expand All @@ -162,15 +163,18 @@ def hide_add_talk_widget(self):

def add_talk(self):
date = self.addTalkWidget.dateEdit.date()
time = self.addTalkWidget.timeEdit.time()
datetime = QDateTime(date, time)
starttime = self.addTalkWidget.starttimeEdit.time()
endtime = self.addTalkWidget.endtimeEdit.time()
datetime = QDateTime(date, starttime)# ??? original time is now starttime
presentation = Presentation(unicode(self.addTalkWidget.titleLineEdit.text()),
unicode(self.addTalkWidget.presenterLineEdit.text()),
"", # description
"", # level
unicode(self.addTalkWidget.eventLineEdit.text()),
unicode(self.addTalkWidget.roomLineEdit.text()),
unicode(datetime.toString()))
unicode(datetime.toString()),
unicode(self.addTalkWidget.endtimeEdit.text()) #???
)

# Do not add talks if they are empty strings
if (len(presentation.title) == 0):
Expand Down Expand Up @@ -234,15 +238,17 @@ def updatePresentationInfo(self, talkId):
self.editorWidget.levelLabel2.setText(p.level)
self.editorWidget.eventLabel2.setText(p.event)
self.editorWidget.roomLabel2.setText(p.room)
self.editorWidget.timeLabel2.setText(p.time)
self.editorWidget.starttimeLabel2.setText(p.starttime)
self.editorWidget.endtimeLabel2.setText(p.endtime)
else:
self.editorWidget.titleLabel2.setText("Talk not found")
self.editorWidget.speakerLabel2.setText("Talk not found")
self.editorWidget.descriptionLabel2.setText("Talk not found")
self.editorWidget.levelLabel2.setText("Talk not found")
self.editorWidget.eventLabel2.setText("Talk not found")
self.editorWidget.roomLabel2.setText("Talk not found")
self.editorWidget.timeLabel2.setText("Talk not found")
self.editorWidget.starttimeLabel2.setText("Talk not found")
self.editorWidget.endtimeLabel2.setText("Talk not found")

def export_reports_to_csv(self):
fname = QFileDialog.getSaveFileName(self, self.selectFileString, "", "*.csv")
Expand Down
Loading

0 comments on commit 5a59e23

Please sign in to comment.