示例#1
0
    def save(self):
        site=get_site()
        timezone=pytz.timezone(site.timezone)
        cleaned_data=self.cleaned_data

        profile=get_current_profile()
        if profile.userlevel > 9:
            credit_name, credit_link= "Staff", None
            status='approved'
            approved_on=datetime.now()
        else:
            credit_name, credit_link = profile.nickname, profile.link
            status='submitted'
            approved_on=None
        event=Event(title=cleaned_data.get("title"),
        link=cleaned_data.get("link") or None,
        description=cleaned_data.get("description")[:250] or None,
        start=timezone.localize(datetime.combine(cleaned_data.get("start_date"),cleaned_data.get("start_time"))),
        end=timezone.localize(datetime.combine(cleaned_data.get("end_date") or                  cleaned_data.get("start_date"),cleaned_data.get("end_time"))),
        location=cleaned_data.get("location") or None,
        submitted_by=get_current_profile(),
        status=status,
        site=get_site(),
        cost=cleaned_data.get("cost"),
        credit_name=credit_name,
        credit_link=credit_link,
        approved_on=approved_on,
        approved_by=profile,
        )




        event.put()
        return event
示例#2
0
def add_event(request):
    account=get_current_user()
    profile=get_current_profile()
    if request.method =='POST':
        form=EventBasicsForm(request.POST)
        if form.is_valid():
            form.save()
            if profile.userlevel < 9:
                mail.send_mail(sender="Events bot ANGRY <*****@*****.**>",
                                            to="The Laziest Louts Ever <*****@*****.**>",
                                            #to="The Laziest Louts Ever <*****@*****.**>",
                                            subject="New Series Created, now get off your ass!",
                                            body="""
New Event! Need Review: http://events.datacommunitydc.org/events/queue/

The Angry Server.
                        """)
                messages.add_message(request, messages.INFO, "Thanks for submitting an event! It's in <a href='events/queue/'>the queue</a> and will be reviewed soon")
            else:
                messages.add_message(request, messages.INFO, "Thanks! Once we review, it will be posted to main page!")
                request.site.expire_assets()
            #return redirect(reverse('front-page'))
            return render_to_response('events/add_success.html', locals(), context_instance=RequestContext(request))


    else:
        form=EventBasicsForm()
    return render_to_response('events/add.html', locals(), context_instance=RequestContext(request))
示例#3
0
def add_series(request):
    account = get_current_user()
    profile = get_current_profile()
    if request.method == 'POST':
        form = EventSeriesForm(request.POST)
        if form.is_valid():
            form.save()
            if profile.userlevel < 9:
                mail.send_mail(
                    sender="Events bot ANGRY <*****@*****.**>",
                    to="The Laziest Louts Ever <*****@*****.**>",
                    #to="The Laziest Louts Ever <*****@*****.**>",
                    subject="New Series Created, now get off your ass!",
                    body="""
New Event! Need Review: http://events.datacommunitydc.org/events/queue/

The Angry Server.
                        """)
                messages.add_message(
                    request, messages.INFO,
                    "Thanks for submitting an event! It's in <a href='events/queue/'>the queue</a> and will be reviewed soon"
                )
            else:
                messages.add_message(request, messages.INFO, "Event, added.")
                request.site.expire_assets()
            return redirect(reverse('front-page'))

    else:
        form = EventBasicsForm()
    return render_to_response('events/add.html',
                              locals(),
                              context_instance=RequestContext(request))
示例#4
0
 def save(self):
     cleaned_data = self.cleaned_data
     profile = get_current_profile()
     from models import ICalendarSource
     ical = ICalendarSource(site=get_site(),
                            name=cleaned_data['name'],
                            source_link=cleaned_data['link'] or None,
                            ical_href=cleaned_data['ical'],
                            submitted_by=profile,
                            status='submitted',
                            last_fetch=datetime(year=1970, month=1, day=1))
     ical.put()
示例#5
0
 def save(self):
     cleaned_data=self.cleaned_data
     profile=get_current_profile()
     from models import ICalendarSource
     ical= ICalendarSource(site=get_site(),
                           name=cleaned_data['name'],
                           source_link=cleaned_data['link'] or None,
                           ical_href=cleaned_data['ical'],
                           submitted_by=profile,
                           status='submitted',
                           last_fetch=datetime(year=1970, month=1, day=1)
                           )
     ical.put()
示例#6
0
def site_context(request):
    site=get_site()
    additional_context={'site': site,
                        'user':get_current_profile(),
                        'admin':users.is_current_user_admin(),
                        'logout':users.create_logout_url(reverse('account-signout')),
                        'links':Link.all().filter('status =','approved').fetch(20)
                        
                }
                

    #additional_context['logo']=get_serving_url(str(site.original_logo.key()), 512)


    return additional_context
        
示例#7
0
 def clean(self):
     site=get_site()
     cleaned_data = self.cleaned_data
     nickname = cleaned_data.get("nickname")
     email = cleaned_data.get("email")
     profile=get_current_profile()
     existing_profile_with_slug=site.profile_set.filter('slug =', unicode(slugify(nickname))).get()
     existing_profile_with_email=site.profile_set.filter('email =', email).get()
     if (existing_profile_with_slug != None and existing_profile_with_slug.key() != profile.key()):
             msg = u"Someone else already took that nickname!"
             self._errors["nickname"] = ErrorList([msg])
             del cleaned_data['nickname']
     if (existing_profile_with_email != None and existing_profile_with_email.key() != profile.key()):
             msg = u"Someone has already registered with that email"
             self._errors["email"] = ErrorList([msg])
             del cleaned_data['email']
             
     return super(ProfileForm, self).clean()
示例#8
0
def add_event(request):
    account=get_current_user()
    profile=get_current_profile()
    if request.method =='POST':
        form=EventBasicsForm(request.POST)
        if form.is_valid():
            form.save()
            if profile.userlevel < 9:
                messages.add_message(request, messages.INFO, "Thanks for submitting an event! It's in <a href='events/queue/'>the queue</a> and will be reviewed soon")
            else:
                messages.add_message(request, messages.INFO, "Event, added.")
                request.site.expire_assets()
            return redirect(reverse('front-page'))
            
        
    else:        
        form=EventBasicsForm()
    return render_to_response('events/add.html', locals(), context_instance=RequestContext(request))
示例#9
0
def profile_setup(request):
    hostname=os.environ['HTTP_HOST']
    dest=request.GET.get('continue', reverse('front-page'))
    user=get_current_user()
    profile=get_current_profile()
    
    if not profile:
         return HttpResponseRedirect(create_signin_url(reverse('account-edit')))

    if request.method == 'POST': # If the form has been submitted...
        form = ProfileForm(request.POST) # A form bound to the POST data
        if form.is_valid(): # All validation rules pass
            save_profile(profile, form)
            return HttpResponseRedirect(dest) # Redirect after POST
    else:
        form = ProfileForm(initial=profile.profile_details)

    return(render_to_response('account/profile-setup.html', locals(), context_instance=RequestContext(request)))
示例#10
0
def edit_profile(request):
    profile=get_current_profile()
    if request.method == 'POST': # If the form has been submitted...
        form = ProfileForm(request.POST) # A form bound to the POST data
        if form.is_valid(): # All validation rules pass
            save_profile(profile, form)
            messages.add_message(request, messages.INFO,"Your profile has been saved!")
            return HttpResponseRedirect('/') # Redirect after POST
    
    
    
    current_settings={'nickname':profile.nickname,
                      'email': profile.email,
                      'subscribe':profile.subscribes,
                      'link': profile.link}

    form=ProfileForm(current_settings)
    return(render_to_response('account/edit.html', locals(), context_instance=RequestContext(request)))
示例#11
0
def profile_setup(request):
    hostname = os.environ['HTTP_HOST']
    dest = request.GET.get('continue', reverse('front-page'))
    user = get_current_user()
    profile = get_current_profile()

    if not profile:
        return HttpResponseRedirect(create_signin_url(reverse('account-edit')))

    if request.method == 'POST':  # If the form has been submitted...
        form = ProfileForm(request.POST)  # A form bound to the POST data
        if form.is_valid():  # All validation rules pass
            save_profile(profile, form)
            return HttpResponseRedirect(dest)  # Redirect after POST
    else:
        form = ProfileForm(initial=profile.profile_details)

    return (render_to_response('account/profile-setup.html',
                               locals(),
                               context_instance=RequestContext(request)))
示例#12
0
def edit_profile(request):
    profile = get_current_profile()
    if request.method == 'POST':  # If the form has been submitted...
        form = ProfileForm(request.POST)  # A form bound to the POST data
        if form.is_valid():  # All validation rules pass
            save_profile(profile, form)
            messages.add_message(request, messages.INFO,
                                 "Your profile has been saved!")
            return HttpResponseRedirect('/')  # Redirect after POST

    current_settings = {
        'nickname': profile.nickname,
        'email': profile.email,
        'subscribe': profile.subscribes,
        'link': profile.link
    }

    form = ProfileForm(current_settings)
    return (render_to_response('account/edit.html',
                               locals(),
                               context_instance=RequestContext(request)))
示例#13
0
    def clean(self):
        site = get_site()
        cleaned_data = self.cleaned_data
        nickname = cleaned_data.get("nickname")
        email = cleaned_data.get("email")
        profile = get_current_profile()
        existing_profile_with_slug = site.profile_set.filter(
            'slug =', unicode(slugify(nickname))).get()
        existing_profile_with_email = site.profile_set.filter(
            'email =', email).get()
        if (existing_profile_with_slug != None
                and existing_profile_with_slug.key() != profile.key()):
            msg = u"Someone else already took that nickname!"
            self._errors["nickname"] = ErrorList([msg])
            del cleaned_data['nickname']
        if (existing_profile_with_email != None
                and existing_profile_with_email.key() != profile.key()):
            msg = u"Someone has already registered with that email"
            self._errors["email"] = ErrorList([msg])
            del cleaned_data['email']

        return super(ProfileForm, self).clean()
示例#14
0
def add_event(request):
    account = get_current_user()
    profile = get_current_profile()
    if request.method == 'POST':
        form = EventBasicsForm(request.POST)
        if form.is_valid():
            form.save()
            if profile.userlevel < 9:
                messages.add_message(
                    request, messages.INFO,
                    "Thanks for submitting an event! It's in <a href='events/queue/'>the queue</a> and will be reviewed soon"
                )
            else:
                messages.add_message(request, messages.INFO, "Event, added.")
                request.site.expire_assets()
            return redirect(reverse('front-page'))

    else:
        form = EventBasicsForm()
    return render_to_response('events/add.html',
                              locals(),
                              context_instance=RequestContext(request))
示例#15
0
def event_queue(request):
    
    def save_details(event):
        data=request.POST
        event.title=data['title']
        event.link=data['link'] or None
        event.cost=data['cost'] or None
        tz=request.site.tz
        event.start=tz.localize(parser.parse(data['start']))
        event.end=tz.localize(parser.parse(data['end']))
        
        if request.POST.has_key('tags'): 
            event.tags=[t.strip() for t in request.POST.get("tags","").lower().split(',')]
            
        event.put()
        
    
    
    timezone=pytz.timezone(request.site.timezone)
    pending_events=request.site.event_set.filter('status = ', 'submitted')
    today=utc.localize(datetime.utcnow()).astimezone(timezone).date()
    pending_events_future=pending_events.filter('local_start >=', today).order('local_start').fetch(50)
    if request.method == 'POST' and request.POST.has_key('button'):
        profile=get_current_profile()
        if request.POST['button'] == 'Reject' and (profile.userlevel == 10):
            event_results=request.site.event_set.filter(' __key__ =', db.Key(request.POST['event_key']) )
            event=event_results.get()
            event.status="rejected-%s" % request.POST.get('rejection-reason','unspecified')
            event.put()
            messages.add_message(request, messages.INFO,'Rejected! Feels good, right?')
            
        if request.POST['button'] == 'Save':
            event_results=request.site.event_set.filter(' __key__ =', db.Key(request.POST['event_key']) )
            event=event_results.get()
            if profile.userlevel == 10:
                save_details(event)
                messages.add_message(request, messages.INFO,'%s saved' % event.title)
                
        if request.POST['button'] == 'Approve':
            event_results= request.site.event_set.filter(' __key__ =', db.Key(request.POST['event_key']) )
            event=event_results.get()
            if profile.userlevel == 10: 
                event.status='approved'
                event.approved_by=profile
                event.approved_on=datetime.now()
                save_details(event)
                messages.add_message(request, messages.INFO,'%s approved' % event.title)
                
        if request.POST['button'] == 'Back to queue':  
              event_results= request.site.event_set.filter(' __key__ =', db.Key(request.POST['event_key']) )
              event=event_results.get()   
              if profile.userlevel == 10: 
                  event.status='submitted'
                  event.approved_by=None
                  event.approved_on=None
                  save_details(event)
                  messages.add_message(request, messages.INFO,'%s sent back' % event.title)
        request.site.expire_assets()
        if request.POST.has_key('return'):return HttpResponseRedirect(request.POST['return'])
        
    
    pending_events=request.site.event_set.filter('status = ', 'submitted')
    has_pending_sources=submitted_icals=ICalendarSource.all().filter('status =', 'submitted').get()
    has_pending_links=Link.all().filter('status =','submitted').get()
    return render_to_response('events/queue.html', locals(), context_instance=RequestContext(request))
    
示例#16
0
def event_queue(request):
    def save_details(event):
        data = request.POST
        event.title = data['title']
        event.link = data['link'] or None
        event.cost = data['cost'] or None
        tz = request.site.tz
        event.start = tz.localize(parser.parse(data['start']))
        event.end = tz.localize(parser.parse(data['end']))

        if request.POST.has_key('tags'):
            event.tags = [
                t.strip()
                for t in request.POST.get("tags", "").lower().split(',')
            ]

        event.put()

    timezone = pytz.timezone(request.site.timezone)
    pending_events = request.site.event_set.filter('status = ', 'submitted')
    today = utc.localize(datetime.utcnow()).astimezone(timezone).date()
    pending_events_future = pending_events.filter(
        'local_start >=', today).order('local_start').fetch(50)
    if request.method == 'POST' and request.POST.has_key('button'):
        profile = get_current_profile()
        if request.POST['button'] == 'Reject' and (profile.userlevel == 10):
            event_results = request.site.event_set.filter(
                ' __key__ =', db.Key(request.POST['event_key']))
            event = event_results.get()
            event.status = "rejected-%s" % request.POST.get(
                'rejection-reason', 'unspecified')
            event.put()
            messages.add_message(request, messages.INFO,
                                 'Rejected! Feels good, right?')

        if request.POST['button'] == 'Save':
            event_results = request.site.event_set.filter(
                ' __key__ =', db.Key(request.POST['event_key']))
            event = event_results.get()
            if profile.userlevel == 10:
                save_details(event)
                messages.add_message(request, messages.INFO,
                                     '%s saved' % event.title)

        if request.POST['button'] == 'Approve':
            event_results = request.site.event_set.filter(
                ' __key__ =', db.Key(request.POST['event_key']))
            event = event_results.get()
            if profile.userlevel == 10:
                event.status = 'approved'
                event.approved_by = profile
                event.approved_on = datetime.now()
                save_details(event)
                messages.add_message(request, messages.INFO,
                                     '%s approved' % event.title)

        if request.POST['button'] == 'Back to queue':
            event_results = request.site.event_set.filter(
                ' __key__ =', db.Key(request.POST['event_key']))
            event = event_results.get()
            if profile.userlevel == 10:
                event.status = 'submitted'
                event.approved_by = None
                event.approved_on = None
                save_details(event)
                messages.add_message(request, messages.INFO,
                                     '%s sent back' % event.title)
        request.site.expire_assets()
        if request.POST.has_key('return'):
            return HttpResponseRedirect(request.POST['return'])

    pending_events = request.site.event_set.filter('status = ', 'submitted')
    has_pending_sources = submitted_icals = ICalendarSource.all().filter(
        'status =', 'submitted').get()
    has_pending_links = Link.all().filter('status =', 'submitted').get()
    return render_to_response('events/queue.html',
                              locals(),
                              context_instance=RequestContext(request))