Beispiel #1
0
	def generateMessageSizer(self,panel,message,froms,tos=None):
		boldfont = wx.Font(12, wx.FONTFAMILY_DEFAULT, wx.NORMAL, wx.FONTWEIGHT_BOLD)
		sizerlist = []
		#item, proportion=0, flag=0, border=0, userData=None

		# add Subject
		label = wx.StaticText(panel,wx.ID_ANY,label='Subject:')
		label.SetFont(boldfont)
		sizerlist.append((label,0,wx.RIGHT,10))
		stext = wx.StaticText(panel, wx.ID_ANY, label=str(message['subject']))
		sizerlist.append((stext,0,wx.RIGHT,10))

		# add Froms
		label = wx.StaticText(panel,wx.ID_ANY,label='From:')
		label.SetFont(boldfont)
		
		sizerlist.append((label,0,wx.RIGHT,10))
		etext = wx.StaticText(panel,wx.ID_ANY,label=froms)
		sizerlist.append((etext,0,wx.RIGHT,10))

		# add Tos
		if tos is not None:
			label = wx.StaticText(self.ViewMessagePanel,wx.ID_ANY,label='To:')
			label.SetFont(boldfont)
		
			sizerlist.append((label,0,wx.RIGHT,10))
			etext = wx.StaticText(panel,wx.ID_ANY,label=tos)
			sizerlist.append((etext,0,wx.RIGHT,10))
	
		# add Date/time
		label = wx.StaticText(panel,wx.ID_ANY,label='Date:')
		label.SetFont(boldfont)
		sizerlist.append((label,0,wx.RIGHT,10))
		statictext = wx.StaticText(panel,wx.ID_ANY,label=message['date'])
		sizerlist.append((statictext,0,wx.RIGHT,10))

		# add content
		if message['template'] is None:
			# add Content
			label = wx.StaticText(panel,wx.ID_ANY,label='Body:')
			label.SetFont(boldfont)
		
			sizerlist.append((label,0,wx.RIGHT,10)) 
			#text = wx.html.HtmlWindow(self.ViewMessagePanel)
			text = wx.StaticText(panel,label=message['body'])
			#text.LoadPage(message['body'])
			sizerlist.append((text,0,wx.RIGHT,10))
		elif message['evmail'] != '':
			# add Content
			evmail = simplejson.loads(message['evmail'])
			for each in evmail['show']:
				label = wx.StaticText(panel,wx.ID_ANY,label=each+':')
				label.SetFont(boldfont)
		
				sizerlist.append((label,0,wx.RIGHT,10))
				etext = wx.StaticText(panel,wx.ID_ANY,label=evmail['show'][each])
				sizerlist.append((etext,0,wx.RIGHT,10))
		return sizerlist
Beispiel #2
0
    def readEvmail(self, evmail):
        """
		Read meta information from Evmail string
		@returns: tuple of (setname,name,version)
		@param evmail: Contents of evmail json file
		@type evmail: String
		"""
        try:
            evmaildata = simplejson.loads(evmail)
        except JSONDecodeError, e:
            print "evmail JSON Decoding error: ", e
            raise EvmailError("simplejson.loads( evmail ) raised JSONDecodeError")
Beispiel #3
0
    def processEvmail(self, evmail):
        """
		Read meta information, determine proper templateset, download (or find) templateset, and validate to it
		and add it to the database
		@param evmail: Contents of evmail json file
		@type evmail: String
		"""
        setname, name, version, messagesetid = self.readEvmail(evmail)
        templateschema = self.getEvmailTemplate(setname, name, version)

        try:
            evmail = simplejson.loads(evmail)
        except:
            print "evmail JSON Decoding error: ", e
            raise EvmailError("simplejson.load( config.json ) raised JSONDecodeError")

        try:
            validictory.validate(evmail, templateschema)
        except SchemaError, e:
            print "config.json Schema validation error: ", e
            raise TemplatesetError("validictory.validate( config.json, config-schema.json) raised SchemaError")
Beispiel #4
0
	def generateMessageViewPart(self,panel,vbox,message,froms,tos):
		'''
		Generate Evmail Message view panel
		@param panel:  the panel to add to
		@type panel: wx.Panel
		@param message: the message from database
		@type message: List
		@param froms: list of persons who sent the email
		@type froms: List
		@param tos: list of persons who recieved the email
		@type tos: List
		'''
		self.vbox = vbox
		boldfont = wx.Font(12, wx.FONTFAMILY_DEFAULT, wx.NORMAL, wx.FONTWEIGHT_BOLD)
		hbox = wx.BoxSizer(wx.HORIZONTAL)
		if message['template'] is not None and message['template'] != '':
			messagedata = simplejson.loads(message['evmail'])
			choiceids = self.controller.controller.getTemplatesetController().model.getResponseTemplates(message['template'])
			if len(choiceids) > 0:			
				responsechoice = wx.Choice(panel,choices=[])
				for each in choiceids:
					setname,templatename = self.controller.controller.getTemplatesetController().model.getTemplateName(each)
					responsechoice.Append(templatename,(message['id'],setname))
				panel.Bind(wx.EVT_CHOICE,self.responseMessage)
				hbox.Add(responsechoice,flag=wx.RIGHT,border=10)
				self.vbox.Add(hbox,flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, border=10)
		else:
			templatesetctrl = self.controller.controller.getTemplatesetController()
			choiceids = templatesetctrl.model.getResponseTemplates(templatesetctrl.model.hasTemplate('discussion','message'))
			if len(choiceids) > 0:
				responsechoice = wx.Choice(panel,choices=[])
				for each in choiceids:
					setname,templatename = templatesetctrl.model.getTemplateName(each)
					responsechoice.Append(templatename,(message['id'],setname))
				panel.Bind(wx.EVT_CHOICE,self.responseMessage)
				hbox.Add(responsechoice,flag=wx.RIGHT,border=10)
				self.vbox.Add(hbox,flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, border=10)
		
		

		# add message type
		if message['template'] is not None and message['template'] != '':
			hbox = wx.BoxSizer(wx.HORIZONTAL)
			label = wx.StaticText(panel,wx.ID_ANY,label='Type:')
			label.SetFont(boldfont)
			hbox.Add(label,flag=wx.RIGHT, border=10)
			stext = wx.StaticText(panel, wx.ID_ANY, label=str(message['template']))
			hbox.Add(stext,flag=wx.RIGHT,border=10)
			self.vbox.Add(hbox,flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, border=10)

		# add Subject
		label = wx.StaticText(panel,wx.ID_ANY,label='Subject:')
		label.SetFont(boldfont)

		hbox = wx.BoxSizer(wx.HORIZONTAL)
		hbox.Add(label,flag=wx.RIGHT,border=10)
		hbox.Add(wx.StaticText(panel, wx.ID_ANY, label=message['subject']), flag=wx.RIGHT,border=10)
		self.vbox.Add(hbox,flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, border=10)
		self.vbox.Add((-1,10))

		# add Froms
		label = wx.StaticText(panel,wx.ID_ANY,label='From:')
		label.SetFont(boldfont)
		
		hbox = wx.BoxSizer(wx.HORIZONTAL)
		hbox.Add(label,flag=wx.RIGHT,border=10)
		for each in froms:
			hbox.Add(wx.StaticText(panel,wx.ID_ANY,label=each['email']),flag=wx.RIGHT,border=10)
		self.vbox.Add(hbox,flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, border=10)
		self.vbox.Add((-1,10))

		# add Tos
		label = wx.StaticText(panel,wx.ID_ANY,label='To:')
		label.SetFont(boldfont)
		
		hbox = wx.BoxSizer(wx.HORIZONTAL)
		hbox.Add(label,flag=wx.RIGHT,border=10)
		for each in tos:
			hbox.Add(wx.StaticText(panel,wx.ID_ANY,label=each['email']),flag=wx.RIGHT,border=10)
		self.vbox.Add(hbox,flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, border=10)
		self.vbox.Add((-1,10))
	
		# add Date/time
		label = wx.StaticText(panel,wx.ID_ANY,label='Date:')
		label.SetFont(boldfont)
		
		hbox = wx.BoxSizer(wx.HORIZONTAL)
		hbox.Add(label,flag=wx.RIGHT,border=10)
		hbox.Add(wx.StaticText(panel,wx.ID_ANY,label=message['date']),flag=wx.RIGHT,border=10)
		self.vbox.Add(hbox,flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, border=10)
		self.vbox.Add((-1,10))

		# add content
		if message['templateset'] == '':
			# add Content
			label = wx.StaticText(panel,wx.ID_ANY,label='Body:')
			label.SetFont(boldfont)
		
			hbox = wx.BoxSizer(wx.HORIZONTAL)
			hbox.Add(label,flag=wx.RIGHT,border=10)
			#text = wx.html.HtmlWindow(self.ViewMessagePanel)
			text = wx.StaticText(panel,label=message['body'])
			#text.LoadPage(message['body'])
			hbox.Add(text,flag=wx.RIGHT,border=10)
			self.vbox.Add(hbox,flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, border=10)
			self.vbox.Add((-1,10))
		elif message['evmail'] != '':
			# add Content
			evmail = simplejson.loads(message['evmail'])
			for each in evmail['show']:
				label = wx.StaticText(panel,wx.ID_ANY,label=each+':')
				label.SetFont(boldfont)
		
				hbox = wx.BoxSizer(wx.HORIZONTAL)
				hbox.Add(label,flag=wx.RIGHT,border=10)
				hbox.Add(wx.StaticText(panel,wx.ID_ANY,label=evmail['show'][each]),flag=wx.RIGHT,border=10)
				self.vbox.Add(hbox,flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, border=10)
				self.vbox.Add((-1,10))
		vbox = self.vbox
		return vbox