Beispiel #1
0
	def set_membership(self,auth, group):
		if auth.is_logged_in():
			from regnews import Regnews
			Regnews(self.db)
			if self.db(self.db.regnews.email==auth.user.email).count()==0:
				self.db.regnews.insert(email=auth.user.email, name="%s %s"%(auth.user.first_name, auth.user.last_name), news=True)	
		auth.add_membership(auth.id_group(group), auth.user_id)
Beispiel #2
0
def subscriptions():
	if auth.has_membership('administradores') or auth.has_membership('superadministradores'):
		from pagination import Pagination
		from regnews import Regnews
		settings = db(db.adminsettings.id>0).select(db.adminsettings.ALL).first()
		try:
			reg=Regnews(db)
			reg.define_tables()
		except:
			pass
		records=db(db.regnews.id>0).count()
		items_per_page=settings.subscriptionitems
		pag=Pagination(records, items_per_page)
		subscriptions = db().select(db.regnews.ALL, orderby=~db.regnews.id, limitby=pag.limitby())
		return dict(subscriptions=subscriptions, pagination=pag, records=records, items_per_page=items_per_page, actives=db(db.regnews.news==True).count())
	else:
		redirect(URL(request.application,'default','user/login'))
Beispiel #3
0
 def __init__(self, db):
     Regnews(db)
     self.db = db
     self.T = current.T
     try:
         self.define_tables()
     except Exception as ex:
         pass
Beispiel #4
0
def mailcheck():
    request.requires_https()
    from regnews import Regnews
    Regnews(db)
    if request.args:
        if len(request.args) == 2:
            datenow = datetime.datetime.now()
            if request.args[0] == "confirm":

                db(db.regnews.verification_code == request.args[1]).update(
                    news=True, suscribed_on=datenow, verified_on=datenow)
            elif request.args[0] == "refuse":
                db(db.regnews.verification_code == request.args[1]).update(
                    news=False, unsuscribed_on=datenow)

            db.commit()

            return dict(action=request.args[0])
        else:
            return dict(action="error")
    else:
        return dict(action="error")
Beispiel #5
0
import os
import socket
import datetime
import copy
import gluon.contenttype
import gluon.fileutils

from blog import Blog, Draft, Images
from shops import Shop, DomainShop, PricePlan, Product, ContractedProduct, ProfilePlan, PricePlan, CustomerAgreement, Agreement
from invoices import Invoice, Order, Orderlist, Fiscal, CreditAccount, AccountingEntry, Budget, Budgetlist
from regnews import Regnews
from province import Province
from cities import Cities
Images(db), Blog(db, ckeditor), Draft(
    db, ckeditor), Regnews(db), Province(db), Cities(db)
Shop(db), PricePlan(db), DomainShop(db), Product(db)
ProfilePlan(db), PricePlan(db), CustomerAgreement(db), Agreement(db)
Invoice(db), Order(db), Orderlist(db), Budget(db), Budgetlist(db), Fiscal(
    db), ContractedProduct(db), CreditAccount(db), AccountingEntry(db)

try:
    import pygraphviz as pgv
except ImportError:
    pgv = None

# ## critical --- make a copy of the environment

global_env = copy.copy(globals())
global_env['datetime'] = datetime
Beispiel #6
0
def index():
    from regnews import Regnews
    from mailboxing import Mailboxing
    from cities import Cities
    from province import Province
    from queuemail import Queuemail
    Province(db)
    Cities(db)
    Regnews(db)
    Mailboxing(db)
    Queuemail(db)

    wpoblacion = SQLFORM.widgets.autocomplete(request,
                                              db.cities.poblacion,
                                              limitby=(0, 10),
                                              min_length=2)
    wprovincia = SQLFORM.widgets.autocomplete(request,
                                              db.province.provincia,
                                              limitby=(0, 10),
                                              min_length=2)

    name = Field('name',
                 'string',
                 label="Nombre",
                 length=50,
                 requires=IS_NOT_EMPTY(
                     error_message="Debe identificarse con un nombre"),
                 widget=lambda field, value: SQLFORM.widgets.string.widget(
                     field, value, _placeholder='Nombre y apellidos'))
    email = Field('email',
                  'string',
                  length=128,
                  requires=[
                      IS_NOT_EMPTY(error_message="Un email es requerido"),
                      IS_EMAIL(error_message="email incorrecto")
                  ],
                  widget=lambda field, value: SQLFORM.widgets.string.widget(
                      field, value, _placeholder='ejemplo: [email protected]'))
    phone = Field('phone', 'string', length=18, notnull=False)
    poblacion = Field('city',
                      'string',
                      length=40,
                      notnull=False,
                      widget=wpoblacion)
    provincia = Field('province',
                      'string',
                      length=40,
                      notnull=False,
                      widget=wprovincia)
    rnews = Field('rnews', 'boolean', default=True)
    message = Field(
        'message',
        'text',
        notnull=True,
        requires=IS_NOT_EMPTY(
            error_message=
            "Por favor, díganos por qué quiere contactar con nosotros."))
    form = SQLFORM.factory(name,
                           rnews,
                           email,
                           phone,
                           poblacion,
                           provincia,
                           message,
                           submit_button='contactar',
                           formstyle='bootstrap')

    queuedata = []
    if form.validate(keepvalues=False):
        data = form.vars
        try:

            reg = db(db.regnews.email == data.email).select()
            if len(reg) == 0:
                id = db.regnews.insert(email=data.email,
                                       name=data.name,
                                       news=data.rnews,
                                       phone=data.phone,
                                       city=data.city,
                                       province=data.province)
                db.mailbox.insert(regnews=id, message=data.message)
            else:
                db.mailbox.insert(regnews=reg[0].id, message=data.message)
            db.commit()
        except:
            db.rollback()
            response.flash = 'Su petición de contacto no pudo registrarse. Inténtelo de nuevo.'
        #primero encolamos el mail al usuario que ha hecho la petición de contacto
        queuedata.append({
            'to':
            '%s' % data.email,
            'subject':
            'Confirmación de petición de contacto',
            'message':
            'Estimado %s,\n hemos recibido una petición de contacto por parte suya desde el formulario de contacto de Despacho Cifrado.\n\n Muchas gracias por su interés. Le responderemos en breve.\n\n Reciba un cordial saludo.\n--\nDespacho Cifrado'
            % data.name
        })
        #y ahora notificación a cada uno de los administradores
        mails = db(db.auth_membership.group_id == 1).select(
            db.auth_membership.ALL,
            db.auth_user.ALL,
            left=db.auth_user.on(
                db.auth_membership.user_id == db.auth_user.id))
        for m in mails:
            queuedata.append({
                'to':
                '%s' % m.auth_user.email,
                'subject':
                'Tienes una solicitud de contacto',
                'message':
                '%s con mail: %s y teléfono: %s  te ha enviado el siguiente mensaje: \n %s '
                % (data.name, data.email, data.phone, data.message)
            })
        try:
            logger.debug(queuedata)
            queue.queuemessage(queuedata)
        except Exception, ex:
            logger.debug("error al almacenar la cola de mensajes %s" % ex)
            pass
        session.flash = 'Su petición ha sido registrada'
        redirect(URL(request.application, 'default', 'index'))
Beispiel #7
0
def show():
	session.publishing=False
	from blog import Blog, Images
	from regnews import Regnews
	from comments import Comments

	from gluon.tools import Recaptcha

	Blog(db,ckeditor), Images(db)
	Regnews(db)	
	Comments(db)
	images=None
	if auth.has_membership('administradores') or auth.has_membership('superadministradores'):
		#logger.debug(session.preview)
		if not request.args(0):
			redirect(URL('blog','index'))			
		if session.preview:
			from blog import Draft
			Draft(db,ckeditor)
			if request.args(0).isdigit():

				post=db.draft(db.draft.id==request.args(0)) or redirect(URL('blog','index'))
			else:
				post=db.draft(db.draft.urlfriendly==request.args(0)) or redirect(URL('blog','index'))
		else:
			if request.args(0).isdigit():			
				post=db.blog(db.blog.id==request.args(0)) or redirect(URL('blog','index'))	
			else:
				post=db.blog(db.blog.urlfriendly==request.args(0)) or redirect(URL('blog','index'))	
	else:
		if not request.args(0):
			redirect(URL('blog','index'))
		if request.args(0).isdigit():			
			post=db.blog((db.blog.id==request.args(0)) & (db.blog.public==True) ) or redirect(URL('blog','index'))
		else:
			post=db.blog((db.blog.urlfriendly==request.args(0)) & (db.blog.public==True) ) or redirect(URL('blog','index'))
	if post.image!=None:
		images=db.images(post.image)
		#logger.debug(images)

	comment = Field('comment', 'text', label="Comentario",notnull=True, requires=IS_NOT_EMPTY(error_message="Debes escribir un comentario"))

	if auth.is_logged_in():
		form = SQLFORM.factory(comment, submit_button = 'Comentar', formstyle='bootstrap')
	else:
		name = Field('name', 'string', label="Nombre", length=50, requires=IS_NOT_EMPTY(error_message="Debe identificarse con un nombre"))
		email = Field('email', 'string', length=128, requires=IS_EMAIL(error_message="email incorrecto"))
		website = Field('website','string', length=128, widget=lambda field,value: SQLFORM.widgets.string.widget(field, value, _placeholder='Opcional'))
		rnews = Field('rnews', 'bool', default=True) 
		captcha = Recaptcha(request, '6Lf849gSAAAAAD2YgjNJxrelMp7-hPnTNZyyf4pD', '6Lf849gSAAAAAOgabgN9kc5YO1hhEws_un0btbbf',use_ssl=True, error_message='Inválido', label='Verificar:', options='theme:"clean", lang:"es"')
		# antispam= Field("anti_spam", widget=recaptcha, default='')		
		form = SQLFORM.factory(name, rnews, email, website, comment,  submit_button = 'Comentar')

		form[0].append(captcha)

	if form.errors.has_key('captcha'):
		response.flash='Captcha inválido'

	elif form.validate(keepvalues=False):
		data=form.vars

		try:
			if auth.is_logged_in():
				if request.args(0).isdigit():
					db.comments.insert(comment=data.comment, user=auth.user.id, blog=request.args(0))
				else:
					db.comments.insert(comment=data.comment, user=auth.user.id, blog=db(db.blog.urlfriendly==request.args(0)).select().first()["id"] )
			else:
				reg=db(db.regnews.email==data.email).select()
				if len(reg)==0:
					id=db.regnews.insert(email=data.email, name=data.name, news=data.rnews, website=data.website)
					if request.args(0).isdigit():
						db.comments.insert(comment=data.comment, blog=request.args(0), regnews=id)
					else:
						db.comments.insert(comment=data.comment, blog=db(db.blog.urlfriendly==request.args(0)).select().first()["id"], regnews=id)
				else: 
					if request.args(0).isdigit():
						db.comments.insert(comment=data.comment, blog=request.args(0), regnews=reg[0].id)
					else:
						db.comments.insert(comment=data.comment, blog=db(db.blog.urlfriendly==request.args(0)).select().first()["id"], regnews=reg[0].id)

			db.commit()
			response.flash = "Comentario publicado"
			
			#redirect(URL('blog','show', args=request.args(0)))
		except Exception, ex:
			logger.debug(ex)
			db.rollback()
			response.flash="Su comentario no se pudo enviar. Inténtelo de nuevo"
Beispiel #8
0
def prelaunch():
    request.requires_https()
    from regnews import Regnews
    from mailboxing import Mailboxing
    from queuemail import Queuemail
    from auxiliartools import AuxiliarTools
    auxiliar = AuxiliarTools(db)
    Regnews(db)
    Mailboxing(db)
    queue = Queuemail(db)

    email = Field('email',
                  'string',
                  length=128,
                  requires=[
                      IS_NOT_EMPTY(error_message="Un email es requerido"),
                      IS_EMAIL(error_message="email incorrecto")
                  ],
                  widget=lambda field, value: SQLFORM.widgets.string.widget(
                      field, value, _placeholder='ejemplo: [email protected]'))
    form = SQLFORM.factory(email)
    form.element('input', _name='email')['_class'] = "form-control input-lg"
    form.element('input', _name='email')['_placeholder'] = "email"
    form.element('input', _type='submit'
                 )['_class'] = "btn btn-grove-one btn-lg btn-bold btn-block"
    form.element('input', _type='submit')['_value'] = "Quiero mi tienda"
    queuedata = []

    if form.validate(keepvalues=True):

        data = form.vars
        try:
            reg = db(db.regnews.email == data.email).select()
            verification_code = auxiliar.generatecode()
            if len(reg) == 0:
                db.regnews.insert(email=data.email,
                                  news=False,
                                  verification_code=verification_code,
                                  ip=request.client)
            else:
                db(db.regnews.email == data.email).update(
                    news=False,
                    verification_code=verification_code,
                    ip=request.client)
            #primero encolamos el mail al usuario que ha hecho la petición de contacto
            urlconfirm = '%(scheme)s://%(host)s%(url)s' % {
                'scheme':
                request.env.wsgi_url_scheme,
                'host':
                request.env.http_host,
                'url':
                URL('communications',
                    'mailcheck',
                    args=['confirm', verification_code])
            }
            urlrefuse = '%(scheme)s://%(host)s%(url)s' % {
                'scheme':
                request.env.wsgi_url_scheme,
                'host':
                request.env.http_host,
                'url':
                URL('communications',
                    'mailcheck',
                    args=['refuse', verification_code])
            }

            html = """
                    <p>Gracias por apuntarte al prelanzamiento de GEXtiendas.</p>
                    <p>Por favor, confirma tu petición clickando en el siguiente enlace:</p>
                    <p><a href='%(urlconfirm)s'>%(urlconfirm)s</a></p>
                    <p>o si por error, no eres el destinatario de este email, clicka en este otro para borrarte de nuestra lista:</p>
                    <p><a href='%(urlrefuse)s'>%(urlrefuse)s</a></p>
                    <h3>Estamos de prelanzamiento</h3>
                    <p>Como ya sabes, estamos a punto de poner en marcha nuestro sistema de gestión de tiendas electrónicas. Podrás crear y mantener gratuitamente cuantas tiendas electrónicas quieras. Si más adelante necesitas servicios profesionales, cuenta con nosotros a precios más ventajosos por el simple hecho de haber formado parte del proceso de prelanzamiento.</p>

                    <p>Esperamos que con nosotros, ganes mucho.</p>
                    """ % {
                "urlconfirm": urlconfirm,
                "urlrefuse": urlrefuse
            }

            queuedata.append({
                'to':
                '%s' % data.email,
                'subject':
                'Confirmación de registro de email en Gextiendas',
                'message':
                'Gracias por enviarnos tu dirección de correo electrónico.\nPor favor, confirma tu petición clickando en el siguiente enlace:\n%s\no si por error, no eres el destinatario de este email, clicka en este otro\n%s\n para borrarte de nuestra lista.\nComo ya sabes, estamos de prelanzamiento y estamos a punto de poner en marcha nuestro sistema de gestión de tiendas electrónicas. Podrás crear y mantener gratuitamente cuantas tiendas electrónicas quieras. Si más adelante necesitas servicios profesionales, cuenta con nosotros a precios más ventajosos por el simple hecho de haber formado parte del proceso de prelanzamiento.\n\nEsperamos que con nosotros, ganes mucho.\n--\nGextiendas'
                % (urlconfirm, urlrefuse),
                'html':
                XML(html),
                'unsubscribe':
                urlrefuse
            })
            #y ahora notificación a cada uno de los administradores
            mails = db(db.auth_membership.group_id == 1).select(
                db.auth_membership.ALL,
                db.auth_user.ALL,
                left=db.auth_user.on(
                    db.auth_membership.user_id == db.auth_user.id))
            for m in mails:
                queuedata.append({
                    'to':
                    '%s' % m.auth_user.email,
                    'subject':
                    'Tienes nuevos leads para la campaña de prelanzamiento: %s'
                    % data.email,
                    'message':
                    'Míralo en: %s' %
                    "https://www.gextiendas.es/administrator/subscriptions"
                })
            try:
                queue.queuemessage(queuedata)
            except Exception, ex:
                db.rollback()
                logger.debug("error al almacenar la cola de mensajes %s" % ex)
                response.flash = 'No hemos podido registrar tu email. Inténtalo de nuevo.'
                return dict(form=form)

            db.commit()
            session.flash = 'Su petición ha sido registrada'

        except Exception as ex:
            logger.debug("Error en Communication Prelaunch %s" % ex)
            db.rollback()
            response.flash = 'No hemos podido registrar tu email. Inténtalo de nuevo.'