使用Google Calendars API进行Django项目

时间:2017-01-11 10:11:29

标签: python django api calendar google-calendar-api

我一直致力于使用Google日历API来管理会​​议(将会议添加到用户日历,向人们发送会议邀请等)的Django应用程序。

但是某些用户日历中没有出现日历事件,但存在一些不一致之处。我开始研究这个问题,并且之前没有在我的开发环境中运行Google Calendars API(尽管我可以访问应用程序中用于日历的代码,其状态是在我开始处理它之前的状态),我在developers.google.com上按照部分教程尝试在我的开发机器上启动并运行现有的Calendar API,但在尝试向其添加Calendars API时,却​​以某种方式设法破坏了工作代码。 / p>

当我现在尝试通过在浏览器中输入www.mysite.co.uk浏览我的网站时,我得到一个错误页面,上面写着:

  

/ projects / my-projects /

中的NameError      

全球名称' h_user'未定义

     

请求方法:GET

     

请求网址:http://www.mysite.co.uk/projects/my-projects/

     

Django版本:1.9.1

     

异常类型:NameError

     

例外值:
  全球名称' h_user'未定义

     

异常位置:/ code/moon/core/templatetags/getters.py in get_invite_details,第153行

     

Python可执行文件:/ usr / bin / python

     

Python版本:2.7.6

     

Python路径:
  [' /代码/月亮&#39 ;,    '在/ usr / local / bin中&#39 ;,    ' /usr/local/lib/python2.7/dist-packages/pip-8.1.2-py2.7.egg' ;,    ' /usr/lib/python2.7' ;,    ' /usr/lib/python2.7/plat-x86_64-linux-gnu' ;,    ' /usr/lib/python2.7/lib-tk' ;,    ' /usr/lib/python2.7/lib-old' ;,    ' /usr/lib/python2.7/lib-dynload' ;,    ' /usr/local/lib/python2.7/dist-packages' ;,    ' /usr/lib/python2.7/dist-packages']

     

服务器时间:2017年1月11日星期三09:08:01 +0000

首先,我不明白为什么要输入' root'我的网站(www.mysite.co.uk)的地址返回了一个“请求网址”' www.mysite.co.uk/projects/my-projects - 这是该网站上的一个页面,但不是' Home'页面,只有在点击'项目'从菜单链接。为什么我被路由到这个特定的页面?

浏览器中的错误页面显示详细信息:

  

模板渲染期间出错

     

在模板/code/moon/projects/templates/projects/my_projects.html中,第0行出错

     

全球名称' h_user'未定义

和'追溯'表示以下文件中存在错误:

芯/ templatetags / getters.py:

def get_invite_details(user, responded=False):
    from calendar_api.manager import get_event
    from django.utils.dateparse import parse_datetime
    from events.models import Meeting

    if user.is_authenticated():
        employee = user.employee
        if responded: e_invites = employee.event_notifications.all()
        else: e_invites = employee.event_notifications.filter(responded=False)
        events_data = [get_event(i.calendar_id, i.event_id) for i in e_invites]
        invites = []
        for event in events_data:
            if event and event['id']:
                invite = [event['summary'] or '', parse_datetime(event['start'].get('date') or event['start'].get('dateTime')) or '']
                m = Meeting.objects.filter(event_id=event['id'])
                if m:
                    m = m[0].event_creator
                    print "m'", m
                    invite += [m]
                else:
                    creator = Employee.objects.filter(calendar_id=event.get('organizer').get('email'))
                    if creator: invite += [creator.first()]
                    else: invite += [h_user]
                invite += [event['id']]
                invite += [e_invites.get(event_id=event['id']).responded]

                if responded and is_attending(event, employee.calendar_id): invite += [1]

                invites += [invite]

            return invites

'追溯'表示此文件中的错误在行:

else: invite += [h_user]

项目/ views.py:

def my_projects(request):
    context = {'projects': request.user.employee.settings.allocated_projects.all()}
    if request.is_ajax() and request.GET.get('filter'):
        return JsonResponse(filter_projects_name(request, context['projects'], 'projects/includes/project_cards.html'))
    return render(request, 'projects/my_projects.html', context)

'追溯'表示此文件中的错误在行:

return render(request, 'projects/my_projects.html', context)

mysite的/ middleware.py:

def process_view(self,request,view_func,view_args,view_kwargs):
    # An exception match should immediately return None
    for path in self.exceptions:
        if path.match(request.path): return None            
    # Requests matching a restricted URL pattern are returned 
    # wrapped with the permission_required decorator
    for rule in self.restricted:
        url, required_permission = rule[0], rule[1]
        if url.match(request.path): 
            return permission_required(required_permission)(view_func)(request,*view_args,**view_kwargs)             
    # Explicitly return None for all non-matching requests
    return None

'追溯'表示此文件中的错误在行:

return permission_required(required_permission)(view_func)(request,*view_args,**view_kwargs)             

我理解变量h_user没有被定义的错误 - 并且查看了使用它的文件,我无法看到它被定义的任何地方......但我不会&#39我明白为什么我现在收到这个错误,当我没有尝试使用谷歌日历API时 - 我不认为它会发生什么来自API,因为变量名称表示它与我正在处理的软件有关,所以很可能这是由我从他们接管之前的软件工作人员编写的。但是如何/为什么尝试集成/使用Calendars API会打破这个?

如果我尝试在浏览器中查看我的项目的本地副本,从" localhost:8000",我将被带到同一页面,因为它试图引导我进入'住'版本(localhost:8000 / projects / my-projects /),但它可以在我的localhost上运行,并且我能够与页面完全交互。事实上,我能够完全与我本地主机上的整个网站进行互动 - 除非我点击“日历”#39;菜单上的选项,然后我在浏览器中显示错误消息:

  

/ events / cal / 2017/1 /

中的RelatedObjectDoesNotExist      

项目没有任务组。

如何解决此问题,让Google日历与我的网站一起正常运作?

0 个答案:

没有答案