Ejemplo n.º 1
0
def savecourse(context,cuser):
    
    courseid = course.objects.filter(name__contains=context['name'],termnumber=getTermNumber(),teachername__contains=context['teachername'])[0].courseid
    error = u''
    keyid = courseid + context.get('timeKey','') + context['teachername']
    place_context = match_location_context(context['timeandplace'])
    try:
        ccourse = course.objects.get(keyid = keyid,termnumber=term)
    except:
        context.pop('timeandplace')
        context.pop('timeKey')
        for x in xrange(7):
                        context['day'+str(x+1)] = course.daydataFromDayString(context['day'+str(x+1)])
        ccourse = course(keyid=keyid,termnumber=getTermNumber(),course_category=0,**context)
        ccourse.save()
        if place_context:
               
                   ccourse.rawplace = place_context['name']
                   ccourse.save()
            
    #       try:
    #           ccourse = course.objects.get(courseid=context['courseid'],termnumber=term,teachername__contains=context['teachername'])
    #       except:
    #           pass
    ccourse.user.add(cuser)
    ccourse.save()
    if place_context:
        ccourse.rawplace = place_context['name']
        ccourse.save()
    return error
Ejemplo n.º 2
0
def parse_course_page(string,user):
	keywords = {}
	keywords['class'] = 'pkuportal-table-portlet'
	strainer = SoupStrainer('table',**keywords)
	soup_course = BeautifulSoup(string,parseOnlyThese=strainer)
	if soup_course.table is None:
		return '0'
	tbody = soup_course.table
	for i,tr in enumerate(tbody):
	    context = {}
	    if i < 4:
		continue
	    else:
		if type(tr) == Tag:
			context = {
				'courseid':tr.contents[1].getText(),
				'name':tr.contents[3].getText(),
				'classnum':tr.contents[5].getText(),
				'Coursetype':tr.contents[7].getText(),
				'time':tr.contents[13].getText(),
				'rawplace':tr.contents[15].getText()
				}
			context['keyid'] = context['courseid'] + context['classnum'] + context['rawplace'] + context['time']
			time_context = match_time(context['time'])
			if time_context:
				context.update(time_context)
			ckeyid = context['keyid']
			context['termnumber'] = getTermNumber()
			queryset = course.objects.filter(keyid=ckeyid,termnumber=getTermNumber(),course_category = 1)
			if queryset.count() == 0:
				thecourse = course(course_category = 1,**context)
				thecourse.save()
				thecourse.user.add(user)
				thecourse.save()
			else:
				
				thecourse = course.objects.filter(keyid=ckeyid,termnumber=getTermNumber(),course_category = 1)
				thecourse.update(**context)
				thecourse[0].user.add(user)
				thecourse[0].save()
				thecourse = thecourse[0]
			contextplace = place.dictFromPlaceString(context['rawplace'])
			
			if contextplace != None:
				placekey=str(contextplace['location'])+contextplace['interid']
				if place.objects.filter(keyid=placekey).count()>0:
					thepalce=place.objects.get(keyid=placekey)
					thecourse.place=thepalce
					thecourse.save()
	return '0'
Ejemplo n.º 3
0
def json_mycourse(request):
    user = request.user
    courselist = user.course_set.filter(termnumber=getTermNumber()).values(
        'cname', 'ename', 'classnum', 'courseid', 'id', 'name', 'credit',
        'day1', 'day2', 'day3', 'day4', 'day5', 'day6', 'day7', 'place',
        'rawplace', 'time', 'time_test', 'teachername')
    return HttpResponse(simplejson.dumps(list(courselist)),
                        mimetype='application/json')
Ejemplo n.º 4
0
def handle_course(string,user):
        strainer = SoupStrainer('table',border='1')
        soup_course = BeautifulSoup(string,parseOnlyThese=strainer)
        tbody = soup_course.table
        if tbody is None:
        	return '0'
        for i,tr in enumerate(tbody):
        	if i>0:
        		lists = list()
        		
			for td in tr:
				if type(td) == Tag:
					x = td.contents[0].__str__().decode('utf8').strip('&nbsp;')
					
					lists.append(x)
			context = dict_course(lists)
			ckeyid = context['keyid']
        		queryset = course.objects.filter(keyid=ckeyid,termnumber=getTermNumber(),course_category = 0)
        		if queryset.count() == 0:
				thecourse = course(termnumber=getTermNumber(),keyid=context['keyid'],courseid=context['courseid'],classnum=context['classnum'],name=context['name'],rawplace=context['rawplace'],time_test=context['time_test'],credit=context['credit'],time=context['time'],day1=context['day1'],day2=context['day2'],day3=context['day3'],day4=context['day4'],day5=context['day5'],day6=context['day6'],day7=context['day7'],teachername=context['teachername'],course_category = 0)
				thecourse.save()
				thecourse.user.add(user)
				thecourse.save()
        		else:
        			
        			thecourse = course.objects.get(keyid=ckeyid,termnumber=getTermNumber(),course_category = 0)
        			thecourse.classnum = context['classnum']
        			thecourse.rawplace = context['rawplace']
        			thecourse.time_test = context['time_test']
        			thecourse.user.add(user)
        			thecourse.save()
			contextplace = place.dictFromPlaceString(context['rawplace'])
			
			if contextplace != None:
				placekey=str(contextplace['location'])+contextplace['interid']
				if place.objects.filter(keyid=placekey).count()>0:
					thepalce=place.objects.get(keyid=placekey)
					thecourse.place=thepalce
					thecourse.save()
        return '0'
Ejemplo n.º 5
0
def savecourse(context, cuser):

    courseid = course.objects.filter(
        name__contains=context['name'],
        termnumber=getTermNumber(),
        teachername__contains=context['teachername'])[0].courseid
    error = u''
    keyid = courseid + context.get('timeKey', '') + context['teachername']
    place_context = match_location_context(context['timeandplace'])
    try:
        ccourse = course.objects.get(keyid=keyid, termnumber=term)
    except:
        context.pop('timeandplace')
        context.pop('timeKey')
        for x in xrange(7):
            context['day' + str(x + 1)] = course.daydataFromDayString(
                context['day' + str(x + 1)])
        ccourse = course(keyid=keyid,
                         termnumber=getTermNumber(),
                         course_category=0,
                         **context)
        ccourse.save()
        if place_context:

            ccourse.rawplace = place_context['name']
            ccourse.save()

    #       try:
    #           ccourse = course.objects.get(courseid=context['courseid'],termnumber=term,teachername__contains=context['teachername'])
    #       except:
    #           pass
    ccourse.user.add(cuser)
    ccourse.save()
    if place_context:
        ccourse.rawplace = place_context['name']
        ccourse.save()
    return error
Ejemplo n.º 6
0
#! python
# -*- coding:UTF-8 -*-
import urllib
import urllib2
import cookielib
import re
from BeautifulSoup import BeautifulSoup,SoupStrainer,Tag
from Server.models import course,place
from Server.utility.TimeUtil import getTermNumber

term = getTermNumber()
user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7'
urlCourseDo = "http://elective.pku.edu.cn/elective2008/edu/pku/stu/elective/controller/courseQuery/getCurriculmByForm.do"

urlTongXuanKe2 = 'http://elective.pku.edu.cn/elective2008/edu/pku/stu/elective/controller/courseQuery/queryCurriculum.jsp?netui_row=syllabusListGrid%3B50'
urlTongXuanKe3 = 'http://elective.pku.edu.cn/elective2008/edu/pku/stu/elective/controller/courseQuery/queryCurriculum.jsp?netui_row=syllabusListGrid%3B100'

urlCoursePagei = 'http://elective.pku.edu.cn/elective2008/edu/pku/stu/elective/controller/courseQuery/queryCurriculum.jsp?netui_row=syllabusListGrid%3B'

list_day = [u'一',u'二',u'三',u'四',u'五',u'六',u'日']

re_time=re.compile(u'([每|单|双]周)周(.?)([0-9]+)~([0-9]+)')
re_TotalPage = re.compile(u'of ([0-9]+)')
course_type_list = ['education_plan_bk','speciality','politics','english','gym','trans_choice','pub_choice','liberal_computer','pt']
re_TotalPage = re.compile(u'of ([0-9]+)')

def run_elective_course_update(cookie_value):
    "登陆后将cookie_value传入"
    return_m = ''
    
    data = {}
Ejemplo n.º 7
0
def handle_course(string, user):
    strainer = SoupStrainer('table', border='1')
    soup_course = BeautifulSoup(string, parseOnlyThese=strainer)
    tbody = soup_course.table
    if tbody is None:
        return '0'
    for i, tr in enumerate(tbody):
        if i > 0:
            lists = list()

            for td in tr:
                if type(td) == Tag:
                    x = td.contents[0].__str__().decode('utf8').strip('&nbsp;')

                    lists.append(x)
            context = dict_course(lists)
            ckeyid = context['keyid']
            queryset = course.objects.filter(keyid=ckeyid,
                                             termnumber=getTermNumber(),
                                             course_category=0)
            if queryset.count() == 0:
                thecourse = course(termnumber=getTermNumber(),
                                   keyid=context['keyid'],
                                   courseid=context['courseid'],
                                   classnum=context['classnum'],
                                   name=context['name'],
                                   rawplace=context['rawplace'],
                                   time_test=context['time_test'],
                                   credit=context['credit'],
                                   time=context['time'],
                                   day1=context['day1'],
                                   day2=context['day2'],
                                   day3=context['day3'],
                                   day4=context['day4'],
                                   day5=context['day5'],
                                   day6=context['day6'],
                                   day7=context['day7'],
                                   teachername=context['teachername'],
                                   course_category=0)
                thecourse.save()
                thecourse.user.add(user)
                thecourse.save()
            else:

                thecourse = course.objects.get(keyid=ckeyid,
                                               termnumber=getTermNumber(),
                                               course_category=0)
                thecourse.classnum = context['classnum']
                thecourse.rawplace = context['rawplace']
                thecourse.time_test = context['time_test']
                thecourse.user.add(user)
                thecourse.save()
            contextplace = place.dictFromPlaceString(context['rawplace'])

            if contextplace != None:
                placekey = str(
                    contextplace['location']) + contextplace['interid']
                if place.objects.filter(keyid=placekey).count() > 0:
                    thepalce = place.objects.get(keyid=placekey)
                    thecourse.place = thepalce
                    thecourse.save()
    return '0'
Ejemplo n.º 8
0
def json_mycourse(request):
	user=request.user
	courselist=user.course_set.filter(termnumber=getTermNumber()).values('cname','ename','classnum','courseid','id','name','credit','day1','day2','day3','day4','day5','day6','day7','place','rawplace','time','time_test','teachername')
	return HttpResponse(simplejson.dumps(list(courselist)), mimetype='application/json')
Ejemplo n.º 9
0
import urllib
import urllib2
import cookielib
import re
from BeautifulSoup import BeautifulSoup,SoupStrainer,Tag
from Server.models import course,place
from Server.utility.TimeUtil import getTermNumber

term = getTermNumber()

def match_time(string):
    def set_daytime(m,context):
            for i,dayx in enumerate(list_day):
            if m.group(2) == dayx:
                if m.group(1) != u'每周':
                    context['day'+str(i+1)] = m.group(3)+'-'+m.group(4) + m.group(1)
                else:
                    context['day'+str(i+1)] = m.group(3)+'-'+m.group(4)
    context = {}
    for i in xrange(7):
        context['day'+str(i+1)]=0
    
        m1 = re_time.search(string)
        if m1:
            
        m2 = re_time.search(string[m1.end():])
        set_daytime(m1,context)
        if m2:
                #print m2.group(i)
                set_daytime(m2,context)